Quellcode durchsuchen

提交当前所有需求的改动

code4eat vor 8 Monaten
Ursprung
Commit
e61b367b5c
51 geänderte Dateien mit 2838 neuen und 1278 gelöschten Zeilen
  1. 169 0
      .VSCodeCounter/2024-11-05_10-46-15/details.md
  2. 15 0
      .VSCodeCounter/2024-11-05_10-46-15/diff-details.md
  3. 2 0
      .VSCodeCounter/2024-11-05_10-46-15/diff.csv
  4. 19 0
      .VSCodeCounter/2024-11-05_10-46-15/diff.md
  5. 22 0
      .VSCodeCounter/2024-11-05_10-46-15/diff.txt
  6. 156 0
      .VSCodeCounter/2024-11-05_10-46-15/results.csv
  7. 0 0
      .VSCodeCounter/2024-11-05_10-46-15/results.json
  8. 99 0
      .VSCodeCounter/2024-11-05_10-46-15/results.md
  9. 256 0
      .VSCodeCounter/2024-11-05_10-46-15/results.txt
  10. 12 2
      config/config.ts
  11. 4 4
      config/proxy.ts
  12. 0 1
      public/zhongtaiA.js
  13. 0 8
      public/zhongtaiB.js
  14. 0 8
      public/zhongtaiC.js
  15. 56 37
      src/app.tsx
  16. 1 1
      src/components/ResizableContainer/style.less
  17. 1 1
      src/components/kcTable/style.less
  18. 15 10
      src/components/topBar/index.tsx
  19. 1 1
      src/components/topBar/style.less
  20. 49 13
      src/global.less
  21. 13 7
      src/layouts/index.tsx
  22. 9 5
      src/pages/index/components/FastEntry/index.tsx
  23. 7 6
      src/pages/login/index.tsx
  24. 1 1
      src/pages/login/style.less
  25. 42 25
      src/pages/platform/_layout.tsx
  26. 275 0
      src/pages/platform/components/KCIMLeftList/index.tsx
  27. 160 0
      src/pages/platform/components/KCIMLeftList/style.less
  28. 8 1
      src/pages/platform/setting/departmentMana/index.tsx
  29. 4 1
      src/pages/platform/setting/hospManage/index.tsx
  30. 6 4
      src/pages/platform/setting/hospManage/modals/modal.tsx
  31. 5 1
      src/pages/platform/setting/hospParamsMana/index.tsx
  32. 886 836
      src/pages/platform/setting/indicatorMana/DrawerForm/drawer.tsx
  33. 68 14
      src/pages/platform/setting/indicatorMana/DrawerForm/style.less
  34. 2 2
      src/pages/platform/setting/indicatorMana/TreeDirectory/index.tsx
  35. 162 111
      src/pages/platform/setting/indicatorMana/index.tsx
  36. 69 29
      src/pages/platform/setting/indicatorMana/style.less
  37. 3 1
      src/pages/platform/setting/kcClassification/index.tsx
  38. 7 2
      src/pages/platform/setting/menuManage/modals/modal.tsx
  39. 12 3
      src/pages/platform/setting/notificationTemplate/index.tsx
  40. 3 1
      src/pages/platform/setting/paramsMana/index.tsx
  41. 20 10
      src/pages/platform/setting/pubDicMana/index.tsx
  42. 4 1
      src/pages/platform/setting/pubDicTypeMana/index.tsx
  43. 9 5
      src/pages/platform/setting/roleManage/index.tsx
  44. 3 2
      src/pages/platform/setting/roleManage/modals/modal.tsx
  45. 1 0
      src/pages/platform/setting/roleManage/model.ts
  46. 1 3
      src/pages/platform/setting/static/index.tsx
  47. 89 82
      src/pages/platform/setting/systemNavMana/index.tsx
  48. 9 2
      src/pages/platform/setting/systemNavMana/style.less
  49. 5 1
      src/pages/platform/setting/userManage/index.tsx
  50. 76 34
      src/pages/platform/setting/userManage/modal.tsx
  51. 2 2
      src/service/index.ts

+ 169 - 0
.VSCodeCounter/2024-11-05_10-46-15/details.md

