fmode-ng 0.0.113 → 0.0.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/LICENSE.md +8 -0
  2. package/README.md +37 -37
  3. package/esm2022/fmode-ng.mjs +10 -5
  4. package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
  5. package/esm2022/lib/aigc/agent/index.mjs +10 -3
  6. package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
  7. package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
  8. package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
  9. package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
  10. package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
  11. package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
  12. package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
  13. package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
  14. package/esm2022/lib/aigc/avatar/index.mjs +10 -8
  15. package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
  16. package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
  17. package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
  18. package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
  19. package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
  20. package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
  21. package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
  22. package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
  23. package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
  24. package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
  25. package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
  26. package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
  27. package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
  28. package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
  29. package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
  30. package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
  31. package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
  32. package/esm2022/lib/aigc/chat/index.mjs +10 -8
  33. package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
  34. package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
  35. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
  36. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
  37. package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
  38. package/esm2022/lib/aigc/index.mjs +10 -14
  39. package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
  40. package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
  41. package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
  42. package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
  43. package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
  44. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
  45. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
  46. package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
  47. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
  48. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
  49. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
  50. package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
  51. package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
  52. package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
  53. package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
  54. package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
  55. package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
  56. package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
  57. package/esm2022/lib/aigc/story/index.mjs +10 -6
  58. package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
  59. package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
  60. package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
  61. package/esm2022/lib/aigc/story/story.service.mjs +10 -35
  62. package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
  63. package/esm2022/lib/aigc/voice/index.mjs +10 -7
  64. package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
  65. package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
  66. package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
  67. package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
  68. package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
  69. package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
  70. package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
  71. package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
  72. package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
  73. package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
  74. package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
  75. package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
  76. package/esm2022/lib/code/index.mjs +10 -2
  77. package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
  78. package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
  79. package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
  80. package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
  81. package/esm2022/lib/core/agent/chat/index.mjs +10 -4
  82. package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
  83. package/esm2022/lib/core/agent/index.mjs +10 -6
  84. package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
  85. package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
  86. package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
  87. package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
  88. package/esm2022/lib/core/agent/story/index.mjs +10 -2
  89. package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
  90. package/esm2022/lib/core/agent/task/index.mjs +10 -2
  91. package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
  92. package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
  93. package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
  94. package/esm2022/lib/core/index.mjs +10 -4
  95. package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
  96. package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
  97. package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
  98. package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
  99. package/esm2022/lib/core/parse/fmode.cloud.mjs +10 -0
  100. package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
  101. package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
  102. package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
  103. package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
  104. package/esm2022/lib/core/parse/index.mjs +10 -5
  105. package/esm2022/lib/core/parse/types.mjs +10 -2
  106. package/esm2022/lib/core/voice/index.mjs +10 -3
  107. package/esm2022/lib/core/voice/tts/index.mjs +10 -2
  108. package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
  109. package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
  110. package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
  111. package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
  112. package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
  113. package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
  114. package/esm2022/lib/icon/filetype/index.mjs +10 -12
  115. package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
  116. package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
  117. package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
  118. package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
  119. package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
  120. package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
  121. package/esm2022/lib/icon/index.mjs +10 -2
  122. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
  123. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
  124. package/esm2022/lib/map/index.mjs +10 -4
  125. package/esm2022/lib/map/map.module.mjs +10 -61
  126. package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
  127. package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
  128. package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
  129. package/esm2022/lib/nova-cloud/index.mjs +10 -3
  130. package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
  131. package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
  132. package/esm2022/lib/payment/index.mjs +10 -2
  133. package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
  134. package/esm2022/lib/payment/payment.service.mjs +10 -202
  135. package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
  136. package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
  137. package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
  138. package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
  139. package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
  140. package/esm2022/lib/person/index.mjs +10 -5
  141. package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
  142. package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
  143. package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
  144. package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
  145. package/esm2022/lib/person/person.service.mjs +8 -193
  146. package/esm2022/lib/platform/cross.service.mjs +10 -62
  147. package/esm2022/lib/platform/index.mjs +10 -2
  148. package/esm2022/lib/social/index.mjs +10 -2
  149. package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
  150. package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
  151. package/esm2022/lib/storage/index.mjs +10 -5
  152. package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
  153. package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
  154. package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
  155. package/esm2022/lib/storage/service-upload/index.mjs +10 -2
  156. package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
  157. package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
  158. package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
  159. package/esm2022/lib/storage/storage.module.mjs +10 -42
  160. package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
  161. package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
  162. package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
  163. package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
  164. package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
  165. package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
  166. package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
  167. package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
  168. package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
  169. package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
  170. package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
  171. package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
  172. package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
  173. package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
  174. package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
  175. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
  176. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
  177. package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
  178. package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
  179. package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
  180. package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
  181. package/esm2022/lib/text/index.mjs +10 -4
  182. package/esm2022/lib/user/account/account.service.mjs +10 -222
  183. package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
  184. package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
  185. package/esm2022/lib/user/index.mjs +10 -17
  186. package/esm2022/lib/user/login/auth.guard.mjs +10 -28
  187. package/esm2022/lib/user/login/auth.service.mjs +8 -433
  188. package/esm2022/lib/user/login/login.component.mjs +10 -916
  189. package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
  190. package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
  191. package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
  192. package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
  193. package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
  194. package/esm2022/lib/user/profile/profile.module.mjs +10 -54
  195. package/esm2022/lib/user/staff/index.mjs +10 -4
  196. package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
  197. package/esm2022/lib/user/staff/staff.module.mjs +10 -18
  198. package/esm2022/lib/user/staff/staff.service.mjs +10 -85
  199. package/esm2022/lib/user/user-name.pipe.mjs +10 -29
  200. package/esm2022/lib/user/user.module.mjs +10 -102
  201. package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
  202. package/esm2022/lib/video/index.mjs +10 -2
  203. package/esm2022/public-api.mjs +10 -21
  204. package/fesm2022/fmode-ng.mjs +7 -19788
  205. package/fesm2022/fmode-ng.mjs.map +1 -1
  206. package/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.d.ts +2 -2
  207. package/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.d.ts +2 -2
  208. package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +2 -2
  209. package/lib/aigc/chat/chat-list/chat-list.component.d.ts +3 -2
  210. package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +3 -3
  211. package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +2 -2
  212. package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +3 -3
  213. package/lib/aigc/service-fmai/service-imagine/imagine-func.d.ts +3 -3
  214. package/lib/aigc/service-fmai/service-imagine/imagine-work.d.ts +4 -4
  215. package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +6 -6
  216. package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +2 -2
  217. package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +2 -1
  218. package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +6 -6
  219. package/lib/aigc/story/fm-story-list/story-preview.d.ts +4 -4
  220. package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +3 -3
  221. package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +2 -2
  222. package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +3 -2
  223. package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +3 -2
  224. package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +6 -6
  225. package/lib/aigc/story/story.service.d.ts +3 -2
  226. package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
  227. package/lib/core/agent/chat/fmode-chat.d.ts +11 -11
  228. package/lib/core/agent/story/agent.story.d.ts +8 -8
  229. package/lib/core/parse/datatype/geopoint.d.ts +5 -1
  230. package/lib/core/parse/fmode.cloud.d.ts +32 -0
  231. package/lib/core/parse/fmode.object.d.ts +2 -2
  232. package/lib/core/parse/fmode.parse.d.ts +15 -9
  233. package/lib/core/parse/fmode.query.d.ts +41 -2
  234. package/lib/core/parse/fmode.user.d.ts +1 -0
  235. package/lib/core/parse/index.d.ts +1 -0
  236. package/lib/core/parse/types.d.ts +2 -0
  237. package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +5 -5
  238. package/lib/payment/payment/payment.component.d.ts +3 -3
  239. package/lib/payment/payment.service.d.ts +4 -4
  240. package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +2 -1
  241. package/lib/person/comp-person-item/comp-person-item.component.d.ts +2 -1
  242. package/lib/person/comp-person-story/comp-person-story.component.d.ts +13 -13
  243. package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
  244. package/lib/person/modal-person-select/modal-person-select.component.d.ts +5 -5
  245. package/lib/person/modal-user-verify/user-verify.component.d.ts +5 -5
  246. package/lib/person/person-detail/person-detail.component.d.ts +4 -4
  247. package/lib/person/person.service.d.ts +7 -7
  248. package/lib/storage/service-hwobs/hwobs.service.d.ts +4 -5
  249. package/lib/storage/service-upload/nova-upload.service.d.ts +5 -5
  250. package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +2 -1
  251. package/lib/text/fm-article-editor/article.service.d.ts +12 -12
  252. package/lib/text/fm-article-editor/draft.service.d.ts +5 -5
  253. package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +3 -2
  254. package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +16 -17
  255. package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +3 -3
  256. package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +11 -10
  257. package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +2 -2
  258. package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +3 -3
  259. package/lib/text/fm-article-editor/task-article-generation.d.ts +5 -4
  260. package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +3 -3
  261. package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +3 -3
  262. package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +3 -3
  263. package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +2 -1
  264. package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +3 -3
  265. package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +3 -3
  266. package/lib/user/account/account.service.d.ts +2 -2
  267. package/lib/user/comp-user-avatar/comp-user-avatar.component.d.ts +2 -2
  268. package/lib/user/login/auth.service.d.ts +5 -5
  269. package/lib/user/login/login.component.d.ts +3 -3
  270. package/lib/user/profile/auth-profile.service.d.ts +8 -8
  271. package/lib/user/profile/profile-bind/profile-bind.component.d.ts +7 -7
  272. package/lib/user/profile/profile-bind/profile-confirm-modal.component.d.ts +2 -2
  273. package/lib/user/staff/staff.service.d.ts +3 -3
  274. package/lib/user/user-name.pipe.d.ts +2 -2
  275. package/package.json +12 -18