@@ -0,0 +1,169 @@
+# Details
+
+Date : 2024-11-05 10:46:15
+
+Directory /Users/dema/work/KC-MiddlePlatform
+
+Total : 154 files,  20582 codes, 2314 comments, 3087 blanks, all 25983 lines
+
+[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+| [.prettierignore](/.prettierignore) | Ignore | 8 | 0 | 1 | 9 |
+| [.prettierrc](/.prettierrc) | JSON | 11 | 0 | 1 | 12 |
+| [README.md](/README.md) | Markdown | 73 | 0 | 50 | 123 |
+| [config/config.dev.ts](/config/config.dev.ts) | TypeScript | 11 | 3 | 2 | 16 |
+| [config/config.ts](/config/config.ts) | TypeScript | 241 | 33 | 6 | 280 |
+| [config/proxy.ts](/config/proxy.ts) | TypeScript | 25 | 11 | 7 | 43 |
+| [mock/login.ts](/mock/login.ts) | TypeScript | 81 | 8 | 9 | 98 |
+| [mock/menu.ts](/mock/menu.ts) | TypeScript | 27 | 8 | 5 | 40 |
+| [mock/pubDicType.ts](/mock/pubDicType.ts) | TypeScript | 7 | 9 | 6 | 22 |
+| [package.json](/package.json) | JSON | 55 | 0 | 1 | 56 |
+| [public/zhongtaiA.js](/public/zhongtaiA.js) | JavaScript | 1 | 8 | 0 | 9 |
+| [public/zhongtaiB.js](/public/zhongtaiB.js) | JavaScript | 1 | 0 | 0 | 1 |
+| [public/zhongtaiC.js](/public/zhongtaiC.js) | JavaScript | 1 | 0 | 0 | 1 |
+| [src/app.tsx](/src/app.tsx) | TypeScript JSX | 349 | 65 | 59 | 473 |
+| [src/components/KCInput/index.tsx](/src/components/KCInput/index.tsx) | TypeScript JSX | 36 | 8 | 14 | 58 |
+| [src/components/KCModal/index.tsx](/src/components/KCModal/index.tsx) | TypeScript JSX | 29 | 8 | 6 | 43 |
+| [src/components/KCModal/typing.d.ts](/src/components/KCModal/typing.d.ts) | TypeScript | 6 | 8 | 3 | 17 |
+| [src/components/KCProSelect/index.tsx](/src/components/KCProSelect/index.tsx) | TypeScript JSX | 7 | 8 | 4 | 19 |
+| [src/components/KCProSelect/typings.d.ts](/src/components/KCProSelect/typings.d.ts) | TypeScript | 4 | 8 | 3 | 15 |
+| [src/components/KCUpload/index.tsx](/src/components/KCUpload/index.tsx) | TypeScript JSX | 49 | 49 | 22 | 120 |
+| [src/components/KCUpload/style.less](/src/components/KCUpload/style.less) | Less | 25 | 0 | 5 | 30 |
+| [src/components/KCUpload/typings.d.ts](/src/components/KCUpload/typings.d.ts) | TypeScript | 6 | 8 | 3 | 17 |
+| [src/components/NavSelecter/index.tsx](/src/components/NavSelecter/index.tsx) | TypeScript JSX | 164 | 8 | 20 | 192 |
+| [src/components/NavSelecter/style.less](/src/components/NavSelecter/style.less) | Less | 141 | 0 | 20 | 161 |
+| [src/components/ResizableContainer/index.tsx](/src/components/ResizableContainer/index.tsx) | TypeScript JSX | 52 | 0 | 10 | 62 |
+| [src/components/ResizableContainer/style.less](/src/components/ResizableContainer/style.less) | Less | 18 | 0 | 7 | 25 |
+| [src/components/kc-select/index.tsx](/src/components/kc-select/index.tsx) | TypeScript JSX | 25 | 8 | 5 | 38 |
+| [src/components/kc-select/style.less](/src/components/kc-select/style.less) | Less | 10 | 0 | 1 | 11 |
+| [src/components/kc-select/typing.d.ts](/src/components/kc-select/typing.d.ts) | TypeScript | 14 | 9 | 4 | 27 |
+| [src/components/kcTable/index.tsx](/src/components/kcTable/index.tsx) | TypeScript JSX | 58 | 8 | 8 | 74 |
+| [src/components/kcTable/style.less](/src/components/kcTable/style.less) | Less | 70 | 0 | 16 | 86 |
+| [src/components/kcTable/typing.d.ts](/src/components/kcTable/typing.d.ts) | TypeScript | 11 | 8 | 4 | 23 |
+| [src/components/topBar/index.tsx](/src/components/topBar/index.tsx) | TypeScript JSX | 384 | 34 | 95 | 513 |
+| [src/components/topBar/style.less](/src/components/topBar/style.less) | Less | 577 | 80 | 111 | 768 |
+| [src/components/topBar/typings.d.ts](/src/components/topBar/typings.d.ts) | TypeScript | 32 | 8 | 8 | 48 |
+| [src/constant.ts](/src/constant.ts) | TypeScript | 43 | 13 | 5 | 61 |
+| [src/global.less](/src/global.less) | Less | 341 | 46 | 85 | 472 |
+| [src/global.tsx](/src/global.tsx) | TypeScript JSX | 28 | 17 | 8 | 53 |
+| [src/layouts/index.tsx](/src/layouts/index.tsx) | TypeScript JSX | 194 | 37 | 29 | 260 |
+| [src/models/index.ts](/src/models/index.ts) | TypeScript | 0 | 58 | 8 | 66 |
+| [src/pages/404.tsx](/src/pages/404.tsx) | TypeScript JSX | 10 | 8 | 4 | 22 |
+| [src/pages/channelIndex/channelIndexOne/index.tsx](/src/pages/channelIndex/channelIndexOne/index.tsx) | TypeScript JSX | 7 | 8 | 8 | 23 |
+| [src/pages/channelIndex/channelIndexOne/style.less](/src/pages/channelIndex/channelIndexOne/style.less) | Less | 17 | 0 | 3 | 20 |
+| [src/pages/document.ejs](/src/pages/document.ejs) | HTML | 15 | 11 | 3 | 29 |
+| [src/pages/index/components/FastEntry/index.tsx](/src/pages/index/components/FastEntry/index.tsx) | TypeScript JSX | 94 | 87 | 16 | 197 |
+| [src/pages/index/components/FastEntry/style.less](/src/pages/index/components/FastEntry/style.less) | Less | 66 | 12 | 7 | 85 |
+| [src/pages/index/components/MsgRecord/index.tsx](/src/pages/index/components/MsgRecord/index.tsx) | TypeScript JSX | 47 | 10 | 14 | 71 |
+| [src/pages/index/components/MsgRecord/style.less](/src/pages/index/components/MsgRecord/style.less) | Less | 69 | 0 | 11 | 80 |
+| [src/pages/index/components/RecentlyVisited/index.tsx](/src/pages/index/components/RecentlyVisited/index.tsx) | TypeScript JSX | 57 | 10 | 11 | 78 |
+| [src/pages/index/components/RecentlyVisited/style.less](/src/pages/index/components/RecentlyVisited/style.less) | Less | 47 | 0 | 10 | 57 |
+| [src/pages/index/components/TodoList/index.tsx](/src/pages/index/components/TodoList/index.tsx) | TypeScript JSX | 62 | 9 | 11 | 82 |
+| [src/pages/index/components/TodoList/style.less](/src/pages/index/components/TodoList/style.less) | Less | 127 | 50 | 22 | 199 |
+| [src/pages/index/index.less](/src/pages/index/index.less) | Less | 269 | 218 | 68 | 555 |
+| [src/pages/index/index.tsx](/src/pages/index/index.tsx) | TypeScript JSX | 227 | 13 | 35 | 275 |
+| [src/pages/login/index.tsx](/src/pages/login/index.tsx) | TypeScript JSX | 252 | 11 | 36 | 299 |
+| [src/pages/login/login.d.ts](/src/pages/login/login.d.ts) | TypeScript | 12 | 11 | 3 | 26 |
+| [src/pages/login/style.less](/src/pages/login/style.less) | Less | 176 | 2 | 27 | 205 |
+| [src/pages/noAccess/index.tsx](/src/pages/noAccess/index.tsx) | TypeScript JSX | 16 | 9 | 5 | 30 |
+| [src/pages/noAccess/style.less](/src/pages/noAccess/style.less) | Less | 45 | 0 | 4 | 49 |
+| [src/pages/personalCenter/_mock.ts](/src/pages/personalCenter/_mock.ts) | TypeScript | 72 | 3 | 5 | 80 |
+| [src/pages/personalCenter/components/BaseView.less](/src/pages/personalCenter/components/BaseView.less) | Less | 59 | 0 | 7 | 66 |
+| [src/pages/personalCenter/components/PhoneView.tsx](/src/pages/personalCenter/components/PhoneView.tsx) | TypeScript JSX | 37 | 0 | 6 | 43 |
+| [src/pages/personalCenter/components/base.tsx](/src/pages/personalCenter/components/base.tsx) | TypeScript JSX | 227 | 1 | 8 | 236 |
+| [src/pages/personalCenter/components/binding.tsx](/src/pages/personalCenter/components/binding.tsx) | TypeScript JSX | 43 | 0 | 4 | 47 |
+| [src/pages/personalCenter/components/notification.tsx](/src/pages/personalCenter/components/notification.tsx) | TypeScript JSX | 40 | 0 | 5 | 45 |
+| [src/pages/personalCenter/components/security.tsx](/src/pages/personalCenter/components/security.tsx) | TypeScript JSX | 145 | 29 | 18 | 192 |
+| [src/pages/personalCenter/data.d.ts](/src/pages/personalCenter/data.d.ts) | TypeScript | 39 | 0 | 5 | 44 |
+| [src/pages/personalCenter/geographic/city.json](/src/pages/personalCenter/geographic/city.json) | JSON | 1,784 | 0 | 1 | 1,785 |
+| [src/pages/personalCenter/geographic/province.json](/src/pages/personalCenter/geographic/province.json) | JSON | 138 | 0 | 1 | 139 |
+| [src/pages/personalCenter/index.tsx](/src/pages/personalCenter/index.tsx) | TypeScript JSX | 110 | 2 | 10 | 122 |
+| [src/pages/personalCenter/service.ts](/src/pages/personalCenter/service.ts) | TypeScript | 14 | 0 | 5 | 19 |
+| [src/pages/personalCenter/style.less](/src/pages/personalCenter/style.less) | Less | 106 | 2 | 6 | 114 |
+| [src/pages/platform/_layout.tsx](/src/pages/platform/_layout.tsx) | TypeScript JSX | 433 | 78 | 97 | 608 |
+| [src/pages/platform/components/KCIMLeftList/index.tsx](/src/pages/platform/components/KCIMLeftList/index.tsx) | TypeScript JSX | 184 | 36 | 55 | 275 |
+| [src/pages/platform/components/KCIMLeftList/style.less](/src/pages/platform/components/KCIMLeftList/style.less) | Less | 132 | 8 | 21 | 161 |
+| [src/pages/platform/components/TreeEditer/index.tsx](/src/pages/platform/components/TreeEditer/index.tsx) | TypeScript JSX | 94 | 27 | 21 | 142 |
+| [src/pages/platform/components/TreeEditer/style.less](/src/pages/platform/components/TreeEditer/style.less) | Less | 0 | 0 | 1 | 1 |
+| [src/pages/platform/components/menuEditer/menu.tsx](/src/pages/platform/components/menuEditer/menu.tsx) | TypeScript JSX | 147 | 17 | 28 | 192 |
+| [src/pages/platform/components/menuEditer/style.less](/src/pages/platform/components/menuEditer/style.less) | Less | 18 | 1 | 2 | 21 |
+| [src/pages/platform/components/usersEditer/index.tsx](/src/pages/platform/components/usersEditer/index.tsx) | TypeScript JSX | 58 | 10 | 13 | 81 |
+| [src/pages/platform/components/usersEditer/style.less](/src/pages/platform/components/usersEditer/style.less) | Less | 24 | 0 | 1 | 25 |
+| [src/pages/platform/index.less](/src/pages/platform/index.less) | Less | 87 | 11 | 24 | 122 |
+| [src/pages/platform/setting/departmentMana/index.tsx](/src/pages/platform/setting/departmentMana/index.tsx) | TypeScript JSX | 268 | 9 | 52 | 329 |
+| [src/pages/platform/setting/departmentMana/service.ts](/src/pages/platform/setting/departmentMana/service.ts) | TypeScript | 75 | 15 | 33 | 123 |
+| [src/pages/platform/setting/departmentMana/style.less](/src/pages/platform/setting/departmentMana/style.less) | Less | 47 | 0 | 8 | 55 |
+| [src/pages/platform/setting/hospManage/index.tsx](/src/pages/platform/setting/hospManage/index.tsx) | TypeScript JSX | 860 | 84 | 117 | 1,061 |
+| [src/pages/platform/setting/hospManage/modals/modal.tsx](/src/pages/platform/setting/hospManage/modals/modal.tsx) | TypeScript JSX | 412 | 10 | 26 | 448 |
+| [src/pages/platform/setting/hospManage/model.ts](/src/pages/platform/setting/hospManage/model.ts) | TypeScript | 167 | 19 | 13 | 199 |
+| [src/pages/platform/setting/hospManage/style.less](/src/pages/platform/setting/hospManage/style.less) | Less | 209 | 1 | 32 | 242 |
+| [src/pages/platform/setting/hospManage/typings.d.ts](/src/pages/platform/setting/hospManage/typings.d.ts) | TypeScript | 13 | 14 | 3 | 30 |
+| [src/pages/platform/setting/hospParamsMana/index.tsx](/src/pages/platform/setting/hospParamsMana/index.tsx) | TypeScript JSX | 409 | 13 | 75 | 497 |
+| [src/pages/platform/setting/hospParamsMana/service.ts](/src/pages/platform/setting/hospParamsMana/service.ts) | TypeScript | 62 | 14 | 32 | 108 |
+| [src/pages/platform/setting/hospParamsMana/style.less](/src/pages/platform/setting/hospParamsMana/style.less) | Less | 111 | 1 | 27 | 139 |
+| [src/pages/platform/setting/indicatorMana/DrawerForm/drawer.tsx](/src/pages/platform/setting/indicatorMana/DrawerForm/drawer.tsx) | TypeScript JSX | 987 | 60 | 111 | 1,158 |
+| [src/pages/platform/setting/indicatorMana/DrawerForm/style.less](/src/pages/platform/setting/indicatorMana/DrawerForm/style.less) | Less | 63 | 0 | 12 | 75 |
+| [src/pages/platform/setting/indicatorMana/TreeDirectory/index.tsx](/src/pages/platform/setting/indicatorMana/TreeDirectory/index.tsx) | TypeScript JSX | 60 | 18 | 29 | 107 |
+| [src/pages/platform/setting/indicatorMana/TreeDirectory/style.less](/src/pages/platform/setting/indicatorMana/TreeDirectory/style.less) | Less | 0 | 0 | 1 | 1 |
+| [src/pages/platform/setting/indicatorMana/index.tsx](/src/pages/platform/setting/indicatorMana/index.tsx) | TypeScript JSX | 387 | 40 | 75 | 502 |
+| [src/pages/platform/setting/indicatorMana/style.less](/src/pages/platform/setting/indicatorMana/style.less) | Less | 66 | 0 | 12 | 78 |
+| [src/pages/platform/setting/kcClassification/index.tsx](/src/pages/platform/setting/kcClassification/index.tsx) | TypeScript JSX | 192 | 13 | 15 | 220 |
+| [src/pages/platform/setting/kcClassification/service.ts](/src/pages/platform/setting/kcClassification/service.ts) | TypeScript | 56 | 12 | 8 | 76 |
+| [src/pages/platform/setting/kcClassification/style.less](/src/pages/platform/setting/kcClassification/style.less) | Less | 37 | 0 | 6 | 43 |
+| [src/pages/platform/setting/menuManage/index.tsx](/src/pages/platform/setting/menuManage/index.tsx) | TypeScript JSX | 253 | 29 | 25 | 307 |
+| [src/pages/platform/setting/menuManage/modals/menu.tsx](/src/pages/platform/setting/menuManage/modals/menu.tsx) | TypeScript JSX | 6 | 8 | 4 | 18 |
+| [src/pages/platform/setting/menuManage/modals/modal.tsx](/src/pages/platform/setting/menuManage/modals/modal.tsx) | TypeScript JSX | 315 | 19 | 21 | 355 |
+| [src/pages/platform/setting/menuManage/model.ts](/src/pages/platform/setting/menuManage/model.ts) | TypeScript | 188 | 15 | 17 | 220 |
+| [src/pages/platform/setting/menuManage/style.less](/src/pages/platform/setting/menuManage/style.less) | Less | 0 | 0 | 2 | 2 |
+| [src/pages/platform/setting/menuManage/typings.d.ts](/src/pages/platform/setting/menuManage/typings.d.ts) | TypeScript | 11 | 14 | 3 | 28 |
+| [src/pages/platform/setting/notificationTemplate/index.tsx](/src/pages/platform/setting/notificationTemplate/index.tsx) | TypeScript JSX | 344 | 12 | 55 | 411 |
+| [src/pages/platform/setting/notificationTemplate/service.ts](/src/pages/platform/setting/notificationTemplate/service.ts) | TypeScript | 62 | 12 | 23 | 97 |
+| [src/pages/platform/setting/notificationTemplate/style.less](/src/pages/platform/setting/notificationTemplate/style.less) | Less | 37 | 0 | 6 | 43 |
+| [src/pages/platform/setting/paramsMana/index.tsx](/src/pages/platform/setting/paramsMana/index.tsx) | TypeScript JSX | 337 | 21 | 57 | 415 |
+| [src/pages/platform/setting/paramsMana/service.ts](/src/pages/platform/setting/paramsMana/service.ts) | TypeScript | 81 | 13 | 28 | 122 |
+| [src/pages/platform/setting/paramsMana/style.less](/src/pages/platform/setting/paramsMana/style.less) | Less | 99 | 1 | 24 | 124 |
+| [src/pages/platform/setting/pubDicMana/index.tsx](/src/pages/platform/setting/pubDicMana/index.tsx) | TypeScript JSX | 428 | 12 | 39 | 479 |
+| [src/pages/platform/setting/pubDicMana/service.ts](/src/pages/platform/setting/pubDicMana/service.ts) | TypeScript | 62 | 14 | 25 | 101 |
+| [src/pages/platform/setting/pubDicMana/style.less](/src/pages/platform/setting/pubDicMana/style.less) | Less | 105 | 1 | 21 | 127 |
+| [src/pages/platform/setting/pubDicTypeMana/index.tsx](/src/pages/platform/setting/pubDicTypeMana/index.tsx) | TypeScript JSX | 338 | 36 | 32 | 406 |
+| [src/pages/platform/setting/pubDicTypeMana/service.ts](/src/pages/platform/setting/pubDicTypeMana/service.ts) | TypeScript | 65 | 14 | 11 | 90 |
+| [src/pages/platform/setting/pubDicTypeMana/style.less](/src/pages/platform/setting/pubDicTypeMana/style.less) | Less | 93 | 1 | 23 | 117 |
+| [src/pages/platform/setting/reports/index.tsx](/src/pages/platform/setting/reports/index.tsx) | TypeScript JSX | 41 | 10 | 12 | 63 |
+| [src/pages/platform/setting/roleManage/index.tsx](/src/pages/platform/setting/roleManage/index.tsx) | TypeScript JSX | 810 | 45 | 114 | 969 |
+| [src/pages/platform/setting/roleManage/modals/modal.tsx](/src/pages/platform/setting/roleManage/modals/modal.tsx) | TypeScript JSX | 155 | 0 | 22 | 177 |
+| [src/pages/platform/setting/roleManage/model.ts](/src/pages/platform/setting/roleManage/model.ts) | TypeScript | 180 | 18 | 11 | 209 |
+| [src/pages/platform/setting/roleManage/style.less](/src/pages/platform/setting/roleManage/style.less) | Less | 226 | 1 | 29 | 256 |
+| [src/pages/platform/setting/roleManage/typings.d.ts](/src/pages/platform/setting/roleManage/typings.d.ts) | TypeScript | 11 | 14 | 3 | 28 |
+| [src/pages/platform/setting/static/index.tsx](/src/pages/platform/setting/static/index.tsx) | TypeScript JSX | 32 | 9 | 10 | 51 |
+| [src/pages/platform/setting/systemNavMana/index.tsx](/src/pages/platform/setting/systemNavMana/index.tsx) | TypeScript JSX | 647 | 33 | 69 | 749 |
+| [src/pages/platform/setting/systemNavMana/service.ts](/src/pages/platform/setting/systemNavMana/service.ts) | TypeScript | 105 | 16 | 22 | 143 |
+| [src/pages/platform/setting/systemNavMana/style.less](/src/pages/platform/setting/systemNavMana/style.less) | Less | 117 | 4 | 21 | 142 |
+| [src/pages/platform/setting/userManage/index.tsx](/src/pages/platform/setting/userManage/index.tsx) | TypeScript JSX | 317 | 31 | 35 | 383 |
+| [src/pages/platform/setting/userManage/modal.tsx](/src/pages/platform/setting/userManage/modal.tsx) | TypeScript JSX | 392 | 23 | 42 | 457 |
+| [src/pages/platform/setting/userManage/model.ts](/src/pages/platform/setting/userManage/model.ts) | TypeScript | 170 | 30 | 15 | 215 |
+| [src/pages/platform/setting/userManage/style.less](/src/pages/platform/setting/userManage/style.less) | Less | 128 | 0 | 23 | 151 |
+| [src/pages/platform/setting/userManage/typings.d.ts](/src/pages/platform/setting/userManage/typings.d.ts) | TypeScript | 11 | 14 | 3 | 28 |
+| [src/pages/platform/sqlediter/index.tsx](/src/pages/platform/sqlediter/index.tsx) | TypeScript JSX | 56 | 20 | 22 | 98 |
+| [src/pages/platform/sqlediter/style.less](/src/pages/platform/sqlediter/style.less) | Less | 0 | 0 | 1 | 1 |
+| [src/password-quality-calculator.d.ts](/src/password-quality-calculator.d.ts) | TypeScript | 4 | 14 | 2 | 20 |
+| [src/service/api.d.ts](/src/service/api.d.ts) | TypeScript | 37 | 9 | 7 | 53 |
+| [src/service/department.ts](/src/service/department.ts) | TypeScript | 15 | 10 | 7 | 32 |
+| [src/service/dictionary.ts](/src/service/dictionary.ts) | TypeScript | 33 | 10 | 5 | 48 |
+| [src/service/hospList.ts](/src/service/hospList.ts) | TypeScript | 178 | 24 | 35 | 237 |
+| [src/service/index.ts](/src/service/index.ts) | TypeScript | 58 | 12 | 12 | 82 |
+| [src/service/indicator.ts](/src/service/indicator.ts) | TypeScript | 44 | 13 | 12 | 69 |
+| [src/service/login.ts](/src/service/login.ts) | TypeScript | 59 | 16 | 13 | 88 |
+| [src/service/menu.ts](/src/service/menu.ts) | TypeScript | 155 | 21 | 42 | 218 |
+| [src/service/public.ts](/src/service/public.ts) | TypeScript | 14 | 9 | 7 | 30 |
+| [src/service/role.ts](/src/service/role.ts) | TypeScript | 116 | 20 | 26 | 162 |
+| [src/service/user.ts](/src/service/user.ts) | TypeScript | 121 | 20 | 21 | 162 |
+| [src/typings.d.ts](/src/typings.d.ts) | TypeScript | 39 | 12 | 7 | 58 |
+| [src/utils.ts](/src/utils.ts) | TypeScript | 128 | 23 | 32 | 183 |
+| [src/wrappers/auth.tsx](/src/wrappers/auth.tsx) | TypeScript JSX | 7 | 10 | 5 | 22 |
+| [tsconfig.json](/tsconfig.json) | JSON with Comments | 38 | 0 | 1 | 39 |
+| [typings.d.ts](/typings.d.ts) | TypeScript | 12 | 8 | 3 | 23 |
+
+[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

+ 15 - 0
.VSCodeCounter/2024-11-05_10-46-15/diff-details.md

@@ -0,0 +1,15 @@
+# Diff Details
+
+Date : 2024-11-05 10:46:15
+
+Directory /Users/dema/work/KC-MiddlePlatform
+
+Total : 0 files,  0 codes, 0 comments, 0 blanks, all 0 lines
+
+[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+
+[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

+ 2 - 0
.VSCodeCounter/2024-11-05_10-46-15/diff.csv

@@ -0,0 +1,2 @@
+"filename", "language", "", "comment", "blank", "total"
+"Total", "-", , 0, 0, 0

+ 19 - 0
.VSCodeCounter/2024-11-05_10-46-15/diff.md

@@ -0,0 +1,19 @@
+# Diff Summary
+
+Date : 2024-11-05 10:46:15
+
+Directory /Users/dema/work/KC-MiddlePlatform
+
+Total : 0 files,  0 codes, 0 comments, 0 blanks, all 0 lines
+
+[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+
+[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

+ 22 - 0
.VSCodeCounter/2024-11-05_10-46-15/diff.txt

@@ -0,0 +1,22 @@
+Date : 2024-11-05 10:46:15
+Directory : /Users/dema/work/KC-MiddlePlatform
+Total : 0 files,  0 codes, 0 comments, 0 blanks, all 0 lines
+
+Languages
++----------+------------+------------+------------+------------+------------+
+| language | files      | code       | comment    | blank      | total      |
++----------+------------+------------+------------+------------+------------+
++----------+------------+------------+------------+------------+------------+
+
+Directories
++------+------------+------------+------------+------------+------------+
+| path | files      | code       | comment    | blank      | total      |
++------+------------+------------+------------+------------+------------+
++------+------------+------------+------------+------------+------------+
+
+Files
++----------+----------+------------+------------+------------+------------+
+| filename | language | code       | comment    | blank      | total      |
++----------+----------+------------+------------+------------+------------+
+| Total    |          |          0 |          0 |          0 |          0 |
++----------+----------+------------+------------+------------+------------+

+ 156 - 0
.VSCodeCounter/2024-11-05_10-46-15/results.csv

@@ -0,0 +1,156 @@
+"filename", "language", "TypeScript", "HTML", "TypeScript JSX", "Less", "JSON", "JSON with Comments", "Ignore", "JavaScript", "Markdown", "comment", "blank", "total"
+"/Users/dema/work/KC-MiddlePlatform/.prettierignore", "Ignore", 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 9
+"/Users/dema/work/KC-MiddlePlatform/.prettierrc", "JSON", 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 1, 12
+"/Users/dema/work/KC-MiddlePlatform/README.md", "Markdown", 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 50, 123
+"/Users/dema/work/KC-MiddlePlatform/config/config.dev.ts", "TypeScript", 11, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 16
+"/Users/dema/work/KC-MiddlePlatform/config/config.ts", "TypeScript", 241, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 280
+"/Users/dema/work/KC-MiddlePlatform/config/proxy.ts", "TypeScript", 25, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 43
+"/Users/dema/work/KC-MiddlePlatform/mock/login.ts", "TypeScript", 81, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 98
+"/Users/dema/work/KC-MiddlePlatform/mock/menu.ts", "TypeScript", 27, 0, 0, 0, 0, 0, 0, 0, 0, 8, 5, 40
+"/Users/dema/work/KC-MiddlePlatform/mock/pubDicType.ts", "TypeScript", 7, 0, 0, 0, 0, 0, 0, 0, 0, 9, 6, 22
+"/Users/dema/work/KC-MiddlePlatform/package.json", "JSON", 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 1, 56
+"/Users/dema/work/KC-MiddlePlatform/public/zhongtaiA.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 0, 9
+"/Users/dema/work/KC-MiddlePlatform/public/zhongtaiB.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1
+"/Users/dema/work/KC-MiddlePlatform/public/zhongtaiC.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1
+"/Users/dema/work/KC-MiddlePlatform/src/app.tsx", "TypeScript JSX", 0, 0, 349, 0, 0, 0, 0, 0, 0, 65, 59, 473
+"/Users/dema/work/KC-MiddlePlatform/src/components/KCInput/index.tsx", "TypeScript JSX", 0, 0, 36, 0, 0, 0, 0, 0, 0, 8, 14, 58
+"/Users/dema/work/KC-MiddlePlatform/src/components/KCModal/index.tsx", "TypeScript JSX", 0, 0, 29, 0, 0, 0, 0, 0, 0, 8, 6, 43
+"/Users/dema/work/KC-MiddlePlatform/src/components/KCModal/typing.d.ts", "TypeScript", 6, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 17
+"/Users/dema/work/KC-MiddlePlatform/src/components/KCProSelect/index.tsx", "TypeScript JSX", 0, 0, 7, 0, 0, 0, 0, 0, 0, 8, 4, 19
+"/Users/dema/work/KC-MiddlePlatform/src/components/KCProSelect/typings.d.ts", "TypeScript", 4, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 15
+"/Users/dema/work/KC-MiddlePlatform/src/components/KCUpload/index.tsx", "TypeScript JSX", 0, 0, 49, 0, 0, 0, 0, 0, 0, 49, 22, 120
+"/Users/dema/work/KC-MiddlePlatform/src/components/KCUpload/style.less", "Less", 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 5, 30
+"/Users/dema/work/KC-MiddlePlatform/src/components/KCUpload/typings.d.ts", "TypeScript", 6, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 17
+"/Users/dema/work/KC-MiddlePlatform/src/components/NavSelecter/index.tsx", "TypeScript JSX", 0, 0, 164, 0, 0, 0, 0, 0, 0, 8, 20, 192
+"/Users/dema/work/KC-MiddlePlatform/src/components/NavSelecter/style.less", "Less", 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 20, 161
+"/Users/dema/work/KC-MiddlePlatform/src/components/ResizableContainer/index.tsx", "TypeScript JSX", 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 10, 62
+"/Users/dema/work/KC-MiddlePlatform/src/components/ResizableContainer/style.less", "Less", 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 7, 25
+"/Users/dema/work/KC-MiddlePlatform/src/components/kc-select/index.tsx", "TypeScript JSX", 0, 0, 25, 0, 0, 0, 0, 0, 0, 8, 5, 38
+"/Users/dema/work/KC-MiddlePlatform/src/components/kc-select/style.less", "Less", 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 1, 11
+"/Users/dema/work/KC-MiddlePlatform/src/components/kc-select/typing.d.ts", "TypeScript", 14, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 27
+"/Users/dema/work/KC-MiddlePlatform/src/components/kcTable/index.tsx", "TypeScript JSX", 0, 0, 58, 0, 0, 0, 0, 0, 0, 8, 8, 74
+"/Users/dema/work/KC-MiddlePlatform/src/components/kcTable/style.less", "Less", 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 16, 86
+"/Users/dema/work/KC-MiddlePlatform/src/components/kcTable/typing.d.ts", "TypeScript", 11, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 23
+"/Users/dema/work/KC-MiddlePlatform/src/components/topBar/index.tsx", "TypeScript JSX", 0, 0, 384, 0, 0, 0, 0, 0, 0, 34, 95, 513
+"/Users/dema/work/KC-MiddlePlatform/src/components/topBar/style.less", "Less", 0, 0, 0, 577, 0, 0, 0, 0, 0, 80, 111, 768
+"/Users/dema/work/KC-MiddlePlatform/src/components/topBar/typings.d.ts", "TypeScript", 32, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 48
+"/Users/dema/work/KC-MiddlePlatform/src/constant.ts", "TypeScript", 43, 0, 0, 0, 0, 0, 0, 0, 0, 13, 5, 61
+"/Users/dema/work/KC-MiddlePlatform/src/global.less", "Less", 0, 0, 0, 341, 0, 0, 0, 0, 0, 46, 85, 472
+"/Users/dema/work/KC-MiddlePlatform/src/global.tsx", "TypeScript JSX", 0, 0, 28, 0, 0, 0, 0, 0, 0, 17, 8, 53
+"/Users/dema/work/KC-MiddlePlatform/src/layouts/index.tsx", "TypeScript JSX", 0, 0, 194, 0, 0, 0, 0, 0, 0, 37, 29, 260
+"/Users/dema/work/KC-MiddlePlatform/src/models/index.ts", "TypeScript", 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 8, 66
+"/Users/dema/work/KC-MiddlePlatform/src/pages/404.tsx", "TypeScript JSX", 0, 0, 10, 0, 0, 0, 0, 0, 0, 8, 4, 22
+"/Users/dema/work/KC-MiddlePlatform/src/pages/channelIndex/channelIndexOne/index.tsx", "TypeScript JSX", 0, 0, 7, 0, 0, 0, 0, 0, 0, 8, 8, 23
+"/Users/dema/work/KC-MiddlePlatform/src/pages/channelIndex/channelIndexOne/style.less", "Less", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 3, 20
+"/Users/dema/work/KC-MiddlePlatform/src/pages/document.ejs", "HTML", 0, 15, 0, 0, 0, 0, 0, 0, 0, 11, 3, 29
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/components/FastEntry/index.tsx", "TypeScript JSX", 0, 0, 94, 0, 0, 0, 0, 0, 0, 87, 16, 197
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/components/FastEntry/style.less", "Less", 0, 0, 0, 66, 0, 0, 0, 0, 0, 12, 7, 85
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/components/MsgRecord/index.tsx", "TypeScript JSX", 0, 0, 47, 0, 0, 0, 0, 0, 0, 10, 14, 71
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/components/MsgRecord/style.less", "Less", 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 11, 80
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/components/RecentlyVisited/index.tsx", "TypeScript JSX", 0, 0, 57, 0, 0, 0, 0, 0, 0, 10, 11, 78
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/components/RecentlyVisited/style.less", "Less", 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 10, 57
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/components/TodoList/index.tsx", "TypeScript JSX", 0, 0, 62, 0, 0, 0, 0, 0, 0, 9, 11, 82
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/components/TodoList/style.less", "Less", 0, 0, 0, 127, 0, 0, 0, 0, 0, 50, 22, 199
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/index.less", "Less", 0, 0, 0, 269, 0, 0, 0, 0, 0, 218, 68, 555
+"/Users/dema/work/KC-MiddlePlatform/src/pages/index/index.tsx", "TypeScript JSX", 0, 0, 227, 0, 0, 0, 0, 0, 0, 13, 35, 275
+"/Users/dema/work/KC-MiddlePlatform/src/pages/login/index.tsx", "TypeScript JSX", 0, 0, 252, 0, 0, 0, 0, 0, 0, 11, 36, 299
+"/Users/dema/work/KC-MiddlePlatform/src/pages/login/login.d.ts", "TypeScript", 12, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 26
+"/Users/dema/work/KC-MiddlePlatform/src/pages/login/style.less", "Less", 0, 0, 0, 176, 0, 0, 0, 0, 0, 2, 27, 205
+"/Users/dema/work/KC-MiddlePlatform/src/pages/noAccess/index.tsx", "TypeScript JSX", 0, 0, 16, 0, 0, 0, 0, 0, 0, 9, 5, 30
+"/Users/dema/work/KC-MiddlePlatform/src/pages/noAccess/style.less", "Less", 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 4, 49
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/_mock.ts", "TypeScript", 72, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 80
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/BaseView.less", "Less", 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 7, 66
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/PhoneView.tsx", "TypeScript JSX", 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 6, 43
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/base.tsx", "TypeScript JSX", 0, 0, 227, 0, 0, 0, 0, 0, 0, 1, 8, 236
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/binding.tsx", "TypeScript JSX", 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 4, 47
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/notification.tsx", "TypeScript JSX", 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 5, 45
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/security.tsx", "TypeScript JSX", 0, 0, 145, 0, 0, 0, 0, 0, 0, 29, 18, 192
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/data.d.ts", "TypeScript", 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 44
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/geographic/city.json", "JSON", 0, 0, 0, 0, 1784, 0, 0, 0, 0, 0, 1, 1785
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/geographic/province.json", "JSON", 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 1, 139
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/index.tsx", "TypeScript JSX", 0, 0, 110, 0, 0, 0, 0, 0, 0, 2, 10, 122
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/service.ts", "TypeScript", 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 19
+"/Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/style.less", "Less", 0, 0, 0, 106, 0, 0, 0, 0, 0, 2, 6, 114
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/_layout.tsx", "TypeScript JSX", 0, 0, 433, 0, 0, 0, 0, 0, 0, 78, 97, 608
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/KCIMLeftList/index.tsx", "TypeScript JSX", 0, 0, 184, 0, 0, 0, 0, 0, 0, 36, 55, 275
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/KCIMLeftList/style.less", "Less", 0, 0, 0, 132, 0, 0, 0, 0, 0, 8, 21, 161
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/TreeEditer/index.tsx", "TypeScript JSX", 0, 0, 94, 0, 0, 0, 0, 0, 0, 27, 21, 142
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/TreeEditer/style.less", "Less", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/menuEditer/menu.tsx", "TypeScript JSX", 0, 0, 147, 0, 0, 0, 0, 0, 0, 17, 28, 192
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/menuEditer/style.less", "Less", 0, 0, 0, 18, 0, 0, 0, 0, 0, 1, 2, 21
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/usersEditer/index.tsx", "TypeScript JSX", 0, 0, 58, 0, 0, 0, 0, 0, 0, 10, 13, 81
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/usersEditer/style.less", "Less", 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 25
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/index.less", "Less", 0, 0, 0, 87, 0, 0, 0, 0, 0, 11, 24, 122
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/departmentMana/index.tsx", "TypeScript JSX", 0, 0, 268, 0, 0, 0, 0, 0, 0, 9, 52, 329
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/departmentMana/service.ts", "TypeScript", 75, 0, 0, 0, 0, 0, 0, 0, 0, 15, 33, 123
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/departmentMana/style.less", "Less", 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 8, 55
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/index.tsx", "TypeScript JSX", 0, 0, 860, 0, 0, 0, 0, 0, 0, 84, 117, 1061
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/modals/modal.tsx", "TypeScript JSX", 0, 0, 412, 0, 0, 0, 0, 0, 0, 10, 26, 448
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/model.ts", "TypeScript", 167, 0, 0, 0, 0, 0, 0, 0, 0, 19, 13, 199
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/style.less", "Less", 0, 0, 0, 209, 0, 0, 0, 0, 0, 1, 32, 242
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/typings.d.ts", "TypeScript", 13, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 30
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospParamsMana/index.tsx", "TypeScript JSX", 0, 0, 409, 0, 0, 0, 0, 0, 0, 13, 75, 497
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospParamsMana/service.ts", "TypeScript", 62, 0, 0, 0, 0, 0, 0, 0, 0, 14, 32, 108
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospParamsMana/style.less", "Less", 0, 0, 0, 111, 0, 0, 0, 0, 0, 1, 27, 139
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/DrawerForm/drawer.tsx", "TypeScript JSX", 0, 0, 987, 0, 0, 0, 0, 0, 0, 60, 111, 1158
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/DrawerForm/style.less", "Less", 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 12, 75
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/TreeDirectory/index.tsx", "TypeScript JSX", 0, 0, 60, 0, 0, 0, 0, 0, 0, 18, 29, 107
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/TreeDirectory/style.less", "Less", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/index.tsx", "TypeScript JSX", 0, 0, 387, 0, 0, 0, 0, 0, 0, 40, 75, 502
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/style.less", "Less", 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 12, 78
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/kcClassification/index.tsx", "TypeScript JSX", 0, 0, 192, 0, 0, 0, 0, 0, 0, 13, 15, 220
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/kcClassification/service.ts", "TypeScript", 56, 0, 0, 0, 0, 0, 0, 0, 0, 12, 8, 76
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/kcClassification/style.less", "Less", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 6, 43
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/index.tsx", "TypeScript JSX", 0, 0, 253, 0, 0, 0, 0, 0, 0, 29, 25, 307
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/modals/menu.tsx", "TypeScript JSX", 0, 0, 6, 0, 0, 0, 0, 0, 0, 8, 4, 18
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/modals/modal.tsx", "TypeScript JSX", 0, 0, 315, 0, 0, 0, 0, 0, 0, 19, 21, 355
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/model.ts", "TypeScript", 188, 0, 0, 0, 0, 0, 0, 0, 0, 15, 17, 220
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/style.less", "Less", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/typings.d.ts", "TypeScript", 11, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 28
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/notificationTemplate/index.tsx", "TypeScript JSX", 0, 0, 344, 0, 0, 0, 0, 0, 0, 12, 55, 411
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/notificationTemplate/service.ts", "TypeScript", 62, 0, 0, 0, 0, 0, 0, 0, 0, 12, 23, 97
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/notificationTemplate/style.less", "Less", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 6, 43
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/paramsMana/index.tsx", "TypeScript JSX", 0, 0, 337, 0, 0, 0, 0, 0, 0, 21, 57, 415
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/paramsMana/service.ts", "TypeScript", 81, 0, 0, 0, 0, 0, 0, 0, 0, 13, 28, 122
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/paramsMana/style.less", "Less", 0, 0, 0, 99, 0, 0, 0, 0, 0, 1, 24, 124
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicMana/index.tsx", "TypeScript JSX", 0, 0, 428, 0, 0, 0, 0, 0, 0, 12, 39, 479
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicMana/service.ts", "TypeScript", 62, 0, 0, 0, 0, 0, 0, 0, 0, 14, 25, 101
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicMana/style.less", "Less", 0, 0, 0, 105, 0, 0, 0, 0, 0, 1, 21, 127
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx", "TypeScript JSX", 0, 0, 338, 0, 0, 0, 0, 0, 0, 36, 32, 406
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/service.ts", "TypeScript", 65, 0, 0, 0, 0, 0, 0, 0, 0, 14, 11, 90
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/style.less", "Less", 0, 0, 0, 93, 0, 0, 0, 0, 0, 1, 23, 117
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/reports/index.tsx", "TypeScript JSX", 0, 0, 41, 0, 0, 0, 0, 0, 0, 10, 12, 63
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/index.tsx", "TypeScript JSX", 0, 0, 810, 0, 0, 0, 0, 0, 0, 45, 114, 969
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/modals/modal.tsx", "TypeScript JSX", 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 22, 177
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/model.ts", "TypeScript", 180, 0, 0, 0, 0, 0, 0, 0, 0, 18, 11, 209
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/style.less", "Less", 0, 0, 0, 226, 0, 0, 0, 0, 0, 1, 29, 256
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/typings.d.ts", "TypeScript", 11, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 28
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/static/index.tsx", "TypeScript JSX", 0, 0, 32, 0, 0, 0, 0, 0, 0, 9, 10, 51
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/systemNavMana/index.tsx", "TypeScript JSX", 0, 0, 647, 0, 0, 0, 0, 0, 0, 33, 69, 749
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/systemNavMana/service.ts", "TypeScript", 105, 0, 0, 0, 0, 0, 0, 0, 0, 16, 22, 143
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/systemNavMana/style.less", "Less", 0, 0, 0, 117, 0, 0, 0, 0, 0, 4, 21, 142
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/index.tsx", "TypeScript JSX", 0, 0, 317, 0, 0, 0, 0, 0, 0, 31, 35, 383
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/modal.tsx", "TypeScript JSX", 0, 0, 392, 0, 0, 0, 0, 0, 0, 23, 42, 457
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/model.ts", "TypeScript", 170, 0, 0, 0, 0, 0, 0, 0, 0, 30, 15, 215
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/style.less", "Less", 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 23, 151
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/typings.d.ts", "TypeScript", 11, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 28
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/sqlediter/index.tsx", "TypeScript JSX", 0, 0, 56, 0, 0, 0, 0, 0, 0, 20, 22, 98
+"/Users/dema/work/KC-MiddlePlatform/src/pages/platform/sqlediter/style.less", "Less", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"/Users/dema/work/KC-MiddlePlatform/src/password-quality-calculator.d.ts", "TypeScript", 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 20
+"/Users/dema/work/KC-MiddlePlatform/src/service/api.d.ts", "TypeScript", 37, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 53
+"/Users/dema/work/KC-MiddlePlatform/src/service/department.ts", "TypeScript", 15, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 32
+"/Users/dema/work/KC-MiddlePlatform/src/service/dictionary.ts", "TypeScript", 33, 0, 0, 0, 0, 0, 0, 0, 0, 10, 5, 48
+"/Users/dema/work/KC-MiddlePlatform/src/service/hospList.ts", "TypeScript", 178, 0, 0, 0, 0, 0, 0, 0, 0, 24, 35, 237
+"/Users/dema/work/KC-MiddlePlatform/src/service/index.ts", "TypeScript", 58, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 82
+"/Users/dema/work/KC-MiddlePlatform/src/service/indicator.ts", "TypeScript", 44, 0, 0, 0, 0, 0, 0, 0, 0, 13, 12, 69
+"/Users/dema/work/KC-MiddlePlatform/src/service/login.ts", "TypeScript", 59, 0, 0, 0, 0, 0, 0, 0, 0, 16, 13, 88
+"/Users/dema/work/KC-MiddlePlatform/src/service/menu.ts", "TypeScript", 155, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 218
+"/Users/dema/work/KC-MiddlePlatform/src/service/public.ts", "TypeScript", 14, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 30
+"/Users/dema/work/KC-MiddlePlatform/src/service/role.ts", "TypeScript", 116, 0, 0, 0, 0, 0, 0, 0, 0, 20, 26, 162
+"/Users/dema/work/KC-MiddlePlatform/src/service/user.ts", "TypeScript", 121, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 162
+"/Users/dema/work/KC-MiddlePlatform/src/typings.d.ts", "TypeScript", 39, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 58
+"/Users/dema/work/KC-MiddlePlatform/src/utils.ts", "TypeScript", 128, 0, 0, 0, 0, 0, 0, 0, 0, 23, 32, 183
+"/Users/dema/work/KC-MiddlePlatform/src/wrappers/auth.tsx", "TypeScript JSX", 0, 0, 7, 0, 0, 0, 0, 0, 0, 10, 5, 22
+"/Users/dema/work/KC-MiddlePlatform/tsconfig.json", "JSON with Comments", 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 1, 39
+"/Users/dema/work/KC-MiddlePlatform/typings.d.ts", "TypeScript", 12, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 23
+"Total", "-", 2977, 15, 11718, 3762, 1988, 38, 8, 3, 73, 2314, 3087, 25983

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
.VSCodeCounter/2024-11-05_10-46-15/results.json


+ 99 - 0
.VSCodeCounter/2024-11-05_10-46-15/results.md

@@ -0,0 +1,99 @@
+# Summary
+
+Date : 2024-11-05 10:46:15
+
+Directory /Users/dema/work/KC-MiddlePlatform
+
+Total : 154 files,  20582 codes, 2314 comments, 3087 blanks, all 25983 lines
+
+Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| TypeScript JSX | 56 | 11,718 | 1,180 | 1,749 | 14,647 |
+| Less | 38 | 3,762 | 440 | 707 | 4,909 |
+| TypeScript | 49 | 2,977 | 675 | 572 | 4,224 |
+| JSON | 4 | 1,988 | 0 | 4 | 1,992 |
+| Markdown | 1 | 73 | 0 | 50 | 123 |
+| JSON with Comments | 1 | 38 | 0 | 1 | 39 |
+| HTML | 1 | 15 | 11 | 3 | 29 |
+| Ignore | 1 | 8 | 0 | 1 | 9 |
+| JavaScript | 3 | 3 | 8 | 0 | 11 |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| . | 154 | 20,582 | 2,314 | 3,087 | 25,983 |
+| . (Files) | 6 | 197 | 8 | 57 | 262 |
+| config | 3 | 277 | 47 | 15 | 339 |
+| mock | 3 | 115 | 25 | 20 | 160 |
+| public | 3 | 3 | 8 | 0 | 11 |
+| src | 139 | 19,990 | 2,226 | 2,995 | 25,211 |
+| src (Files) | 7 | 932 | 190 | 198 | 1,320 |
+| src/components | 21 | 1,718 | 260 | 369 | 2,347 |
+| src/components/KCInput | 1 | 36 | 8 | 14 | 58 |
+| src/components/KCModal | 2 | 35 | 16 | 9 | 60 |
+| src/components/KCProSelect | 2 | 11 | 16 | 7 | 34 |
+| src/components/KCUpload | 3 | 80 | 57 | 30 | 167 |
+| src/components/NavSelecter | 2 | 305 | 8 | 40 | 353 |
+| src/components/ResizableContainer | 2 | 70 | 0 | 17 | 87 |
+| src/components/kc-select | 3 | 49 | 17 | 10 | 76 |
+| src/components/kcTable | 3 | 139 | 16 | 28 | 183 |
+| src/components/topBar | 3 | 993 | 122 | 214 | 1,329 |
+| src/layouts | 1 | 194 | 37 | 29 | 260 |
+| src/models | 1 | 0 | 58 | 8 | 66 |
+| src/pages | 97 | 16,309 | 1,507 | 2,199 | 20,015 |
+| src/pages (Files) | 2 | 25 | 19 | 7 | 51 |
+| src/pages/channelIndex | 2 | 24 | 8 | 11 | 43 |
+| src/pages/channelIndex/channelIndexOne | 2 | 24 | 8 | 11 | 43 |
+| src/pages/index | 10 | 1,065 | 409 | 205 | 1,679 |
+| src/pages/index (Files) | 2 | 496 | 231 | 103 | 830 |
+| src/pages/index/components | 8 | 569 | 178 | 102 | 849 |
+| src/pages/index/components/FastEntry | 2 | 160 | 99 | 23 | 282 |
+| src/pages/index/components/MsgRecord | 2 | 116 | 10 | 25 | 151 |
+| src/pages/index/components/RecentlyVisited | 2 | 104 | 10 | 21 | 135 |
+| src/pages/index/components/TodoList | 2 | 189 | 59 | 33 | 281 |
+| src/pages/login | 3 | 440 | 24 | 66 | 530 |
+| src/pages/noAccess | 2 | 61 | 9 | 9 | 79 |
+| src/pages/personalCenter | 13 | 2,814 | 37 | 81 | 2,932 |
+| src/pages/personalCenter (Files) | 5 | 341 | 7 | 31 | 379 |
+| src/pages/personalCenter/components | 6 | 551 | 30 | 48 | 629 |
+| src/pages/personalCenter/geographic | 2 | 1,922 | 0 | 2 | 1,924 |
+| src/pages/platform | 65 | 11,880 | 1,001 | 1,820 | 14,701 |
+| src/pages/platform (Files) | 2 | 520 | 89 | 121 | 730 |
+| src/pages/platform/components | 8 | 657 | 99 | 142 | 898 |
+| src/pages/platform/components/KCIMLeftList | 2 | 316 | 44 | 76 | 436 |
+| src/pages/platform/components/TreeEditer | 2 | 94 | 27 | 22 | 143 |
+| src/pages/platform/components/menuEditer | 2 | 165 | 18 | 30 | 213 |
+| src/pages/platform/components/usersEditer | 2 | 82 | 10 | 14 | 106 |
+| src/pages/platform/setting | 53 | 10,647 | 793 | 1,534 | 12,974 |
+| src/pages/platform/setting/departmentMana | 3 | 390 | 24 | 93 | 507 |
+| src/pages/platform/setting/hospManage | 5 | 1,661 | 128 | 191 | 1,980 |
+| src/pages/platform/setting/hospManage (Files) | 4 | 1,249 | 118 | 165 | 1,532 |
+| src/pages/platform/setting/hospManage/modals | 1 | 412 | 10 | 26 | 448 |
+| src/pages/platform/setting/hospParamsMana | 3 | 582 | 28 | 134 | 744 |
+| src/pages/platform/setting/indicatorMana | 6 | 1,563 | 118 | 240 | 1,921 |
+| src/pages/platform/setting/indicatorMana (Files) | 2 | 453 | 40 | 87 | 580 |
+| src/pages/platform/setting/indicatorMana/DrawerForm | 2 | 1,050 | 60 | 123 | 1,233 |
+| src/pages/platform/setting/indicatorMana/TreeDirectory | 2 | 60 | 18 | 30 | 108 |
+| src/pages/platform/setting/kcClassification | 3 | 285 | 25 | 29 | 339 |
+| src/pages/platform/setting/menuManage | 6 | 773 | 85 | 72 | 930 |
+| src/pages/platform/setting/menuManage (Files) | 4 | 452 | 58 | 47 | 557 |
+| src/pages/platform/setting/menuManage/modals | 2 | 321 | 27 | 25 | 373 |
+| src/pages/platform/setting/notificationTemplate | 3 | 443 | 24 | 84 | 551 |
+| src/pages/platform/setting/paramsMana | 3 | 517 | 35 | 109 | 661 |
+| src/pages/platform/setting/pubDicMana | 3 | 595 | 27 | 85 | 707 |
+| src/pages/platform/setting/pubDicTypeMana | 3 | 496 | 51 | 66 | 613 |
+| src/pages/platform/setting/reports | 1 | 41 | 10 | 12 | 63 |
+| src/pages/platform/setting/roleManage | 5 | 1,382 | 78 | 179 | 1,639 |
+| src/pages/platform/setting/roleManage (Files) | 4 | 1,227 | 78 | 157 | 1,462 |
+| src/pages/platform/setting/roleManage/modals | 1 | 155 | 0 | 22 | 177 |
+| src/pages/platform/setting/static | 1 | 32 | 9 | 10 | 51 |
+| src/pages/platform/setting/systemNavMana | 3 | 869 | 53 | 112 | 1,034 |
+| src/pages/platform/setting/userManage | 5 | 1,018 | 98 | 118 | 1,234 |
+| src/pages/platform/sqlediter | 2 | 56 | 20 | 23 | 99 |
+| src/service | 11 | 830 | 164 | 187 | 1,181 |
+| src/wrappers | 1 | 7 | 10 | 5 | 22 |
+
+Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

+ 256 - 0
.VSCodeCounter/2024-11-05_10-46-15/results.txt

@@ -0,0 +1,256 @@
+Date : 2024-11-05 10:46:15
+Directory : /Users/dema/work/KC-MiddlePlatform
+Total : 154 files,  20582 codes, 2314 comments, 3087 blanks, all 25983 lines
+
+Languages
++--------------------+------------+------------+------------+------------+------------+
+| language           | files      | code       | comment    | blank      | total      |
++--------------------+------------+------------+------------+------------+------------+
+| TypeScript JSX     |         56 |     11,718 |      1,180 |      1,749 |     14,647 |
+| Less               |         38 |      3,762 |        440 |        707 |      4,909 |
+| TypeScript         |         49 |      2,977 |        675 |        572 |      4,224 |
+| JSON               |          4 |      1,988 |          0 |          4 |      1,992 |
+| Markdown           |          1 |         73 |          0 |         50 |        123 |
+| JSON with Comments |          1 |         38 |          0 |          1 |         39 |
+| HTML               |          1 |         15 |         11 |          3 |         29 |
+| Ignore             |          1 |          8 |          0 |          1 |          9 |
+| JavaScript         |          3 |          3 |          8 |          0 |         11 |
++--------------------+------------+------------+------------+------------+------------+
+
+Directories
++------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| path                                                                                                 | files      | code       | comment    | blank      | total      |
++------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| .                                                                                                    |        154 |     20,582 |      2,314 |      3,087 |     25,983 |
+| . (Files)                                                                                            |          6 |        197 |          8 |         57 |        262 |
+| config                                                                                               |          3 |        277 |         47 |         15 |        339 |
+| mock                                                                                                 |          3 |        115 |         25 |         20 |        160 |
+| public                                                                                               |          3 |          3 |          8 |          0 |         11 |
+| src                                                                                                  |        139 |     19,990 |      2,226 |      2,995 |     25,211 |
+| src (Files)                                                                                          |          7 |        932 |        190 |        198 |      1,320 |
+| src/components                                                                                       |         21 |      1,718 |        260 |        369 |      2,347 |
+| src/components/KCInput                                                                               |          1 |         36 |          8 |         14 |         58 |
+| src/components/KCModal                                                                               |          2 |         35 |         16 |          9 |         60 |
+| src/components/KCProSelect                                                                           |          2 |         11 |         16 |          7 |         34 |
+| src/components/KCUpload                                                                              |          3 |         80 |         57 |         30 |        167 |
+| src/components/NavSelecter                                                                           |          2 |        305 |          8 |         40 |        353 |
+| src/components/ResizableContainer                                                                    |          2 |         70 |          0 |         17 |         87 |
+| src/components/kc-select                                                                             |          3 |         49 |         17 |         10 |         76 |
+| src/components/kcTable                                                                               |          3 |        139 |         16 |         28 |        183 |
+| src/components/topBar                                                                                |          3 |        993 |        122 |        214 |      1,329 |
+| src/layouts                                                                                          |          1 |        194 |         37 |         29 |        260 |
+| src/models                                                                                           |          1 |          0 |         58 |          8 |         66 |
+| src/pages                                                                                            |         97 |     16,309 |      1,507 |      2,199 |     20,015 |
+| src/pages (Files)                                                                                    |          2 |         25 |         19 |          7 |         51 |
+| src/pages/channelIndex                                                                               |          2 |         24 |          8 |         11 |         43 |
+| src/pages/channelIndex/channelIndexOne                                                               |          2 |         24 |          8 |         11 |         43 |
+| src/pages/index                                                                                      |         10 |      1,065 |        409 |        205 |      1,679 |
+| src/pages/index (Files)                                                                              |          2 |        496 |        231 |        103 |        830 |
+| src/pages/index/components                                                                           |          8 |        569 |        178 |        102 |        849 |
+| src/pages/index/components/FastEntry                                                                 |          2 |        160 |         99 |         23 |        282 |
+| src/pages/index/components/MsgRecord                                                                 |          2 |        116 |         10 |         25 |        151 |
+| src/pages/index/components/RecentlyVisited                                                           |          2 |        104 |         10 |         21 |        135 |
+| src/pages/index/components/TodoList                                                                  |          2 |        189 |         59 |         33 |        281 |
+| src/pages/login                                                                                      |          3 |        440 |         24 |         66 |        530 |
+| src/pages/noAccess                                                                                   |          2 |         61 |          9 |          9 |         79 |
+| src/pages/personalCenter                                                                             |         13 |      2,814 |         37 |         81 |      2,932 |
+| src/pages/personalCenter (Files)                                                                     |          5 |        341 |          7 |         31 |        379 |
+| src/pages/personalCenter/components                                                                  |          6 |        551 |         30 |         48 |        629 |
+| src/pages/personalCenter/geographic                                                                  |          2 |      1,922 |          0 |          2 |      1,924 |
+| src/pages/platform                                                                                   |         65 |     11,880 |      1,001 |      1,820 |     14,701 |
+| src/pages/platform (Files)                                                                           |          2 |        520 |         89 |        121 |        730 |
+| src/pages/platform/components                                                                        |          8 |        657 |         99 |        142 |        898 |
+| src/pages/platform/components/KCIMLeftList                                                           |          2 |        316 |         44 |         76 |        436 |
+| src/pages/platform/components/TreeEditer                                                             |          2 |         94 |         27 |         22 |        143 |
+| src/pages/platform/components/menuEditer                                                             |          2 |        165 |         18 |         30 |        213 |
+| src/pages/platform/components/usersEditer                                                            |          2 |         82 |         10 |         14 |        106 |
+| src/pages/platform/setting                                                                           |         53 |     10,647 |        793 |      1,534 |     12,974 |
+| src/pages/platform/setting/departmentMana                                                            |          3 |        390 |         24 |         93 |        507 |
+| src/pages/platform/setting/hospManage                                                                |          5 |      1,661 |        128 |        191 |      1,980 |
+| src/pages/platform/setting/hospManage (Files)                                                        |          4 |      1,249 |        118 |        165 |      1,532 |
+| src/pages/platform/setting/hospManage/modals                                                         |          1 |        412 |         10 |         26 |        448 |
+| src/pages/platform/setting/hospParamsMana                                                            |          3 |        582 |         28 |        134 |        744 |
+| src/pages/platform/setting/indicatorMana                                                             |          6 |      1,563 |        118 |        240 |      1,921 |
+| src/pages/platform/setting/indicatorMana (Files)                                                     |          2 |        453 |         40 |         87 |        580 |
+| src/pages/platform/setting/indicatorMana/DrawerForm                                                  |          2 |      1,050 |         60 |        123 |      1,233 |
+| src/pages/platform/setting/indicatorMana/TreeDirectory                                               |          2 |         60 |         18 |         30 |        108 |
+| src/pages/platform/setting/kcClassification                                                          |          3 |        285 |         25 |         29 |        339 |
+| src/pages/platform/setting/menuManage                                                                |          6 |        773 |         85 |         72 |        930 |
+| src/pages/platform/setting/menuManage (Files)                                                        |          4 |        452 |         58 |         47 |        557 |
+| src/pages/platform/setting/menuManage/modals                                                         |          2 |        321 |         27 |         25 |        373 |
+| src/pages/platform/setting/notificationTemplate                                                      |          3 |        443 |         24 |         84 |        551 |
+| src/pages/platform/setting/paramsMana                                                                |          3 |        517 |         35 |        109 |        661 |
+| src/pages/platform/setting/pubDicMana                                                                |          3 |        595 |         27 |         85 |        707 |
+| src/pages/platform/setting/pubDicTypeMana                                                            |          3 |        496 |         51 |         66 |        613 |
+| src/pages/platform/setting/reports                                                                   |          1 |         41 |         10 |         12 |         63 |
+| src/pages/platform/setting/roleManage                                                                |          5 |      1,382 |         78 |        179 |      1,639 |
+| src/pages/platform/setting/roleManage (Files)                                                        |          4 |      1,227 |         78 |        157 |      1,462 |
+| src/pages/platform/setting/roleManage/modals                                                         |          1 |        155 |          0 |         22 |        177 |
+| src/pages/platform/setting/static                                                                    |          1 |         32 |          9 |         10 |         51 |
+| src/pages/platform/setting/systemNavMana                                                             |          3 |        869 |         53 |        112 |      1,034 |
+| src/pages/platform/setting/userManage                                                                |          5 |      1,018 |         98 |        118 |      1,234 |
+| src/pages/platform/sqlediter                                                                         |          2 |         56 |         20 |         23 |         99 |
+| src/service                                                                                          |         11 |        830 |        164 |        187 |      1,181 |
+| src/wrappers                                                                                         |          1 |          7 |         10 |          5 |         22 |
++------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+
+Files
++------------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+
+| filename                                                                                             | language           | code       | comment    | blank      | total      |
++------------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+
+| /Users/dema/work/KC-MiddlePlatform/.prettierignore                                                   | Ignore             |          8 |          0 |          1 |          9 |
+| /Users/dema/work/KC-MiddlePlatform/.prettierrc                                                       | JSON               |         11 |          0 |          1 |         12 |
+| /Users/dema/work/KC-MiddlePlatform/README.md                                                         | Markdown           |         73 |          0 |         50 |        123 |
+| /Users/dema/work/KC-MiddlePlatform/config/config.dev.ts                                              | TypeScript         |         11 |          3 |          2 |         16 |
+| /Users/dema/work/KC-MiddlePlatform/config/config.ts                                                  | TypeScript         |        241 |         33 |          6 |        280 |
+| /Users/dema/work/KC-MiddlePlatform/config/proxy.ts                                                   | TypeScript         |         25 |         11 |          7 |         43 |
+| /Users/dema/work/KC-MiddlePlatform/mock/login.ts                                                     | TypeScript         |         81 |          8 |          9 |         98 |
+| /Users/dema/work/KC-MiddlePlatform/mock/menu.ts                                                      | TypeScript         |         27 |          8 |          5 |         40 |
+| /Users/dema/work/KC-MiddlePlatform/mock/pubDicType.ts                                                | TypeScript         |          7 |          9 |          6 |         22 |
+| /Users/dema/work/KC-MiddlePlatform/package.json                                                      | JSON               |         55 |          0 |          1 |         56 |
+| /Users/dema/work/KC-MiddlePlatform/public/zhongtaiA.js                                               | JavaScript         |          1 |          8 |          0 |          9 |
+| /Users/dema/work/KC-MiddlePlatform/public/zhongtaiB.js                                               | JavaScript         |          1 |          0 |          0 |          1 |
+| /Users/dema/work/KC-MiddlePlatform/public/zhongtaiC.js                                               | JavaScript         |          1 |          0 |          0 |          1 |
+| /Users/dema/work/KC-MiddlePlatform/src/app.tsx                                                       | TypeScript JSX     |        349 |         65 |         59 |        473 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/KCInput/index.tsx                                  | TypeScript JSX     |         36 |          8 |         14 |         58 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/KCModal/index.tsx                                  | TypeScript JSX     |         29 |          8 |          6 |         43 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/KCModal/typing.d.ts                                | TypeScript         |          6 |          8 |          3 |         17 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/KCProSelect/index.tsx                              | TypeScript JSX     |          7 |          8 |          4 |         19 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/KCProSelect/typings.d.ts                           | TypeScript         |          4 |          8 |          3 |         15 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/KCUpload/index.tsx                                 | TypeScript JSX     |         49 |         49 |         22 |        120 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/KCUpload/style.less                                | Less               |         25 |          0 |          5 |         30 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/KCUpload/typings.d.ts                              | TypeScript         |          6 |          8 |          3 |         17 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/NavSelecter/index.tsx                              | TypeScript JSX     |        164 |          8 |         20 |        192 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/NavSelecter/style.less                             | Less               |        141 |          0 |         20 |        161 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/ResizableContainer/index.tsx                       | TypeScript JSX     |         52 |          0 |         10 |         62 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/ResizableContainer/style.less                      | Less               |         18 |          0 |          7 |         25 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/kc-select/index.tsx                                | TypeScript JSX     |         25 |          8 |          5 |         38 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/kc-select/style.less                               | Less               |         10 |          0 |          1 |         11 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/kc-select/typing.d.ts                              | TypeScript         |         14 |          9 |          4 |         27 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/kcTable/index.tsx                                  | TypeScript JSX     |         58 |          8 |          8 |         74 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/kcTable/style.less                                 | Less               |         70 |          0 |         16 |         86 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/kcTable/typing.d.ts                                | TypeScript         |         11 |          8 |          4 |         23 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/topBar/index.tsx                                   | TypeScript JSX     |        384 |         34 |         95 |        513 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/topBar/style.less                                  | Less               |        577 |         80 |        111 |        768 |
+| /Users/dema/work/KC-MiddlePlatform/src/components/topBar/typings.d.ts                                | TypeScript         |         32 |          8 |          8 |         48 |
+| /Users/dema/work/KC-MiddlePlatform/src/constant.ts                                                   | TypeScript         |         43 |         13 |          5 |         61 |
+| /Users/dema/work/KC-MiddlePlatform/src/global.less                                                   | Less               |        341 |         46 |         85 |        472 |
+| /Users/dema/work/KC-MiddlePlatform/src/global.tsx                                                    | TypeScript JSX     |         28 |         17 |          8 |         53 |
+| /Users/dema/work/KC-MiddlePlatform/src/layouts/index.tsx                                             | TypeScript JSX     |        194 |         37 |         29 |        260 |
+| /Users/dema/work/KC-MiddlePlatform/src/models/index.ts                                               | TypeScript         |          0 |         58 |          8 |         66 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/404.tsx                                                 | TypeScript JSX     |         10 |          8 |          4 |         22 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/channelIndex/channelIndexOne/index.tsx                  | TypeScript JSX     |          7 |          8 |          8 |         23 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/channelIndex/channelIndexOne/style.less                 | Less               |         17 |          0 |          3 |         20 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/document.ejs                                            | HTML               |         15 |         11 |          3 |         29 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/components/FastEntry/index.tsx                    | TypeScript JSX     |         94 |         87 |         16 |        197 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/components/FastEntry/style.less                   | Less               |         66 |         12 |          7 |         85 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/components/MsgRecord/index.tsx                    | TypeScript JSX     |         47 |         10 |         14 |         71 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/components/MsgRecord/style.less                   | Less               |         69 |          0 |         11 |         80 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/components/RecentlyVisited/index.tsx              | TypeScript JSX     |         57 |         10 |         11 |         78 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/components/RecentlyVisited/style.less             | Less               |         47 |          0 |         10 |         57 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/components/TodoList/index.tsx                     | TypeScript JSX     |         62 |          9 |         11 |         82 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/components/TodoList/style.less                    | Less               |        127 |         50 |         22 |        199 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/index.less                                        | Less               |        269 |        218 |         68 |        555 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/index/index.tsx                                         | TypeScript JSX     |        227 |         13 |         35 |        275 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/login/index.tsx                                         | TypeScript JSX     |        252 |         11 |         36 |        299 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/login/login.d.ts                                        | TypeScript         |         12 |         11 |          3 |         26 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/login/style.less                                        | Less               |        176 |          2 |         27 |        205 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/noAccess/index.tsx                                      | TypeScript JSX     |         16 |          9 |          5 |         30 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/noAccess/style.less                                     | Less               |         45 |          0 |          4 |         49 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/_mock.ts                                 | TypeScript         |         72 |          3 |          5 |         80 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/BaseView.less                 | Less               |         59 |          0 |          7 |         66 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/PhoneView.tsx                 | TypeScript JSX     |         37 |          0 |          6 |         43 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/base.tsx                      | TypeScript JSX     |        227 |          1 |          8 |        236 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/binding.tsx                   | TypeScript JSX     |         43 |          0 |          4 |         47 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/notification.tsx              | TypeScript JSX     |         40 |          0 |          5 |         45 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/components/security.tsx                  | TypeScript JSX     |        145 |         29 |         18 |        192 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/data.d.ts                                | TypeScript         |         39 |          0 |          5 |         44 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/geographic/city.json                     | JSON               |      1,784 |          0 |          1 |      1,785 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/geographic/province.json                 | JSON               |        138 |          0 |          1 |        139 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/index.tsx                                | TypeScript JSX     |        110 |          2 |         10 |        122 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/service.ts                               | TypeScript         |         14 |          0 |          5 |         19 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/personalCenter/style.less                               | Less               |        106 |          2 |          6 |        114 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/_layout.tsx                                    | TypeScript JSX     |        433 |         78 |         97 |        608 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/KCIMLeftList/index.tsx              | TypeScript JSX     |        184 |         36 |         55 |        275 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/KCIMLeftList/style.less             | Less               |        132 |          8 |         21 |        161 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/TreeEditer/index.tsx                | TypeScript JSX     |         94 |         27 |         21 |        142 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/TreeEditer/style.less               | Less               |          0 |          0 |          1 |          1 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/menuEditer/menu.tsx                 | TypeScript JSX     |        147 |         17 |         28 |        192 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/menuEditer/style.less               | Less               |         18 |          1 |          2 |         21 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/usersEditer/index.tsx               | TypeScript JSX     |         58 |         10 |         13 |         81 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/components/usersEditer/style.less              | Less               |         24 |          0 |          1 |         25 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/index.less                                     | Less               |         87 |         11 |         24 |        122 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/departmentMana/index.tsx               | TypeScript JSX     |        268 |          9 |         52 |        329 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/departmentMana/service.ts              | TypeScript         |         75 |         15 |         33 |        123 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/departmentMana/style.less              | Less               |         47 |          0 |          8 |         55 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/index.tsx                   | TypeScript JSX     |        860 |         84 |        117 |      1,061 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/modals/modal.tsx            | TypeScript JSX     |        412 |         10 |         26 |        448 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/model.ts                    | TypeScript         |        167 |         19 |         13 |        199 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/style.less                  | Less               |        209 |          1 |         32 |        242 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospManage/typings.d.ts                | TypeScript         |         13 |         14 |          3 |         30 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospParamsMana/index.tsx               | TypeScript JSX     |        409 |         13 |         75 |        497 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospParamsMana/service.ts              | TypeScript         |         62 |         14 |         32 |        108 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/hospParamsMana/style.less              | Less               |        111 |          1 |         27 |        139 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/DrawerForm/drawer.tsx    | TypeScript JSX     |        987 |         60 |        111 |      1,158 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/DrawerForm/style.less    | Less               |         63 |          0 |         12 |         75 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/TreeDirectory/index.tsx  | TypeScript JSX     |         60 |         18 |         29 |        107 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/TreeDirectory/style.less | Less               |          0 |          0 |          1 |          1 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/index.tsx                | TypeScript JSX     |        387 |         40 |         75 |        502 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/style.less               | Less               |         66 |          0 |         12 |         78 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/kcClassification/index.tsx             | TypeScript JSX     |        192 |         13 |         15 |        220 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/kcClassification/service.ts            | TypeScript         |         56 |         12 |          8 |         76 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/kcClassification/style.less            | Less               |         37 |          0 |          6 |         43 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/index.tsx                   | TypeScript JSX     |        253 |         29 |         25 |        307 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/modals/menu.tsx             | TypeScript JSX     |          6 |          8 |          4 |         18 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/modals/modal.tsx            | TypeScript JSX     |        315 |         19 |         21 |        355 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/model.ts                    | TypeScript         |        188 |         15 |         17 |        220 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/style.less                  | Less               |          0 |          0 |          2 |          2 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/menuManage/typings.d.ts                | TypeScript         |         11 |         14 |          3 |         28 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/notificationTemplate/index.tsx         | TypeScript JSX     |        344 |         12 |         55 |        411 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/notificationTemplate/service.ts        | TypeScript         |         62 |         12 |         23 |         97 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/notificationTemplate/style.less        | Less               |         37 |          0 |          6 |         43 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/paramsMana/index.tsx                   | TypeScript JSX     |        337 |         21 |         57 |        415 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/paramsMana/service.ts                  | TypeScript         |         81 |         13 |         28 |        122 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/paramsMana/style.less                  | Less               |         99 |          1 |         24 |        124 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicMana/index.tsx                   | TypeScript JSX     |        428 |         12 |         39 |        479 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicMana/service.ts                  | TypeScript         |         62 |         14 |         25 |        101 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicMana/style.less                  | Less               |        105 |          1 |         21 |        127 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx               | TypeScript JSX     |        338 |         36 |         32 |        406 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/service.ts              | TypeScript         |         65 |         14 |         11 |         90 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/style.less              | Less               |         93 |          1 |         23 |        117 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/reports/index.tsx                      | TypeScript JSX     |         41 |         10 |         12 |         63 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/index.tsx                   | TypeScript JSX     |        810 |         45 |        114 |        969 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/modals/modal.tsx            | TypeScript JSX     |        155 |          0 |         22 |        177 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/model.ts                    | TypeScript         |        180 |         18 |         11 |        209 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/style.less                  | Less               |        226 |          1 |         29 |        256 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/roleManage/typings.d.ts                | TypeScript         |         11 |         14 |          3 |         28 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/static/index.tsx                       | TypeScript JSX     |         32 |          9 |         10 |         51 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/systemNavMana/index.tsx                | TypeScript JSX     |        647 |         33 |         69 |        749 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/systemNavMana/service.ts               | TypeScript         |        105 |         16 |         22 |        143 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/systemNavMana/style.less               | Less               |        117 |          4 |         21 |        142 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/index.tsx                   | TypeScript JSX     |        317 |         31 |         35 |        383 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/modal.tsx                   | TypeScript JSX     |        392 |         23 |         42 |        457 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/model.ts                    | TypeScript         |        170 |         30 |         15 |        215 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/style.less                  | Less               |        128 |          0 |         23 |        151 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/setting/userManage/typings.d.ts                | TypeScript         |         11 |         14 |          3 |         28 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/sqlediter/index.tsx                            | TypeScript JSX     |         56 |         20 |         22 |         98 |
+| /Users/dema/work/KC-MiddlePlatform/src/pages/platform/sqlediter/style.less                           | Less               |          0 |          0 |          1 |          1 |
+| /Users/dema/work/KC-MiddlePlatform/src/password-quality-calculator.d.ts                              | TypeScript         |          4 |         14 |          2 |         20 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/api.d.ts                                              | TypeScript         |         37 |          9 |          7 |         53 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/department.ts                                         | TypeScript         |         15 |         10 |          7 |         32 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/dictionary.ts                                         | TypeScript         |         33 |         10 |          5 |         48 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/hospList.ts                                           | TypeScript         |        178 |         24 |         35 |        237 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/index.ts                                              | TypeScript         |         58 |         12 |         12 |         82 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/indicator.ts                                          | TypeScript         |         44 |         13 |         12 |         69 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/login.ts                                              | TypeScript         |         59 |         16 |         13 |         88 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/menu.ts                                               | TypeScript         |        155 |         21 |         42 |        218 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/public.ts                                             | TypeScript         |         14 |          9 |          7 |         30 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/role.ts                                               | TypeScript         |        116 |         20 |         26 |        162 |
+| /Users/dema/work/KC-MiddlePlatform/src/service/user.ts                                               | TypeScript         |        121 |         20 |         21 |        162 |
+| /Users/dema/work/KC-MiddlePlatform/src/typings.d.ts                                                  | TypeScript         |         39 |         12 |          7 |         58 |
+| /Users/dema/work/KC-MiddlePlatform/src/utils.ts                                                      | TypeScript         |        128 |         23 |         32 |        183 |
+| /Users/dema/work/KC-MiddlePlatform/src/wrappers/auth.tsx                                             | TypeScript JSX     |          7 |         10 |          5 |         22 |
+| /Users/dema/work/KC-MiddlePlatform/tsconfig.json                                                     | JSON with Comments |         38 |          0 |          1 |         39 |
+| /Users/dema/work/KC-MiddlePlatform/typings.d.ts                                                      | TypeScript         |         12 |          8 |          3 |         23 |
+| Total                                                                                                |                    |     20,582 |      2,314 |      3,087 |     25,983 |
++------------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+

+ 12 - 2
config/config.ts

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-07 10:04:20
- * @LastEditTime: 2024-09-06 14:36:23
+ * @LastEditTime: 2024-12-03 11:09:39
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/config/config.ts
@@ -14,6 +14,7 @@ import proxy from './proxy';
 const { REACT_APP_ENV } = process.env;
 
 export default defineConfig({
+  hash:true,
   nodeModulesTransform: {
     type: 'none',
   },
@@ -96,6 +97,14 @@ export default defineConfig({
             //loader: (loading:boolean) => <div>loading</div>,
           },
         },
+        {
+          path: '/MediResourceManaSys',
+          microApp: 'MediResourceManaSys',
+          microAppProps: {
+            autoCaptureError: true,
+            //loader: (loading:boolean) => <div>loading</div>,
+          },
+        },
         {
           path: '/MedicalWisdomCheckSys',
           microApp: 'MedicalWisdomCheckSys',
@@ -271,7 +280,8 @@ export default defineConfig({
     master: {
       sandbox: {
         // strictStyleIsolation:true,
-        // // experimentalStyleIsolation: true, // 试验性
+        // experimentalStyleIsolation: true, // 试验性
+        //  experimentalSandbox: 'proxy'
       },
     },
   },

+ 4 - 4
config/proxy.ts

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2024-04-09 18:07:34
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-08-23 10:17:09
+ * @LastEditTime: 2024-10-25 09:34:46
  * @FilePath: /KC-MiddlePlatform/config/proxy.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -10,20 +10,20 @@
 
 const proxy: { [key: string]: any } = {
   dev: {
-    //绩效管理
+ 
     '/gateway': {
       //target: 'http://47.96.149.190:5000',
       target: 'http://120.27.235.181:5000',
       changeOrigin: true,
       // pathRewrite: { '^/master': '' },
     },
-    //老版评审管理
+
     '/api': {
       target: 'http://120.27.235.181:8083/',
       changeOrigin: true,
       pathRewrite: { '^/api': '' },
     },
-    //新版评审管理
+
     '/view': {
       target: 'http://120.27.235.181:8085/',
       changeOrigin: true,

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 1
public/zhongtaiA.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 8
public/zhongtaiB.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 8
public/zhongtaiC.js


+ 56 - 37
src/app.tsx

@@ -3,7 +3,7 @@ import { PageLoading } from '@ant-design/pro-layout';
 import { notification, Modal, message } from 'antd';
 import { RequestConfig, history } from 'umi';
 import type { RequestOptionsInit } from 'umi-request';
-import { UserDataType, getQiankunMicroApps, login } from '@/service/login';
+import { UserDataType, getQiankunMicroApps } from '@/service/login';
 
 import { BasicLayoutProps } from '@ant-design/pro-layout';
 import { logoutHandle } from './global';
@@ -11,7 +11,7 @@ import { Platforms } from './constant';
 import { SpacicalPageParamsType } from './typings';
 import { createFromIconfontCN } from '@ant-design/icons';
 import { handleLogin } from './pages/login';
-import { getUserPlatformNav } from './service/menu';
+
 
 window.isParentApp = true;
 
@@ -38,7 +38,7 @@ export const initialStateConfig = {
 
 type InitialStateType = {
   navData: any[];
-  menuData:any[],//中台菜单
+  menuData: any[],//中台菜单
   userData?: UserDataType;
   systemLists?: TopBar.Tab[]; //当前医院可选子系统列表
   openedSysLists?: TopBar.Tab[]; //当前已打开的系统列表
@@ -62,7 +62,7 @@ export async function getInitialState(): Promise<InitialStateType> {
         localStorage.setItem('userData', importUserData);
         return JSON.parse(importUserData);
       }
-      
+
       const userData = localStorage.getItem('userData');
 
       if (userData) {
@@ -74,16 +74,16 @@ export async function getInitialState(): Promise<InitialStateType> {
       // 如果没有 userData 且 env 参数为 demo,则发起一个请求
       if (env === 'demo') {
         // 获取 hospSign 参数
-        
+
         const hospSign = queryParams.get('hospSign');
         // 发起请求的代码,根据实际需求调整
-        const resp = await handleLogin('demo','123456', hospSign as string);
-        if(resp){
+        const resp = await handleLogin('demo', '123456', hospSign as string);
+        if (resp) {
           history.replace('/index');
           return resp;
         }
       }
-  
+
       throw Error;
     } catch (error) {
       const currentUrlParams = new URLSearchParams(window.location.search);
@@ -93,11 +93,11 @@ export async function getInitialState(): Promise<InitialStateType> {
       if (!currentUrlParams.has('hospSign')) {
         currentUrlParams.append('hospSign', hospSign);
       }
-  
+
       history.push(`${loginPath}?${currentUrlParams.toString()}`);
     }
     return undefined;
-};
+  };
 
   const getAppIcon = (name: string) => {
     return Platforms.filter((i) => i.name == name).length > 0 ? Platforms.filter((i) => i.name == name)[0].logo : '';
@@ -117,7 +117,7 @@ export async function getInitialState(): Promise<InitialStateType> {
     // }
     return [];
   };
-  
+
 
   const logout = logoutHandle;
 
@@ -130,14 +130,14 @@ export async function getInitialState(): Promise<InitialStateType> {
     // navData = await getUserPlatformNav();
   }
 
-  
+
 
   const localInitData = localStorage.getItem('initialState');
   const currentSelectedTab = localStorage.getItem('currentSelectedTab');
 
 
   return {
-    currentSelectedSys:currentSelectedTab != null?JSON.parse(currentSelectedTab):undefined,
+    currentSelectedSys: currentSelectedTab != null ? JSON.parse(currentSelectedTab) : undefined,
     openedSysLists: [],
     ...JSON.parse(localInitData ? localInitData : '{}'), //覆盖,恢复tab状态
     userData,
@@ -155,10 +155,10 @@ const requestInterceptorsHandle = (url: string, options: RequestOptionsInit) =>
 
   if (userData) {
     const { token } = JSON.parse(userData);
-    if(url.indexOf('/centerSys/route/list') == -1){
+    if (url.indexOf('/centerSys/route/list') == -1) {
       authHeader.token = token;
     }
-  }  
+  }
   return {
     url: `/gateway${url}`,
     options: { ...options, interceptors: true, headers: authHeader, timeout: 100000000 },
@@ -206,7 +206,7 @@ const responseInterceptorsHandle = async (response: Response, options: RequestOp
       return true;
     }
   } else {
-    if ((_response.msg && _response.msg.indexOf('Token') != -1)||(_response.msg && _response.msg.indexOf('token') != -1)) {
+    if ((_response.msg && _response.msg.indexOf('Token') != -1) || (_response.msg && _response.msg.indexOf('token') != -1)) {
       Modal.confirm({
         title: '抱歉,你的登录已过期,请重新登录!',
         okText: '确定',
@@ -219,7 +219,7 @@ const responseInterceptorsHandle = async (response: Response, options: RequestOp
         },
       });
       return;
-    }else{
+    } else {
       notification.error({
         message: '错误:',
         description: `${_response.msg ? _response.msg : _response.message ? _response.message : _response.errorMessage}`,
@@ -268,30 +268,30 @@ const errorHandlerFunc = (error: ResponseErr) => {
 
     if (errorMessage.length > 20) {
       notification.error({
-        top:72,
+        top: 72,
         message: ` ${errorCode}:出现错误!`,
         description: errorMessage,
-        icon:<IconFont type="icon-jinggaotishi"  />,
-        style:{padding:16,margin:0,borderRadius:8}
+        icon: <IconFont type="icon-jinggaotishi" />,
+        style: { padding: 16, margin: 0, borderRadius: 8 }
       });
     } else if (false) {
     } else {
       notification.error({
-        top:72,
+        top: 72,
         message: '错误',
         description: ` ${errorCode}:${errorMessage}`,
-        icon:<IconFont type="icon-jinggaotishi"  />,
-        style:{padding:16,margin:0,borderRadius:8}
+        icon: <IconFont type="icon-jinggaotishi" />,
+        style: { padding: 16, margin: 0, borderRadius: 8 }
       });
     }
   } catch (err) {
     console.log({ errorHandlerFunc: err });
     notification.error({
-      top:72,
+      top: 72,
       message: '提示',
-      description:'遇到未知错误,查看控制台!',
-      icon:<IconFont type="icon-jinggaotishi"  />,
-      style:{padding:16,margin:0,borderRadius:8}
+      description: '遇到未知错误,查看控制台!',
+      icon: <IconFont type="icon-jinggaotishi" />,
+      style: { padding: 16, margin: 0, borderRadius: 8 }
     });
   }
 };
@@ -350,26 +350,30 @@ export const qiankun = async () => {
         // },
         {
           name: 'budgetManaSystem', // 唯一 id
-          entry: '//localhost:8002',
-          //entry: '//116.169.61.56:29528/',  //开发
-          //entry: '//120.27.235.181:5000/perform/',  //开发
+          //entry: '//localhost:8002',
+          entry: '//120.27.235.181:5000/perform/',  //开发
           //entry: '//47.96.149.190:5000/perform/', //演示
           //entry: '//198.198.203.161:5000/perform/', //淮南
         },
+        // {
+        //   name: 'pfmBackMana', // 唯一 id
+        //   entry: '//localhost:8001'
+        //   //entry: '//120.27.235.181:5000/pfmManager/', // 开发
+        // },
         {
-          name: 'pfmBackMana', // 唯一 id
-          entry: '//localhost:8001'
-          //entry: '//120.27.235.181:5000/pfmManager/', // 开发
+          name: 'CostAccountingSys', // 唯一 id
+          entry: '//localhost:8002',
+          //entry: '//120.27.235.181:5000/costAccount/', // 开发
         },
         {
-          name: 'CostAccountingSys', // 唯一 id
+          name: 'MediResourceManaSys', // 唯一 id
           entry: '//localhost:8001',
           //entry: '//120.27.235.181:5000/costAccount/', // 开发
         },
         {
           name: 'MedicalWisdomCheckSys', // 唯一 id
-          //entry: '//localhost:8804',
-          entry: '//120.27.235.181:5000/pfmview/', // 开发
+          entry: '//localhost:8804',
+          //entry: '//120.27.235.181:5000/pfmview/', // 开发
         },
         // {
         //   name: 'personnelManaSystem', // 唯一 id
@@ -381,6 +385,18 @@ export const qiankun = async () => {
         //   entry: '//localhost:8005'
         // }
       ],
+      // 生命周期钩子
+      lifeCycles: {
+        // beforeMount:(props:any) => {
+        //   console.log('子应用挂载前', props);
+        // },
+        // afterMount: (props:any) => {
+        //   console.log('子应用加载完成', props);
+        // },
+        // beforeUnmount:(props:any)=>{
+        //   console.log('子应用卸载前', props);
+        // }
+      },
     };
   } else {
     const resp = await getQiankunMicroApps();
@@ -404,6 +420,9 @@ export function useQiankunStateForSlave() {
   };
 }
 
+
+
+
 // //@/pages/platform/setting/reports/index
 export function patchRoutes({ routes }: { routes: any }) {
   const treeLoop = (treeData: any) => {
@@ -441,7 +460,7 @@ export function patchRoutes({ routes }: { routes: any }) {
   treeLoop(routes[0]);
 }
 
-export const layout = ({ initialState: {  } }: { initialState: InitialStateType }): BasicLayoutProps => {
+export const layout = ({ initialState: { } }: { initialState: InitialStateType }): BasicLayoutProps => {
   return {
     headerRender: false,
     rightContentRender: () => <>right</>,

+ 1 - 1
src/components/ResizableContainer/style.less

@@ -13,7 +13,7 @@
         z-index: 999;
         right: 0;
         top:0;
-        width: 5px;
+        width: 1px;
         height:90vh;
         cursor: ew-resize;
         background-color:transparent;

+ 1 - 1
src/components/kcTable/style.less

@@ -71,7 +71,7 @@
     .kcmp-ant-pagination-item {
       border: 1px solid #DAE2F2 !important;
       border-radius: 4px !important;
-      margin-right: 8px;
+      margin-right: 4px !important;
 
       &.kcmp-ant-pagination-item-active {
         background: #3377FF;

+ 15 - 10
src/components/topBar/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-11-16 09:12:37
- * @LastEditTime: 2024-07-18 16:51:08
+ * @LastEditTime: 2024-12-03 14:54:16
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/index/components/topBar/index.tsx
@@ -69,9 +69,10 @@ const TopBar: React.FC<TopBarType> = (props) => {
     //导航栏tab点击
     // console.log('_systemTabClickHandle',item);
     onTabClick && onTabClick(item);
-    localStorage.setItem('currentSelectedTab', JSON.stringify(item));
-    setCurrentSelectedTab(item);
-
+    if(item.type != 1&&item.contentType != 7){
+      localStorage.setItem('currentSelectedTab', JSON.stringify(item));
+      setCurrentSelectedTab(item);
+    }
   };
 
 
@@ -128,7 +129,7 @@ const TopBar: React.FC<TopBarType> = (props) => {
     if (delIndex != 0) {
       _systemTabClickHandle(_systemTabs[delIndex - 1]); //自动切换为前一个tab
     }
-
+    
     onTabChange && onTabChange(filtered);
     onCloseTab && onCloseTab(item);
   };
@@ -203,10 +204,10 @@ const TopBar: React.FC<TopBarType> = (props) => {
     _systemTabClickHandle(systemData);
     const temp = onTabSystemTabs[onTabSystemTabs.length - 1];
     const _onTabSystemTabs = [...onTabSystemTabs];
-    const b = _onTabSystemTabs.filter(a => a.systemId != temp.systemId);
-
+    const b = _onTabSystemTabs.filter(a => (a.systemId?a.systemId:a.menuId) != (temp.systemId?temp.systemId:temp.menuId));
+  
     set_onTabSystemTabs([...b, systemData]);
-    set_onTabSystemTabs_hide([...onTabSystemTabs_hide.filter(a => a.systemId != systemData.systemId), temp])
+    set_onTabSystemTabs_hide([...onTabSystemTabs_hide.filter(a => (a.systemId?a.systemId:a.menuId) != (systemData.systemId?systemData.systemId:systemData.menuId)), temp])
   }
 
 
@@ -297,6 +298,7 @@ const TopBar: React.FC<TopBarType> = (props) => {
         if(resp){
           set_password(undefined);
           set_tokenUpdateModalVisible(false);
+          window.location.reload();
         }
   }
 
@@ -396,7 +398,8 @@ const TopBar: React.FC<TopBarType> = (props) => {
                          <img className='suoding' src={require('../../../public/images/suoding.png')} alt="" />
                       </div>
                       <div className='name'>{userData?.name}</div>
-                      <Input.Password onChange={(e)=>set_password(e.target.value)} value={password}  className='input' autoComplete='off' />
+                      <Input onChange={(e)=>set_password(e.target.value)} value={password}  
+                      className='input' autoComplete='off' onKeyDown={(e)=>e.key === 'Enter'&&updateToken()} />
                       <div className='updateBtn' onClick={()=>updateToken()}>解锁</div>
                       <a onClick={()=>logoutHandle()}>退出登录</a>
                 </div>
@@ -408,7 +411,9 @@ const TopBar: React.FC<TopBarType> = (props) => {
         <div className={ifOpenPannel ? 'menu active' : 'menu'} onClick={() => openNav()}>
           <img src={require('../../../public/images/menu.png')} alt="" />
         </div>
-        <span className='systemTitle' onClick={() => goSystemIndex(pageTitle)}>{pageTitle}</span>
+        <span className='systemTitle'
+        //  onClick={() => goSystemIndex(pageTitle)}
+         >{pageTitle}</span>
       </div>
 
       <div className='userRelaInfoWrap'>

+ 1 - 1
src/components/topBar/style.less

@@ -737,7 +737,7 @@
               font-weight: 400;
               color: #17181a;
               padding-left: 8px;
-              margin-right: 1%;
+              margin-right: 0.85%;
               cursor: pointer;
               transition: all 0.3 ease-in;
               overflow: hidden;

+ 49 - 13
src/global.less

@@ -17,7 +17,7 @@ input {
 
 
 .ant-notification {
-    display: none !important;
+  display: none !important;
 }
 
 //overwrite antd-pro css
@@ -55,7 +55,7 @@ input {
   border-radius: 4px;
   border: 1px solid #cfd7e6;
 
-  & > input {
+  &>input {
     &::placeholder {
       font-size: 14px;
       font-family: SourceHanSansCN-Normal, SourceHanSansCN;
@@ -84,14 +84,23 @@ input {
   }
 
   .kcmp-ant-form-item-control-input {
+    // min-height: 24px !important;
+
     .kcmp-ant-form-item-control-input-content {
       textarea {
-        padding: 4px 8px;
+        min-height: 24px !important;
+        height: 24px !important;
+        padding: 0 8px !important;
         border-radius: 4px !important;
-        border: 1px solid #cfd7e6;
+        // border: 1px solid #cfd7e6;
+      }
+
+      .kcmp-ant-input-clear-icon {
+        top: 6px !important;
       }
 
       .kcmp-ant-input {
+
         //padding-left: 8px;
         &::placeholder {
           color: #99a6bf;
@@ -138,7 +147,7 @@ input {
   }
 }
 
-.kcmp-ant-table-thead > tr > th {
+.kcmp-ant-table-thead>tr>th {
   border-bottom: none;
 
   &::before {
@@ -151,13 +160,34 @@ input {
 **/
 .kcmp-ant-select {
   .kcmp-ant-select-selector {
-    height: 24px !important;
-    padding: 0 8px !important;
+    // height: 24px !important;
+    // padding: 0 8px !important;
     border-radius: 4px !important;
     border: 1px solid #cfd7e6 !important;
 
+    // .kcmp-ant-select-selection-overflow {
+    //   position: relative;
+    //   top: -3px;
+    // }
+
     .kcmp-ant-select-selection-item {
-      line-height: 24px;
+
+      // height: 16px !important;
+      // line-height: 16px !important;
+      margin-top: 0 !important;
+      margin-bottom: 0 !important;
+      border: none !important;
+
+      // .kcmp-ant-select-selection-item-content {
+      //    font-size: 12px !important;
+      // }
+
+      .kcmp-ant-select-selection-item-remove {
+        .anticon-close {
+          position: relative;
+          top: -1px;
+        }
+      }
     }
 
     .kcmp-ant-select-selection-search-input {
@@ -165,9 +195,9 @@ input {
     }
 
     .kcmp-ant-select-selection-placeholder {
-      line-height: 22px !important;
-      font-size: 14px;
-      font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+      // line-height: 22px !important;
+      // font-size: 14px;
+      // font-family: SourceHanSansCN-Normal, SourceHanSansCN;
       font-weight: 400;
       color: #99a6bf;
     }
@@ -307,6 +337,7 @@ input {
   width: 100% !important;
   border-right: none !important;
   box-shadow: none !important;
+
   &.kcmp-ant-layout-sider-collapsed {
     width: 60px !important;
     flex: 0 0 60px !important;
@@ -361,7 +392,7 @@ input {
       .kcmp-ant-table-container {
         .kcmp-ant-table-content {
           .kcmp-ant-table-thead {
-            & > tr > th {
+            &>tr>th {
               font-size: 14px;
               font-family: SourceHanSansCN-Medium, SourceHanSansCN;
               font-weight: 500;
@@ -385,7 +416,7 @@ input {
   }
 }
 
-.kcmp-ant-checkbox + span {
+.kcmp-ant-checkbox+span {
   padding-left: 4px;
   padding-right: 4px;
 }
@@ -402,6 +433,7 @@ input {
   padding: 0px 11px !important;
   border-radius: 4px;
   border: 1px solid #cfd7e6;
+
   .kcmp-ant-picker-input {
     input {
       &::placeholder {
@@ -409,6 +441,7 @@ input {
       }
     }
   }
+
   .kcmp-ant-picker-suffix {
     color: #99a6bf;
   }
@@ -422,14 +455,17 @@ input {
   .bms-ant-layout-sider-children {
     padding-inline: 8px;
   }
+
   .kcmp-ant-pro-sider-collapsed-button {
     border-top: 1px solid transparent;
   }
 }
+
 .kcmp-ant-pro-sider-collapsed-button .anticon {
   display: inline-block;
   font-size: 24px !important;
 }
+
 .kcmp-ant-layout-header {
   z-index: 200 !important;
 }

+ 13 - 7
src/layouts/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-11-09 13:56:33
- * @LastEditTime: 2024-07-31 13:53:53
+ * @LastEditTime: 2024-11-19 16:39:20
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/layouts/index.tsx
@@ -39,16 +39,17 @@ const TopHoc = ({
   const onTabClickHandle = async (data: TopBar.Tab) => {
     const { systemId = '', menuId = '' } = data;
     
-
     const resp = await getAppAccess(systemId.length > 0 ? systemId : menuId);
 
     if (!resp) {
-
       if (JSON.stringify(data) != '{}') {
-        await setInitialState((s) => ({ ...s, currentSelectedSys: data }) as any);
-        // localStorage.removeItem('currentSelectedTab');
+
+        if(data.contentType != 7){
+          await setInitialState((s) => ({ ...s, currentSelectedSys: data }) as any);
+        }
+        
         localStorage.removeItem('selectedKeys');
-        // localStorage.removeItem('visitedTabs');
+
         localStorage.removeItem('openKeys');
 
         if (data.contentType == 4) {
@@ -65,7 +66,12 @@ const TopHoc = ({
           } else {
             localStorage.setItem('isChildShowMenu', 'true');
           }
-          history.push(data.path);
+          if (data.contentType == 7 &&data.type == 1) {
+            window.open(data.url, '_blank');
+          }else{
+            history.push(data.path);
+          }
+          
         }
       }
     } else {

+ 9 - 5
src/pages/index/components/FastEntry/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-05-27 14:17:59
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-01-16 16:50:20
+ * @LastEditTime: 2024-10-12 15:08:21
  * @FilePath: /KC-MiddlePlatform/src/pages/index/components/FastEntry/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -41,15 +41,19 @@ export const FastEntry = (props: FastEntryType) => {
   const [navSelecterData, set_navSelecterData] = useState<NavSelecterData[]>([]);
 
   const tabClickHandle = async (tab: FastEntryTabType) => {
-    const { systemId = '', menuId = '', contentType, type } = tab;
+    const { systemId = '', menuId = '', contentType, type,url } = tab;
     const resp = await getAppAccess(systemId.length > 0 ? systemId : menuId);
-
     if (!resp) {
-      await setInitialState((s) => ({ ...s, currentSelectedSys: tab as any, currentTab: tab }));
+      if(contentType != 7 && type == 1){
+        await setInitialState((s) => ({ ...s, currentSelectedSys: tab as any, currentTab: tab }));
+      }
+     
       if (type == 1 && contentType == 6) {
         //体系或第三方iframe
         history.push('/platform');
-      } else {
+      }else if(type == 1 && contentType == 7){
+        window.open(url,'_blank');
+      }else {
         history.push(tab.path);
       }
     } else {

+ 7 - 6
src/pages/login/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-11-09 14:58:08
- * @LastEditTime: 2024-07-09 10:38:24
+ * @LastEditTime: 2024-11-15 14:38:05
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/login/index.tsx
@@ -162,7 +162,7 @@ const LoginPage: React.FC<LoginPageType> = ({ location, children, title }) => {
 
   useEffect(() => {
     // 根据hospSign获取分院信息
-    setInitialState((s) => ({ ...s, currentSelectedSys: undefined, openedSysLists: [] }));
+    setInitialState((s:any) => ({ ...s, currentSelectedSys: undefined, openedSysLists: [] }));
 
     window.addEventListener('resize', (e) => handleResize(e)); // 监听窗口大小改变
 
@@ -273,17 +273,18 @@ const LoginPage: React.FC<LoginPageType> = ({ location, children, title }) => {
                 <div className="bottomCopyright">
                   {(currentSelectedSubHop?.loginTips.split('|'))[1]}
                   <span style={{ paddingLeft: 16 }}>{(currentSelectedSubHop?.loginTips.split('|'))[2]}</span>
-                </div>
-
-                <div className="beian">
                   <a
                     target="_blank"
                     href="https://beian.miit.gov.cn/"
-                    style={{ display: 'inline-block', textDecoration: 'none', marginRight: 5 }}
+                    style={{ display: 'inline-block', textDecoration: 'none', marginLeft:10,color:'#515866' }}
                   >
                     滇ICP备2024031095号
                   </a>
                 </div>
+
+                {/* <div className="beian">
+                 
+                </div> */}
               </div>
             </Col>
           </Row>

+ 1 - 1
src/pages/login/style.less

@@ -163,7 +163,7 @@
 
     .bottomCopyright {
       position: absolute;
-      bottom: 40px;
+      bottom: 25px;
       width: 100%;
       text-align: center;
       font-size: 12px;

+ 42 - 25
src/pages/platform/_layout.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-06 15:25:39
- * @LastEditTime: 2024-08-21 17:39:43
+ * @LastEditTime: 2024-10-09 15:57:01
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/_layout.tsx
@@ -140,7 +140,7 @@ export default function Layout({ children, location, route, history, match, ...r
   const queryParams = new URLSearchParams(location.search);
   const noMenu = queryParams.get('noMenu');
 
-  const moreConfig: { menuRender?: any } = (isShowPageMenu && noMenu != 'true') ? {} : { menuRender: false }
+  const moreConfig: { menuRender?: any } = {};
 
   const { pathname } = location;
   const isMenuClickRef = useRef(false);
@@ -225,15 +225,23 @@ export default function Layout({ children, location, route, history, match, ...r
     }
     return url;
   };
- 
-  if (initialState?.currentSelectedSys) {
-    const { type, url, contentType } = initialState.currentSelectedSys;
-    if (type == 1 && contentType == 6) {
-      const userData = localStorage.getItem('userData');
-      const { token } = JSON.parse(userData as string);
-      return <iframe id={'bi_iframe'} style={{ width: '100%', height: '100%', border: 'none' }} src={addTokenToUrl(url as string, token)} onLoad={() => adjustIframe()}></iframe>;
-    }
-  }
+
+
+  const { type, url, contentType } = initialState?.currentSelectedSys ?? {};
+  const userData = localStorage.getItem('userData');
+  const { token } = JSON.parse(userData as string);
+
+  // if (initialState?.currentSelectedSys) {
+  //   const { type, url, contentType } = initialState.currentSelectedSys;
+  //   if (type == 1 && contentType == 6) {
+  //     const userData = localStorage.getItem('userData');
+  //     const { token } = JSON.parse(userData as string);
+  //     return <iframe id={'bi_iframe'} style={{ width: '100%', height: '100%', border: 'none' }} src={addTokenToUrl(url as string, token)} 
+  //     onLoad={() => adjustIframe()}
+
+  //     ></iframe>;
+  //   }
+  // }
 
   //临时演示处理
 
@@ -345,7 +353,7 @@ export default function Layout({ children, location, route, history, match, ...r
       }}
       className='platFormLayout'
       contentStyle={{
-        margin: noMenu != 'true' ? 16 : 0,
+        margin:0,
       }}
       location={{}}
       headerContentRender={false}
@@ -369,7 +377,6 @@ export default function Layout({ children, location, route, history, match, ...r
       //     </div>
       //   );
       // }}
-
       menuItemRender={(item, dom) => {
         return (
           <a
@@ -400,10 +407,11 @@ export default function Layout({ children, location, route, history, match, ...r
           initialState,
         },
         request: async () => {
-         
+
           if (initialState && initialState.currentSelectedSys) {
-            const { systemId, menuId, path } = initialState.currentSelectedSys;
-            if (systemId || menuId) {
+          
+            const { systemId, menuId, path,type,contentType } = initialState.currentSelectedSys;
+            if (systemId || menuId&&(type !=1&&contentType!=6)) {
               //只有当存在systemId
               const menuData = await getPlatformMenu(systemId || menuId);
               let homePage: TreeItemType | undefined;
@@ -443,7 +451,7 @@ export default function Layout({ children, location, route, history, match, ...r
               };
 
               const _menu = getVFromTree(menuData, 'contentType');
-              setInitialState((t) => ({ ...t, spacicalPageParamsType: _menu,menuData }) as any);
+              setInitialState((t) => ({ ...t, spacicalPageParamsType: _menu, menuData }) as any);
 
               if (homePage) {
                 // console.log({homePage});
@@ -455,7 +463,7 @@ export default function Layout({ children, location, route, history, match, ...r
                   const selectedKeys = localStorage.getItem('selectedKeys');
                   const openKeys = localStorage.getItem('openKeys');
 
-                  if (selectedKeys&&openKeys) {
+                  if (selectedKeys && openKeys) {
                     const _selectedKeys = JSON.parse(selectedKeys);
                     const _openKeys = JSON.parse(openKeys);
                     set_openKeys(_openKeys);
@@ -531,9 +539,9 @@ export default function Layout({ children, location, route, history, match, ...r
 
       menuRender={(props: any, defaultDom) => {
         return (
-          <div style={{ display: 'inline-block' }}>
+          <div style={(isShowPageMenu && noMenu != 'true') ? {} : { display: 'inline-block', width: 0, overflow: 'hidden' }}>
             <ResizableContainer width={collapsed ? 64 : 200} minWidth={0} maxWidth={600} height={'calc(100vh - 48px)'}>
-              <div style={{background:'#fff',height:'100%'}}>
+              <div style={{ background: '#fff', height: '100%' }}>
                 <div className='menuWrapper' style={{ height: 'calc(100% - 40px)', overflowY: 'scroll', overflowX: 'hidden', background: '#fff' }}>
                   {defaultDom}
                 </div>
@@ -547,13 +555,13 @@ export default function Layout({ children, location, route, history, match, ...r
                     set_collapsed(collapsed ? false : true);
                   }
                 }>
-                  <IconFont style={{ display: 'inline-block',fontSize:24 }} className="menuCollapseIcon" type={collapsed ? 'icon-celanzhankai' : 'icon-celanshouqi'} />
+                  <IconFont style={{ display: 'inline-block', fontSize: 24 }} className="menuCollapseIcon" type={collapsed ? 'icon-celanzhankai' : 'icon-celanshouqi'} />
                 </div>
               </div>
-              
+
             </ResizableContainer>
           </div>
-          
+
         );
       }}
       onPageChange={(location) => { }}
@@ -566,14 +574,15 @@ export default function Layout({ children, location, route, history, match, ...r
           <h1>{emptyPageContent}</h1>
         </div>
       )}
-      {!isEmpty && (
+      {!isEmpty&&( type != 1 && contentType != 6)&& (
         <PageContainer
           className="kcmpPageContainer"
           header={{
             title: false,
           }}
           style={{
-            margin: 0,
+            margin: 16,
+            marginRight:8
           }}
         >
           <Helmet>
@@ -585,6 +594,14 @@ export default function Layout({ children, location, route, history, match, ...r
           </div>
         </PageContainer>
       )}
+      {
+        type == 1 && contentType == 6 && (
+          <iframe id={'bi_iframe'} style={{ width: '100%', height: '100%', border: 'none' }} src={addTokenToUrl(url as string,token)}
+            onLoad={() => adjustIframe()}
+
+          ></iframe>
+        )
+      }
     </ProLayout>
   );
 }

+ 275 - 0
src/pages/platform/components/KCIMLeftList/index.tsx

@@ -0,0 +1,275 @@
+/*
+ * @Author: code4eat awesomedema@gmail.com
+ * @Date: 2024-03-19 10:27:43
+ * @LastEditors: code4eat awesomedema@gmail.com
+ * @LastEditTime: 2024-10-12 15:40:45
+ * @FilePath: /CostAccountingSys/src/components/KCIMLeftList/index.tsx
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+import { createFromIconfontCN } from '@ant-design/icons';
+import Dropdown from '@ant-design/pro-table/es/components/Dropdown';
+import { Input, Tooltip, TreeProps, Empty } from 'antd'
+import { Key, useEffect, useState } from 'react';
+import DirectoryTree from 'antd/es/tree/DirectoryTree';
+import { DataNode } from 'antd/es/tree';
+
+import './style.less';
+
+
+const IconFont = createFromIconfontCN({
+    scriptUrl: '',
+});
+
+
+interface ListItem {
+    name: string,
+    subText: string,
+    [key: string]: any
+}
+
+interface TreeNodeItem {
+    [key: string]: any
+}
+
+export interface KCIMLeftListProps {
+    dataSource?: any[],
+    searchKey: string,
+    placeholder?: string,
+    listType?: 'list' | 'tree',
+    icon?: string,
+    contentH?: number|string,
+    rowKey?: string,
+    fieldNames?: { title?: string, key?: string, children?: string },
+    onChange?: (selectedItem: ListItem) => void
+}
+
+
+function searchTreeAndKeepHierarchy(tree: any[], keyword: string, searchKey: string, childrenKeyName: string) {
+    const children = childrenKeyName?childrenKeyName:'children'
+    function search(node: any) {
+        // 深度复制节点,避免修改原始树
+        let newNode = { ...node };
+
+        // 忽略大小写进行匹配
+        const keywordLower = keyword.toLowerCase();
+        const nodeKeyLower = node[`${searchKey}`].toLowerCase();
+
+        // 首先检查当前节点是否匹配
+        const isMatch = nodeKeyLower.includes(keywordLower);
+
+        // 递归检查子节点
+        if (node[`${children}`] && node[`${children}`].length > 0) {
+            let filteredChildren = node[`${children}`].map(search).filter((child: any) => child !== null);
+
+            if (filteredChildren.length > 0) {
+                // 如果有子节点匹配,保留当前节点,并仅保留匹配的子节点
+                newNode[`${children}`] = filteredChildren;
+                return newNode;
+            }
+        }
+
+        // 如果当前节点匹配,返回该节点及其所有子节点
+        if (isMatch) {
+            return newNode;
+        }
+
+        // 如果既不匹配当前节点,也没有匹配的子节点,返回 null
+        return null;
+    }
+
+    // 对树的每个根节点进行搜索,并过滤掉不匹配的节点
+    return tree.map(search).filter(node => node !== null);
+}
+
+
+
+
+
+const findFirstLeafNodeWithParents: any = (node: any, children: string) => {
+    // 定义一个内部递归函数来处理节点和跟踪父节点
+    const findNode: any = (currentNode: any, parents: any[]) => {
+
+        // 检查当前节点是否为叶子节点(无子节点或子节点为空数组)
+        if (!currentNode[children] || currentNode[children].length === 0) {
+            return { leafNode: currentNode, parents };
+        }
+
+        // 添加当前节点到父节点列表
+        parents.push(currentNode);
+
+        // 递归查找第一个子节点的第一个叶子节点
+        return findNode(currentNode[children][0], parents);
+    };
+
+    // 调用内部函数,初始父节点列表为空
+    return findNode(node, []);
+}
+
+
+
+
+
+export const KCIMLeftList = (props: KCIMLeftListProps) => {
+
+    const { searchKey, placeholder = '请输入', onChange, listType = 'list', dataSource: data = [], icon, contentH = 500, rowKey = 'id', fieldNames = { title: 'title', key: 'key', children: 'children' } } = props;
+    
+    const [dataSource, set_dataSource] = useState<ListItem[] | TreeNodeItem[]>([]);
+    const [showList, set_showList] = useState<ListItem[] | TreeNodeItem[]>([]);
+    const [currentSelected, set_currentSelected] = useState<undefined | any>(undefined);
+    const [expandedKeys, setExpandedKeys] = useState<React.Key[]>([]);
+    const [autoExpandParent, setAutoExpandParent] = useState(true);
+    const [defaultSelectedKeys, set_defaultSelectedKeys] = useState<Key[]>([]);
+
+    const onSelect: TreeProps['onSelect'] = (selectedKeys, info) => {
+        // console.log('selected', selectedKeys, info);
+        const { node } = info;
+        if (!node[fieldNames.children as keyof typeof node] || (node[fieldNames.children as keyof typeof node] as any[]).length === 0) {
+            set_currentSelected(node);
+        }
+        
+    };
+
+    const onExpand = (newExpandedKeys: React.Key[]) => {
+        setExpandedKeys(newExpandedKeys);
+        setAutoExpandParent(false);
+    };
+
+
+    useEffect(() => {
+        onChange && onChange(currentSelected);
+    }, [currentSelected])
+
+    useEffect(() => {
+        if (showList.length > 0) {
+            if (listType == 'list') {
+                set_currentSelected(showList[0]);
+            }
+            if (listType == 'tree') {
+                const result = findFirstLeafNodeWithParents(showList[0], fieldNames.children ? fieldNames.children : 'children');
+                // console.log({ result });
+        
+                setExpandedKeys([...(result.parents.map((parent:any) => parent[fieldNames.key as string]))]);
+                set_currentSelected(result.leafNode);
+                set_defaultSelectedKeys([result.leafNode[`${fieldNames.key}`]]);
+            }
+
+        } else {
+            set_currentSelected(undefined);
+        }
+    }, [showList]);
+
+
+    useEffect(() => {
+        set_dataSource([...data]);
+        set_showList([...data]);
+    }, [data]);
+
+
+    return (
+        <div className="KCIMLeftList">
+            <div className='toolbar'>
+                <Input placeholder={placeholder} allowClear autoComplete='off'
+                    suffix={
+                        <IconFont style={{ color: '#99A6BF' }} type="iconsousuo" />
+                    }
+                    // style={{ width: 156 }}
+                    onChange={(e) => {
+                        if (listType == 'list') {
+                            const result = dataSource.filter(item => item[`${searchKey}`].indexOf(e.target.value) != -1);
+                            set_showList(result);
+                        }
+                        if (listType == 'tree') {
+                            const result = searchTreeAndKeepHierarchy(dataSource, e.target.value, searchKey, fieldNames.children as string);
+                          
+                            set_showList(result);
+                        }
+
+                    }}
+
+                />
+                {/* <UpDataActBtn key={'act'} record={undefined} type='ADD_LEFTDATA' /> */}
+
+            </div>
+            <div className='wrap' style={{ height: contentH, overflow: 'scroll' }}>
+                {
+                    listType == 'list' && showList.map((item, index) => {
+                        return (
+                            <div className={currentSelected ? currentSelected[`${rowKey}`] == item[`${rowKey}`] ? 'list on' : 'list' : 'list'}
+                                key={index}
+                                onClick={() => {
+                                    set_currentSelected(item);
+
+                                    // _currentSelectedType = item;
+                                }}
+                            >
+                                {/* <img className='icon' src={icon ? icon : require('../../../static/departmentIcon.png')} alt="" /> */}
+                                <div className='content'>
+                                    <Tooltip title={item.subText} >
+                                        <div className='name'>{item.name}</div>
+                                        <div className='sub'>{item.subText}</div>
+                                    </Tooltip>
+                                </div>
+
+                                {/* <Dropdown menu={{ items: moreItems }} placement="bottom" onOpenChange={(bool) => { bool && set_currentEditLeftData(item) }}>
+                                        <div className='more'>
+                                            <img src={require('../../../../../static/more_point_gray.png')} alt="" />
+                                        </div>
+                                    </Dropdown> */}
+                            </div>
+                        )
+                    })
+                }
+
+                {
+                    (!showList || showList.length == 0) && (
+                        <div><Empty image={Empty.PRESENTED_IMAGE_SIMPLE} /></div>
+                    )
+                }
+
+                {
+                    listType == 'tree' && showList.length > 0 && currentSelected && defaultSelectedKeys.length > 0 && (
+                        <DirectoryTree
+                            className='KC-DirectoryTree'
+                            fieldNames={fieldNames}
+                            rootStyle={{paddingBottom:0,}}
+                            onSelect={onSelect}
+                            onExpand={onExpand}
+                            expandedKeys={expandedKeys}
+                            autoExpandParent={autoExpandParent}
+                            selectedKeys={[currentSelected[`${fieldNames.key}`]]}
+                            blockNode={true}
+                            icon={() => null}
+                            titleRender={
+                                (nodeData: any) => {
+                                    // console.log({nodeData});
+                                    const strTitle = nodeData.name as string;
+                                    const title = <span className='strTitle' style={{
+                                        display: 'flex', flexDirection: 'row',
+                                        width: '100%',
+                                        justifyContent: 'flex-start', alignItems: 'center', height: 32,
+                                        borderRadius: '4px',
+                                        // overflow: 'hidden',
+                                        color: '#17181A',
+                                        textOverflow: 'ellipsis',
+                                        whiteSpace: 'nowrap'
+
+                                    }}>{strTitle}</span>;
+                                    return title
+                                }
+                            }
+                            // defaultSelectedKeys={['B0100']}
+                            treeData={showList as unknown as DataNode[]}
+                            // treeData={treeDataNew}
+                            switcherIcon={(props: any) => {
+                                const { expanded } = props;
+                                return <IconFont style={{fontSize:16,position:'relative',top:2}} type={expanded?'icon-shouqi1':'icon-zhankai1'} />
+                            }}
+                        />
+                    )
+                }
+            </div>
+
+        </div>
+    )
+}

+ 160 - 0
src/pages/platform/components/KCIMLeftList/style.less

@@ -0,0 +1,160 @@
+.KCIMLeftList {
+  border-radius: 4px;
+  padding: 8px 0;
+  width: 100%;
+  height: 100%;
+  overflow-y: hidden;
+
+  // padding-top: 16px;
+  // border: 1px solid #DAE2F2;
+  .toolbar {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0 16px;
+
+    .add {
+      cursor: pointer;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      width: 24px;
+      height: 24px;
+      background: #FAFCFF;
+      border-radius: 4px;
+      border: 1px solid #DAE2F2;
+
+      &>img {
+        width: 16px;
+        height: 16px;
+      }
+    }
+  }
+
+  .wrap {
+    height: calc(100% - 30px) !important;
+    margin-top: 12px;
+    .kcmp-ant-tree.kcmp-ant-tree-directory .kcmp-ant-tree-treenode .kcmp-ant-tree-indent .kcmp-ant-tree-indent-unit {
+        width: 8px !important;
+    }
+    .kcmp-ant-tree.kcmp-ant-tree-directory .kcmp-ant-tree-treenode .kcmp-ant-tree-switcher {
+        &>span {
+          top:7px !important;
+        }
+     }
+    .kcmp-ant-tree.kcmp-ant-tree-directory .kcmp-ant-tree-treenode {
+      margin-bottom: 2px !important;
+      &:hover {
+        border-radius: 4px !important;
+        background: #F0F2F5;
+      }
+      &::before {
+        bottom: 0 !important;
+      }
+    }
+
+    .kcmp-ant-tree.kcmp-ant-tree-directory .kcmp-ant-tree-treenode-selected::before {
+      border-radius: 4px !important;
+      background: #F0F2F5;
+    }
+
+    .kcmp-ant-tree.kcmp-ant-tree-directory .kcmp-ant-tree-treenode .kcmp-ant-tree-node-content-wrapper.kcmp-ant-tree-node-selected {
+      font-weight: bold;
+    }
+
+    .KC-DirectoryTree {
+      padding: 0 16px;
+      padding-right: 8px;
+
+      .kcmp-ant-tree-list {
+        height: 100%;
+      }
+      // .kcmp-ant-tree-treenode-selected {
+      //      .kcmp-ant-tree-title {
+      //         color:#17181A !important;
+      //         font-weight: 500 !important;
+      //      }
+      // }
+
+
+    }
+
+    .kcmp-ant-tree.kcmp-ant-tree-directory .kcmp-ant-tree-treenode .kcmp-ant-tree-node-content-wrapper.kcmp-ant-tree-node-selected {
+      color: #17181A !important;
+      font-weight: 500 !important;
+    }
+
+    .list {
+      cursor: pointer;
+      height: 48px;
+      border-radius: 4px;
+      background: #FFFFFF;
+      display: flex;
+      padding-left: 8px;
+      padding-right: 8px;
+      flex-direction: row;
+      justify-content: space-between;
+      align-items: center;
+      margin-bottom: 4px;
+
+      .icon {
+        width: 25px;
+        height: 25px;
+      }
+
+      .content {
+        width: 87%;
+        padding-left: 7px;
+
+        .name {
+          height: 15px;
+          font-size: 14px;
+          font-family: SourceHanSansCN-Medium, SourceHanSansCN;
+          font-weight: 500;
+          color: #17181A;
+          line-height: 15px;
+          margin-bottom: 4px;
+          overflow: hidden;
+          white-space: nowrap;
+          text-overflow: ellipsis;
+        }
+
+        .sub {
+          height: 13px;
+          font-size: 12px;
+          font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+          font-weight: 400;
+          color: #7A8599;
+          line-height: 13px;
+        }
+      }
+
+      .more {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        cursor: pointer;
+        width: 16px;
+        height: 16px;
+        border-radius: 4px;
+        background: #FFFFFF;
+
+        &>img {
+          width: 100%;
+          height: 100%;
+        }
+      }
+
+      &.on {
+        font-weight: 500;
+        color: #17181A;
+        background: #F0F2F5;
+      }
+
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+  }
+}

+ 8 - 1
src/pages/platform/setting/departmentMana/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-07-29 14:57:44
+ * @LastEditTime: 2024-12-02 14:02:58
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -158,6 +158,7 @@ export default function DepartmentMana() {
                     name="type"
                     label="类型:"
                     placeholder="请选择类型"
+                    fieldProps={{size:'small'}}
                     rules={[{ required: true, message: '类型不能为空!' }]}
                     request={async () => {
                         return types
@@ -166,6 +167,7 @@ export default function DepartmentMana() {
                 <ProFormSelect
                     name="hospId"
                     label="院区:"
+                    fieldProps={{size:'small'}}
                     placeholder="请选择院区"
                     rules={[{ required: true, message: '院区不能为空!' }]}
                     request={async () => {
@@ -198,6 +200,7 @@ export default function DepartmentMana() {
 
         set_tableDataFilterParams({
             ...tableDataFilterParams,
+            current:1,
             [`${paramName}`]: tableDataSearchKeywords
         })
     }
@@ -275,16 +278,19 @@ export default function DepartmentMana() {
                                         return types
                                     }}
                                     fieldProps={{
+                                        size:'small',
                                         onChange: (e) => {
 
                                             if (e) {
                                                 set_tableDataFilterParams({
                                                     ...tableDataFilterParams,
+                                                    current:1,
                                                     departType: e
                                                 });
                                             } else {
                                                 set_tableDataFilterParams({
                                                     ...tableDataFilterParams,
+                                                    current:1,
                                                     departType: ''
                                                 });
                                             }
@@ -303,6 +309,7 @@ export default function DepartmentMana() {
                                 if (e.target.value.length == 0) {
                                     set_tableDataFilterParams({
                                         ...tableDataFilterParams,
+                                        current:1,
                                         departName: ''
                                     });
                                 }

+ 4 - 1
src/pages/platform/setting/hospManage/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-13 15:22:48
- * @LastEditTime: 2024-07-29 09:47:26
+ * @LastEditTime: 2024-12-02 14:01:28
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/hospManage/index.tsx
@@ -326,6 +326,7 @@ const DrawerActBtn = ({ record }: { record: any }) => {
   };
 
   const getTableData = async (params: any, sort: any, filter: any) => {
+    console.log({params});
     set_drawerTablereload(false);
     if (currentSelectedTreeNode) {
       const resp = await getTableDataRequest({ ...params, systemId: currentSelectedTreeNode.code });
@@ -399,6 +400,7 @@ const DrawerActBtn = ({ record }: { record: any }) => {
   const drawerTableDataSearchHandle = (paramName: string) => {
     set_drawerTableDataFilterParams({
       ...drawerTableDataFilterParams,
+      current:1,
       [`${paramName}`]: drawerTableDataSearchKeywords,
     });
   };
@@ -1002,6 +1004,7 @@ const HospManage: FC<PageProps> = ({ hospManageModel: state, dispatch }) => {
   const tableDataSearchHandle = (paramName: string) => {
     set_tableDataFilterParams({
       ...tableDataFilterParams,
+      current:1,
       [`${paramName}`]: tableDataSearchKeywords,
     });
   };

+ 6 - 4
src/pages/platform/setting/hospManage/modals/modal.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-12 17:11:11
- * @LastEditTime: 2024-01-19 10:35:31
+ * @LastEditTime: 2024-10-11 16:52:20
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/userManage/modal.tsx
@@ -236,6 +236,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
             label="是否主院"
             width="md"
             name="isHospital"
+            fieldProps={{size:'small'}}
             options={[
               {
                 value: 1,
@@ -262,6 +263,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                     width="md"
                     name="parentId"
                     fieldProps={{
+                      size:'small',
                       labelInValue: true,
                     }}
                     request={async () => {
@@ -292,7 +294,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
             request={async () => {
               return setSelectorData('HOSPITAL_LEVEL').list;
             }}
-            fieldProps={{ showSearch: true }}
+            fieldProps={{ showSearch: true,size:'small' }}
             rules={[
               {
                 required: true,
@@ -307,7 +309,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
             request={async () => {
               return setSelectorData('HOSPITAL_TYPE').list;
             }}
-            fieldProps={{ showSearch: true }}
+            fieldProps={{ showSearch: true,size:'small' }}
             rules={[
               {
                 required: true,
@@ -322,7 +324,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
             request={async () => {
               return setSelectorData('HOSPITAL_NATURE').list;
             }}
-            fieldProps={{ showSearch: true }}
+            fieldProps={{ showSearch: true,size:'small' }}
             rules={[
               {
                 required: true,

+ 5 - 1
src/pages/platform/setting/hospParamsMana/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-07-29 15:04:52
+ * @LastEditTime: 2024-12-06 16:44:24
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -199,6 +199,7 @@ export default function PubDicTypeMana() {
                     }}
 
                     fieldProps={{
+                        size:'small',
                         onChange(value, option) {
                             formRef.current?.setFieldValue('target',undefined);
                         },
@@ -256,6 +257,7 @@ export default function PubDicTypeMana() {
                                     }}
 
                                     fieldProps={{
+                                        size:'small',
                                           labelInValue:true
                                     }}
                                 />
@@ -283,6 +285,7 @@ export default function PubDicTypeMana() {
 
         set_tableDataFilterParams({
             ...tableDataFilterParams,
+            current:1,
             [`${paramName}`]: tableDataSearchKeywords
         })
     }
@@ -472,6 +475,7 @@ export default function PubDicTypeMana() {
                                     if (e.target.value.length == 0) {
                                         set_tableDataFilterParams({
                                             ...tableDataFilterParams,
+                                            current:1,
                                             targetName: ''
                                         });
                                     }

+ 886 - 836
src/pages/platform/setting/indicatorMana/DrawerForm/drawer.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-07-13 15:27:51
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2022-07-21 15:26:14
+ * @LastEditTime: 2024-10-12 15:56:54
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/drawer.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -19,6 +19,7 @@ import { DefaultOptionType } from 'antd/lib/select';
 import { getHospDepartment } from '@/service/department';
 import { getUsers } from '@/service/user';
 import { addIndicatorManaList } from '@/service/indicator';
+import { createFromIconfontCN } from '@ant-design/icons';
 
 
 
@@ -33,11 +34,16 @@ export interface IndicatorDrawerForm {
 }
 
 
+const IconFont = createFromIconfontCN({
+    scriptUrl: '',
+});
+
 
 const DrawerForm = (props: IndicatorDrawerForm) => {
 
     const { visible = false, onChange, onFinish, record, onVisibleChange, actType } = props;
 
+
     const [_visible, _setVisible] = useState(false);
 
     const [renderType, set_renderType] = useState<'ADD' | 'EDIT'>('ADD');
@@ -64,13 +70,14 @@ const DrawerForm = (props: IndicatorDrawerForm) => {
         let commitData: any[] = [];
         if (baseInfoformRef.current && baseInfoformRef.current.validateFieldsReturnFormatValue) {
             baseInfoformRef.current?.validateFieldsReturnFormatValue().then(val => {
-                // console.log('baseInfoformRef',val);
+
                 commitData.push({
                     baseInfoformRef: val
                 })
             })
 
         }
+
         if (manaInfoformRef.current && manaInfoformRef.current.validateFieldsReturnFormatValue) {
             manaInfoformRef.current?.validateFieldsReturnFormatValue().then(val => {
                 console.log('manaInfoformRef', val);
@@ -120,8 +127,11 @@ const DrawerForm = (props: IndicatorDrawerForm) => {
         }
 
         setTimeout(() => {
-            console.log({ commitData });
-            onFinish && onFinish(commitData);
+            const hasBaseInfoformRef = commitData.some(item => item.hasOwnProperty('baseInfoformRef'));
+            const hasAdminInfoformRef = commitData.some(item => item.hasOwnProperty('adminInfoformRef'));
+            if (hasBaseInfoformRef && hasAdminInfoformRef) {
+                onFinish && onFinish(commitData);
+            }
         }, 1000)
 
     }
@@ -197,306 +207,324 @@ const DrawerForm = (props: IndicatorDrawerForm) => {
                 width={1000} title={renderType == 'ADD' ? '新增指标' : '管理信息'}
                 placement="right"
                 onClose={onClose}
-                visible={_visible}
+                open={_visible}
                 destroyOnClose
-                footer={
-                    <div>
-                        <Button style={{ marginRight: 20 }} onClick={() => onClose()}>取消</Button>
-                        <Button type="primary" onClick={() => commitHandle()}>确定</Button>
-                    </div>
-                }
+                footer={false}
+                headerStyle={{ display: 'none' }}
+                // footer={
+                //     <div>
+                //         <Button style={{ marginRight: 20 }} onClick={() => onClose()}>取消</Button>
+                //         <Button type="primary" onClick={() => commitHandle()}>确定</Button>
+                //     </div>
+                // }
                 bodyStyle={{ background: 'rgba(153, 166, 191, 0.1)', padding: 0, scrollbarWidth: 'thin' }}
             >
-
-                <div className='card'>
-                    <div className='cardTitle' >指标基本信息</div>
-                    <div className='formContent'>
-                        <ProForm
-                            layout={'vertical'}
-                            formRef={baseInfoformRef}
-                            grid={true}
-                            initialValues={renderType == 'ADD' ? { attributeType: 1 } : { ...record }}
-                            rowProps={{
-                                gutter: [16, 16],
-                            }}
-                            submitter={{
-                                render: () => null
-                            }}
-                        >
-
-
-                            <ProFormText colProps={{ md: 12, xl: 8 }} name="name" label="指标名称" placeholder="请输入" fieldProps={{}} rules={[{ required: true, message: '这是必填项' }]} />
-                            <ProFormText colProps={{ md: 12, xl: 8 }} name="code" label="指标编码" placeholder="请输入" rules={[{ required: true, message: '这是必填项' }]} />
-                            <ProFormText colProps={{ md: 12, xl: 8 }} name="nationalCode" label="国家编码" placeholder="请输入" />
-
-
-
-                            <ProFormRadio.Group
-                                name="attributeType"
-                                label="指标属性"
-                                colProps={{ md: 12, xl: 8 }}
-                                options={[
-                                    {
-                                        label: '定性',
-                                        value: 1,
-                                    },
-                                    {
-                                        label: '定量',
-                                        value: 2,
-                                    },
-                                ]}
-                            />
-                            <ProFormTextArea colProps={{ md: 12, xl: 8 }}
-                                name="targetDefinition" label="指标定义" placeholder="请输入"
-                                rules={[{ required: true, message: '这是必填项' }]}
-                                fieldProps={{
-                                    allowClear: true,
-                                    autoSize: true
+                <div className='drawerHeader'>
+                    <div className='drawerTitle'>
+                        <svg style={{ marginRight: 14, position: 'relative', top: 4, cursor: 'pointer' }} onClick={() => _setVisible(false)} viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="41844" width="18" height="18"><path d="M793.024 200.96l27.392 27.392a12.8 12.8 0 0 1 0 18.112L555.52 510.784l267.392 266.752a12.8 12.8 0 0 1 0 18.112l-27.392 27.328a12.8 12.8 0 0 1-18.112 0L510.08 556.224l-263.424 262.784a12.8 12.8 0 0 1-18.112 0l-27.392-27.392a12.8 12.8 0 0 1 0-18.112l263.36-262.72-260.864-260.288a12.8 12.8 0 0 1 0-18.112l27.392-27.392a12.8 12.8 0 0 1 18.048 0L510.08 465.344l264.96-264.32a12.8 12.8 0 0 1 18.048 0z" p-id="41845" fill="#17181A"></path></svg>
+                        {/* <IconFont style={{cursor:'pointer',marginRight:14,fontSize:16,color:'red'}} type='iconquxiao'  /> */}
+                        {record && record.name}</div>
+                    <div className='btnGroup'>
+                        <span onClick={() => onClose()} >取消</span>
+                        <span className='primary' onClick={() => commitHandle()} >确定</span>
+                    </div>
+                </div>
+                <div className='drawerContent'>
+                    <div className='card'>
+                        <div className='cardTitle' >指标基本信息</div>
+                        <div className='formContent'>
+                            <ProForm
+                                layout={'vertical'}
+                                formRef={baseInfoformRef}
+                                grid={true}
+                                initialValues={renderType == 'ADD' ? { attributeType: 1 } : { ...record }}
+                                rowProps={{
+                                    gutter: [16, 0],
                                 }}
-                            />
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="dimension"
-                                label="指标维度"
-                                options={[
-                                    {
-                                        label: '结构面',
-                                        value: 1,
-                                    },
-                                    {
-                                        label: '过程面',
-                                        value: 2,
-                                    },
+                                submitter={{
+                                    render: () => null
+                                }}
+                            >
+
+
+                                <ProFormText colProps={{ md: 12, xl: 8 }} name="name" label="指标名称" placeholder="请输入" fieldProps={{}} rules={[{ required: true, message: '这是必填项' }]} />
+                                <ProFormText colProps={{ md: 12, xl: 8 }} name="code" label="指标编码" placeholder="请输入" rules={[{ required: true, message: '这是必填项' }]} />
+                                <ProFormText colProps={{ md: 12, xl: 8 }} name="nationalCode" label="国家编码" placeholder="请输入" />
+                                <ProFormTextArea colProps={{ md: 12, xl: 16 }}
+                                    name="targetDefinition" label="指标定义" placeholder="请输入"
+                                    rules={[{ required: true, message: '这是必填项' }]}
+                                    fieldProps={{
+                                        allowClear: true,
+                                        autoSize: true
+                                    }}
+                                />
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="dimension"
+                                    label="指标维度"
+                                    fieldProps={{ size: 'small' }}
+                                    options={[
+                                        {
+                                            label: '结构面',
+                                            value: 1,
+                                        },
+                                        {
+                                            label: '过程面',
+                                            value: 2,
+                                        },
+                                        {
+                                            label: '结果面',
+                                            value: 3,
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+                                <ProFormRadio.Group
+                                    name="attributeType"
+                                    label="指标属性"
+                                    colProps={{ md: 12, xl: 24 }}
+                                    options={[
+                                        {
+                                            label: '定性',
+                                            value: 1,
+                                        },
+                                        {
+                                            label: '定量',
+                                            value: 2,
+                                        },
+                                    ]}
+                                />
+                                <ProFormDependency name={['attributeType']}>
                                     {
-                                        label: '结果面',
-                                        value: 3,
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-                            <ProFormDependency name={['attributeType']}>
-                                {
-                                    ({ attributeType }) => {
-                                        if (attributeType == 2) {
-                                            return (
-                                                <>
-                                                    <ProFormSelect
-                                                        colProps={{ md: 12, xl: 8 }}
-                                                        name="directionType"
-                                                        label="管理指向"
-                                                        options={[
-                                                            {
-                                                                label: '正向',
-                                                                value: 1,
-                                                            },
-                                                            {
-                                                                label: '负向',
-                                                                value: 2,
-                                                            },
-                                                            {
-                                                                label: '区间',
-                                                                value: 3,
-                                                            },
-                                                            {
-                                                                label: '监测达标',
-                                                                value: 4,
-                                                            },
-                                                            {
-                                                                label: '监测比较',
-                                                                value: 5,
-                                                            },
-                                                        ]}
-                                                        placeholder="请选择"
-                                                    />
-                                                    <ProForm.Group colProps={{ md: 12, xl: 8 }}>
-                                                        <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
-                                                            <div>
-                                                                <ProFormDigit
-                                                                    label="指标区间"
-                                                                    name="lowerLimit"
-                                                                    min={0}
-                                                                    max={10000}
-                                                                    placeholder='最小值'
-                                                                    fieldProps={{ precision: 3 }}
-                                                                />
-                                                            </div>
-                                                            -
-                                                            <div style={{ position: 'relative', top: 15 }}>
-                                                                <ProFormDigit
-                                                                    name="upperLimit"
-                                                                    min={0}
-                                                                    max={10000}
-                                                                    placeholder='最大值'
-                                                                    fieldProps={{ precision: 3 }}
-                                                                />
+                                        ({ attributeType }) => {
+                                            if (attributeType == 2) {
+                                                return (
+                                                    <>
+                                                        <ProFormSelect
+                                                            colProps={{ md: 12, xl: 8 }}
+                                                            name="directionType"
+                                                            label="管理指向"
+                                                            fieldProps={{ size: 'small' }}
+                                                            options={[
+                                                                {
+                                                                    label: '正向',
+                                                                    value: 1,
+                                                                },
+                                                                {
+                                                                    label: '负向',
+                                                                    value: 2,
+                                                                },
+                                                                {
+                                                                    label: '区间',
+                                                                    value: 3,
+                                                                },
+                                                                {
+                                                                    label: '监测达标',
+                                                                    value: 4,
+                                                                },
+                                                                {
+                                                                    label: '监测比较',
+                                                                    value: 5,
+                                                                },
+                                                            ]}
+                                                            placeholder="请选择"
+                                                        />
+                                                        <ProForm.Group colProps={{ md: 12, xl: 8 }}>
+                                                            <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
+                                                                <div>
+                                                                    <ProFormDigit
+                                                                        label="指标区间"
+                                                                        name="lowerLimit"
+                                                                        min={0}
+                                                                        max={10000}
+                                                                        placeholder='最小值'
+                                                                        fieldProps={{ precision: 3 }}
+                                                                    />
+                                                                </div>
+                                                                -
+                                                                <div style={{ position: 'relative', top: 10 }}>
+                                                                    <ProFormDigit
+                                                                        name="upperLimit"
+                                                                        min={0}
+                                                                        max={10000}
+                                                                        placeholder='最大值'
+                                                                        fieldProps={{ precision: 3 }}
+                                                                    />
+                                                                </div>
                                                             </div>
-                                                        </div>
-                                                    </ProForm.Group>
-
-                                                    <ProFormSelect
-                                                        colProps={{ md: 12, xl: 8 }}
-                                                        name="unit"
-                                                        label="单位"
-                                                        request={async () => {
-                                                            const dirData = await getIndicatorDictionary();
-                                                            const result = dirData.filter(t => t.code == 'Department');
-
-                                                            if (result.length > 0) {
-                                                                return result[0].children.map(t => ({ label: t.name, value: t.code }))
-                                                            }
-                                                            return []
-                                                        }}
-                                                        placeholder="请选择"
-                                                    />
-
-                                                    <ProFormDependency name={['unit']}>
-                                                        {
-                                                            ({ unit }) => {
-                                                                return (unit == '173' || unit == '326') ? (
-                                                                    <ProForm.Group colProps={{ md: 12, xl: 8 }}>
-                                                                        <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
-                                                                            <div>
-                                                                                <ProFormText name="molecule" label='公式' width={120} placeholder="请输入分子" />
-                                                                            </div>
+                                                        </ProForm.Group>
+
+                                                        <ProFormSelect
+                                                            colProps={{ md: 12, xl: 8 }}
+                                                            name="unit"
+                                                            label="单位"
+                                                            fieldProps={{ size: 'small' }}
+                                                            request={async () => {
+                                                                const dirData = await getIndicatorDictionary();
+                                                                const result = dirData.filter(t => t.code == 'Department');
+
+                                                                if (result.length > 0) {
+                                                                    return result[0].children.map(t => ({ label: t.name, value: t.code }))
+                                                                }
+                                                                return []
+                                                            }}
+                                                            placeholder="请选择"
+                                                        />
+
+                                                        <ProFormDependency name={['unit']}>
+                                                            {
+                                                                ({ unit }) => {
+                                                                    return (unit == '173' || unit == '326') ? (
+                                                                        <ProForm.Group colProps={{ md: 12, xl: 24 }}>
+                                                                            <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
+                                                                                <div>
+                                                                                    <ProFormText name="molecule" label='公式' width={437} placeholder="请输入分子" />
+                                                                                </div>
+
+                                                                                /
+                                                                                <div style={{ position: 'relative', top: 10 }}>
+                                                                                    <ProFormText width={437} name="denominator" placeholder="请输入分母" />
+                                                                                </div>
+                                                                                {unit == '173' ? `*100%` : `‰`}
 
-                                                                            /
-                                                                            <div style={{ position: 'relative', top: 15 }}>
-                                                                                <ProFormText width={120} name="denominator" placeholder="请输入分母" />
                                                                             </div>
-                                                                            {unit == '173'?`*100%`:`‰`}
-
-                                                                        </div>
-                                                                    </ProForm.Group>
-                                                                ) : (
-                                                                    <ProForm.Group colProps={{ md: 12, xl: 8 }}>
-                                                                        <ProFormText name="molecule" label='公式' placeholder="请输入公式" />
-                                                                    </ProForm.Group>
-                                                                )
+                                                                        </ProForm.Group>
+                                                                    ) : (
+                                                                        <ProForm.Group colProps={{ md: 12, xl: 24 }}>
+                                                                            <ProFormText name="molecule" label='公式' placeholder="请输入公式" />
+                                                                        </ProForm.Group>
+                                                                    )
+                                                                }
                                                             }
-                                                        }
-                                                    </ProFormDependency>
-
-                                                    <ProFormSelect
-                                                        colProps={{ md: 12, xl: 8 }}
-                                                        name="moleculeSourcType"
-                                                        label="分子数据来源"
-                                                        options={[
-                                                            {
-                                                                label: '定期填报',
-                                                                value: 1,
-                                                            },
-                                                            {
-                                                                label: '表单导入',
-                                                                value: 2,
-                                                            },
-                                                            {
-                                                                label: '系统导入',
-                                                                value: 3,
-                                                            },
-                                                            {
-                                                                label: '异动时填报',
-                                                                value: 4,
-                                                            },
-                                                        ]}
-                                                        placeholder="请选择"
-                                                    />
-                                                    <ProFormSelect
-                                                        colProps={{ md: 12, xl: 8 }}
-                                                        name="denominatorSourceType"
-                                                        label="分母数据来源"
-                                                        options={[
-                                                            {
-                                                                label: '定期填报',
-                                                                value: 1,
-                                                            },
-                                                            {
-                                                                label: '表单导入',
-                                                                value: 2,
-                                                            },
-                                                            {
-                                                                label: '系统导入',
-                                                                value: 3,
-                                                            },
-                                                            {
-                                                                label: '异动时填报',
-                                                                value: 4,
-                                                            },
-                                                        ]}
-                                                        placeholder="请选择"
-                                                    />
-                                                    {/* <ProFormText colProps={{ md: 12, xl: 8 }} name="moleculeSourcDesc" label='分子来源说明' placeholder="请输入" /> */}
-                                                    <ProFormTextArea colProps={{ md: 12, xl: 8 }}
-                                                        name="moleculeSourcDesc" label="分子来源说明" placeholder="请输入"
-                                                        fieldProps={{
-                                                            allowClear: true,
-                                                            autoSize: true
-                                                        }}
-                                                    />
-                                                    {/* <ProFormText colProps={{ md: 12, xl: 8 }} name="denominatorSourceDesc" label='分母来源说明' placeholder="请输入" /> */}
-                                                    <ProFormTextArea colProps={{ md: 12, xl: 8 }}
-                                                        name="denominatorSourceDesc" label="分母来源说明" placeholder="请输入"
-                                                        fieldProps={{
-                                                            allowClear: true,
-                                                            autoSize: true
-                                                        }}
-                                                    />
-
-                                                </>
-                                            )
+                                                        </ProFormDependency>
+
+                                                        <ProFormSelect
+                                                            colProps={{ md: 12, xl: 8 }}
+                                                            name="moleculeSourcType"
+                                                            label="分子数据来源"
+                                                            fieldProps={{ size: 'small' }}
+                                                            options={[
+                                                                {
+                                                                    label: '定期填报',
+                                                                    value: 1,
+                                                                },
+                                                                {
+                                                                    label: '表单导入',
+                                                                    value: 2,
+                                                                },
+                                                                {
+                                                                    label: '系统导入',
+                                                                    value: 3,
+                                                                },
+                                                                {
+                                                                    label: '异动时填报',
+                                                                    value: 4,
+                                                                },
+                                                            ]}
+                                                            placeholder="请选择"
+                                                        />
+                                                        {/* <ProFormText colProps={{ md: 12, xl: 8 }} name="moleculeSourcDesc" label='分子来源说明' placeholder="请输入" /> */}
+                                                        <ProFormTextArea colProps={{ md: 12, xl: 16 }}
+                                                            name="moleculeSourcDesc" label="分子来源说明" placeholder="请输入"
+                                                            fieldProps={{
+                                                                allowClear: true,
+                                                                autoSize: true,
+                                                                size: 'small'
+                                                            }}
+                                                        />
+                                                        <ProFormSelect
+                                                            colProps={{ md: 12, xl: 8 }}
+                                                            name="denominatorSourceType"
+                                                            label="分母数据来源"
+                                                            fieldProps={{ size: 'small' }}
+                                                            options={[
+                                                                {
+                                                                    label: '定期填报',
+                                                                    value: 1,
+                                                                },
+                                                                {
+                                                                    label: '表单导入',
+                                                                    value: 2,
+                                                                },
+                                                                {
+                                                                    label: '系统导入',
+                                                                    value: 3,
+                                                                },
+                                                                {
+                                                                    label: '异动时填报',
+                                                                    value: 4,
+                                                                },
+                                                            ]}
+                                                            placeholder="请选择"
+                                                        />
+
+                                                        {/* <ProFormText colProps={{ md: 12, xl: 8 }} name="denominatorSourceDesc" label='分母来源说明' placeholder="请输入" /> */}
+                                                        <ProFormTextArea colProps={{ md: 12, xl: 16 }}
+                                                            name="denominatorSourceDesc" label="分母来源说明" placeholder="请输入"
+                                                            fieldProps={{
+                                                                allowClear: true,
+                                                                autoSize: true
+                                                            }}
+                                                        />
+
+                                                    </>
+                                                )
+                                            }
                                         }
                                     }
-                                }
-                            </ProFormDependency>
-                        </ProForm>
+                                </ProFormDependency>
+                            </ProForm>
+                        </div>
                     </div>
-                </div>
 
 
-                <div className='card'>
-                    <div className='cardTitle' >指标管理信息</div>
-                    <div className='formContent'>
-                        <ProForm
-                            formRef={manaInfoformRef}
-                            layout={'vertical'}
-                            autoFocusFirstInput={false}
-                            grid={true}
-                            initialValues={renderType == 'ADD' ? { indicatorTypeList: [], indicatorExternalList: [] } : {
-                                ...record,
-                                indicatorMenuList: setFormInit('indicatorMenuList'),
-                                // indicatorTypeList:record.indicatorTypeList?record.indicatorTypeList.map((t:string)=>t.split('/')).slice(1,record.indicatorTypeList.map((t:string)=>t.split('/')).length - 1):[],
-                                indicatorTypeList: setFormInit('indicatorTypeList'),
-                                indicatorExternalList: setFormInit('indicatorExternalList'),
-                                // indicatorCommitteeList:record.indicatorCommitteeList[0]?record.indicatorCommitteeList[0].split('/'):[]
-
-                            }}
-                            rowProps={{
-                                gutter: [16, 16],
-                            }}
-                            submitter={{
-                                render: () => null
-                            }}
-                        >
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="divisionId"
-                                label="负责科室"
-                                request={async () => {
-                                    const data = await getHospDepartment();
-                                    return data.map(t => ({ label: t.name, value: t.code }))
+                    <div className='card'>
+                        <div className='cardTitle' >指标管理信息</div>
+                        <div className='formContent'>
+                            <ProForm
+                                formRef={manaInfoformRef}
+                                layout={'vertical'}
+                                autoFocusFirstInput={false}
+                                grid={true}
+                                initialValues={renderType == 'ADD' ? { indicatorTypeList: [], indicatorExternalList: [] } : {
+                                    ...record,
+                                    indicatorMenuList: setFormInit('indicatorMenuList'),
+                                    // indicatorTypeList:record.indicatorTypeList?record.indicatorTypeList.map((t:string)=>t.split('/')).slice(1,record.indicatorTypeList.map((t:string)=>t.split('/')).length - 1):[],
+                                    indicatorTypeList: setFormInit('indicatorTypeList'),
+                                    indicatorExternalList: setFormInit('indicatorExternalList'),
+                                    // indicatorCommitteeList:record.indicatorCommitteeList[0]?record.indicatorCommitteeList[0].split('/'):[]
+
                                 }}
-                                placeholder="请选择"
-                            />
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="principalId"
-                                label="负责人"
-                                request={async () => {
-                                    const data = await getUsers({ pageSize: 1000, current: 1 });
-                                    return data.list.map(t => ({ label: t.name, value: t.code }))
+                                rowProps={{
+                                    gutter: [16, 0],
                                 }}
-                                placeholder="请选择"
-                            />
-                            {/* <ProFormSelect
+                                submitter={{
+                                    render: () => null
+                                }}
+                            >
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="divisionId"
+                                    label="负责科室"
+                                    fieldProps={{ size: 'small' }}
+                                    request={async () => {
+                                        const data = await getHospDepartment();
+                                        return data.map(t => ({ label: t.name, value: t.code }))
+                                    }}
+                                    placeholder="请选择"
+                                />
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="principalId"
+                                    label="负责人"
+                                    fieldProps={{ size: 'small' }}
+                                    request={async () => {
+                                        const data = await getUsers({ pageSize: 1000, current: 1 });
+                                        return data.list.map(t => ({ label: t.name, value: t.code }))
+                                    }}
+                                    placeholder="请选择"
+                                />
+                                {/* <ProFormSelect
                                 colProps={{ md: 12, xl: 8 }}
                                 name="principalId"
                                 label="负责人"
@@ -507,599 +535,621 @@ const DrawerForm = (props: IndicatorDrawerForm) => {
                                 placeholder="请选择"
                             /> */}
 
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="manageLevel"
-                                label="指标管理级别"
-                                fieldProps={{
-                                    // mode: 'multiple',
-                                    maxTagCount: 'responsive'
-                                }}
-                                options={[
-                                    {
-                                        label: '院级指标/日常',
-                                        value: 0,
-                                    },
-                                    {
-                                        label: '院级指标/重点监测',
-                                        value: 1,
-                                    },
-                                    {
-                                        label: '科级指标/日常',
-                                        value: 2,
-                                    },
-                                    {
-                                        label: '科级指标/重点监测',
-                                        value: 3,
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="analysisType"
-                                label="分析方式"
-                                options={[
-                                    {
-                                        label: '数值',
-                                        value: 1,
-                                    },
-                                    {
-                                        label: '监测比较',
-                                        value: 2,
-                                    },
-                                    {
-                                        label: '目标值达标分析',
-                                        value: 3,
-                                    },
-                                    {
-                                        label: '数值趋势分析',
-                                        value: 4,
-                                    },
-                                    {
-                                        label: '标准差异常分析',
-                                        value: 5,
-                                    },
-                                    {
-                                        label: '四分位数值分析',
-                                        value: 6,
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-                            {/* <Form.Item  >
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="manageLevel"
+                                    label="指标管理级别"
+                                    fieldProps={{
+                                        // mode: 'multiple',
+                                        size: 'small',
+                                        maxTagCount: 'responsive'
+                                    }}
+                                    options={[
+                                        {
+                                            label: '院级指标/日常',
+                                            value: 0,
+                                        },
+                                        {
+                                            label: '院级指标/重点监测',
+                                            value: 1,
+                                        },
+                                        {
+                                            label: '科级指标/日常',
+                                            value: 2,
+                                        },
+                                        {
+                                            label: '科级指标/重点监测',
+                                            value: 3,
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="analysisType"
+                                    label="分析方式"
+                                    fieldProps={{ size: 'small' }}
+                                    options={[
+                                        {
+                                            label: '数值',
+                                            value: 1,
+                                        },
+                                        {
+                                            label: '监测比较',
+                                            value: 2,
+                                        },
+                                        {
+                                            label: '目标值达标分析',
+                                            value: 3,
+                                        },
+                                        {
+                                            label: '数值趋势分析',
+                                            value: 4,
+                                        },
+                                        {
+                                            label: '标准差异常分析',
+                                            value: 5,
+                                        },
+                                        {
+                                            label: '四分位数值分析',
+                                            value: 6,
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+                                {/* <Form.Item  >
                                     <DiyFormCascader data={getSelectorData('IndicatorType', 'Cascader')} />
                             </Form.Item> */}
 
-                            <ProFormCascader
-                                colProps={{ md: 12, xl: 8 }}
-                                name="indicatorTypeList"
-                                label="指标类别"
-                                fieldProps={{
-                                    maxTagCount: 'responsive',
-                                    multiple: true,
-                                    showCheckedStrategy: 'SHOW_CHILD',
-                                    fieldNames: { label: 'name', value: 'code', children: 'children' },
-                                    options: getSelectorData('IndicatorType', 'Cascader'),
-                                    onChange(value, selectOptions) {
-                                        console.log({ value, selectOptions });
-
-                                        var nodes: any[] = [];
-
-                                        function parseTreeJson(array: any[]) {
-                                            if (!array) return [];
-                                            for (let index = 0; index < array.length; index++) {
-                                                const element = array[index];
-                                                // 判断element.children是对象
-                                                if (element.children && typeof (element.children) == 'object') {
-                                                    parseTreeJson(element.children)
-                                                } else {
-                                                    // 判断是否为子节点
-                                                    if (!(element.children || typeof (element.children) == 'object')) {
-                                                        // 获得符合的 node
-                                                        nodes.push(element);
+                                <ProFormCascader
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="indicatorTypeList"
+                                    label="指标类别"
+
+                                    fieldProps={{
+                                        size: 'small',
+                                        maxTagCount: 'responsive',
+                                        multiple: true,
+                                        showCheckedStrategy: 'SHOW_CHILD',
+                                        fieldNames: { label: 'name', value: 'code', children: 'children' },
+                                        options: getSelectorData('IndicatorType', 'Cascader'),
+                                        onChange(value, selectOptions) {
+                                            console.log({ value, selectOptions });
+
+                                            var nodes: any[] = [];
+
+                                            function parseTreeJson(array: any[]) {
+                                                if (!array) return [];
+                                                for (let index = 0; index < array.length; index++) {
+                                                    const element = array[index];
+                                                    // 判断element.children是对象
+                                                    if (element.children && typeof (element.children) == 'object') {
+                                                        parseTreeJson(element.children)
+                                                    } else {
+                                                        // 判断是否为子节点
+                                                        if (!(element.children || typeof (element.children) == 'object')) {
+                                                            // 获得符合的 node
+                                                            nodes.push(element);
+                                                        }
                                                     }
                                                 }
                                             }
-                                        }
 
-                                        if (value.length > 0) {
-                                            for (let index = 0; index < value.length; index++) {
+                                            if (value.length > 0) {
+                                                for (let index = 0; index < value.length; index++) {
 
-                                                let current = value[index];
-                                                let key = current[current.length - 1];
-                                                const result = selectOptions[index].filter((t: any) => t.code == key);
+                                                    let current = value[index];
+                                                    let key = current[current.length - 1];
+                                                    const result = selectOptions[index].filter((t: any) => t.code == key);
 
-                                                if (result[0].children) {
-                                                    //非直接叶子节点
-                                                    parseTreeJson(result[0].children);
-                                                }
-                                                if (!result[0].children) {
-                                                    //直接叶子节点
-                                                    nodes.push({ code: result[0].code })
-                                                }
+                                                    if (result[0].children) {
+                                                        //非直接叶子节点
+                                                        parseTreeJson(result[0].children);
+                                                    }
+                                                    if (!result[0].children) {
+                                                        //直接叶子节点
+                                                        nodes.push({ code: result[0].code })
+                                                    }
 
+                                                }
                                             }
-                                        }
-
-                                        const codes = nodes.map((t) => t.code);
-                                        manaInfoformRef.current?.setFieldsValue({ '_indicatorTypeList': codes });
-                                    },
-                                }}
-
-                            />
-                            <ProFormText
-                                label="管理目标值"
-                                colProps={{ md: 12, xl: 8 }}
-                                name="targetValue"
-                            />
-
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="indicatorDepartmentList"
-                                label="职能科室归属"
-                                fieldProps={{
-                                    mode: 'multiple',
-                                    maxTagCount: 'responsive'
-                                }}
-                                options={getSelectorData('IndicatorDepartment') as DefaultOptionType[]}
-                                placeholder="请选择"
-                            />
-
-                            <ProFormDigit colProps={{ md: 12, xl: 8 }} name="reference" label="同级参考值" placeholder="请输入" />
-                            {/* <ProFormText colProps={{ md: 12, xl: 8 }} name="referenceDesc" label="参考值来源说明" placeholder="请输入" /> */}
-                            <ProFormTextArea colProps={{ md: 12, xl: 8 }}
-                                name="referenceDesc" label="参考值来源说明" placeholder="请输入"
-                                fieldProps={{
-                                    allowClear: true,
-                                    autoSize: true
-                                }}
-                            />
 
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="indicatorCommitteeList"
-                                label="委员会归属"
-                                fieldProps={{
-                                    mode: 'multiple',
-                                    maxTagCount: 'responsive'
-                                }}
-                                options={getSelectorData('IndicatorCommittee') as DefaultOptionType[]}
-                                placeholder="请选择"
-                            />
-
-                            <ProFormCascader
-                                colProps={{ md: 12, xl: 8 }}
-                                name="indicatorExternalList"
-                                label="外部指标"
-                                fieldProps={{
-                                    multiple: true,
-                                    maxTagCount: 'responsive',
-                                    fieldNames: { label: 'name', value: 'code', children: 'children' },
-                                    options: getSelectorData('IndicatorExternal', 'Cascader'),
-                                    onChange(value, selectOptions) {
-                                        // console.log({ value, selectOptions });
-
-                                        var nodes: any[] = [];
-
-                                        function parseTreeJson(array: any[]) {
-                                            if (!array) return [];
-                                            for (let index = 0; index < array.length; index++) {
-                                                const element = array[index];
-                                                // 判断element.children是对象
-                                                if (element.children && typeof (element.children) == 'object') {
-                                                    parseTreeJson(element.children)
-                                                } else {
-                                                    // 判断是否为子节点
-                                                    if (!(element.children || typeof (element.children) == 'object')) {
-                                                        // 获得符合的 node
-                                                        nodes.push(element);
+                                            const codes = nodes.map((t) => t.code);
+                                            manaInfoformRef.current?.setFieldsValue({ '_indicatorTypeList': codes });
+                                        },
+                                    }}
+
+                                />
+                                <ProFormText
+                                    label="管理目标值"
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="targetValue"
+                                />
+
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="indicatorDepartmentList"
+                                    label="职能科室归属"
+
+                                    fieldProps={{
+                                        mode: 'multiple',
+                                        size: 'small',
+                                        maxTagCount: 'responsive'
+                                    }}
+                                    options={getSelectorData('IndicatorDepartment') as DefaultOptionType[]}
+                                    placeholder="请选择"
+                                />
+
+                                <ProFormDigit colProps={{ md: 12, xl: 8 }} name="reference" label="同级参考值" placeholder="请输入" />
+                                {/* <ProFormText colProps={{ md: 12, xl: 8 }} name="referenceDesc" label="参考值来源说明" placeholder="请输入" /> */}
+                                <ProFormTextArea colProps={{ md: 12, xl: 8 }}
+                                    name="referenceDesc" label="参考值来源说明" placeholder="请输入"
+                                    fieldProps={{
+                                        allowClear: true,
+                                        autoSize: true,
+                                        size: 'small'
+                                    }}
+                                />
+
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="indicatorCommitteeList"
+                                    label="委员会归属"
+                                    fieldProps={{
+                                        size: 'small',
+                                        mode: 'multiple',
+                                        maxTagCount: 'responsive'
+                                    }}
+                                    options={getSelectorData('IndicatorCommittee') as DefaultOptionType[]}
+                                    placeholder="请选择"
+                                />
+
+                                <ProFormCascader
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="indicatorExternalList"
+                                    label="外部指标"
+                                    fieldProps={{
+                                        size: 'small',
+                                        multiple: true,
+                                        maxTagCount: 'responsive',
+                                        fieldNames: { label: 'name', value: 'code', children: 'children' },
+                                        options: getSelectorData('IndicatorExternal', 'Cascader'),
+                                        onChange(value, selectOptions) {
+                                            // console.log({ value, selectOptions });
+
+                                            var nodes: any[] = [];
+
+                                            function parseTreeJson(array: any[]) {
+                                                if (!array) return [];
+                                                for (let index = 0; index < array.length; index++) {
+                                                    const element = array[index];
+                                                    // 判断element.children是对象
+                                                    if (element.children && typeof (element.children) == 'object') {
+                                                        parseTreeJson(element.children)
+                                                    } else {
+                                                        // 判断是否为子节点
+                                                        if (!(element.children || typeof (element.children) == 'object')) {
+                                                            // 获得符合的 node
+                                                            nodes.push(element);
+                                                        }
                                                     }
                                                 }
                                             }
-                                        }
 
 
-                                        if (value.length > 0) {
-                                            for (let index = 0; index < value.length; index++) {
+                                            if (value.length > 0) {
+                                                for (let index = 0; index < value.length; index++) {
 
-                                                let current = value[index];
-                                                let key = current[current.length - 1];
-                                                const result = selectOptions[index].filter((t: any) => t.code == key);
-                                                console.log({ result });
-                                                if (result[0].children) {
-                                                    //非直接叶子节点
-                                                    parseTreeJson(result[0].children);
-                                                }
-                                                if (!result[0].children) {
-                                                    //直接叶子节点
-                                                    nodes.push({ code: result[0].code })
-                                                }
+                                                    let current = value[index];
+                                                    let key = current[current.length - 1];
+                                                    const result = selectOptions[index].filter((t: any) => t.code == key);
+                                                    console.log({ result });
+                                                    if (result[0].children) {
+                                                        //非直接叶子节点
+                                                        parseTreeJson(result[0].children);
+                                                    }
+                                                    if (!result[0].children) {
+                                                        //直接叶子节点
+                                                        nodes.push({ code: result[0].code })
+                                                    }
 
+                                                }
                                             }
-                                        }
 
 
-                                        const codes = nodes.map((t) => t.code);
-                                        manaInfoformRef.current?.setFieldsValue({ '_indicatorExternalList': codes });
-                                    },
-                                }}
-                            />
-                            {/* <ProFormText colProps={{ md: 12, xl: 8 }} name="remark" label="其他备注" placeholder="请输入" /> */}
-                            <ProFormTextArea colProps={{ md: 12, xl: 8 }}
-                                name="remark" label="其他备注" placeholder="请输入"
-                                fieldProps={{
-                                    allowClear: true,
-                                    autoSize: true
-                                }}
-                            />
-                        </ProForm>
+                                            const codes = nodes.map((t) => t.code);
+                                            manaInfoformRef.current?.setFieldsValue({ '_indicatorExternalList': codes });
+                                        },
+                                    }}
+                                />
+                                {/* <ProFormText colProps={{ md: 12, xl: 8 }} name="remark" label="其他备注" placeholder="请输入" /> */}
+                                <ProFormTextArea colProps={{ md: 12, xl: 8 }}
+                                    name="remark" label="其他备注" placeholder="请输入"
+                                    fieldProps={{
+                                        allowClear: true,
+                                        autoSize: true,
+                                        size: 'small'
+                                    }}
+                                />
+                            </ProForm>
+                        </div>
                     </div>
-                </div>
 
 
-                <div className='card'>
-                    <div className='cardTitle' >指标展示设定</div>
-                    <div className='formContent'>
-                        <ProForm
-                            formRef={showSetInfoformRef}
-                            layout={'vertical'}
-                            grid={true}
-                            autoFocusFirstInput={false}
-                            rowProps={{
-                                gutter: [16, 16],
-                            }}
-                            initialValues={renderType == 'ADD' ? {} : renderType == 'EDIT' && record ? {
-                                ...record,
-                                caseBreakdown: record.caseBreakdown ? record.caseBreakdown.split('/') : [],
-                                chartType: record.chartType ? record.chartType.split('/') : [],
-                                dataDownload: record.dataDownload ? record.dataDownload.split('/') : [],
-                                dataSum: record.dataSum ? record.dataSum.split('/') : [],
-                                drillLevel: record.drillLevel ? record.drillLevel.split('/') : [],
-                            } : {}}
-                            submitter={{
-                                render: () => null
-                            }}
-                        >
-
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="appearDate"
-                                label="呈现期间"
-                                options={[
-                                    {
-                                        label: '年',
-                                        value: '年',
-                                    },
-                                    {
-                                        label: '季',
-                                        value: '季',
-                                    },
-                                    {
-                                        label: '月',
-                                        value: '月',
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="chartType"
-                                label="图表形态"
-                                fieldProps={{
-                                    mode: 'multiple',
-                                    maxTagCount: 'responsive'
-                                }}
-                                options={[
-                                    {
-                                        label: '统计表',
-                                        value: '统计表',
-                                    },
-                                    {
-                                        label: '直方图',
-                                        value: '直方图',
-                                    },
-                                    {
-                                        label: '趋势图',
-                                        value: '趋势图',
-                                    },
-                                    {
-                                        label: '其他',
-                                        value: '其他',
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="dataSum"
-                                label="数据汇总呈现"
-                                fieldProps={{
-                                    mode: 'multiple',
-                                    maxTagCount: 'responsive'
-                                }}
-                                options={[
-                                    { label: '全院', value: '全院' },
-                                    { label: '分院', value: '分院' },
-                                ]}
-                                placeholder="请选择"
-                            />
+                    <div className='card'>
+                        <div className='cardTitle' >指标展示设定</div>
+                        <div className='formContent'>
+                            <ProForm
+                                formRef={showSetInfoformRef}
+                                layout={'vertical'}
+                                grid={true}
 
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="drillLevel"
-                                label="资料下钻层级"
-                                fieldProps={{
-                                    mode: 'multiple',
-                                    maxTagCount: 'responsive'
-                                }}
-                                options={[
-                                    {
-                                        label: '全院',
-                                        value: '全院',
-                                    },
-                                    {
-                                        label: '分院区',
-                                        value: '分院区',
-                                    },
-                                    {
-                                        label: '科别',
-                                        value: '科别',
-                                    },
-                                    {
-                                        label: '医师别',
-                                        value: '医师别',
-                                    },
-                                    {
-                                        label: '个案',
-                                        value: '个案',
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="dataDownload"
-                                label="资料下载"
-                                fieldProps={{
-                                    mode: 'multiple',
-                                    maxTagCount: 'responsive'
+                                autoFocusFirstInput={false}
+                                rowProps={{
+                                    gutter: [16, 0],
                                 }}
-                                options={[
-                                    {
-                                        label: '全院',
-                                        value: '全院',
-                                    },
-                                    {
-                                        label: '分院区',
-                                        value: '分院区',
-                                    },
-                                    {
-                                        label: '科别',
-                                        value: '科别',
-                                    },
-                                    {
-                                        label: '医师别',
-                                        value: '医师别',
-                                    },
-                                    {
-                                        label: '个案数',
-                                        value: '个案数',
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="caseBreakdown"
-                                label="个案明细字段"
-                                fieldProps={{
-                                    mode: 'multiple',
-                                    maxTagCount: 'responsive'
+                                initialValues={renderType == 'ADD' ? {} : renderType == 'EDIT' && record ? {
+                                    ...record,
+                                    caseBreakdown: record.caseBreakdown ? record.caseBreakdown.split('/') : [],
+                                    chartType: record.chartType ? record.chartType.split('/') : [],
+                                    dataDownload: record.dataDownload ? record.dataDownload.split('/') : [],
+                                    dataSum: record.dataSum ? record.dataSum.split('/') : [],
+                                    drillLevel: record.drillLevel ? record.drillLevel.split('/') : [],
+                                } : {}}
+                                submitter={{
+                                    render: () => null
                                 }}
-                                options={[
-                                    {
-                                        label: '看诊科别',
-                                        value: '看诊科别',
-                                    },
-                                    {
-                                        label: '就诊日期',
-                                        value: '就诊日期',
-                                    },
-                                    {
-                                        label: '住院科别',
-                                        value: '住院科别',
-                                    },
-                                    {
-                                        label: '出院科别',
-                                        value: '出院科别',
-                                    },
-                                    {
-                                        label: '病历号',
-                                        value: '病历号',
-                                    },
-                                    {
-                                        label: '住院日期时间',
-                                        value: '住院日期时间',
-                                    },
-                                    {
-                                        label: '转出日期',
-                                        value: '转出日期',
-                                    },
-                                    {
-                                        label: '出院日期时间',
-                                        value: '出院日期时间',
-                                    },
-                                    {
-                                        label: '出院类别',
-                                        value: '出院类别',
-                                    },
-                                    {
-                                        label: '出院诊断码',
-                                        value: '出院诊断码',
-                                    },
-                                    {
-                                        label: '合并症码',
-                                        value: '合并症码',
-                                    },
-                                    {
-                                        label: '死亡原因',
-                                        value: '死亡原因',
-                                    },
-                                    {
-                                        label: '手术代码',
-                                        value: '手术代码',
-                                    },
-                                    {
-                                        label: '其他',
-                                        value: '其他',
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-
-
-                        </ProForm>
+                            >
+
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="appearDate"
+                                    label="呈现期间"
+                                    fieldProps={{ size: 'small' }}
+                                    options={[
+                                        {
+                                            label: '年',
+                                            value: '年',
+                                        },
+                                        {
+                                            label: '季',
+                                            value: '季',
+                                        },
+                                        {
+                                            label: '月',
+                                            value: '月',
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="chartType"
+                                    label="图表形态"
+                                    fieldProps={{
+                                        size: 'small',
+                                        mode: 'multiple',
+                                        maxTagCount: 'responsive'
+                                    }}
+                                    options={[
+                                        {
+                                            label: '统计表',
+                                            value: '统计表',
+                                        },
+                                        {
+                                            label: '直方图',
+                                            value: '直方图',
+                                        },
+                                        {
+                                            label: '趋势图',
+                                            value: '趋势图',
+                                        },
+                                        {
+                                            label: '其他',
+                                            value: '其他',
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="dataSum"
+                                    label="数据汇总呈现"
+                                    fieldProps={{
+                                        size: 'small',
+                                        mode: 'multiple',
+                                        maxTagCount: 'responsive'
+                                    }}
+                                    options={[
+                                        { label: '全院', value: '全院' },
+                                        { label: '分院', value: '分院' },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="drillLevel"
+                                    label="资料下钻层级"
+                                    fieldProps={{
+                                        size: 'small',
+                                        mode: 'multiple',
+                                        maxTagCount: 'responsive'
+                                    }}
+                                    options={[
+                                        {
+                                            label: '全院',
+                                            value: '全院',
+                                        },
+                                        {
+                                            label: '分院区',
+                                            value: '分院区',
+                                        },
+                                        {
+                                            label: '科别',
+                                            value: '科别',
+                                        },
+                                        {
+                                            label: '医师别',
+                                            value: '医师别',
+                                        },
+                                        {
+                                            label: '个案',
+                                            value: '个案',
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="dataDownload"
+                                    label="资料下载"
+                                    fieldProps={{
+                                        size: 'small',
+                                        mode: 'multiple',
+                                        maxTagCount: 'responsive'
+                                    }}
+                                    options={[
+                                        {
+                                            label: '全院',
+                                            value: '全院',
+                                        },
+                                        {
+                                            label: '分院区',
+                                            value: '分院区',
+                                        },
+                                        {
+                                            label: '科别',
+                                            value: '科别',
+                                        },
+                                        {
+                                            label: '医师别',
+                                            value: '医师别',
+                                        },
+                                        {
+                                            label: '个案数',
+                                            value: '个案数',
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="caseBreakdown"
+                                    label="个案明细字段"
+                                    fieldProps={{
+                                        size: 'small',
+                                        mode: 'multiple',
+                                        maxTagCount: 'responsive'
+                                    }}
+                                    options={[
+                                        {
+                                            label: '看诊科别',
+                                            value: '看诊科别',
+                                        },
+                                        {
+                                            label: '就诊日期',
+                                            value: '就诊日期',
+                                        },
+                                        {
+                                            label: '住院科别',
+                                            value: '住院科别',
+                                        },
+                                        {
+                                            label: '出院科别',
+                                            value: '出院科别',
+                                        },
+                                        {
+                                            label: '病历号',
+                                            value: '病历号',
+                                        },
+                                        {
+                                            label: '住院日期时间',
+                                            value: '住院日期时间',
+                                        },
+                                        {
+                                            label: '转出日期',
+                                            value: '转出日期',
+                                        },
+                                        {
+                                            label: '出院日期时间',
+                                            value: '出院日期时间',
+                                        },
+                                        {
+                                            label: '出院类别',
+                                            value: '出院类别',
+                                        },
+                                        {
+                                            label: '出院诊断码',
+                                            value: '出院诊断码',
+                                        },
+                                        {
+                                            label: '合并症码',
+                                            value: '合并症码',
+                                        },
+                                        {
+                                            label: '死亡原因',
+                                            value: '死亡原因',
+                                        },
+                                        {
+                                            label: '手术代码',
+                                            value: '手术代码',
+                                        },
+                                        {
+                                            label: '其他',
+                                            value: '其他',
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+
+
+                            </ProForm>
+                        </div>
                     </div>
-                </div>
 
-                <div className='card'>
-                    <div className='cardTitle' >管理员维护信息</div>
-                    <div className='formContent'>
-                        <ProForm
-                            formRef={adminInfoformRef}
-                            layout={'vertical'}
-                            grid={true}
-                            autoFocusFirstInput={false}
-                            initialValues={renderType == 'ADD' ? { isPublic: 1 } : renderType == 'EDIT' && record ? {
-                                ...record,
-                                indicatorMenuList: setFormInit('indicatorMenuList'),
-                            } : {}}
-                            rowProps={{
-                                gutter: [16, 16],
-                            }}
-                            submitter={{
-                                render: () => null
-                            }}
-                        >
-
-                            <ProFormCascader
-                                colProps={{ md: 12, xl: 8 }}
-                                name="indicatorMenuList"
-                                label="指标目录"
-                                rules={[{ required: true, message: '这是必填项' }]}
-                                fieldProps={{
-                                    multiple: true,
-                                    fieldNames: { label: 'name', value: 'code' },
-                                    onChange(value: any, selectOptions: any) {
-                                        console.log({ value, selectOptions });
-
-                                        var nodes: any[] = [];
-
-                                        function parseTreeJson(array: any[]) {
-                                            if (!array) return [];
-                                            for (let index = 0; index < array.length; index++) {
-                                                const element = array[index];
-                                                // 判断element.children是对象
-                                                if (element.children && typeof (element.children) == 'object') {
-                                                    parseTreeJson(element.children)
-                                                } else {
-                                                    // 判断是否为子节点
-                                                    if (!(element.children || typeof (element.children) == 'object')) {
-                                                        // 获得符合的 node
-                                                        nodes.push(element);
+                    <div className='card'>
+                        <div className='cardTitle' >管理员维护信息</div>
+                        <div className='formContent'>
+                            <ProForm
+                                formRef={adminInfoformRef}
+                                layout={'vertical'}
+                                grid={true}
+                                autoFocusFirstInput={false}
+                                initialValues={renderType == 'ADD' ? { isPublic: 1 } : renderType == 'EDIT' && record ? {
+                                    ...record,
+                                    indicatorMenuList: setFormInit('indicatorMenuList'),
+                                } : {}}
+                                rowProps={{
+                                    gutter: [16, 0],
+                                }}
+                                submitter={{
+                                    render: () => null
+                                }}
+                            >
+
+                                <ProFormCascader
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="indicatorMenuList"
+                                    label="指标目录"
+                                    rules={[{ required: true, message: '这是必填项' }]}
+                                    fieldProps={{
+                                        size: 'small',
+                                        multiple: true,
+                                        fieldNames: { label: 'name', value: 'code' },
+                                        onChange(value: any, selectOptions: any) {
+                                            console.log({ value, selectOptions });
+
+                                            var nodes: any[] = [];
+
+                                            function parseTreeJson(array: any[]) {
+                                                if (!array) return [];
+                                                for (let index = 0; index < array.length; index++) {
+                                                    const element = array[index];
+                                                    // 判断element.children是对象
+                                                    if (element.children && typeof (element.children) == 'object') {
+                                                        parseTreeJson(element.children)
+                                                    } else {
+                                                        // 判断是否为子节点
+                                                        if (!(element.children || typeof (element.children) == 'object')) {
+                                                            // 获得符合的 node
+                                                            nodes.push(element);
+                                                        }
                                                     }
                                                 }
                                             }
-                                        }
 
-                                        if (value.length > 0) {
-                                            for (let index = 0; index < value.length; index++) {
+                                            if (value.length > 0) {
+                                                for (let index = 0; index < value.length; index++) {
 
-                                                let current = value[index];
-                                                let key = current[current.length - 1];
-                                                const result = selectOptions[index].filter((t: any) => t.code == key);
-                                                // console.log({result});
-                                                if (result[0].children) {
-                                                    //非直接叶子节点
-                                                    parseTreeJson(result[0].children);
-                                                }
-                                                if (!result[0].children) {
-                                                    //直接叶子节点
-                                                    nodes.push({ code: result[0].code })
-                                                }
+                                                    let current = value[index];
+                                                    let key = current[current.length - 1];
+                                                    const result = selectOptions[index].filter((t: any) => t.code == key);
+                                                    // console.log({result});
+                                                    if (result[0].children) {
+                                                        //非直接叶子节点
+                                                        parseTreeJson(result[0].children);
+                                                    }
+                                                    if (!result[0].children) {
+                                                        //直接叶子节点
+                                                        nodes.push({ code: result[0].code })
+                                                    }
 
+                                                }
                                             }
-                                        }
 
 
-                                        const codes = nodes.map((t) => t.code);
-                                        console.log({ codes, nodes });
-                                        adminInfoformRef.current?.setFieldsValue({ '_indicatorMenuList': codes });
-                                    },
-                                }}
-                                request={async () => {
-                                    if (location.search.length > 0) {
-                                        const id = (location.search.split('='))[1];
-                                        if (id) {
-                                            const dirData = await getIndicatorDictionary();
-                                            if (dirData) {
-                                                const result = dirData.filter(t => t.code == id);
-
-                                                if (result.length > 0) {
-                                                    return result[0].children
+                                            const codes = nodes.map((t) => t.code);
+                                            console.log({ codes, nodes });
+                                            adminInfoformRef.current?.setFieldsValue({ '_indicatorMenuList': codes });
+                                        },
+                                    }}
+                                    request={async () => {
+                                        if (location.search.length > 0) {
+                                            const id = (location.search.split('='))[1];
+                                            if (id) {
+                                                const dirData = await getIndicatorDictionary();
+                                                if (dirData) {
+                                                    const result = dirData.filter(t => t.code == id);
+
+                                                    if (result.length > 0) {
+                                                        return result[0].children
+                                                    }
                                                 }
+                                                return []
                                             }
-                                            return []
-                                        }
-
-                                    }
-
-                                    return []
-                                }}
-                                placeholder="请选择"
-                            />
 
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="isPublic"
-                                label="是否公开"
-                                options={[
-                                    {
-                                        label: '是',
-                                        value: 1,
-                                    },
-                                    {
-                                        label: '否',
-                                        value: 0,
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
-                            <ProFormSelect
-                                colProps={{ md: 12, xl: 8 }}
-                                name="version"
-                                label="版本"
-                                options={[
-                                    {
-                                        label: '版本1',
-                                        value: 1,
-                                    },
-                                    {
-                                        label: '版本2',
-                                        value: 2,
-                                    },
-                                    {
-                                        label: '版本3',
-                                        value: 3,
-                                    },
-                                ]}
-                                placeholder="请选择"
-                            />
+                                        }
 
-                        </ProForm>
+                                        return []
+                                    }}
+                                    placeholder="请选择"
+                                />
+
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="isPublic"
+                                    label="是否公开"
+                                    fieldProps={{ size: 'small' }}
+                                    options={[
+                                        {
+                                            label: '是',
+                                            value: 1,
+                                        },
+                                        {
+                                            label: '否',
+                                            value: 0,
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+                                <ProFormSelect
+                                    colProps={{ md: 12, xl: 8 }}
+                                    name="version"
+                                    label="版本"
+                                    fieldProps={{ size: 'small' }}
+                                    options={[
+                                        {
+                                            label: '版本1',
+                                            value: 1,
+                                        },
+                                        {
+                                            label: '版本2',
+                                            value: 2,
+                                        },
+                                        {
+                                            label: '版本3',
+                                            value: 3,
+                                        },
+                                    ]}
+                                    placeholder="请选择"
+                                />
+
+                            </ProForm>
+                        </div>
                     </div>
                 </div>
+
             </Drawer>
         </div>
     )

+ 68 - 14
src/pages/platform/setting/indicatorMana/DrawerForm/style.less

@@ -1,20 +1,74 @@
+.DrawerForm {
+  .drawerHeader {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    align-items: center;
+    padding: 16px;
 
 
+    .drawerTitle {
+      height: 16px;
+      line-height: 16px;
+      font-weight: bold;
+      font-size: 16px;
+      color: #17181A;
+    }
 
-.DrawerForm {
-      .card {
-        padding:24px;
-        margin:10px;
-        background: #FFFFFF;
+    .btnGroup {
+      &>span {
+        display: inline-block;
+        width: 56px;
+        height: 24px;
+        cursor: pointer;
+        text-align: center;
+        line-height: 24px;
+        background: #FAFCFF;
         border-radius: 4px;
-        .cardTitle {
-            height: 16px;
-            font-size: 16px;
-            font-family: SourceHanSansCN-Medium, SourceHanSansCN;
-            font-weight: 500;
-            color: #17181A;
-            line-height: 16px;
-            margin-bottom: 24px;
+        border: 1px solid #DAE2F2;
+        font-weight: 400;
+        font-size: 14px;
+        color: #17181A;
+        margin-right: 8px;
+
+        &.primary {
+          background: #3377FF;
+          border: 1px solid transparent;
+          color: #fff;
+        }
+
+        &:last-child {
+          margin-right: 0;
         }
       }
-}
+
+    }
+  }
+
+  .drawerContent {
+    height: calc(100vh - 55px);
+    overflow-y: scroll;
+    .card {
+      padding: 16px;
+      margin: 16px;
+      background: #FFFFFF;
+      border-radius: 4px;
+  
+      .cardTitle {
+        height: 16px;
+        font-size: 16px;
+        font-family: SourceHanSansCN-Medium, SourceHanSansCN;
+        font-weight: 500;
+        color: #17181A;
+        line-height: 16px;
+        margin-bottom: 24px;
+      }
+
+      &:first-child {
+          margin-top: 0;
+      }
+    }
+  }
+
+  
+}

+ 2 - 2
src/pages/platform/setting/indicatorMana/TreeDirectory/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-07-16 14:33:12
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2022-07-19 11:23:19
+ * @LastEditTime: 2024-10-09 17:10:11
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/TreeDirectory/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -71,7 +71,7 @@ const TreeDirectory = ({ data,onSelectChange }: { data: any[];onSelectChange?:(s
 
 
     useEffect(()=>{
-           console.log({defaultExpandedKeys});
+         
     },[defaultExpandedKeys])
 
 

+ 162 - 111
src/pages/platform/setting/indicatorMana/index.tsx

@@ -2,26 +2,28 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-07-12 11:14:21
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2022-07-20 10:44:16
+ * @LastEditTime: 2024-12-02 14:05:44
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/indicatorMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
 
 
 
-import KCTable from '@/components/kcTable';
 import { ActionType, ProColumns } from '@ant-design/pro-table';
 import React, { useEffect, useRef, useState } from 'react'
-import { Button, Drawer, Popconfirm } from 'antd'
-import Divider from '@ant-design/pro-card/lib/components/Divider';
+import { Button, Divider, Dropdown, Popconfirm } from 'antd'
+
 import DrawerForm from './DrawerForm/drawer';
-import ProForm from '@ant-design/pro-form/lib/layouts/ProForm';
+import { DownOutlined } from '@ant-design/icons';
 import { addIndicatorManaList, delIndicatorManaList, editIndicatorManaList, getIndicatorCateList, getIndicatorManaList, IndicatorManaItemType } from '@/service/indicator';
 import TreeDirectory from './TreeDirectory';
 
 import './style.less';
 import { getIndicatorDictionary, IndicatorDictionaryDataType } from '@/service/dictionary';
 import { useLocation } from 'umi';
+import { KCIMLeftList } from '../../components/KCIMLeftList';
+import KCTable from '@/components/kcTable';
+import { KCInput } from '@/components/KCInput';
 
 
 const IndicatorMana = () => {
@@ -35,6 +37,10 @@ const IndicatorMana = () => {
   const [tableData, set_tableData] = useState<any[]>([]);
   const [cateId, set_cateId] = useState<string>();
 
+  const [tableDataFilterParams, set_tableDataFilterParams] = useState<any | undefined>();
+  const [tableDataSearchKeywords, set_tableDataSearchKeywords] = useState<string>('');
+  const [currentSelectedLeft,set_currentSelectedLeft] = useState<any>(undefined);
+
 
   const [drawerActype, set_drawerActype] = useState<'ADD' | 'EDIT'>('ADD');
 
@@ -46,7 +52,6 @@ const IndicatorMana = () => {
       title: '指标名称',
       dataIndex: 'name',
       hideInSearch: false,
-      width: '30%',
       ellipsis: true,
 
     },
@@ -67,7 +72,7 @@ const IndicatorMana = () => {
     {
       title: '指标类别',
       dataIndex: 'indicatorType',
-      hideInSearch:true,
+      hideInSearch: true,
       ellipsis: true,
       hideInTable: true,
       valueType: 'select',
@@ -126,48 +131,55 @@ const IndicatorMana = () => {
     {
       title: '指标编码',
       dataIndex: 'code',
-      hideInSearch:true,
-      width: '10%',
+      width: 80,
+      hideInSearch: true,
       ellipsis: true,
 
     },
     {
       title: '指标定义',
       dataIndex: 'targetDefinition',
-      hideInSearch:true,
-      width: '30%',
+      hideInSearch: true,
       ellipsis: true,
 
     },
 
     {
       title: '操作',
-      width: 200,
+      width: 90,
       key: 'option',
       valueType: 'option',
       render: (text, record) => {
-
+        const items = [
+          {
+            key: '1', label: <a key="linka" href={record.indicatorPath} target='_blank'>
+              数据展示
+            </a>
+          },
+          {
+            key: '3', label: <Popconfirm
+              title="是否确定删除?"
+              onConfirm={() => delHandle(record)}
+              okText="确定"
+              cancelText="取消"
+              key="link2"
+            >
+              <a>删除</a>
+            </Popconfirm>
+          }
+        ]
 
         if (record && record.indicatorBoolean) {
-          return (
-            [
-              <a key="linka" href={record.indicatorPath} target='_blank'>
-                数据展示
-              </a>,
-              <a key="link3" onClick={() => actionHandle('EDIT', record)}>
-                管理信息
-              </a>,
-              <Popconfirm
-                title="是否确定删除?"
-                onConfirm={() => delHandle(record)}
-                okText="确定"
-                cancelText="取消"
-                key="link2"
-              >
-                <a>删除</a>
-              </Popconfirm>,
-            ]
-          )
+          return [
+            <a key="link3" onClick={() => actionHandle('EDIT', record)}>
+                管理
+            </a>,
+            <Dropdown menu={{ items }}>
+              <a>
+               <DownOutlined />
+              </a>
+            </Dropdown>
+          ]
         }
 
         return []
@@ -186,43 +198,41 @@ const IndicatorMana = () => {
 
   const getData = async (params: any) => {
     const { current = 1, name, indicatorType, outsideIndexes } = params;
-
-    console.log({params});
-    if(cateId){
+    if (cateId) {
       const resp = await getIndicatorManaList({
-        current:1,
-        pageSize:0,
+        current: 1,
+        pageSize: 0,
         menuCode: cateId as string,
         indicatorName: name,
         indicatorType: indicatorType,
         outsideIndexes: outsideIndexes && outsideIndexes.length > 0 ? outsideIndexes[outsideIndexes.length - 1] : ''
       });
-  
-      if (resp&&resp[0]) {
-  
-        const getName:any = (obj:any)=>{
+
+      if (resp && resp[0]) {
+
+        const getName: any = (obj: any) => {
 
           let isArr = Array.isArray(obj);
           let reslut = [];
-          if(isArr){
-              obj.forEach((item: any) => {
-                  reslut.push(...getName(item));
-              });
-          }else{
-              reslut.push(obj.menuId)
-
-              if(obj.children){
-                  reslut.push(...getName(obj.children));
-              }
+          if (isArr) {
+            obj.forEach((item: any) => {
+              reslut.push(...getName(item));
+            });
+          } else {
+            reslut.push(obj.menuId)
+
+            if (obj.children) {
+              reslut.push(...getName(obj.children));
+            }
           }
           return reslut;
         }
-  
+
         set_tableData(resp[0].children as unknown as []);
-  
-  
+
+
         set_defaultExpandedRowKeys(getName(resp[0].children));
-  
+
         return {
           data: resp[0].children as unknown as [],
           success: true,
@@ -238,11 +248,11 @@ const IndicatorMana = () => {
     }
 
     return {
-          data: [],
-          success: false,
-          total: 0,
+      data: [],
+      success: false,
+      total: 0,
     }
-    
+
   }
 
 
@@ -252,7 +262,7 @@ const IndicatorMana = () => {
     if (location.search.length > 0) {
       const searchArr = location.search.split('=');
       // console.log({ searchArr });
-      if(searchArr[1]){
+      if (searchArr[1]) {
         const resp = await getIndicatorCateList({ menuCode: searchArr[1] });
         if (resp) {
           set_indicatorCateTreeData(resp);
@@ -266,6 +276,7 @@ const IndicatorMana = () => {
 
 
   const actionHandle = async (key: 'EDIT' | 'DEL', record: IndicatorDictionaryDataType) => {
+
     set_currentEditRowData(record);
     if (key == 'EDIT') {
       set_drawerActype('EDIT');
@@ -300,23 +311,23 @@ const IndicatorMana = () => {
   const drawerFormCommitHanndle = async (data: any) => {
     // const formData = Object.assign({}, data[0].baseInfoformRef, data[1].manaInfoformRef, data[2].showSetInfoformRef, data[3].adminInfoformRef);
     //const _formData = {...data[0].baseInfoformRef,...data[1].manaInfoformRef,...data[2].showSetInfoformRef,...data[3].adminInfoformRef}
-  
-    let formData:any;
-    data.forEach((element:any) => {
-         if(element.baseInfoformRef){
-            formData = {...formData,...element.baseInfoformRef}
-         }
-         if(element.manaInfoformRef){
-          formData = {...formData,...element.manaInfoformRef}
-         }
-         if(element.showSetInfoformRef){
-          formData = {...formData,...element.showSetInfoformRef}
-         }
-         if(element.adminInfoformRef){
-          formData = {...formData,...element.adminInfoformRef}
-         }
+
+    let formData: any;
+    data.forEach((element: any) => {
+      if (element.baseInfoformRef) {
+        formData = { ...formData, ...element.baseInfoformRef }
+      }
+      if (element.manaInfoformRef) {
+        formData = { ...formData, ...element.manaInfoformRef }
+      }
+      if (element.showSetInfoformRef) {
+        formData = { ...formData, ...element.showSetInfoformRef }
+      }
+      if (element.adminInfoformRef) {
+        formData = { ...formData, ...element.adminInfoformRef }
+      }
     });
- 
+
 
     if (drawerActype == 'ADD') {
       const resp = await addIndicatorManaList({
@@ -360,14 +371,22 @@ const IndicatorMana = () => {
 
 
   const onSelectChangehandle = (currentSelected: any) => {
-    // console.log({ currentSelected });
-    set_cateId(currentSelected.code);
+    set_currentSelectedLeft(currentSelected);
+    currentSelected && set_cateId(currentSelected.code);
   }
 
+  const tableDataSearchHandle = (paramName: string) => {
+    set_tableDataFilterParams({
+      ...tableDataFilterParams,
+      current:1,
+      [`${paramName}`]: tableDataSearchKeywords,
+    });
+  };
+
   useEffect(() => {
     if (tableData) {
       const keys = tableData.map((t: any) => t ? t.code : '');
- 
+
     }
   }, [tableData]);
 
@@ -394,51 +413,83 @@ const IndicatorMana = () => {
       <DrawerForm actType={drawerActype} visible={drawerVisible} onVisibleChange={onVisibleChangeHandle} onFinish={data => drawerFormCommitHanndle(data)} record={currentEditRowData} />
       <div className='content'>
         <div className='left'>
-          <TreeDirectory data={indicatorCateTreeData} onSelectChange={(info) => onSelectChangehandle(info)} />
+          {/* <TreeDirectory data={indicatorCateTreeData} onSelectChange={(info) => onSelectChangehandle(info)} /> */}
+          <KCIMLeftList searchKey={'name'} listType='tree' dataSource={indicatorCateTreeData}
+            fieldNames={{ title: 'name', key: 'code' }} contentH={'100%'}
+            onChange={(info) => onSelectChangehandle(info)}
+          />
         </div>
         <div className='right'>
+          <div className='tableTitle'>{currentSelectedLeft&&currentSelectedLeft.name}</div>
+          <div className="toolBar">
+            <div className="filter">
+              <div className="filterItem">
+                <KCInput
+                  placeholder={'指标名称'}
+                  style={{ width: 240 }}
+                  search
+                  allowClear
+                  onChange={(e) => {
+                    set_tableDataSearchKeywords(e.target.value);
+                    if (e.target.value.length == 0) {
+                      set_tableDataFilterParams({
+                        ...tableDataFilterParams,
+                        current:1,
+                        name: '',
+                      });
+                    }
+                  }}
+                  onSearch={() => tableDataSearchHandle('name')}
+                />
+              </div>
+            </div>
+            <div className="btnGroup">
+              <span className="add" onClick={addHandle}>
+                新增
+              </span>
+            </div>
+          </div>
           {
             cateId && (
+
               <KCTable
-                className='indicatorTable'
+                newVer
                 rowKey="menuId"
-                headerTitle="指标管理"
                 columns={columns}
+                params={tableDataFilterParams}
                 actionRef={indicatorTableRef}
+                scroll={{y:`calc(100vh - 228px)`}}
                 expandable={{
-                      expandedRowKeys:defaultExpandedRowKeys,
-                      onExpand:(expanded, record)=>{
-                              // console.log({expanded, record});
-                              let _expandedKeys = [...defaultExpandedRowKeys];
-                              if(expanded){
-                                _expandedKeys.push(record.menuId)
-                              }else{
-                                const index = _expandedKeys.findIndex(t=>t==`${record.menuId}`);
-                                if(index != -1){
-                                  _expandedKeys.splice(index,1);
-                                }
-                              }
-                              set_defaultExpandedRowKeys([..._expandedKeys]);
+                  expandedRowKeys: defaultExpandedRowKeys,
+                  onExpand: (expanded, record) => {
+                    // console.log({expanded, record});
+                    let _expandedKeys = [...defaultExpandedRowKeys];
+                    if (expanded) {
+                      _expandedKeys.push(record.menuId)
+                    } else {
+                      const index = _expandedKeys.findIndex(t => t == `${record.menuId}`);
+                      if (index != -1) {
+                        _expandedKeys.splice(index, 1);
                       }
+                    }
+                    set_defaultExpandedRowKeys([..._expandedKeys]);
+                  }
 
                 }}
                 reload={reloadTable}
-                search={{
-                  span: 8
-                }}
-                tableStyle={{ height: 600, overflow: 'scroll' }}
-                pagination={{pageSize:100}}
-                toolBarRender={() => [
-                  // <Button key="1" onClick={addHandle}>
-                  //   上传
-                  // </Button>,
-                  // <Button key="2" onClick={addHandle}>
-                  //   下载
-                  // </Button>,
-                  <Button key="3" type="primary" onClick={addHandle}>
-                    新增
-                  </Button>,
-                ]}
+                pagination={false}
+                // toolBarRender={() => [
+                //   // <Button key="1" onClick={addHandle}>
+                //   //   上传
+                //   // </Button>,
+                //   // <Button key="2" onClick={addHandle}>
+                //   //   下载
+                //   // </Button>,
+                //   <Button key="3" type="primary" onClick={addHandle}>
+                //     新增
+                //   </Button>,
+                // ]}
+                options={false}
                 request={(params) => getData(params)}
               />
             )

+ 69 - 29
src/pages/platform/setting/indicatorMana/style.less

@@ -1,37 +1,77 @@
+.IndicatorMana {
+  width: 100%;
 
+  .content {
+    display: flex;
+    flex: 1;
+    width: 100%;
+    height: 100%;
+    flex-direction: row;
+    justify-content: space-between;
+    align-items: flex-start;
 
+    .left {
+      width: 220px;
+      height:calc(100vh - 80px);
+      padding: 0px;
+      padding-top: 8px;
+      border-radius: 4px;
+      background-color: #fff;
+    }
 
-.IndicatorMana {
-     .content {
-        display: flex;
-        flex: 1;
-        flex-direction: row;
-        justify-content: space-between;
-        align-items:flex-start;
+    .right {
+      width: calc(100% - 236px);
+      padding: 16px;
+      background-color: #fff;
+      border-radius: 4px;
 
-        .left {
-             position: sticky;
-             top:0px;
-             width:23%;
-             height: 785px;
-             padding: 5px;
-             padding-top: 30px;
-             background-color: #fff;
-        }
-        .right {
-            width: 76%;
-            // overflow-y: hidden;
-            .indicatorTable {
-                  td {
-                       &>span {
-                           &.kcmp-ant-typography-ellipsis {
-                                display:inline;
-                           }
-                       }
-                  }
+      .tableTitle {
+        height: 16px;
+        font-weight:bold;
+        font-size: 16px;
+        color: #17181A;
+        line-height: 16px;
+        margin-bottom: 16px;
+      }
+
+      .toolBar {
+          display: flex;
+          flex-direction: row;
+          justify-content: space-between;
+          align-items: center;
+          margin-bottom: 16px;
+      
+          .filter {
+            display: flex;
+            flex-direction: row;
+            justify-content: flex-start;
+            align-items: center;
+      
+            .filterItem {
+              display: flex;
+              flex-direction: row;
+              justify-content: center;
+              align-items: center;
+            }
+          }
+      
+          .btnGroup {
+            .add {
+              cursor: pointer;
+              display: inline-block;
+              font-size: 14px;
+              font-weight: 400;
+              color: #FFFFFF;
+              line-height: 24px;
+              padding: 0 14px;
+              background: #3377FF;
+              border-radius: 4px;
             }
+          }
+      
         }
-     }
+    }
+  }
 
 
-}
+}

+ 3 - 1
src/pages/platform/setting/kcClassification/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-07-29 14:50:07
+ * @LastEditTime: 2024-12-02 14:06:35
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -159,6 +159,7 @@ export default function KcClassification() {
   const tableDataSearchHandle = (paramName: string) => {
     set_tableDataFilterParams({
       ...tableDataFilterParams,
+      current:1,
       [`${paramName}`]: tableDataSearchKeywords,
     });
   };
@@ -199,6 +200,7 @@ export default function KcClassification() {
                 if (e.target.value.length == 0) {
                   set_tableDataFilterParams({
                     ...tableDataFilterParams,
+                    current:1,
                     name: '',
                   });
                 }

+ 7 - 2
src/pages/platform/setting/menuManage/modals/modal.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-12 17:11:11
- * @LastEditTime: 2023-08-31 10:57:48
+ * @LastEditTime: 2024-10-12 10:09:05
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/userManage/modal.tsx
@@ -182,6 +182,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
             label="类型"
             width="md"
             name="type"
+            fieldProps={{size:'small'}}
             options={menuTypeOptionFiler()}
             rules={[
               {
@@ -281,6 +282,10 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                           label: '外部系统嵌入',
                           value: 6,
                         },
+                        {
+                          label: '外部系统链接',
+                          value: 7,
+                        },
                       ]}
                       rules={[
                         {
@@ -310,7 +315,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                           contentType &&
                           contentType != 0 &&
                           contentType != 4 &&
-                          contentType != 6 && (
+                          (contentType != 6 && contentType != 7) && (
                             //页面内容为非一般时,填写对应有数Id
                             <ProFormDigit
                               label="报告Id"

+ 12 - 3
src/pages/platform/setting/notificationTemplate/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-07-29 14:48:12
+ * @LastEditTime: 2024-12-02 14:08:21
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -220,6 +220,7 @@ export default function PubDicTypeMana() {
                 <ProFormSelect
                     name="hospId"
                     label="院区:"
+                    fieldProps={{size:'small'}}
                     // disabled={type == 'EDIT'}
                     placeholder="请选择院区"
                     rules={[{ required: true, message: '院区不能为空!' }]}
@@ -254,6 +255,7 @@ export default function PubDicTypeMana() {
 
                     }}
                     fieldProps={{
+                        size:'small',
                         fieldNames: {
                             label: 'name',
                             value: 'code'
@@ -267,6 +269,7 @@ export default function PubDicTypeMana() {
                     label="接收类型:"
                     options={setSelectorData('RECEIVE_TYPE').list}
                     placeholder="请选择"
+                    fieldProps={{size:'small'}}
                     rules={[{ required: true, message: '请选择!' }]}
                 />
                 <ProFormText
@@ -279,6 +282,7 @@ export default function PubDicTypeMana() {
                 <ProFormSelect
                     name="receiveLevel"
                     label="消息级别:"
+                    fieldProps={{size:'small'}}
                     options={setSelectorData('MESSAGE_LEVEL').list}
                     placeholder="请选择"
                     rules={[{ required: true, message: '请选择!' }]}
@@ -292,6 +296,7 @@ export default function PubDicTypeMana() {
                     colProps={{span:24}}
                     name="remark"
                     label="备注:"
+                    
                     placeholder="请输入"
 
                 />
@@ -304,6 +309,7 @@ export default function PubDicTypeMana() {
 
         set_tableDataFilterParams({
             ...tableDataFilterParams,
+            current:1,
             [`${paramName}`]: tableDataSearchKeywords
         })
     }
@@ -342,8 +348,9 @@ export default function PubDicTypeMana() {
 
                             }}
                             fieldProps={{
+                                size:'small',
                                 onChange(value, option) {
-                                    set_tableDataFilterParams({ ...tableDataFilterParams, hospId: value })
+                                    set_tableDataFilterParams({ ...tableDataFilterParams,current:1, hospId: value })
                                 },
                             }}
                         />
@@ -364,12 +371,13 @@ export default function PubDicTypeMana() {
 
                             }}
                             fieldProps={{
+                                size:'small',
                                 fieldNames: {
                                     label: 'name',
                                     value: 'code'
                                 },
                                 onChange(value: any, option: any) {
-                                    set_tableDataFilterParams({ ...tableDataFilterParams, systemId: value ? value[value.length - 1] : '' })
+                                    set_tableDataFilterParams({ ...tableDataFilterParams,current:1, systemId: value ? value[value.length - 1] : '' })
                                 },
                             }}
                         />
@@ -382,6 +390,7 @@ export default function PubDicTypeMana() {
                                 if (e.target.value.length == 0) {
                                     set_tableDataFilterParams({
                                         ...tableDataFilterParams,
+                                        current:1,
                                         title: ''
                                     });
                                 }

+ 3 - 1
src/pages/platform/setting/paramsMana/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-09-15 17:49:44
+ * @LastEditTime: 2024-12-06 16:42:30
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -200,6 +200,7 @@ export default function ParamsMana() {
 
         set_tableDataFilterParams({
             ...tableDataFilterParams,
+            current:1,
             [`${paramName}`]: tableDataSearchKeywords
         })
     }
@@ -391,6 +392,7 @@ export default function ParamsMana() {
                                     if (e.target.value.length == 0) {
                                         set_tableDataFilterParams({
                                             ...tableDataFilterParams,
+                                            current:1,
                                             parameterName: ''
                                         });
                                     }

+ 20 - 10
src/pages/platform/setting/pubDicMana/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-07-31 13:47:53
+ * @LastEditTime: 2024-12-02 14:09:41
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -161,9 +161,17 @@ const PubDicMana = () => {
   };
 
   const UpDataActBtn = ({ record, type }: { record: any; type: 'EDIT' | 'ADD' }) => {
+    let tableFileNames = [];
+    if (currentSelectedTreeNode) {
+      const { topic = '' } = currentSelectedTreeNode;
+      const titles = topic.split('|')
+      if (topic && titles.length == 7) {
+        tableFileNames = titles
+      }
+    }
     return (
       <ModalForm
-        title={`${type == 'EDIT' ? '编辑' : '新增'}公用字典(职称)`}
+        title={`${type == 'EDIT' ? '编辑' : '新增'}公用字典(${currentSelectedTreeNode?.dictName})`}
         width={352}
         initialValues={type == 'EDIT' ? { ...record } : {}}
         trigger={type == 'EDIT' ? <a key="edit">编辑</a> : <span className="add">新增</span>}
@@ -171,14 +179,14 @@ const PubDicMana = () => {
           return updateTable(type == 'EDIT' ? (pageType == 1 ? { ...val, dictDataId: record.dictDataId } : { ...val, id: record.id }) : val, type);
         }}
       >
-        <ProFormText name="name" label="名称:" placeholder="请输入" rules={[{ required: true, message: '名称不能为空!' }]} />
-        <ProFormText name="code" label="代码:" placeholder="请输入" rules={[{ required: true, message: '代码不能为空!' }]} />
-        <ProFormText name="value" label="对应值:" placeholder="请输入" />
-        <ProFormDigit label="顺序号:" name={pageType == 1 ? 'dictSort' : 'sort'} rules={[{ required: true, message: '顺序号不能为空!' }]} />
+        <ProFormText name="name" label={tableFileNames.length == 7?`${tableFileNames[0]}:`:"名称:"} placeholder="请输入" rules={[{ required: true, message: '名称不能为空!' }]} />
+        <ProFormText name="code" label={tableFileNames.length == 7?`${tableFileNames[1]}:`:"代码:"} placeholder="请输入" rules={[{ required: true, message: '代码不能为空!' }]} />
+        <ProFormText name="value" label={tableFileNames.length == 7?`${tableFileNames[2]}:`:"对应值:"} placeholder="请输入" />
+        <ProFormDigit label={tableFileNames.length == 7?`${tableFileNames[3]}:`:"顺序号:"} name={pageType == 1 ? 'dictSort' : 'sort'} rules={[{ required: true, message: '顺序号不能为空!' }]} />
 
         <ProFormRadio.Group
           name={pageType == 1 ? 'dictDefault' : 'defaultFlag'}
-          label="默认:"
+          label={tableFileNames.length == 7?`${tableFileNames[4]}:`:"默认:"}
           fieldProps={{
             buttonStyle: 'solid',
           }}
@@ -196,8 +204,8 @@ const PubDicMana = () => {
         />
         {true && (
           <>
-            <ProFormText name="expandOne" label="扩展一:" placeholder="请输入" />
-            <ProFormText name="expandTwo" label="扩展二:" placeholder="请输入" />
+            <ProFormText name="expandOne" label={tableFileNames.length == 7?`${tableFileNames[5]}:`:"扩展一:"} placeholder="请输入" />
+            <ProFormText name="expandTwo" label={tableFileNames.length == 7?`${tableFileNames[6]}:`:"扩展二:"} placeholder="请输入" />
           </>
         )}
       </ModalForm>
@@ -207,6 +215,7 @@ const PubDicMana = () => {
   const tableDataSearchHandle = (paramName: string) => {
     set_tableDataFilterParams({
       ...tableDataFilterParams,
+      current:1,
       [`${paramName}`]: tableDataSearchKeywords,
     });
   };
@@ -430,9 +439,10 @@ const PubDicMana = () => {
                       pageType == 1
                         ? {
                             ...tableDataFilterParams,
+                            current:1,
                             typeName: '',
                           }
-                        : { ...tableDataFilterParams, dictName: '' },
+                        : { ...tableDataFilterParams,current:1, dictName: '' },
                     );
                   }
                 }}

+ 4 - 1
src/pages/platform/setting/pubDicTypeMana/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-07-29 14:41:59
+ * @LastEditTime: 2024-12-06 16:39:19
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -91,6 +91,7 @@ export default function PubDicTypeMana() {
   };
 
   const getTableData = async (params: any) => {
+
     const resp = await getData({ ...params, systemId: params.systemId ? params.systemId : currentSelectedTreeNode.code });
     set_reload(false);
     if (resp) {
@@ -193,6 +194,7 @@ export default function PubDicTypeMana() {
   const tableDataSearchHandle = (paramName: string) => {
     set_tableDataFilterParams({
       ...tableDataFilterParams,
+      current:1,
       [`${paramName}`]: tableDataSearchKeywords,
     });
   };
@@ -384,6 +386,7 @@ export default function PubDicTypeMana() {
                   if (e.target.value.length == 0) {
                     set_tableDataFilterParams({
                       ...tableDataFilterParams,
+                      current:1,
                       typeName: '',
                     });
                   }

+ 9 - 5
src/pages/platform/setting/roleManage/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-13 15:22:48
- * @LastEditTime: 2024-07-29 14:56:41
+ * @LastEditTime: 2024-12-02 14:11:50
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/hospManage/index.tsx
@@ -372,7 +372,6 @@ const DrawerActBtn = ({ record }: { record: any }) => {
       function: [],
     }));
 
-    
 
     const data = {
       hospId: record.hospId,
@@ -400,6 +399,7 @@ const DrawerActBtn = ({ record }: { record: any }) => {
   const drawerTableDataSearchHandle = (paramName: string) => {
     set_drawerTableDataFilterParams({
       ...drawerTableDataFilterParams,
+      current:1,
       [`${paramName}`]: drawerTableDataSearchKeywords,
     });
   };
@@ -417,7 +417,7 @@ const DrawerActBtn = ({ record }: { record: any }) => {
 
       setInitCheckData();
 
-      set_drawerTableDataFilterParams({ ...drawerTableDataFilterParams, systemId: currentSelectedTreeNode.code });
+      set_drawerTableDataFilterParams({ ...drawerTableDataFilterParams,current:1, systemId: currentSelectedTreeNode.code });
       //切换系统清空数据
       set_checkBoxCodes([]);
       set_checkedTableMenuIds([]);
@@ -568,6 +568,7 @@ const DrawerActBtn = ({ record }: { record: any }) => {
                         if (e.target.value.length == 0) {
                           set_drawerTableDataFilterParams({
                             ...drawerTableDataFilterParams,
+                            current:1,
                             name: '',
                           });
                         }
@@ -868,6 +869,7 @@ const RoleManage: FC<PageProps> = ({ roleManageModel: state, dispatch }) => {
   const tableDataSearchHandle = (paramName: string) => {
     set_tableDataFilterParams({
       ...tableDataFilterParams,
+      current:1,
       [`${paramName}`]: tableDataSearchKeywords,
     });
   };
@@ -930,11 +932,12 @@ const RoleManage: FC<PageProps> = ({ roleManageModel: state, dispatch }) => {
                 if (e.target.value.length == 0) {
                   set_tableDataFilterParams({
                     ...tableDataFilterParams,
-                    hospName: '',
+                    current:1,
+                    roleName: '',
                   });
                 }
               }}
-              onSearch={() => tableDataSearchHandle('hospName')}
+              onSearch={() => tableDataSearchHandle('roleName')}
             />
           </div>
         </div>
@@ -950,6 +953,7 @@ const RoleManage: FC<PageProps> = ({ roleManageModel: state, dispatch }) => {
         columns={columns}
         options={false}
         newVer
+        params={tableDataFilterParams}
         reload={reloadTable}
         scroll={{y:`calc(100vh - 255px)`}}
         request={(params) => getData(params)}

+ 3 - 2
src/pages/platform/setting/roleManage/modals/modal.tsx

@@ -72,10 +72,10 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
       return '新增角色';
     }
     if (tableAct === TableActType.EDITMENU) {
-      return '绑定菜单';
+      return `绑定菜单(${currentEdit?.roleName})`;
     }
     if (tableAct === TableActType.EDITRELAUSER) {
-      return '绑定人员';
+      return `绑定人员(${currentEdit?.roleName})`;
     }
   };
 
@@ -113,6 +113,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
             width="md"
             name="hospId"
             disabled
+            fieldProps={{size:'small'}}
             request={async () => {
               const hospList = await getShareHospList();
               if (hospList) {

+ 1 - 0
src/pages/platform/setting/roleManage/model.ts

@@ -115,6 +115,7 @@ const roleManageModel: roleManageModelType = {
           userIds: payload.bindUserIds,
           roleId: Number(currentEditOld.roleId),
         }); //menuId集合
+        
         yield put({
           type: 'reloadTable',
           payload: true,

+ 1 - 3
src/pages/platform/setting/static/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-03-03 18:04:40
- * @LastEditTime: 2023-08-08 14:45:58
+ * @LastEditTime: 2024-09-13 11:12:26
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/reports/index.tsx
@@ -29,14 +29,12 @@ export default () => {
         userData: { youshuToken },
       } = initialState;
 
-      console.log({ spacicalPageParamsType });
 
       const { pathname } = location;
       const spacialPage = spacicalPageParamsType.filter((t) => t.path == pathname);
 
       if (spacialPage.length > 0) {
         //当前页面属于有数数据展示页面
-        console.log(`${spacialPage[0].url}`);
         const url = `${spacialPage[0].url}`;
         setspecialPageUrl(url);
       }

+ 89 - 82
src/pages/platform/setting/systemNavMana/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-12-16 09:42:52
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2024-07-29 14:46:49
+ * @LastEditTime: 2024-12-02 14:13:45
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -162,21 +162,21 @@ const MonthlyInfoCheck: React.FC = () => {
       render: (_: any, record: any) => {
         return record.type != 1 && record.type != 2 && record.type != 4
           ? [
-              <UpDataActBtn key={'add'} record={record} type="ADD" />,
-              <UpDataActBtn key={'act'} record={record} type="EDIT" />,
-              <Popconfirm title="是否确认删除?" key="del" onConfirm={() => delMenuHandle(record)}>
-                <a>删除</a>
-              </Popconfirm>,
-            ]
+            <UpDataActBtn key={'add'} record={record} type="ADD" />,
+            <UpDataActBtn key={'act'} record={record} type="EDIT" />,
+            <Popconfirm title="是否确认删除?" key="del" onConfirm={() => delMenuHandle(record)}>
+              <a>删除</a>
+            </Popconfirm>,
+          ]
           : [
-              <a key={'fuc'} onClick={() => addFuncHandle(record)}>
-                功能
-              </a>,
-              <UpDataActBtn key={'act'} record={record} type="EDIT" />,
-              <Popconfirm title="是否确认删除?" key="del" onConfirm={() => delMenuHandle(record)}>
-                <a>删除</a>
-              </Popconfirm>,
-            ];
+            <a key={'fuc'} onClick={() => addFuncHandle(record)}>
+              功能
+            </a>,
+            <UpDataActBtn key={'act'} record={record} type="EDIT" />,
+            <Popconfirm title="是否确认删除?" key="del" onConfirm={() => delMenuHandle(record)}>
+              <a>删除</a>
+            </Popconfirm>,
+          ];
       },
     },
   ];
@@ -415,6 +415,7 @@ const MonthlyInfoCheck: React.FC = () => {
   const tableDataSearchHandle = (paramName: string) => {
     set_tableDataFilterParams({
       ...tableDataFilterParams,
+      current:1,
       [`${paramName}`]: tableDataSearchKeywords,
     });
   };
@@ -468,6 +469,7 @@ const MonthlyInfoCheck: React.FC = () => {
           name="type"
           label="类型:"
           placeholder="请输入"
+          fieldProps={{size:'small'}}
           colProps={{ span: 12 }}
           options={[
             {
@@ -487,7 +489,7 @@ const MonthlyInfoCheck: React.FC = () => {
           label="icon:"
           placeholder="请输入"
           colProps={{ span: 12 }}
-          //rules={[{ required: true, message: '类型代码不能为空!' }]}
+        //rules={[{ required: true, message: '类型代码不能为空!' }]}
         />
         <ProFormDigit
           name="orderNum"
@@ -495,7 +497,7 @@ const MonthlyInfoCheck: React.FC = () => {
           width={'xs'}
           placeholder="请输入"
           colProps={{ span: 12 }}
-          //rules={[{ required: true, message: '类型代码不能为空!' }]}
+        //rules={[{ required: true, message: '类型代码不能为空!' }]}
         />
         <ProFormDependency name={['type']}>
           {({ type }) =>
@@ -517,7 +519,7 @@ const MonthlyInfoCheck: React.FC = () => {
                     value: 0,
                   },
                 ]}
-                //rules={[{ required: true, message: '类型代码不能为空!' }]}
+              //rules={[{ required: true, message: '类型代码不能为空!' }]}
               />
             )
           }
@@ -532,6 +534,7 @@ const MonthlyInfoCheck: React.FC = () => {
                   label="内容类型:"
                   placeholder="请输入"
                   width={100}
+
                   colProps={{ span: 8 }}
                   request={async () => {
                     if (contentType) {
@@ -540,6 +543,7 @@ const MonthlyInfoCheck: React.FC = () => {
                     return [];
                   }}
                   fieldProps={{
+                    size:'small',
                     onChange(value, option) {
                       if (value == 1) {
                         //报告页面
@@ -570,7 +574,7 @@ const MonthlyInfoCheck: React.FC = () => {
                             name="reportId"
                             placeholder="请输入报告Id"
                             colProps={{ span: 16 }}
-                            //rules={[{ required: true, message: '类型代码不能为空!' }]}
+                          //rules={[{ required: true, message: '类型代码不能为空!' }]}
                           />
                         </div>
                       )
@@ -590,7 +594,7 @@ const MonthlyInfoCheck: React.FC = () => {
                 label="URL:"
                 placeholder="请输入"
                 colProps={{ span: 12 }}
-                //rules={[{ required: true, message: '类型代码不能为空!' }]}
+              //rules={[{ required: true, message: '类型代码不能为空!' }]}
               />
             )
           }
@@ -603,7 +607,7 @@ const MonthlyInfoCheck: React.FC = () => {
 
   useEffect(() => {
     if (currentSelectedTreeNode) {
-      set_tableDataFilterParams({ ...tableDataFilterParams, systemId: currentSelectedTreeNode.code });
+      set_tableDataFilterParams({ ...tableDataFilterParams,current:1, systemId: currentSelectedTreeNode.code });
     }
   }, [currentSelectedTreeNode]);
 
@@ -629,70 +633,72 @@ const MonthlyInfoCheck: React.FC = () => {
     <div className="SystemNavMana">
       <div className="leftTree">
         <div className="search">
-          <Input className="searchInput" placeholder="请输入" size="small" allowClear style={{ marginBottom: 16 }} onChange={onTreeSearchKeyChange} suffix={<SearchIcon type="iconsousuo" />} />
+          <Input className="searchInput" placeholder="请输入" size="small" allowClear onChange={onTreeSearchKeyChange} suffix={<SearchIcon type="iconsousuo" />} />
         </div>
-        {treeData && treeData.length > 0 && (
-          <DirectoryTree
-            fieldNames={{ title: 'name', key: 'code' }}
-            rootStyle={{ overflowY: 'scroll', overflowX: 'hidden' }}
-            onSelect={onSelect}
-            onExpand={onExpand}
-            expandedKeys={expandedKeys}
-            autoExpandParent={autoExpandParent}
-            selectedKeys={currentSelectedTreeNode ? [currentSelectedTreeNode.code] : []}
-            blockNode={true}
-            icon={() => null}
-            titleRender={(nodeData: any) => {
-              const strTitle = nodeData.name as string;
-              const index = strTitle.indexOf(searchValue);
-              const beforeStr = strTitle.substring(0, index);
-              const afterStr = strTitle.slice(index + searchValue.length);
-              const title =
-                index > -1 ? (
-                  <span>
-                    {beforeStr}
-                    <span className="site-tree-search-value" style={{ color: 'red', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
-                      {searchValue}
+        <div className='treeeWrap'>
+          {treeData && treeData.length > 0 && (
+            <DirectoryTree
+              fieldNames={{ title: 'name', key: 'code' }}
+              rootStyle={{ overflowY: 'scroll', overflowX: 'hidden' }}
+              onSelect={onSelect}
+              onExpand={onExpand}
+              expandedKeys={expandedKeys}
+              autoExpandParent={autoExpandParent}
+              selectedKeys={currentSelectedTreeNode ? [currentSelectedTreeNode.code] : []}
+              blockNode={true}
+              icon={() => null}
+              titleRender={(nodeData: any) => {
+                const strTitle = nodeData.name as string;
+                const index = strTitle.indexOf(searchValue);
+                const beforeStr = strTitle.substring(0, index);
+                const afterStr = strTitle.slice(index + searchValue.length);
+                const title =
+                  index > -1 ? (
+                    <span>
+                      {beforeStr}
+                      <span className="site-tree-search-value" style={{ color: 'red', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
+                        {searchValue}
+                      </span>
+                      {afterStr}
                     </span>
-                    {afterStr}
-                  </span>
+                  ) : (
+                    <span className="strTitle">{strTitle}</span>
+                  );
+                return (
+                  <div
+                    style={{
+                      display: 'flex',
+                      flexDirection: 'row',
+                      width: '100%',
+                      justifyContent: 'flex-start',
+                      alignItems: 'center',
+                      height: 32,
+                      borderRadius: '4px',
+                      overflow: 'hidden',
+                      color: '#17181A',
+                      textOverflow: 'ellipsis',
+                      whiteSpace: 'nowrap',
+                    }}
+                  >
+                    {title}
+                  </div>
+                );
+              }}
+              defaultSelectedKeys={[treeData[0].children[0].code]}
+              treeData={treeData as unknown as DataNode[]}
+              // treeData={treeDataNew}
+              switcherIcon={(props: any) => {
+                const { expanded } = props;
+                //return <button className='site-table-row-expand-icon site-table-row-expand-icon-expanded'></button>
+                return !expanded ? (
+                  <img style={{ width: 20, height: 20, position: 'relative', top: 5 }} src={expandedIcon} />
                 ) : (
-                  <span className="strTitle">{strTitle}</span>
+                  <img style={{ width: 20, height: 20, position: 'relative', top: 5 }} src={closeIcon} />
                 );
-              return (
-                <div
-                  style={{
-                    display: 'flex',
-                    flexDirection: 'row',
-                    width: '100%',
-                    justifyContent: 'flex-start',
-                    alignItems: 'center',
-                    height: 32,
-                    borderRadius: '4px',
-                    overflow: 'hidden',
-                    color: '#17181A',
-                    textOverflow: 'ellipsis',
-                    whiteSpace: 'nowrap',
-                  }}
-                >
-                  {title}
-                </div>
-              );
-            }}
-            defaultSelectedKeys={[treeData[0].children[0].code]}
-            treeData={treeData as unknown as DataNode[]}
-            // treeData={treeDataNew}
-            switcherIcon={(props: any) => {
-              const { expanded } = props;
-              //return <button className='site-table-row-expand-icon site-table-row-expand-icon-expanded'></button>
-              return !expanded ? (
-                <img style={{ width: 20, height: 20, position: 'relative', top: 5 }} src={expandedIcon} />
-              ) : (
-                <img style={{ width: 20, height: 20, position: 'relative', top: 5 }} src={closeIcon} />
-              );
-            }}
-          />
-        )}
+              }}
+            />
+          )}
+        </div>
       </div>
       {/* <div style={{width:16,height:'92vh',background:'#F5F7FA'}}></div> */}
       <div className="rightContent">
@@ -710,6 +716,7 @@ const MonthlyInfoCheck: React.FC = () => {
                   if (e.target.value.length == 0) {
                     set_tableDataFilterParams({
                       ...tableDataFilterParams,
+                      current:1,
                       name: '',
                     });
                   }
@@ -728,7 +735,7 @@ const MonthlyInfoCheck: React.FC = () => {
             pagination={false}
             reload={reload}
             newVer
-            scroll={{y:`calc(100vh - 195px)`}}
+            scroll={{ y: `calc(100vh - 195px)` }}
             params={tableDataFilterParams}
             rowKey="menuId"
             columns={columns as ProColumns[]}

+ 9 - 2
src/pages/platform/setting/systemNavMana/style.less

@@ -17,14 +17,21 @@
     height: calc(100vh - 80px);
     background: #FFF;
     border-radius: 4px;
-    padding: 16px;
     overflow: hidden;
     margin-right: 16px;
     // border-right:16px solid #F5F7FA;
-
+    .search {
+      padding: 16px;
+    }
     .searchInput {
       border: 1px solid #CFD7E6;
     }
+    .treeeWrap {
+      height: calc(100% - 50px);
+      overflow-y: scroll;
+      padding: 16px;
+      padding-top: 0;
+    }
 
 
     .kcmp-ant-tree.kcmp-ant-tree-directory .kcmp-ant-tree-treenode-selected:hover::before,

+ 5 - 1
src/pages/platform/setting/userManage/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-11 09:43:18
- * @LastEditTime: 2024-07-29 14:53:07
+ * @LastEditTime: 2024-12-02 14:15:06
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/userManage/index.tsx
@@ -197,6 +197,7 @@ const UserManage: FC<PageProps> = ({ userManageModel: state, dispatch }) => {
   const tableDataSearchHandle = (paramName: string) => {
     set_tableDataFilterParams({
       ...tableDataFilterParams,
+      current:1,
       [`${paramName}`]: tableDataSearchKeywords,
     });
   };
@@ -284,10 +285,12 @@ const UserManage: FC<PageProps> = ({ userManageModel: state, dispatch }) => {
                 return [];
               }}
               fieldProps={{
+                size:'small',
                 showSearch: true,
                 onChange: (val) => {
                   set_tableDataFilterParams({
                     ...tableDataFilterParams,
+                    current:1,
                     departmentId: val,
                   });
                 },
@@ -306,6 +309,7 @@ const UserManage: FC<PageProps> = ({ userManageModel: state, dispatch }) => {
                 if (e.target.value.length == 0) {
                   set_tableDataFilterParams({
                     ...tableDataFilterParams,
+                    current:1,
                     name: '',
                   });
                 }

+ 76 - 34
src/pages/platform/setting/userManage/modal.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-12 17:11:11
- * @LastEditTime: 2024-07-18 10:39:51
+ * @LastEditTime: 2024-11-26 17:59:43
  * @LastEditors: code4eat awesomedema@gmail.com
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/userManage/modal.tsx
@@ -20,6 +20,7 @@ import { LoadingOutlined, PlusOutlined, UploadOutlined } from '@ant-design/icons
 
 import './style.less';
 import { getDepartmentData } from '../departmentMana/service';
+import { getSysParamsByCode } from '@/service';
 
 export enum TableActType {
   NOACT,
@@ -38,6 +39,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
 
   const [avatarUrl, setAvatarUrl] = useState<string>('');
   const [loadAvatar, setLoadAvatar] = useState(false);
+  const [ifCheckPhoneNumber, set_ifCheckPhoneNumber] = useState(false);
 
   //字典
   const [dirData, set_dirData] = useState<UserRelaSeletDataType[]>([]);
@@ -52,9 +54,9 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
       if (info.file.status !== 'uploading') {
 
         const form = new FormData();
-        form.append('file',info.file.originFileObj);
+        form.append('file', info.file.originFileObj);
         const resp = await uploadAvatar(form);
-        if(resp){
+        if (resp) {
           setAvatarUrl(resp);
         }
         // const reader = new FileReader();
@@ -90,7 +92,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
       dispatch &&
         dispatch({
           type: 'userManageModel/postAddUserData',
-          payload: {...data,avatarUrl:avatarUrl},
+          payload: { ...data, avatarUrl: avatarUrl },
         });
     }
 
@@ -98,7 +100,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
       dispatch &&
         dispatch({
           type: 'userManageModel/postEditUserData',
-          payload: {...data,avatarUrl:avatarUrl},
+          payload: { ...data, avatarUrl: avatarUrl },
         });
     }
 
@@ -112,6 +114,16 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
     }
   };
 
+  const getSystemParams = async () => {
+    const resp = await getSysParamsByCode('1547394914533380096', '1861339521505955840');
+    if (resp) {
+      const needItem = resp.filter((a: any) => a.code == '1861339521505955840');
+      if (needItem.length > 0) {
+        set_ifCheckPhoneNumber(needItem[0].value == '0' ? false : true);
+      }
+    }
+  }
+
   const setSelectorData = (key: string) => {
     let result = dirData.filter((t: any) => t.code == key);
 
@@ -145,11 +157,12 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
     </div>
   );
 
-  useEffect(()=>{
-    setAvatarUrl(currentEditUser?currentEditUser.avatarUrl:'');
-  },[currentEditUser]);
+  useEffect(() => {
+    setAvatarUrl(currentEditUser ? currentEditUser.avatarUrl : '');
+  }, [currentEditUser]);
   useEffect(() => {
     getDirecData();
+    getSystemParams();
   }, []);
 
   return (
@@ -163,19 +176,19 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
         tableAct == TableActType.EDIT
           ? { ...currentEditUser, departmentId: { label: currentEditUser?.departmentName, value: currentEditUser?.departmentId } }
           : {
-              //设置当新增时的默认值
-              major: setSelectorData('PROFESSIONAL_TYPE').defaultvalue,
-              jobTitle: setSelectorData('POSITION_TYPE').defaultvalue,
-              doctorLevel: setSelectorData('PHYSICIAN_TYPE').defaultvalue,
-              practiceSubject: setSelectorData('PROCESSIONAL_SUBJECTS_TYPE').defaultvalue,
-              title: setSelectorData('TITLE_TYPE').defaultvalue,
-              practiceCate: setSelectorData('JOB_TYPE').defaultvalue,
-              practiceStatus: setSelectorData('PROFESSIONAL_STATUS_TYPE').defaultvalue,
-              position: setSelectorData('POSITION').defaultvalue,
-              departmentId: setSelectorData('PRACTICE_DEPARTMENT_TYPE').defaultvalue,
-              userCate: setSelectorData('PERSONNEL_CATEGORY').defaultvalue,
-              degree: setSelectorData('EDUCATION').defaultvalue,
-            }
+            //设置当新增时的默认值
+            major: setSelectorData('PROFESSIONAL_TYPE').defaultvalue,
+            jobTitle: setSelectorData('POSITION_TYPE').defaultvalue,
+            doctorLevel: setSelectorData('PHYSICIAN_TYPE').defaultvalue,
+            practiceSubject: setSelectorData('PROCESSIONAL_SUBJECTS_TYPE').defaultvalue,
+            title: setSelectorData('TITLE_TYPE').defaultvalue,
+            practiceCate: setSelectorData('JOB_TYPE').defaultvalue,
+            practiceStatus: setSelectorData('PROFESSIONAL_STATUS_TYPE').defaultvalue,
+            position: setSelectorData('POSITION').defaultvalue,
+            departmentId: setSelectorData('PRACTICE_DEPARTMENT_TYPE').defaultvalue,
+            userCate: setSelectorData('PERSONNEL_CATEGORY').defaultvalue,
+            degree: setSelectorData('EDUCATION').defaultvalue,
+          }
       }
       title={tableAct == TableActType.EDIT ? '编辑用户' : '新增用户'}
       // labelCol={{ span: 5 }}
@@ -220,7 +233,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                 <ProFormSelect
                   name="position"
                   label="岗位:"
-                  fieldProps={{ showSearch: true }}
+                  fieldProps={{ showSearch: true, size: 'small' }}
                   options={setSelectorData('POSITION').list}
                   placeholder="请选择"
                   rules={[{ required: true, message: '请选择!' }]}
@@ -238,6 +251,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                 <ProFormSelect
                   name="gender"
                   label="性别:"
+                  fieldProps={{ size: 'small' }}
                   options={[
                     { label: '男', value: 1 },
                     { label: '女', value: 2 },
@@ -251,7 +265,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                   label="所属院区:"
                   width="md"
                   name="hospId"
-                  fieldProps={{ showSearch: true }}
+                  fieldProps={{ showSearch: true, size: 'small' }}
                   request={async () => {
                     const hospList = await getShareHospList();
                     if (hospList) {
@@ -282,6 +296,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                     return [];
                   }}
                   fieldProps={{
+                    size: 'small',
                     labelInValue: true,
                     showSearch: true,
                   }}
@@ -289,7 +304,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                 />
               </div>
               <div className="formItem">
-                <ProFormSelect name="userCate" label="人员类别:" fieldProps={{ showSearch: true }} options={setSelectorData('PERSONNEL_CATEGORY').list} placeholder="请选择" />
+                <ProFormSelect name="userCate" label="人员类别:" fieldProps={{ showSearch: true, size: 'small' }} options={setSelectorData('PERSONNEL_CATEGORY').list} placeholder="请选择" />
               </div>
 
               <div className="formItem">
@@ -299,7 +314,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                 <ProFormSelect
                   name="title"
                   label="职称:"
-                  fieldProps={{ showSearch: true }}
+                  fieldProps={{ showSearch: true, size: 'small' }}
                   options={setSelectorData('TITLE_TYPE').list}
                   placeholder="请选择"
                   rules={[{ required: true, message: '请选择职称!' }]}
@@ -309,7 +324,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                 <ProFormSelect
                   name="jobTitle"
                   label="职务:"
-                  fieldProps={{ showSearch: true }}
+                  fieldProps={{ showSearch: true, size: 'small' }}
                   options={setSelectorData('POSITION_TYPE').list}
                   placeholder="请选择"
                   rules={[{ required: true, message: '请选择职务!' }]}
@@ -318,7 +333,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
               <ProFormDependency name={['isOnService']}>
                 {({ isOnService }) => (
                   <div className="formItem">
-                    <ProFormDateTimePicker disabled={isOnService == 0} label="离职日期:" name="outTime" placeholder={'请选择离职时间'} />
+                    <ProFormDateTimePicker disabled={isOnService == 1} label="离职日期:" name="outTime" placeholder={'请选择离职时间'} />
                   </div>
                 )}
               </ProFormDependency>
@@ -331,7 +346,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                 <ProFormSelect
                   name="degree"
                   label="学历:"
-                  fieldProps={{ showSearch: true }}
+                  fieldProps={{ showSearch: true, size: 'small' }}
                   options={setSelectorData('EDUCATION').list}
                   placeholder="请选择"
                   rules={[{ required: true, message: '请选择学历!' }]}
@@ -342,7 +357,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                 <ProFormSelect
                   name="major"
                   label="所学专业:"
-                  fieldProps={{ showSearch: true }}
+                  fieldProps={{ showSearch: true, size: 'small' }}
                   options={setSelectorData('PROFESSIONAL_TYPE').list}
                   placeholder="请选择"
                   rules={[{ required: true, message: '请选择专业!' }]}
@@ -354,14 +369,41 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
               </div>
 
               <div className="formItem">
-                <ProFormText name="phoneNumber" label="手机号:" placeholder="请输入" />
+                <ProFormText
+                  name="phoneNumber"
+                  label="手机号:"
+                  placeholder="请输入"
+                  rules={ifCheckPhoneNumber?[
+                    {
+                      required:true,
+                      message: <span style={{fontSize:12,paddingLeft:50}}>请输入手机号</span>,
+                    },
+                    {
+                      pattern: /^1[3-9]\d{9}$/,
+                      message:<span style={{fontSize:12,paddingLeft:50}}>手机号格式不正确</span>,
+                    },
+                    // ({ getFieldValue }) => ({
+                    //   validator(_, value) {
+                    //     if (!value || value.length === 11) {
+                    //       return Promise.resolve();
+                    //     }
+                    //     return Promise.reject(new Error("手机号必须是11位"));
+                    //   },
+                    // }),
+                  ]:[
+                    {
+                      required:false,
+                      message: "请输入手机号",
+                    },
+                  ]}
+                />
               </div>
 
               <ProFormDependency name={['userCate']}>
                 {({ userCate }) =>
                   (userCate == 6 || userCate == 5) && (
                     <div className="formItem" style={{ position: 'relative', left: -175 }}>
-                      <ProFormSelect name="practiceCate" label="执业类别:" fieldProps={{ showSearch: true }} options={setSelectorData('JOB_TYPE').list} placeholder="请选择" />
+                      <ProFormSelect name="practiceCate" label="执业类别:" fieldProps={{ showSearch: true, size: 'small' }} options={setSelectorData('JOB_TYPE').list} placeholder="请选择" />
                     </div>
                   )
                 }
@@ -374,7 +416,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                       <ProFormSelect
                         name="practiceSubject"
                         label="执业科目:"
-                        fieldProps={{ showSearch: true }}
+                        fieldProps={{ showSearch: true, size: 'small' }}
                         options={setSelectorData('PROCESSIONAL_SUBJECTS_TYPE').list}
                         placeholder="请选择"
                         rules={[{ required: true, message: '请选择!' }]}
@@ -401,7 +443,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                       <ProFormSelect
                         name="practiceStatus"
                         label="执业状态:"
-                        fieldProps={{ showSearch: true }}
+                        fieldProps={{ showSearch: true, size: 'small' }}
                         options={setSelectorData('PROFESSIONAL_STATUS_TYPE').list}
                         placeholder="请选择"
                         rules={[{ required: true, message: '请选择!' }]}
@@ -428,7 +470,7 @@ const ActModal: React.FC<ActModalProps> = ({ dispatch, isShowModal, tableAct, cu
                       <ProFormSelect
                         name="doctorLevel"
                         label="医师:"
-                        fieldProps={{ showSearch: true }}
+                        fieldProps={{ showSearch: true, size: 'small' }}
                         options={setSelectorData('PHYSICIAN_TYPE').list}
                         placeholder="请选择"
                         rules={[{ required: true, message: '请选择!' }]}

+ 2 - 2
src/service/index.ts

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-06-27 15:43:25
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-12-26 20:02:18
+ * @LastEditTime: 2024-11-26 17:30:33
  * @FilePath: /KC-MiddlePlatform/src/service/index.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -65,7 +65,7 @@ export const getAllParams = async () => {
 //根据系统id和参数code获取参数
 
 export const getSysParamsByCode = async (systemId: string, parameterCode?: string) => {
-  return request('/centerSys/parameter/getParameters', {
+  return request('/centerSys/parameter/getParameters?pageSize=500&current=1', {
     method: 'GET',
     params: { systemId, parameterCode },
   });

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.