@@ -1,27 +1,10 @@
1
- import { Injectable } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { AuthProfileService } from './auth-profile.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./auth-profile.service";
6
- import * as i2 from "@angular/router";
7
- export class AuthProfileGuard {
8
- constructor(authProfileServ, router) {
9
- this.authProfileServ = authProfileServ;
10
- this.router = router;
11
- }
12
- canActivate(route, state) {
13
- // 当前路由url
14
- let url = state.url;
15
- // 调用checkLogin检查是否登录
16
- return this.authProfileServ.checkProfile(url);
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthProfileGuard, deps: [{ token: i1.AuthProfileService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
19
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthProfileGuard, providedIn: 'root' }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthProfileGuard, decorators: [{
22
- type: Injectable,
23
- args: [{
24
- providedIn: 'root'
25
- }]
26
- }], ctorParameters: () => [{ type: i1.AuthProfileService }, { type: i2.Router }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wcm9maWxlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi91c2VyL3Byb2ZpbGUvYXV0aC1wcm9maWxlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBOzs7O0FBTTNELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBbUIsZUFBbUMsRUFBUyxNQUFjO1FBQTFELG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBQ2pGLFdBQVcsQ0FDVCxLQUE2QixFQUM3QixLQUEwQjtRQUN4QixVQUFVO1FBQ1YsSUFBSSxHQUFHLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM1QixxQkFBcUI7UUFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDOytHQVRVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEF1dGhQcm9maWxlU2VydmljZSB9IGZyb20gJy4vYXV0aC1wcm9maWxlLnNlcnZpY2UnXHJcbmltcG9ydCBQYXJzZSBmcm9tIFwicGFyc2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhQcm9maWxlR3VhcmQgIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYXV0aFByb2ZpbGVTZXJ2OiBBdXRoUHJvZmlsZVNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlcikge31cclxuICBjYW5BY3RpdmF0ZShcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgICAvLyDlvZPliY3ot6/nlLF1cmxcclxuICAgICAgbGV0IHVybDogc3RyaW5nID0gc3RhdGUudXJsO1xyXG4gICAgICAvLyDosIPnlKhjaGVja0xvZ2lu5qOA5p+l5piv5ZCm55m75b2VXHJcbiAgICAgIHJldHVybiB0aGlzLmF1dGhQcm9maWxlU2Vydi5jaGVja1Byb2ZpbGUodXJsKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/user/profile/auth-profile.guard.mjs
7
+ */
8
+ import{Injectable}from"@angular/core";import{Router}from"@angular/router";import{AuthProfileService}from"./auth-profile.service";import{FmodeParse}from"@fmode/parse";import*as i0 from"@angular/core";import*as i1 from"./auth-profile.service";import*as i2 from"@angular/router";const Parse=FmodeParse.with("nova");export class AuthProfileGuard{constructor(r,e){this.authProfileServ=r,this.router=e}canActivate(r,e){let t=e.url;return this.authProfileServ.checkProfile(t)}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:AuthProfileGuard,deps:[{token:i1.AuthProfileService},{token:i2.Router}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:AuthProfileGuard,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:AuthProfileGuard,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.AuthProfileService},{type:i2.Router}]});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi91c2VyL3Byb2ZpbGUvYXV0aC1wcm9maWxlLmd1YXJkLm1qcw==`
10
+
@@ -1,122 +1,10 @@
1
- import { Injectable } from '@angular/core';
2
- import Parse from "parse";
3
- import { Router } from '@angular/router';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- export class AuthProfileService {
7
- get profileId() {
8
- if (this._profileId)
9
- return this._profileId;
10
- return localStorage.getItem("Parse/ProfileId");
11
- }
12
- set profileId(v) {
13
- this._profileId = v;
14
- localStorage.setItem("Parse/ProfileId", v);
15
- }
16
- get profilePointer() {
17
- return { __type: "Pointer", className: "Profile", objectId: this.companyId };
18
- }
19
- get companyId() {
20
- if (this._companyId)
21
- return this._companyId;
22
- return localStorage.getItem("Parse/CompanyId");
23
- }
24
- set companyId(v) {
25
- this._companyId = v;
26
- localStorage.setItem("Parse/CompanyId", v);
27
- }
28
- get companyPointer() {
29
- return { __type: "Pointer", className: "company", objectId: this.companyId };
30
- }
31
- get user() {
32
- return this._user || Parse.User.current();
33
- }
34
- set user(v) {
35
- this._user = v;
36
- }
37
- constructor(router) {
38
- this.router = router;
39
- this.user = Parse.User.current();
40
- }
41
- async getProfile() {
42
- if (this.profile?.id) {
43
- return this.profile;
44
- }
45
- if (this.profileId) {
46
- let query = new Parse.Query("Profile");
47
- query.include("company");
48
- this.profile = await query.get(this.profileId);
49
- return this.profile;
50
- }
51
- else {
52
- return this.profile;
53
- }
54
- }
55
- async bindProfile(profile) {
56
- this.profile = profile;
57
- this.profileId = profile.id;
58
- if (profile?.get("company")?.id) {
59
- this.companyId = profile?.get("company")?.id;
60
- }
61
- console.log(profile, this.user);
62
- this.profile.set("user", this.user?.toPointer());
63
- await this.profile.save();
64
- console.log(localStorage.getItem("homePath"));
65
- console.log(profile?.get("company")?.get("rootPage"));
66
- let url = localStorage.getItem("homePath") || profile?.get("company")?.get("rootPage") || this.redirectUrl || "/";
67
- url = decodeURIComponent(url);
68
- this.router.navigate([url]);
69
- }
70
- async checkProfile(url) {
71
- // 如果已登录,直接跳转当前路由 跳出该函数
72
- let profile = this.profile;
73
- if (profile?.id) {
74
- this.setCurrentProfileLocalStorage(profile);
75
- return true;
76
- }
77
- // 若已登录,但未加载profile则进行加载
78
- if (this.profileId) {
79
- let query = new Parse.Query("Profile");
80
- query.include("company");
81
- profile = await query.get(this.profileId);
82
- if (profile?.id) {
83
- this.profile = profile;
84
- this.setCurrentProfileLocalStorage(profile);
85
- }
86
- return true;
87
- }
88
- // 否则重定向到login页面
89
- // console.log(this.authService.isLoggedIn)
90
- this.redirectUrl = url;
91
- this.router.navigate(['/profile/bind']);
92
- return false;
93
- }
94
- // 选择员工身份后,更新帐套信息至本地存储
95
- async setCurrentProfileLocalStorage(profile) {
96
- // 查询部门权限
97
- let query = Parse.Query.fromJSON("Department", {
98
- where: {
99
- $or: [
100
- { "leader": profile.toPointer() },
101
- // {"managers":{$eq:profile?.id}},
102
- ]
103
- }
104
- });
105
- let departList = await query.find();
106
- departList.forEach(depart => {
107
- if (depart?.id) {
108
- this.isManager = true;
109
- this.isLeader = true;
110
- }
111
- });
112
- }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthProfileService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
114
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthProfileService, providedIn: 'root' }); }
115
- }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthProfileService, decorators: [{
117
- type: Injectable,
118
- args: [{
119
- providedIn: 'root',
120
- }]
121
- }], ctorParameters: () => [{ type: i1.Router }] });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wcm9maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL3VzZXIvcHJvZmlsZS9hdXRoLXByb2ZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUl6QyxNQUFNLE9BQU8sa0JBQWtCO0lBTTdCLElBQUksU0FBUztRQUNYLElBQUcsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUE7UUFDMUMsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLENBQVE7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsSUFBRyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtRQUMxQyxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBUTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixZQUFZLENBQUMsT0FB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RyxNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQSxFQUFFO1lBQ3pCLElBQUcsTUFBTSxFQUFFLEVBQUUsRUFBQyxDQUFDO2dCQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtZQUN0QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFSCxDQUFDOytHQWxIVyxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgUGFyc2UgZnJvbSBcInBhcnNlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoUHJvZmlsZVNlcnZpY2Uge1xyXG4gIHByb2ZpbGU6UGFyc2UuT2JqZWN0XHJcbiAgX3Byb2ZpbGVJZDpzdHJpbmdcclxuICBfY29tcGFueUlkOnN0cmluZ1xyXG4gIGlzTGVhZGVyOmJvb2xlYW47XHJcbiAgaXNNYW5hZ2VyOmJvb2xlYW47XHJcbiAgZ2V0IHByb2ZpbGVJZCgpe1xyXG4gICAgaWYodGhpcy5fcHJvZmlsZUlkKSByZXR1cm4gdGhpcy5fcHJvZmlsZUlkXHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJQYXJzZS9Qcm9maWxlSWRcIilcclxuICB9XHJcbiAgc2V0IHByb2ZpbGVJZCh2OnN0cmluZyl7XHJcbiAgICB0aGlzLl9wcm9maWxlSWQgPSB2O1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJQYXJzZS9Qcm9maWxlSWRcIix2KTtcclxuICB9XHJcbiAgZ2V0IHByb2ZpbGVQb2ludGVyKCl7XHJcbiAgICByZXR1cm4ge19fdHlwZTpcIlBvaW50ZXJcIixjbGFzc05hbWU6XCJQcm9maWxlXCIsb2JqZWN0SWQ6dGhpcy5jb21wYW55SWR9XHJcbiAgfVxyXG4gIGdldCBjb21wYW55SWQoKXtcclxuICAgIGlmKHRoaXMuX2NvbXBhbnlJZCkgcmV0dXJuIHRoaXMuX2NvbXBhbnlJZFxyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiUGFyc2UvQ29tcGFueUlkXCIpXHJcbiAgfVxyXG4gIHNldCBjb21wYW55SWQodjpzdHJpbmcpe1xyXG4gICAgdGhpcy5fY29tcGFueUlkID0gdjtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiUGFyc2UvQ29tcGFueUlkXCIsdik7XHJcbiAgfVxyXG4gIGdldCBjb21wYW55UG9pbnRlcigpe1xyXG4gICAgcmV0dXJuIHtfX3R5cGU6XCJQb2ludGVyXCIsY2xhc3NOYW1lOlwiY29tcGFueVwiLG9iamVjdElkOnRoaXMuY29tcGFueUlkfVxyXG4gIH1cclxuICAvLyBzdG9yZSB0aGUgVVJMIHNvIHdlIGNhbiByZWRpcmVjdCBhZnRlciBsb2dnaW5nIGluXHJcbiAgcmVkaXJlY3RVcmw6IHN0cmluZztcclxuICBfdXNlcjpQYXJzZS5Vc2VyO1xyXG4gIGdldCB1c2VyKCl7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlciB8fCBQYXJzZS5Vc2VyLmN1cnJlbnQoKTtcclxuICB9XHJcbiAgc2V0IHVzZXIodil7XHJcbiAgICB0aGlzLl91c2VyID0gdlxyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIHRoaXMudXNlciA9IFBhcnNlLlVzZXIuY3VycmVudCgpO1xyXG4gIH1cclxuICBhc3luYyBnZXRQcm9maWxlKCl7XHJcbiAgICBpZih0aGlzLnByb2ZpbGU/LmlkKXtcclxuICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZVxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5wcm9maWxlSWQpe1xyXG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJQcm9maWxlXCIpO1xyXG4gICAgICBxdWVyeS5pbmNsdWRlKFwiY29tcGFueVwiKVxyXG4gICAgICB0aGlzLnByb2ZpbGUgPSBhd2FpdCBxdWVyeS5nZXQodGhpcy5wcm9maWxlSWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9maWxlIFxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb2ZpbGUgXHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGJpbmRQcm9maWxlKHByb2ZpbGU6UGFyc2UuT2JqZWN0KXtcclxuICAgIHRoaXMucHJvZmlsZSA9IHByb2ZpbGU7XHJcbiAgICB0aGlzLnByb2ZpbGVJZCA9IHByb2ZpbGUuaWRcclxuICAgIGlmKHByb2ZpbGU/LmdldChcImNvbXBhbnlcIik/LmlkKXtcclxuICAgICAgdGhpcy5jb21wYW55SWQgPSBwcm9maWxlPy5nZXQoXCJjb21wYW55XCIpPy5pZFxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cocHJvZmlsZSx0aGlzLnVzZXIpO1xyXG4gICAgdGhpcy5wcm9maWxlLnNldChcInVzZXJcIix0aGlzLnVzZXI/LnRvUG9pbnRlcigpKVxyXG4gICAgYXdhaXQgdGhpcy5wcm9maWxlLnNhdmUoKTtcclxuICAgIGNvbnNvbGUubG9nKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaG9tZVBhdGhcIikpXHJcbiAgICBjb25zb2xlLmxvZyhwcm9maWxlPy5nZXQoXCJjb21wYW55XCIpPy5nZXQoXCJyb290UGFnZVwiKSlcclxuICAgIGxldCB1cmwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhvbWVQYXRoXCIpfHwgcHJvZmlsZT8uZ2V0KFwiY29tcGFueVwiKT8uZ2V0KFwicm9vdFBhZ2VcIikgfHx0aGlzLnJlZGlyZWN0VXJsIHx8XCIvXCJcclxuICAgIHVybCA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmwpXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSk7XHJcbiAgfVxyXG4gIGFzeW5jIGNoZWNrUHJvZmlsZSh1cmw6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8g5aaC5p6c5bey55m75b2VLOebtOaOpei3s+i9rOW9k+WJjei3r+eUsSDot7Plh7ror6Xlh73mlbBcclxuICAgIGxldCBwcm9maWxlID0gdGhpcy5wcm9maWxlXHJcbiAgICBpZiAocHJvZmlsZT8uaWQpIHsgXHJcbiAgICAgIHRoaXMuc2V0Q3VycmVudFByb2ZpbGVMb2NhbFN0b3JhZ2UocHJvZmlsZSlcclxuICAgICAgcmV0dXJuIHRydWU7IFxyXG4gICAgfVxyXG5cclxuICAgIC8vIOiLpeW3sueZu+W9le+8jOS9huacquWKoOi9vXByb2ZpbGXliJnov5vooYzliqDovb1cclxuICAgIGlmKHRoaXMucHJvZmlsZUlkKXtcclxuICAgICAgbGV0IHF1ZXJ5ID0gbmV3IFBhcnNlLlF1ZXJ5KFwiUHJvZmlsZVwiKTtcclxuICAgICAgcXVlcnkuaW5jbHVkZShcImNvbXBhbnlcIilcclxuICAgICAgcHJvZmlsZSA9IGF3YWl0IHF1ZXJ5LmdldCh0aGlzLnByb2ZpbGVJZCk7XHJcbiAgICAgIGlmKHByb2ZpbGU/LmlkKXtcclxuICAgICAgICB0aGlzLnByb2ZpbGUgPSBwcm9maWxlXHJcbiAgICAgIHRoaXMuc2V0Q3VycmVudFByb2ZpbGVMb2NhbFN0b3JhZ2UocHJvZmlsZSlcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOWQpuWImemHjeWumuWQkeWIsGxvZ2lu6aG16Z2iXHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmF1dGhTZXJ2aWNlLmlzTG9nZ2VkSW4pXHJcbiAgICB0aGlzLnJlZGlyZWN0VXJsID0gdXJsO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZS9iaW5kJ10pO1xyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG4gICAvLyDpgInmi6nlkZjlt6Xouqvku73lkI7vvIzmm7TmlrDluJDlpZfkv6Hmga/oh7PmnKzlnLDlrZjlgqhcclxuIGFzeW5jIHNldEN1cnJlbnRQcm9maWxlTG9jYWxTdG9yYWdlKHByb2ZpbGU6UGFyc2UuT2JqZWN0KXtcclxuXHJcbiAgLy8g5p+l6K+i6YOo6Zeo5p2D6ZmQXHJcbiAgbGV0IHF1ZXJ5ID0gUGFyc2UuUXVlcnkuZnJvbUpTT04oXCJEZXBhcnRtZW50XCIse1xyXG4gICAgd2hlcmU6e1xyXG4gICAgICAkb3I6W1xyXG4gICAgICAgIHtcImxlYWRlclwiOnByb2ZpbGUudG9Qb2ludGVyKCl9LFxyXG4gICAgICAgIC8vIHtcIm1hbmFnZXJzXCI6eyRlcTpwcm9maWxlPy5pZH19LFxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgbGV0IGRlcGFydExpc3QgPSBhd2FpdCBxdWVyeS5maW5kKCk7XHJcbiAgZGVwYXJ0TGlzdC5mb3JFYWNoKGRlcGFydD0+e1xyXG4gICAgaWYoZGVwYXJ0Py5pZCl7XHJcbiAgICAgIHRoaXMuaXNNYW5hZ2VyID0gdHJ1ZVxyXG4gICAgICB0aGlzLmlzTGVhZGVyID0gdHJ1ZVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gfVxyXG59Il19
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/user/profile/auth-profile.service.mjs
7
+ */
8
+ import{Injectable}from"@angular/core";import{FmodeParse}from"@fmode/parse";import{Router}from"@angular/router";import*as i0 from"@angular/core";import*as i1 from"@angular/router";const Parse=FmodeParse.with("nova");export class AuthProfileService{get profileId(){return this._profileId?this._profileId:localStorage.getItem("Parse/ProfileId")}set profileId(e){this._profileId=e,localStorage.setItem("Parse/ProfileId",e)}get profilePointer(){return{__type:"Pointer",className:"Profile",objectId:this.companyId}}get companyId(){return this._companyId?this._companyId:localStorage.getItem("Parse/CompanyId")}set companyId(e){this._companyId=e,localStorage.setItem("Parse/CompanyId",e)}get companyPointer(){return{__type:"Pointer",className:"company",objectId:this.companyId}}get user(){return this._user||Parse.User.current()}set user(e){this._user=e}constructor(e){this.router=e,this.user=Parse.User.current()}async getProfile(){if(this.profile?.id)return this.profile;if(this.profileId){let e=new Parse.Query("Profile");return e.include("company"),this.profile=await e.get(this.profileId),this.profile}return this.profile}async bindProfile(e){this.profile=e,this.profileId=e.id,e?.get("company")?.id&&(this.companyId=e?.get("company")?.id),console.log(e,this.user),this.profile.set("user",this.user?.toPointer()),await this.profile.save(),console.log(localStorage.getItem("homePath")),console.log(e?.get("company")?.get("rootPage"));let r=localStorage.getItem("homePath")||e?.get("company")?.get("rootPage")||this.redirectUrl||"/";r=decodeURIComponent(r),this.router.navigate([r])}async checkProfile(e){let r=this.profile;if(r?.id)return this.setCurrentProfileLocalStorage(r),!0;if(this.profileId){let e=new Parse.Query("Profile");return e.include("company"),r=await e.get(this.profileId),r?.id&&(this.profile=r,this.setCurrentProfileLocalStorage(r)),!0}return this.redirectUrl=e,this.router.navigate(["/profile/bind"]),!1}async setCurrentProfileLocalStorage(e){let r=Parse.Query.fromJSON("Department",{where:{$or:[{leader:e.toPointer()}]}});(await r.find()).forEach((e=>{e?.id&&(this.isManager=!0,this.isLeader=!0)}))}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:AuthProfileService,deps:[{token:i1.Router}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:AuthProfileService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:AuthProfileService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.Router}]});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi91c2VyL3Byb2ZpbGUvYXV0aC1wcm9maWxlLnNlcnZpY2UubWpz`
10
+
@@ -1,164 +1,10 @@
1
- import { Component, HostListener } from "@angular/core";
2
- import { AuthProfileService } from "../auth-profile.service";
3
- import Parse from "parse";
4
- import { Router } from "@angular/router";
5
- import { AlertController, ModalController } from "@ionic/angular";
6
- import { ToastController } from "@ionic/angular";
7
- import { CrossService } from "../../../platform/cross.service";
8
- import { ProfileConfirmModalComponent } from "./profile-confirm-modal.component";
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "../auth-profile.service";
11
- import * as i2 from "@angular/router";
12
- import * as i3 from "@ionic/angular";
13
- import * as i4 from "../../../platform/cross.service";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "@angular/forms";
16
- export class ProfileBindComponent {
17
- onResize() {
18
- this.cross.onResizeScreen();
19
- }
20
- constructor(authProfile, router, alertController, toastController, cross, modalController) {
21
- this.authProfile = authProfile;
22
- this.router = router;
23
- this.alertController = alertController;
24
- this.toastController = toastController;
25
- this.cross = cross;
26
- this.modalController = modalController;
27
- this.profileList = [];
28
- this.pdata = {
29
- name: null,
30
- mobile: null,
31
- };
32
- this.now = new Date();
33
- this.isLoading = false;
34
- this.profile = this.authProfile.profile;
35
- this.currentProfile = localStorage.getItem('Parse/ProfileId');
36
- this.user = Parse.User.current();
37
- this.loadProfiles();
38
- }
39
- async loadProfiles() {
40
- this.isLoading = true;
41
- try {
42
- let query = new Parse.Query("Profile");
43
- query.include("company");
44
- query.notEqualTo("isDeleted", true);
45
- if (this.profile?.id) {
46
- query.equalTo("mobile", this.profile.get('mobile'));
47
- query.equalTo("name", this.profile.get('name'));
48
- }
49
- else {
50
- query.equalTo("user", this.user.id);
51
- }
52
- this.profileList = await query.find();
53
- }
54
- catch (error) {
55
- console.error('Error loading profiles:', error);
56
- this.showToast('加载身份信息失败,请重试', 'danger');
57
- }
58
- finally {
59
- this.isLoading = false;
60
- }
61
- }
62
- async bindProfile(p) {
63
- if (!p?.id) {
64
- p = this.profileSearched;
65
- }
66
- if (!p?.id)
67
- return;
68
- try {
69
- await this.authProfile.bindProfile(p);
70
- }
71
- catch (error) {
72
- console.error('Error binding profile:', error);
73
- this.showToast('绑定身份失败,请重试', 'danger');
74
- }
75
- }
76
- async searchProfile() {
77
- this.profileList = [];
78
- if (!this.pdata.name || !this.pdata.mobile) {
79
- this.showToast('请填写完整信息以查询您的身份', 'warning');
80
- return;
81
- }
82
- this.isLoading = true;
83
- try {
84
- let query = new Parse.Query("Profile");
85
- query.include("company");
86
- query.equalTo("name", this.pdata.name);
87
- query.equalTo("mobile", this.pdata.mobile);
88
- this.profileList = await query.find();
89
- if (this.profileList?.length < 1) {
90
- this.showToast('该身份不存在,无法绑定!', 'warning');
91
- }
92
- }
93
- catch (error) {
94
- console.error('Error searching profile:', error);
95
- this.showToast('查询身份失败,请重试', 'danger');
96
- }
97
- finally {
98
- this.isLoading = false;
99
- }
100
- }
101
- async selectProfile(p) {
102
- if (!p?.id)
103
- return;
104
- this.profileSearched = p;
105
- const modal = await this.modalController.create({
106
- component: ProfileConfirmModalComponent,
107
- componentProps: {
108
- profile: p
109
- },
110
- // swipeToClose: true
111
- });
112
- await modal.present();
113
- const { data } = await modal.onWillDismiss();
114
- if (data?.confirmed) {
115
- this.bindProfile(p);
116
- }
117
- }
118
- goProfileManage() {
119
- this.router.navigate([
120
- "/common/manage/Profile",
121
- {
122
- rid: "x6xybaLWIC",
123
- },
124
- ]);
125
- }
126
- async onShowModal() {
127
- const alert = await this.alertController.create({
128
- header: '团队成员管理',
129
- message: '您是企业管理员,可进入添加团队成员身份',
130
- buttons: [
131
- {
132
- text: '取消',
133
- role: 'cancel'
134
- },
135
- {
136
- text: '前往管理',
137
- handler: () => {
138
- this.goProfileManage();
139
- }
140
- }
141
- ]
142
- });
143
- await alert.present();
144
- }
145
- async showToast(message, color = 'success') {
146
- const toast = await this.toastController.create({
147
- message,
148
- duration: 2000,
149
- color,
150
- position: 'top'
151
- });
152
- await toast.present();
153
- }
154
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileBindComponent, deps: [{ token: i1.AuthProfileService }, { token: i2.Router }, { token: i3.AlertController }, { token: i3.ToastController }, { token: i4.CrossService }, { token: i3.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
155
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProfileBindComponent, selector: "fm-profile-bind", host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<ion-content>\r\n <ng-container *ngIf=\"cross?.navMenuType == 'mobile'; else desktopTemplate\">\r\n <div class=\"ion-padding tips-block\">\r\n <img src=\"https://file-cloud.fmode.cn/CCuWCEM24z/20231213/45hm71034653179.png\" alt=\"\" />\r\n <div>\u8BF7\u4F7F\u7528\u7535\u8111\u6D4F\u89C8\u5668\u6253\u5F00</div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #desktopTemplate>\r\n <div class=\"profile-page ion-padding\">\r\n <div class=\"title\">\u4F01\u4E1A\u9879\u76EE\u7BA1\u7406\u7CFB\u7EDF</div>\r\n \r\n <div class=\"date-container\">\r\n <div class=\"date\">{{ now | date : \"yyyy\u5E74MM\u6708dd\u65E5\" }}</div>\r\n <ion-button *ngIf=\"user?.get('type') == 'admin'\" fill=\"clear\" size=\"small\" (click)=\"onShowModal()\">\r\n <ion-icon slot=\"start\" name=\"people\"></ion-icon>\r\n \u4F01\u4E1A\u7BA1\u7406\u5458\r\n </ion-button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"profileList?.length > 0; else noProfileTemplate\">\r\n <h2>\r\n \u6B22\u8FCE\u60A8\uFF1A{{\r\n profile?.get(\"name\") ||\r\n this.profileList[0]?.get(\"name\") ||\r\n user?.get(\"nickname\") ||\r\n user?.get(\"name\") ||\r\n user?.get(\"username\")\r\n }}\uFF0C\u8BF7\u9009\u62E9\u60A8\u7684\u4F01\u4E1A\u8EAB\u4EFD\uFF1A\r\n </h2>\r\n </ng-container>\r\n \r\n <ng-template #noProfileTemplate>\r\n <h2>\u60A8\u8FD8\u672A\u7ED1\u5B9A\u4F01\u4E1A\uFF0C\u8BF7\u5148\u8054\u7CFB\u7BA1\u7406\u5458\u7ED1\u5B9A\uFF01</h2>\r\n </ng-template>\r\n\r\n <ion-list *ngIf=\"profileList?.length > 0\" lines=\"full\">\r\n <ion-item \r\n *ngFor=\"let p of profileList\" \r\n button \r\n detail=\"false\"\r\n [color]=\"currentProfile == p.id ? 'primary' : ''\"\r\n (click)=\"selectProfile(p)\">\r\n <ion-icon slot=\"start\" name=\"person\" color=\"primary\"></ion-icon>\r\n <ion-label>\r\n <h2>{{ p.get(\"name\") }}</h2>\r\n <p>\u4F01\u4E1A\uFF1A{{ p.get(\"company\")?.get(\"name\") || p.get(\"company\")?.get(\"title\") }}</p>\r\n </ion-label>\r\n <ion-icon *ngIf=\"currentProfile == p.id\" slot=\"end\" name=\"checkmark\" color=\"primary\"></ion-icon>\r\n </ion-item>\r\n </ion-list>\r\n\r\n <div class=\"ion-margin-top ion-text-center\">\r\n <ion-text color=\"medium\">\r\n <ion-icon name=\"information-circle-outline\"></ion-icon>\r\n \u82E5\u65E0\u5E10\u5957\u4FE1\u606F\uFF0C\u8BF7\u8F93\u5165\u4F01\u4E1A\u8EAB\u4EFD\u9A8C\u8BC1\u7ED1\u5B9A\r\n </ion-text>\r\n </div>\r\n\r\n <div class=\"form-container ion-margin-top\">\r\n <ion-item>\r\n <ion-icon slot=\"start\" name=\"person-outline\"></ion-icon>\r\n <ion-input \r\n type=\"text\" \r\n [(ngModel)]=\"pdata.name\" \r\n placeholder=\"\u8BF7\u8F93\u5165\u60A8\u7684\u59D3\u540D\"\r\n clearInput>\r\n </ion-input>\r\n </ion-item>\r\n\r\n <ion-item>\r\n <ion-icon slot=\"start\" name=\"phone-portrait-outline\"></ion-icon>\r\n <ion-input \r\n type=\"tel\" \r\n [(ngModel)]=\"pdata.mobile\" \r\n placeholder=\"\u8BF7\u8F93\u5165\u60A8\u624B\u673A\u53F7\"\r\n clearInput>\r\n </ion-input>\r\n </ion-item>\r\n\r\n <ion-button \r\n expand=\"block\" \r\n (click)=\"searchProfile()\"\r\n [disabled]=\"!pdata.name || !pdata.mobile\"\r\n class=\"ion-margin-top\">\r\n \u67E5\u8BE2\u8EAB\u4EFD\r\n <ion-spinner *ngIf=\"isLoading\" name=\"crescent\"></ion-spinner>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ion-content>", styles: [".profile-page{max-width:500px;margin:0 auto;padding-top:20px}.profile-page .title{font-size:24px;font-weight:700;text-align:center;margin-bottom:30px;color:var(--ion-color-primary)}.profile-page .date-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.profile-page .date-container .date{font-size:16px;color:var(--ion-color-medium)}.profile-page h2{font-size:18px;color:var(--ion-color-dark);margin-bottom:20px}.profile-page ion-list{background:transparent;border-radius:8px;margin-bottom:20px}.profile-page ion-list ion-item{--border-radius: 8px;--padding-start: 10px;--inner-padding-end: 10px;margin-bottom:10px}.profile-page ion-list ion-item ion-label h2{font-weight:500;margin-bottom:5px}.profile-page ion-list ion-item ion-label p{color:var(--ion-color-medium);font-size:14px}.profile-page .form-container ion-item{--background: var(--ion-color-light);--border-radius: 8px;margin-bottom:15px}.tips-block{display:flex;flex-direction:column;align-items:center;justify-content:center;height:80vh;text-align:center}.tips-block img{width:220px;margin-bottom:20px}.tips-block div{font-size:18px;color:var(--ion-color-medium)}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearInputIcon", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i3.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.TextValueAccessor, selector: "ion-input:not([type=number]),ion-input-otp[type=text],ion-textarea,ion-searchbar" }, { kind: "pipe", type: i5.DatePipe, name: "date" }] }); }
156
- }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileBindComponent, decorators: [{
158
- type: Component,
159
- args: [{ selector: "fm-profile-bind", template: "<ion-content>\r\n <ng-container *ngIf=\"cross?.navMenuType == 'mobile'; else desktopTemplate\">\r\n <div class=\"ion-padding tips-block\">\r\n <img src=\"https://file-cloud.fmode.cn/CCuWCEM24z/20231213/45hm71034653179.png\" alt=\"\" />\r\n <div>\u8BF7\u4F7F\u7528\u7535\u8111\u6D4F\u89C8\u5668\u6253\u5F00</div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #desktopTemplate>\r\n <div class=\"profile-page ion-padding\">\r\n <div class=\"title\">\u4F01\u4E1A\u9879\u76EE\u7BA1\u7406\u7CFB\u7EDF</div>\r\n \r\n <div class=\"date-container\">\r\n <div class=\"date\">{{ now | date : \"yyyy\u5E74MM\u6708dd\u65E5\" }}</div>\r\n <ion-button *ngIf=\"user?.get('type') == 'admin'\" fill=\"clear\" size=\"small\" (click)=\"onShowModal()\">\r\n <ion-icon slot=\"start\" name=\"people\"></ion-icon>\r\n \u4F01\u4E1A\u7BA1\u7406\u5458\r\n </ion-button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"profileList?.length > 0; else noProfileTemplate\">\r\n <h2>\r\n \u6B22\u8FCE\u60A8\uFF1A{{\r\n profile?.get(\"name\") ||\r\n this.profileList[0]?.get(\"name\") ||\r\n user?.get(\"nickname\") ||\r\n user?.get(\"name\") ||\r\n user?.get(\"username\")\r\n }}\uFF0C\u8BF7\u9009\u62E9\u60A8\u7684\u4F01\u4E1A\u8EAB\u4EFD\uFF1A\r\n </h2>\r\n </ng-container>\r\n \r\n <ng-template #noProfileTemplate>\r\n <h2>\u60A8\u8FD8\u672A\u7ED1\u5B9A\u4F01\u4E1A\uFF0C\u8BF7\u5148\u8054\u7CFB\u7BA1\u7406\u5458\u7ED1\u5B9A\uFF01</h2>\r\n </ng-template>\r\n\r\n <ion-list *ngIf=\"profileList?.length > 0\" lines=\"full\">\r\n <ion-item \r\n *ngFor=\"let p of profileList\" \r\n button \r\n detail=\"false\"\r\n [color]=\"currentProfile == p.id ? 'primary' : ''\"\r\n (click)=\"selectProfile(p)\">\r\n <ion-icon slot=\"start\" name=\"person\" color=\"primary\"></ion-icon>\r\n <ion-label>\r\n <h2>{{ p.get(\"name\") }}</h2>\r\n <p>\u4F01\u4E1A\uFF1A{{ p.get(\"company\")?.get(\"name\") || p.get(\"company\")?.get(\"title\") }}</p>\r\n </ion-label>\r\n <ion-icon *ngIf=\"currentProfile == p.id\" slot=\"end\" name=\"checkmark\" color=\"primary\"></ion-icon>\r\n </ion-item>\r\n </ion-list>\r\n\r\n <div class=\"ion-margin-top ion-text-center\">\r\n <ion-text color=\"medium\">\r\n <ion-icon name=\"information-circle-outline\"></ion-icon>\r\n \u82E5\u65E0\u5E10\u5957\u4FE1\u606F\uFF0C\u8BF7\u8F93\u5165\u4F01\u4E1A\u8EAB\u4EFD\u9A8C\u8BC1\u7ED1\u5B9A\r\n </ion-text>\r\n </div>\r\n\r\n <div class=\"form-container ion-margin-top\">\r\n <ion-item>\r\n <ion-icon slot=\"start\" name=\"person-outline\"></ion-icon>\r\n <ion-input \r\n type=\"text\" \r\n [(ngModel)]=\"pdata.name\" \r\n placeholder=\"\u8BF7\u8F93\u5165\u60A8\u7684\u59D3\u540D\"\r\n clearInput>\r\n </ion-input>\r\n </ion-item>\r\n\r\n <ion-item>\r\n <ion-icon slot=\"start\" name=\"phone-portrait-outline\"></ion-icon>\r\n <ion-input \r\n type=\"tel\" \r\n [(ngModel)]=\"pdata.mobile\" \r\n placeholder=\"\u8BF7\u8F93\u5165\u60A8\u624B\u673A\u53F7\"\r\n clearInput>\r\n </ion-input>\r\n </ion-item>\r\n\r\n <ion-button \r\n expand=\"block\" \r\n (click)=\"searchProfile()\"\r\n [disabled]=\"!pdata.name || !pdata.mobile\"\r\n class=\"ion-margin-top\">\r\n \u67E5\u8BE2\u8EAB\u4EFD\r\n <ion-spinner *ngIf=\"isLoading\" name=\"crescent\"></ion-spinner>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ion-content>", styles: [".profile-page{max-width:500px;margin:0 auto;padding-top:20px}.profile-page .title{font-size:24px;font-weight:700;text-align:center;margin-bottom:30px;color:var(--ion-color-primary)}.profile-page .date-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.profile-page .date-container .date{font-size:16px;color:var(--ion-color-medium)}.profile-page h2{font-size:18px;color:var(--ion-color-dark);margin-bottom:20px}.profile-page ion-list{background:transparent;border-radius:8px;margin-bottom:20px}.profile-page ion-list ion-item{--border-radius: 8px;--padding-start: 10px;--inner-padding-end: 10px;margin-bottom:10px}.profile-page ion-list ion-item ion-label h2{font-weight:500;margin-bottom:5px}.profile-page ion-list ion-item ion-label p{color:var(--ion-color-medium);font-size:14px}.profile-page .form-container ion-item{--background: var(--ion-color-light);--border-radius: 8px;margin-bottom:15px}.tips-block{display:flex;flex-direction:column;align-items:center;justify-content:center;height:80vh;text-align:center}.tips-block img{width:220px;margin-bottom:20px}.tips-block div{font-size:18px;color:var(--ion-color-medium)}\n"] }]
160
- }], ctorParameters: () => [{ type: i1.AuthProfileService }, { type: i2.Router }, { type: i3.AlertController }, { type: i3.ToastController }, { type: i4.CrossService }, { type: i3.ModalController }], propDecorators: { onResize: [{
161
- type: HostListener,
162
- args: ["window:resize", ["$event"]]
163
- }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1iaW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdXNlci9wcm9maWxlL3Byb2ZpbGUtYmluZC9wcm9maWxlLWJpbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi91c2VyL3Byb2ZpbGUvcHJvZmlsZS1iaW5kL3Byb2ZpbGUtYmluZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7QUFPakYsTUFBTSxPQUFPLG9CQUFvQjtJQWEvQixRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFDVSxXQUErQixFQUMvQixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsZUFBZ0MsRUFDakMsS0FBbUIsRUFDbEIsZUFBZ0M7UUFMaEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxvQkFBZSxHQUFmLGVBQWUsQ0FB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QzlDLE9BQU87WUFDUCxRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUs7WUFDTCxRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFDSCxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQTFKVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixxSENkakMsb3pIQTJGYzs7NEZEN0VELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUI7aU9BaUIzQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBdXRoUHJvZmlsZVNlcnZpY2UgfSBmcm9tIFwiLi4vYXV0aC1wcm9maWxlLnNlcnZpY2VcIjtcclxuaW1wb3J0IFBhcnNlIGZyb20gXCJwYXJzZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciwgTW9kYWxDb250cm9sbGVyIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyXCI7XHJcbmltcG9ydCB7IFRvYXN0Q29udHJvbGxlciB9IGZyb20gXCJAaW9uaWMvYW5ndWxhclwiO1xyXG5pbXBvcnQgeyBDcm9zc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vcGxhdGZvcm0vY3Jvc3Muc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9maWxlQ29uZmlybU1vZGFsQ29tcG9uZW50IH0gZnJvbSBcIi4vcHJvZmlsZS1jb25maXJtLW1vZGFsLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZm0tcHJvZmlsZS1iaW5kXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9wcm9maWxlLWJpbmQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vcHJvZmlsZS1iaW5kLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZmlsZUJpbmRDb21wb25lbnQge1xyXG4gIHByb2ZpbGU6IFBhcnNlLk9iamVjdDtcclxuICB1c2VyOiBQYXJzZS5Vc2VyO1xyXG4gIHByb2ZpbGVMaXN0OiBBcnJheTxQYXJzZS5PYmplY3Q+ID0gW107XHJcbiAgcGRhdGE6IGFueSA9IHtcclxuICAgIG5hbWU6IG51bGwsXHJcbiAgICBtb2JpbGU6IG51bGwsXHJcbiAgfTtcclxuICBub3c6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIGN1cnJlbnRQcm9maWxlOiBzdHJpbmc7XHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtcIiRldmVudFwiXSlcclxuICBvblJlc2l6ZSgpIHtcclxuICAgIHRoaXMuY3Jvc3Mub25SZXNpemVTY3JlZW4oKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoUHJvZmlsZTogQXV0aFByb2ZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWxlcnRDb250cm9sbGVyOiBBbGVydENvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLFxyXG4gICAgcHVibGljIGNyb3NzOiBDcm9zc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyLFxyXG4gICkge1xyXG4gICAgdGhpcy5wcm9maWxlID0gdGhpcy5hdXRoUHJvZmlsZS5wcm9maWxlO1xyXG4gICAgdGhpcy5jdXJyZW50UHJvZmlsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdQYXJzZS9Qcm9maWxlSWQnKTtcclxuICAgIHRoaXMudXNlciA9IFBhcnNlLlVzZXIuY3VycmVudCgpO1xyXG4gICAgdGhpcy5sb2FkUHJvZmlsZXMoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRQcm9maWxlcygpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBxdWVyeSA9IG5ldyBQYXJzZS5RdWVyeShcIlByb2ZpbGVcIik7XHJcbiAgICAgIHF1ZXJ5LmluY2x1ZGUoXCJjb21wYW55XCIpO1xyXG4gICAgICBxdWVyeS5ub3RFcXVhbFRvKFwiaXNEZWxldGVkXCIsIHRydWUpO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMucHJvZmlsZT8uaWQpIHtcclxuICAgICAgICBxdWVyeS5lcXVhbFRvKFwibW9iaWxlXCIsIHRoaXMucHJvZmlsZS5nZXQoJ21vYmlsZScpKTtcclxuICAgICAgICBxdWVyeS5lcXVhbFRvKFwibmFtZVwiLCB0aGlzLnByb2ZpbGUuZ2V0KCduYW1lJykpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHF1ZXJ5LmVxdWFsVG8oXCJ1c2VyXCIsIHRoaXMudXNlci5pZCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMucHJvZmlsZUxpc3QgPSBhd2FpdCBxdWVyeS5maW5kKCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHByb2ZpbGVzOicsIGVycm9yKTtcclxuICAgICAgdGhpcy5zaG93VG9hc3QoJ+WKoOi9vei6q+S7veS/oeaBr+Wksei0pe+8jOivt+mHjeivlScsICdkYW5nZXInKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBiaW5kUHJvZmlsZShwPzogUGFyc2UuT2JqZWN0KSB7XHJcbiAgICBpZiAoIXA/LmlkKSB7XHJcbiAgICAgIHAgPSB0aGlzLnByb2ZpbGVTZWFyY2hlZDtcclxuICAgIH1cclxuICAgIGlmICghcD8uaWQpIHJldHVybjtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5hdXRoUHJvZmlsZS5iaW5kUHJvZmlsZShwKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGJpbmRpbmcgcHJvZmlsZTonLCBlcnJvcik7XHJcbiAgICAgIHRoaXMuc2hvd1RvYXN0KCfnu5Hlrprouqvku73lpLHotKXvvIzor7fph43or5UnLCAnZGFuZ2VyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm9maWxlU2VhcmNoZWQ6IFBhcnNlLk9iamVjdDtcclxuXHJcbiAgYXN5bmMgc2VhcmNoUHJvZmlsZSgpIHtcclxuICAgIHRoaXMucHJvZmlsZUxpc3QgPSBbXTtcclxuICAgIGlmICghdGhpcy5wZGF0YS5uYW1lIHx8ICF0aGlzLnBkYXRhLm1vYmlsZSkge1xyXG4gICAgICB0aGlzLnNob3dUb2FzdCgn6K+35aGr5YaZ5a6M5pW05L+h5oGv5Lul5p+l6K+i5oKo55qE6Lqr5Lu9JywgJ3dhcm5pbmcnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBxdWVyeSA9IG5ldyBQYXJzZS5RdWVyeShcIlByb2ZpbGVcIik7XHJcbiAgICAgIHF1ZXJ5LmluY2x1ZGUoXCJjb21wYW55XCIpO1xyXG4gICAgICBxdWVyeS5lcXVhbFRvKFwibmFtZVwiLCB0aGlzLnBkYXRhLm5hbWUpO1xyXG4gICAgICBxdWVyeS5lcXVhbFRvKFwibW9iaWxlXCIsIHRoaXMucGRhdGEubW9iaWxlKTtcclxuICAgICAgdGhpcy5wcm9maWxlTGlzdCA9IGF3YWl0IHF1ZXJ5LmZpbmQoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnByb2ZpbGVMaXN0Py5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgdGhpcy5zaG93VG9hc3QoJ+ivpei6q+S7veS4jeWtmOWcqO+8jOaXoOazlee7keWumu+8gScsICd3YXJuaW5nJyk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNlYXJjaGluZyBwcm9maWxlOicsIGVycm9yKTtcclxuICAgICAgdGhpcy5zaG93VG9hc3QoJ+afpeivoui6q+S7veWksei0pe+8jOivt+mHjeivlScsICdkYW5nZXInKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZWxlY3RQcm9maWxlKHA6IFBhcnNlLk9iamVjdCkge1xyXG4gICAgaWYgKCFwPy5pZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucHJvZmlsZVNlYXJjaGVkID0gcDtcclxuICAgIGNvbnN0IG1vZGFsID0gYXdhaXQgdGhpcy5tb2RhbENvbnRyb2xsZXIuY3JlYXRlKHtcclxuICAgICAgY29tcG9uZW50OiBQcm9maWxlQ29uZmlybU1vZGFsQ29tcG9uZW50LFxyXG4gICAgICBjb21wb25lbnRQcm9wczoge1xyXG4gICAgICAgIHByb2ZpbGU6IHBcclxuICAgICAgfSxcclxuICAgICAgLy8gc3dpcGVUb0Nsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XHJcblxyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBtb2RhbC5vbldpbGxEaXNtaXNzKCk7XHJcbiAgICBpZiAoZGF0YT8uY29uZmlybWVkKSB7XHJcbiAgICAgIHRoaXMuYmluZFByb2ZpbGUocCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1Byb2ZpbGVNYW5hZ2UoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXHJcbiAgICAgIFwiL2NvbW1vbi9tYW5hZ2UvUHJvZmlsZVwiLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmlkOiBcIng2eHliYUxXSUNcIixcclxuICAgICAgfSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TaG93TW9kYWwoKSB7XHJcbiAgICBjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuYWxlcnRDb250cm9sbGVyLmNyZWF0ZSh7XHJcbiAgICAgIGhlYWRlcjogJ+WboumYn+aIkOWRmOeuoeeQhicsXHJcbiAgICAgIG1lc3NhZ2U6ICfmgqjmmK/kvIHkuJrnrqHnkIblkZjvvIzlj6/ov5vlhaXmt7vliqDlm6LpmJ/miJDlkZjouqvku70nLFxyXG4gICAgICBidXR0b25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGV4dDogJ+WPlua2iCcsXHJcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGV4dDogJ+WJjeW+gOeuoeeQhicsXHJcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ29Qcm9maWxlTWFuYWdlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9KTtcclxuXHJcbiAgICBhd2FpdCBhbGVydC5wcmVzZW50KCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzaG93VG9hc3QobWVzc2FnZTogc3RyaW5nLCBjb2xvcjogJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2RhbmdlcicgPSAnc3VjY2VzcycpIHtcclxuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcclxuICAgICAgbWVzc2FnZSxcclxuICAgICAgZHVyYXRpb246IDIwMDAsXHJcbiAgICAgIGNvbG9yLFxyXG4gICAgICBwb3NpdGlvbjogJ3RvcCdcclxuICAgIH0pO1xyXG4gICAgYXdhaXQgdG9hc3QucHJlc2VudCgpO1xyXG4gIH1cclxufSIsIjxpb24tY29udGVudD5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3Jvc3M/Lm5hdk1lbnVUeXBlID09ICdtb2JpbGUnOyBlbHNlIGRlc2t0b3BUZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nIHRpcHMtYmxvY2tcIj5cclxuICAgICAgPGltZyBzcmM9XCJodHRwczovL2ZpbGUtY2xvdWQuZm1vZGUuY24vQ0N1V0NFTTI0ei8yMDIzMTIxMy80NWhtNzEwMzQ2NTMxNzkucG5nXCIgYWx0PVwiXCIgLz5cclxuICAgICAgPGRpdj7or7fkvb/nlKjnlLXohJHmtY/op4jlmajmiZPlvIA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2Rlc2t0b3BUZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLXBhZ2UgaW9uLXBhZGRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+5LyB5Lia6aG555uu566h55CG57O757ufPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZVwiPnt7IG5vdyB8IGRhdGUgOiBcInl5eXnlubRNTeaciGRk5pelXCIgfX08L2Rpdj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cInVzZXI/LmdldCgndHlwZScpID09ICdhZG1pbidcIiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwib25TaG93TW9kYWwoKVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJwZW9wbGVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAg5LyB5Lia566h55CG5ZGYXHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9maWxlTGlzdD8ubGVuZ3RoID4gMDsgZWxzZSBub1Byb2ZpbGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxoMj5cclxuICAgICAgICAgIOasoui/juaCqO+8mnt7XHJcbiAgICAgICAgICAgIHByb2ZpbGU/LmdldChcIm5hbWVcIikgfHxcclxuICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVMaXN0WzBdPy5nZXQoXCJuYW1lXCIpIHx8XHJcbiAgICAgICAgICAgICAgdXNlcj8uZ2V0KFwibmlja25hbWVcIikgfHxcclxuICAgICAgICAgICAgICB1c2VyPy5nZXQoXCJuYW1lXCIpIHx8XHJcbiAgICAgICAgICAgICAgdXNlcj8uZ2V0KFwidXNlcm5hbWVcIilcclxuICAgICAgICAgIH1977yM6K+36YCJ5oup5oKo55qE5LyB5Lia6Lqr5Lu977yaXHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIFxyXG4gICAgICA8bmctdGVtcGxhdGUgI25vUHJvZmlsZVRlbXBsYXRlPlxyXG4gICAgICAgIDxoMj7mgqjov5jmnKrnu5HlrprkvIHkuJrvvIzor7flhYjogZTns7vnrqHnkIblkZjnu5HlrprvvIE8L2gyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPGlvbi1saXN0ICpuZ0lmPVwicHJvZmlsZUxpc3Q/Lmxlbmd0aCA+IDBcIiBsaW5lcz1cImZ1bGxcIj5cclxuICAgICAgICA8aW9uLWl0ZW0gXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcCBvZiBwcm9maWxlTGlzdFwiIFxyXG4gICAgICAgICAgYnV0dG9uIFxyXG4gICAgICAgICAgZGV0YWlsPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cImN1cnJlbnRQcm9maWxlID09IHAuaWQgPyAncHJpbWFyeScgOiAnJ1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvZmlsZShwKVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJwZXJzb25cIiBjb2xvcj1cInByaW1hcnlcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgPGlvbi1sYWJlbD5cclxuICAgICAgICAgICAgPGgyPnt7IHAuZ2V0KFwibmFtZVwiKSB9fTwvaDI+XHJcbiAgICAgICAgICAgIDxwPuS8geS4mu+8mnt7IHAuZ2V0KFwiY29tcGFueVwiKT8uZ2V0KFwibmFtZVwiKSB8fCBwLmdldChcImNvbXBhbnlcIik/LmdldChcInRpdGxlXCIpIH19PC9wPlxyXG4gICAgICAgICAgPC9pb24tbGFiZWw+XHJcbiAgICAgICAgICA8aW9uLWljb24gKm5nSWY9XCJjdXJyZW50UHJvZmlsZSA9PSBwLmlkXCIgc2xvdD1cImVuZFwiIG5hbWU9XCJjaGVja21hcmtcIiBjb2xvcj1cInByaW1hcnlcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgIDwvaW9uLWxpc3Q+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLW1hcmdpbi10b3AgaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XHJcbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImluZm9ybWF0aW9uLWNpcmNsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgIOiLpeaXoOW4kOWll+S/oeaBr++8jOivt+i+k+WFpeS8geS4mui6q+S7vemqjOivgee7keWumlxyXG4gICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGFpbmVyIGlvbi1tYXJnaW4tdG9wXCI+XHJcbiAgICAgICAgPGlvbi1pdGVtPlxyXG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJwZXJzb24tb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICA8aW9uLWlucHV0IFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBkYXRhLm5hbWVcIiBcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmgqjnmoTlp5PlkI1cIlxyXG4gICAgICAgICAgICBjbGVhcklucHV0PlxyXG4gICAgICAgICAgPC9pb24taW5wdXQ+XHJcbiAgICAgICAgPC9pb24taXRlbT5cclxuXHJcbiAgICAgICAgPGlvbi1pdGVtPlxyXG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJwaG9uZS1wb3J0cmFpdC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgIDxpb24taW5wdXQgXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZWxcIiBcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwZGF0YS5tb2JpbGVcIiBcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmgqjmiYvmnLrlj7dcIlxyXG4gICAgICAgICAgICBjbGVhcklucHV0PlxyXG4gICAgICAgICAgPC9pb24taW5wdXQ+XHJcbiAgICAgICAgPC9pb24taXRlbT5cclxuXHJcbiAgICAgICAgPGlvbi1idXR0b24gXHJcbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiIFxyXG4gICAgICAgICAgKGNsaWNrKT1cInNlYXJjaFByb2ZpbGUoKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXBkYXRhLm5hbWUgfHwgIXBkYXRhLm1vYmlsZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImlvbi1tYXJnaW4tdG9wXCI+XHJcbiAgICAgICAgICDmn6Xor6Louqvku71cclxuICAgICAgICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cImlzTG9hZGluZ1wiIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvaW9uLWNvbnRlbnQ+Il19
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs
7
+ */
8
+ import{Component,HostListener}from"@angular/core";import{AuthProfileService}from"../auth-profile.service";import{FmodeParse}from"@fmode/parse";import{Router}from"@angular/router";import{AlertController,ModalController}from"@ionic/angular";import{ToastController}from"@ionic/angular";import{CrossService}from"../../../platform/cross.service";import{ProfileConfirmModalComponent}from"./profile-confirm-modal.component";import*as i0 from"@angular/core";import*as i1 from"../auth-profile.service";import*as i2 from"@angular/router";import*as i3 from"@ionic/angular";import*as i4 from"../../../platform/cross.service";import*as i5 from"@angular/common";import*as i6 from"@angular/forms";const Parse=FmodeParse.with("nova");export class ProfileBindComponent{onResize(){this.cross.onResizeScreen()}constructor(n,e,o,i,t,r){this.authProfile=n,this.router=e,this.alertController=o,this.toastController=i,this.cross=t,this.modalController=r,this.profileList=[],this.pdata={name:null,mobile:null},this.now=new Date,this.isLoading=!1,this.profile=this.authProfile.profile,this.currentProfile=localStorage.getItem("Parse/ProfileId"),this.user=Parse.User.current(),this.loadProfiles()}async loadProfiles(){this.isLoading=!0;try{let n=new Parse.Query("Profile");n.include("company"),n.notEqualTo("isDeleted",!0),this.profile?.id?(n.equalTo("mobile",this.profile.get("mobile")),n.equalTo("name",this.profile.get("name"))):n.equalTo("user",this.user.id),this.profileList=await n.find()}catch(n){console.error("Error loading profiles:",n),this.showToast("加载身份信息失败,请重试","danger")}finally{this.isLoading=!1}}async bindProfile(n){if(n?.id||(n=this.profileSearched),n?.id)try{await this.authProfile.bindProfile(n)}catch(n){console.error("Error binding profile:",n),this.showToast("绑定身份失败,请重试","danger")}}async searchProfile(){if(this.profileList=[],this.pdata.name&&this.pdata.mobile){this.isLoading=!0;try{let n=new Parse.Query("Profile");n.include("company"),n.equalTo("name",this.pdata.name),n.equalTo("mobile",this.pdata.mobile),this.profileList=await n.find(),this.profileList?.length<1&&this.showToast("该身份不存在,无法绑定!","warning")}catch(n){console.error("Error searching profile:",n),this.showToast("查询身份失败,请重试","danger")}finally{this.isLoading=!1}}else this.showToast("请填写完整信息以查询您的身份","warning")}async selectProfile(n){if(!n?.id)return;this.profileSearched=n;const e=await this.modalController.create({component:ProfileConfirmModalComponent,componentProps:{profile:n}});await e.present();const{data:o}=await e.onWillDismiss();o?.confirmed&&this.bindProfile(n)}goProfileManage(){this.router.navigate(["/common/manage/Profile",{rid:"x6xybaLWIC"}])}async onShowModal(){const n=await this.alertController.create({header:"团队成员管理",message:"您是企业管理员,可进入添加团队成员身份",buttons:[{text:"取消",role:"cancel"},{text:"前往管理",handler:()=>{this.goProfileManage()}}]});await n.present()}async showToast(n,e="success"){const o=await this.toastController.create({message:n,duration:2e3,color:e,position:"top"});await o.present()}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ProfileBindComponent,deps:[{token:i1.AuthProfileService},{token:i2.Router},{token:i3.AlertController},{token:i3.ToastController},{token:i4.CrossService},{token:i3.ModalController}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:ProfileBindComponent,selector:"fm-profile-bind",host:{listeners:{"window:resize":"onResize($event)"}},ngImport:i0,template:'<ion-content>\n <ng-container *ngIf="cross?.navMenuType == \'mobile\'; else desktopTemplate">\n <div class="ion-padding tips-block">\n <img src="https://file-cloud.fmode.cn/CCuWCEM24z/20231213/45hm71034653179.png" alt="" />\n <div>请使用电脑浏览器打开</div>\n </div>\n </ng-container>\n\n <ng-template #desktopTemplate>\n <div class="profile-page ion-padding">\n <div class="title">企业项目管理系统</div>\n \n <div class="date-container">\n <div class="date">{{ now | date : "yyyy年MM月dd日" }}</div>\n <ion-button *ngIf="user?.get(\'type\') == \'admin\'" fill="clear" size="small" (click)="onShowModal()">\n <ion-icon slot="start" name="people"></ion-icon>\n 企业管理员\n </ion-button>\n </div>\n\n <ng-container *ngIf="profileList?.length > 0; else noProfileTemplate">\n <h2>\n 欢迎您:{{\n profile?.get("name") ||\n this.profileList[0]?.get("name") ||\n user?.get("nickname") ||\n user?.get("name") ||\n user?.get("username")\n }},请选择您的企业身份:\n </h2>\n </ng-container>\n \n <ng-template #noProfileTemplate>\n <h2>您还未绑定企业,请先联系管理员绑定!</h2>\n </ng-template>\n\n <ion-list *ngIf="profileList?.length > 0" lines="full">\n <ion-item \n *ngFor="let p of profileList" \n button \n detail="false"\n [color]="currentProfile == p.id ? \'primary\' : \'\'"\n (click)="selectProfile(p)">\n <ion-icon slot="start" name="person" color="primary"></ion-icon>\n <ion-label>\n <h2>{{ p.get("name") }}</h2>\n <p>企业:{{ p.get("company")?.get("name") || p.get("company")?.get("title") }}</p>\n </ion-label>\n <ion-icon *ngIf="currentProfile == p.id" slot="end" name="checkmark" color="primary"></ion-icon>\n </ion-item>\n </ion-list>\n\n <div class="ion-margin-top ion-text-center">\n <ion-text color="medium">\n <ion-icon name="information-circle-outline"></ion-icon>\n 若无帐套信息,请输入企业身份验证绑定\n </ion-text>\n </div>\n\n <div class="form-container ion-margin-top">\n <ion-item>\n <ion-icon slot="start" name="person-outline"></ion-icon>\n <ion-input \n type="text" \n [(ngModel)]="pdata.name" \n placeholder="请输入您的姓名"\n clearInput>\n </ion-input>\n </ion-item>\n\n <ion-item>\n <ion-icon slot="start" name="phone-portrait-outline"></ion-icon>\n <ion-input \n type="tel" \n [(ngModel)]="pdata.mobile" \n placeholder="请输入您手机号"\n clearInput>\n </ion-input>\n </ion-item>\n\n <ion-button \n expand="block" \n (click)="searchProfile()"\n [disabled]="!pdata.name || !pdata.mobile"\n class="ion-margin-top">\n 查询身份\n <ion-spinner *ngIf="isLoading" name="crescent"></ion-spinner>\n </ion-button>\n </div>\n </div>\n </ng-template>\n</ion-content>',styles:[".profile-page{max-width:500px;margin:0 auto;padding-top:20px}.profile-page .title{font-size:24px;font-weight:700;text-align:center;margin-bottom:30px;color:var(--ion-color-primary)}.profile-page .date-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.profile-page .date-container .date{font-size:16px;color:var(--ion-color-medium)}.profile-page h2{font-size:18px;color:var(--ion-color-dark);margin-bottom:20px}.profile-page ion-list{background:transparent;border-radius:8px;margin-bottom:20px}.profile-page ion-list ion-item{--border-radius: 8px;--padding-start: 10px;--inner-padding-end: 10px;margin-bottom:10px}.profile-page ion-list ion-item ion-label h2{font-weight:500;margin-bottom:5px}.profile-page ion-list ion-item ion-label p{color:var(--ion-color-medium);font-size:14px}.profile-page .form-container ion-item{--background: var(--ion-color-light);--border-radius: 8px;margin-bottom:15px}.tips-block{display:flex;flex-direction:column;align-items:center;justify-content:center;height:80vh;text-align:center}.tips-block img{width:220px;margin-bottom:20px}.tips-block div{font-size:18px;color:var(--ion-color-medium)}\n"],dependencies:[{kind:"directive",type:i5.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i5.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:i6.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i6.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:i3.IonButton,selector:"ion-button",inputs:["buttonType","color","disabled","download","expand","fill","form","href","mode","rel","routerAnimation","routerDirection","shape","size","strong","target","type"]},{kind:"component",type:i3.IonContent,selector:"ion-content",inputs:["color","fixedSlotPlacement","forceOverscroll","fullscreen","scrollEvents","scrollX","scrollY"]},{kind:"component",type:i3.IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:i3.IonInput,selector:"ion-input",inputs:["autocapitalize","autocomplete","autocorrect","autofocus","clearInput","clearInputIcon","clearOnEdit","color","counter","counterFormatter","debounce","disabled","enterkeyhint","errorText","fill","helperText","inputmode","label","labelPlacement","max","maxlength","min","minlength","mode","multiple","name","pattern","placeholder","readonly","required","shape","spellcheck","step","type","value"]},{kind:"component",type:i3.IonItem,selector:"ion-item",inputs:["button","color","detail","detailIcon","disabled","download","href","lines","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:i3.IonLabel,selector:"ion-label",inputs:["color","mode","position"]},{kind:"component",type:i3.IonList,selector:"ion-list",inputs:["inset","lines","mode"]},{kind:"component",type:i3.IonSpinner,selector:"ion-spinner",inputs:["color","duration","name","paused"]},{kind:"component",type:i3.IonText,selector:"ion-text",inputs:["color","mode"]},{kind:"directive",type:i3.TextValueAccessor,selector:"ion-input:not([type=number]),ion-textarea,ion-searchbar"},{kind:"pipe",type:i5.DatePipe,name:"date"}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ProfileBindComponent,decorators:[{type:Component,args:[{selector:"fm-profile-bind",template:'<ion-content>\n <ng-container *ngIf="cross?.navMenuType == \'mobile\'; else desktopTemplate">\n <div class="ion-padding tips-block">\n <img src="https://file-cloud.fmode.cn/CCuWCEM24z/20231213/45hm71034653179.png" alt="" />\n <div>请使用电脑浏览器打开</div>\n </div>\n </ng-container>\n\n <ng-template #desktopTemplate>\n <div class="profile-page ion-padding">\n <div class="title">企业项目管理系统</div>\n \n <div class="date-container">\n <div class="date">{{ now | date : "yyyy年MM月dd日" }}</div>\n <ion-button *ngIf="user?.get(\'type\') == \'admin\'" fill="clear" size="small" (click)="onShowModal()">\n <ion-icon slot="start" name="people"></ion-icon>\n 企业管理员\n </ion-button>\n </div>\n\n <ng-container *ngIf="profileList?.length > 0; else noProfileTemplate">\n <h2>\n 欢迎您:{{\n profile?.get("name") ||\n this.profileList[0]?.get("name") ||\n user?.get("nickname") ||\n user?.get("name") ||\n user?.get("username")\n }},请选择您的企业身份:\n </h2>\n </ng-container>\n \n <ng-template #noProfileTemplate>\n <h2>您还未绑定企业,请先联系管理员绑定!</h2>\n </ng-template>\n\n <ion-list *ngIf="profileList?.length > 0" lines="full">\n <ion-item \n *ngFor="let p of profileList" \n button \n detail="false"\n [color]="currentProfile == p.id ? \'primary\' : \'\'"\n (click)="selectProfile(p)">\n <ion-icon slot="start" name="person" color="primary"></ion-icon>\n <ion-label>\n <h2>{{ p.get("name") }}</h2>\n <p>企业:{{ p.get("company")?.get("name") || p.get("company")?.get("title") }}</p>\n </ion-label>\n <ion-icon *ngIf="currentProfile == p.id" slot="end" name="checkmark" color="primary"></ion-icon>\n </ion-item>\n </ion-list>\n\n <div class="ion-margin-top ion-text-center">\n <ion-text color="medium">\n <ion-icon name="information-circle-outline"></ion-icon>\n 若无帐套信息,请输入企业身份验证绑定\n </ion-text>\n </div>\n\n <div class="form-container ion-margin-top">\n <ion-item>\n <ion-icon slot="start" name="person-outline"></ion-icon>\n <ion-input \n type="text" \n [(ngModel)]="pdata.name" \n placeholder="请输入您的姓名"\n clearInput>\n </ion-input>\n </ion-item>\n\n <ion-item>\n <ion-icon slot="start" name="phone-portrait-outline"></ion-icon>\n <ion-input \n type="tel" \n [(ngModel)]="pdata.mobile" \n placeholder="请输入您手机号"\n clearInput>\n </ion-input>\n </ion-item>\n\n <ion-button \n expand="block" \n (click)="searchProfile()"\n [disabled]="!pdata.name || !pdata.mobile"\n class="ion-margin-top">\n 查询身份\n <ion-spinner *ngIf="isLoading" name="crescent"></ion-spinner>\n </ion-button>\n </div>\n </div>\n </ng-template>\n</ion-content>',styles:[".profile-page{max-width:500px;margin:0 auto;padding-top:20px}.profile-page .title{font-size:24px;font-weight:700;text-align:center;margin-bottom:30px;color:var(--ion-color-primary)}.profile-page .date-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.profile-page .date-container .date{font-size:16px;color:var(--ion-color-medium)}.profile-page h2{font-size:18px;color:var(--ion-color-dark);margin-bottom:20px}.profile-page ion-list{background:transparent;border-radius:8px;margin-bottom:20px}.profile-page ion-list ion-item{--border-radius: 8px;--padding-start: 10px;--inner-padding-end: 10px;margin-bottom:10px}.profile-page ion-list ion-item ion-label h2{font-weight:500;margin-bottom:5px}.profile-page ion-list ion-item ion-label p{color:var(--ion-color-medium);font-size:14px}.profile-page .form-container ion-item{--background: var(--ion-color-light);--border-radius: 8px;margin-bottom:15px}.tips-block{display:flex;flex-direction:column;align-items:center;justify-content:center;height:80vh;text-align:center}.tips-block img{width:220px;margin-bottom:20px}.tips-block div{font-size:18px;color:var(--ion-color-medium)}\n"]}]}],ctorParameters:()=>[{type:i1.AuthProfileService},{type:i2.Router},{type:i3.AlertController},{type:i3.ToastController},{type:i4.CrossService},{type:i3.ModalController}],propDecorators:{onResize:[{type:HostListener,args:["window:resize",["$event"]]}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi91c2VyL3Byb2ZpbGUvcHJvZmlsZS1iaW5kL3Byb2ZpbGUtYmluZC5jb21wb25lbnQubWpz`
10
+
@@ -1,79 +1,10 @@
1
- // profile-confirm-modal.component.ts
2
- import { Component, Input } from '@angular/core';
3
- import { ModalController } from '@ionic/angular';
4
- import Parse from "parse";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@ionic/angular";
7
- export class ProfileConfirmModalComponent {
8
- constructor(modalController) {
9
- this.modalController = modalController;
10
- }
11
- dismiss() {
12
- this.modalController.dismiss();
13
- }
14
- confirm() {
15
- this.modalController.dismiss({ confirmed: true });
16
- }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileConfirmModalComponent, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProfileConfirmModalComponent, selector: "fm-profile-confirm-modal", inputs: { profile: "profile" }, ngImport: i0, template: `
19
- <ion-header>
20
- <ion-toolbar>
21
- <ion-title>绑定身份</ion-title>
22
- <ion-buttons slot="end">
23
- <ion-button (click)="dismiss()">取消</ion-button>
24
- </ion-buttons>
25
- </ion-toolbar>
26
- </ion-header>
27
-
28
- <ion-content class="ion-padding">
29
- <p>您确认绑定并切换至该身份吗?</p>
30
- <ion-item lines="none">
31
- <ion-label>
32
- <h3>姓名:{{ profile?.get("name") }}</h3>
33
- <p>帐套:{{ profile?.get("company")?.get("name") || profile?.get("company")?.get("title") }}</p>
34
- </ion-label>
35
- </ion-item>
36
- </ion-content>
37
-
38
- <ion-footer>
39
- <ion-toolbar>
40
- <ion-button expand="block" (click)="confirm()">确认绑定</ion-button>
41
- </ion-toolbar>
42
- </ion-footer>
43
- `, isInline: true, dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }] }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileConfirmModalComponent, decorators: [{
46
- type: Component,
47
- args: [{
48
- selector: 'fm-profile-confirm-modal',
49
- template: `
50
- <ion-header>
51
- <ion-toolbar>
52
- <ion-title>绑定身份</ion-title>
53
- <ion-buttons slot="end">
54
- <ion-button (click)="dismiss()">取消</ion-button>
55
- </ion-buttons>
56
- </ion-toolbar>
57
- </ion-header>
58
-
59
- <ion-content class="ion-padding">
60
- <p>您确认绑定并切换至该身份吗?</p>
61
- <ion-item lines="none">
62
- <ion-label>
63
- <h3>姓名:{{ profile?.get("name") }}</h3>
64
- <p>帐套:{{ profile?.get("company")?.get("name") || profile?.get("company")?.get("title") }}</p>
65
- </ion-label>
66
- </ion-item>
67
- </ion-content>
68
-
69
- <ion-footer>
70
- <ion-toolbar>
71
- <ion-button expand="block" (click)="confirm()">确认绑定</ion-button>
72
- </ion-toolbar>
73
- </ion-footer>
74
- `,
75
- }]
76
- }], ctorParameters: () => [{ type: i1.ModalController }], propDecorators: { profile: [{
77
- type: Input
78
- }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1jb25maXJtLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdXNlci9wcm9maWxlL3Byb2ZpbGUtYmluZC9wcm9maWxlLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7QUErQjFCLE1BQU0sT0FBTyw0QkFBNEI7SUFHdkMsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztJQUV4RCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQzsrR0FYVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixnR0EzQjdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJUOzs0RkFFVSw0QkFBNEI7a0JBN0J4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCVDtpQkFDRjtvRkFFVSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwcm9maWxlLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50LnRzXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgUGFyc2UgZnJvbSBcInBhcnNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZtLXByb2ZpbGUtY29uZmlybS1tb2RhbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxpb24taGVhZGVyPlxyXG4gICAgICA8aW9uLXRvb2xiYXI+XHJcbiAgICAgICAgPGlvbi10aXRsZT7nu5Hlrprouqvku708L2lvbi10aXRsZT5cclxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxyXG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImRpc21pc3MoKVwiPuWPlua2iDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgICA8L2lvbi10b29sYmFyPlxyXG4gICAgPC9pb24taGVhZGVyPlxyXG5cclxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XHJcbiAgICAgIDxwPuaCqOehruiupOe7keWumuW5tuWIh+aNouiHs+ivpei6q+S7veWQl++8nzwvcD5cclxuICAgICAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiPlxyXG4gICAgICAgIDxpb24tbGFiZWw+XHJcbiAgICAgICAgICA8aDM+5aeT5ZCN77yae3sgcHJvZmlsZT8uZ2V0KFwibmFtZVwiKSB9fTwvaDM+XHJcbiAgICAgICAgICA8cD7luJDlpZfvvJp7eyBwcm9maWxlPy5nZXQoXCJjb21wYW55XCIpPy5nZXQoXCJuYW1lXCIpIHx8IHByb2ZpbGU/LmdldChcImNvbXBhbnlcIik/LmdldChcInRpdGxlXCIpIH19PC9wPlxyXG4gICAgICAgIDwvaW9uLWxhYmVsPlxyXG4gICAgICA8L2lvbi1pdGVtPlxyXG4gICAgPC9pb24tY29udGVudD5cclxuXHJcbiAgICA8aW9uLWZvb3Rlcj5cclxuICAgICAgPGlvbi10b29sYmFyPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgKGNsaWNrKT1cImNvbmZpcm0oKVwiPuehruiupOe7keWumjwvaW9uLWJ1dHRvbj5cclxuICAgICAgPC9pb24tdG9vbGJhcj5cclxuICAgIDwvaW9uLWZvb3Rlcj5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZmlsZUNvbmZpcm1Nb2RhbENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgcHJvZmlsZTogUGFyc2UuT2JqZWN0O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyKSB7fVxyXG5cclxuICBkaXNtaXNzKCkge1xyXG4gICAgdGhpcy5tb2RhbENvbnRyb2xsZXIuZGlzbWlzcygpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSgpIHtcclxuICAgIHRoaXMubW9kYWxDb250cm9sbGVyLmRpc21pc3MoeyBjb25maXJtZWQ6IHRydWUgfSk7XHJcbiAgfVxyXG59Il19
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs
7
+ */
8
+ import{Component,Input}from"@angular/core";import{ModalController}from"@ionic/angular";import{FmodeParse,FmodeObject}from"@fmode/parse";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular";const Parse=FmodeParse.with("nova");export class ProfileConfirmModalComponent{constructor(o){this.modalController=o}dismiss(){this.modalController.dismiss()}confirm(){this.modalController.dismiss({confirmed:!0})}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ProfileConfirmModalComponent,deps:[{token:i1.ModalController}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:ProfileConfirmModalComponent,selector:"fm-profile-confirm-modal",inputs:{profile:"profile"},ngImport:i0,template:'\n <ion-header>\n <ion-toolbar>\n <ion-title>绑定身份</ion-title>\n <ion-buttons slot="end">\n <ion-button (click)="dismiss()">取消</ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content class="ion-padding">\n <p>您确认绑定并切换至该身份吗?</p>\n <ion-item lines="none">\n <ion-label>\n <h3>姓名:{{ profile?.get("name") }}</h3>\n <p>帐套:{{ profile?.get("company")?.get("name") || profile?.get("company")?.get("title") }}</p>\n </ion-label>\n </ion-item>\n </ion-content>\n\n <ion-footer>\n <ion-toolbar>\n <ion-button expand="block" (click)="confirm()">确认绑定</ion-button>\n </ion-toolbar>\n </ion-footer>\n ',isInline:!0,dependencies:[{kind:"component",type:i1.IonButton,selector:"ion-button",inputs:["buttonType","color","disabled","download","expand","fill","form","href","mode","rel","routerAnimation","routerDirection","shape","size","strong","target","type"]},{kind:"component",type:i1.IonButtons,selector:"ion-buttons",inputs:["collapse"]},{kind:"component",type:i1.IonContent,selector:"ion-content",inputs:["color","fixedSlotPlacement","forceOverscroll","fullscreen","scrollEvents","scrollX","scrollY"]},{kind:"component",type:i1.IonFooter,selector:"ion-footer",inputs:["collapse","mode","translucent"]},{kind:"component",type:i1.IonHeader,selector:"ion-header",inputs:["collapse","mode","translucent"]},{kind:"component",type:i1.IonItem,selector:"ion-item",inputs:["button","color","detail","detailIcon","disabled","download","href","lines","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:i1.IonLabel,selector:"ion-label",inputs:["color","mode","position"]},{kind:"component",type:i1.IonTitle,selector:"ion-title",inputs:["color","size"]},{kind:"component",type:i1.IonToolbar,selector:"ion-toolbar",inputs:["color","mode"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ProfileConfirmModalComponent,decorators:[{type:Component,args:[{selector:"fm-profile-confirm-modal",template:'\n <ion-header>\n <ion-toolbar>\n <ion-title>绑定身份</ion-title>\n <ion-buttons slot="end">\n <ion-button (click)="dismiss()">取消</ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content class="ion-padding">\n <p>您确认绑定并切换至该身份吗?</p>\n <ion-item lines="none">\n <ion-label>\n <h3>姓名:{{ profile?.get("name") }}</h3>\n <p>帐套:{{ profile?.get("company")?.get("name") || profile?.get("company")?.get("title") }}</p>\n </ion-label>\n </ion-item>\n </ion-content>\n\n <ion-footer>\n <ion-toolbar>\n <ion-button expand="block" (click)="confirm()">确认绑定</ion-button>\n </ion-toolbar>\n </ion-footer>\n '}]}],ctorParameters:()=>[{type:i1.ModalController}],propDecorators:{profile:[{type:Input}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi91c2VyL3Byb2ZpbGUvcHJvZmlsZS1iaW5kL3Byb2ZpbGUtY29uZmlybS1tb2RhbC5jb21wb25lbnQubWpz`
10
+