cx-chat 0.0.1 → 0.0.3

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 (406) hide show
  1. package/dist/cx-chat.css +1 -0
  2. package/dist/cx-chat.es.js +97326 -0
  3. package/dist/cx-chat.umd.js +734 -0
  4. package/package.json +21 -1
  5. package/.cursor/rules/i18n-cn-gloss-comments.mdc +0 -31
  6. package/.cursor/rules/list-page-view-pageconfig.mdc +0 -32
  7. package/.cursor/rules/no-over-defensive-programming.mdc +0 -90
  8. package/.cursor/rules/requirement-description-for-agent.mdc +0 -33
  9. package/.cursor/rules/use-showToast-not-antd-message.mdc +0 -28
  10. package/.docker/Dockerfile +0 -7
  11. package/.env +0 -9
  12. package/.env.development +0 -7
  13. package/.env.production +0 -7
  14. package/.gitlab-ci/docker-build.yaml +0 -28
  15. package/.gitlab-ci/k8s-deploy-dev-master.yaml +0 -42
  16. package/.gitlab-ci/npm-build.yaml +0 -17
  17. package/.gitlab-ci.yml +0 -8
  18. package/.k8s/0-namespace.yaml +0 -6
  19. package/.k8s/1-configmap-web.yaml +0 -7
  20. package/.k8s/1-nginx-conf-dev.yaml +0 -110
  21. package/.k8s/2-deployment.yaml +0 -27
  22. package/.k8s/3-service.yaml +0 -16
  23. package/.k8s/4-ingress-dev.yaml +0 -30
  24. package/.lingma/rules/use-showToast-not-antd-message.md +0 -34
  25. package/.nginx/nginx.conf +0 -52
  26. package/.prettierrc +0 -9
  27. package/eslint.config.js +0 -32
  28. package/index.html +0 -13
  29. package/postcss.config.js +0 -6
  30. package/src/App.tsx +0 -96
  31. package/src/_doc/0.docs-overview.md +0 -28
  32. package/src/_doc/cx-ui/0.docs-overview.md +0 -30
  33. package/src/_doc/cx-ui/comp.1.cx-ui-overview.md +0 -82
  34. package/src/_doc/cx-ui/comp.2.cx-modal.md +0 -82
  35. package/src/_doc/cx-ui/comp.3.cx-button.md +0 -89
  36. package/src/_doc/cx-ui/comp.4.cx-form.md +0 -72
  37. package/src/_doc/cx-ui/comp.5.cx-fields.md +0 -76
  38. package/src/_doc/cx-ui/comp.6.cx-tag.md +0 -57
  39. package/src/_doc/cx-ui/comp.7.cx-empty-state.md +0 -29
  40. package/src/_doc/meta/0.docs-overview.md +0 -24
  41. package/src/_doc/meta/comp.1.enum-runtime.md +0 -33
  42. package/src/_doc/meta/comp.2.dict-runtime.md +0 -39
  43. package/src/_doc/router/0.docs-overview.md +0 -14
  44. package/src/_doc/router/guide.1.menu-component-config.md +0 -181
  45. package/src/_doc/router/guide.2.router-auto-registration.md +0 -114
  46. package/src/_doc/table-view/0.docs-overview.md +0 -30
  47. package/src/_doc/table-view/comp.1.table-view.md +0 -542
  48. package/src/_doc/table-view/props.1.create-table-view-config.md +0 -193
  49. package/src/_doc/table-view/props.2.table-view-search-fields.md +0 -106
  50. package/src/api/_mock/README.md +0 -340
  51. package/src/api/_mock/api.ts +0 -1642
  52. package/src/api/_mock/bundle-shim.ts +0 -16
  53. package/src/api/_mock/handler-shim.ts +0 -6
  54. package/src/api/_mock/handler.ts +0 -458
  55. package/src/api/_mock/index.ts +0 -711
  56. package/src/api/_mock/interceptor.ts +0 -15
  57. package/src/api/_mock/mod.ts +0 -12
  58. package/src/api/_mock/utils.ts +0 -65
  59. package/src/api/base/memory.js +0 -24
  60. package/src/api/chat.js +0 -210
  61. package/src/api/common/auth.js +0 -70
  62. package/src/api/menus/business-rules.js +0 -76
  63. package/src/api/menus/feedback.js +0 -102
  64. package/src/api/menus/knowledge.js +0 -159
  65. package/src/api/menus/model-metadata/manage.js +0 -70
  66. package/src/api/menus/model-metadata/role.js +0 -50
  67. package/src/api/menus/model-metadata/training-detail-mock-data.js +0 -569
  68. package/src/api/menus/model-metadata/training.js +0 -28
  69. package/src/api/menus/skill.js +0 -40
  70. package/src/api/system/agent-config.js +0 -16
  71. package/src/api/system/department.js +0 -94
  72. package/src/api/system/dict.js +0 -86
  73. package/src/api/system/menu.js +0 -37
  74. package/src/api/system/permission.js +0 -26
  75. package/src/api/system/role.js +0 -34
  76. package/src/api/system/sys-config.js +0 -16
  77. package/src/api/system/sys-log.js +0 -17
  78. package/src/api/system/user.js +0 -75
  79. package/src/api/upload.js +0 -39
  80. package/src/assets/react.svg +0 -1
  81. package/src/components/auth/current-user-avatar.tsx +0 -77
  82. package/src/components/common/code-view.tsx +0 -149
  83. package/src/components/common/detail-link.tsx +0 -67
  84. package/src/components/common/error-boundary.tsx +0 -98
  85. package/src/components/common/language-switcher.tsx +0 -91
  86. package/src/components/common/lite-table/index.tsx +0 -135
  87. package/src/components/common/md-editor.tsx +0 -126
  88. package/src/components/common/modal/confirm-dialog.tsx +0 -113
  89. package/src/components/common/modal/dep-user-select-multi.tsx +0 -324
  90. package/src/components/common/modal/dep-user-select.tsx +0 -249
  91. package/src/components/common/modal/user-select-multi.tsx +0 -266
  92. package/src/components/common/pagination.tsx +0 -472
  93. package/src/components/common/path.tsx +0 -175
  94. package/src/components/common/system-logo-mark.tsx +0 -48
  95. package/src/components/cx-ui/button/index.less +0 -208
  96. package/src/components/cx-ui/button/index.tsx +0 -611
  97. package/src/components/cx-ui/checkbox/index.tsx +0 -78
  98. package/src/components/cx-ui/date-picker/index.less +0 -17
  99. package/src/components/cx-ui/date-picker/index.tsx +0 -193
  100. package/src/components/cx-ui/drawer/index.tsx +0 -47
  101. package/src/components/cx-ui/empty-state/index.tsx +0 -20
  102. package/src/components/cx-ui/floating-shell/CxFloatingShell.tsx +0 -89
  103. package/src/components/cx-ui/floating-shell/cx-floating-shell.less +0 -283
  104. package/src/components/cx-ui/floating-shell/has-floating-value.ts +0 -41
  105. package/src/components/cx-ui/form/CxForm.tsx +0 -15
  106. package/src/components/cx-ui/form/index.tsx +0 -20
  107. package/src/components/cx-ui/form-item/index.less +0 -26
  108. package/src/components/cx-ui/form-item/index.tsx +0 -36
  109. package/src/components/cx-ui/index.ts +0 -70
  110. package/src/components/cx-ui/input/auto-complete.tsx +0 -134
  111. package/src/components/cx-ui/input/index.tsx +0 -259
  112. package/src/components/cx-ui/input-number/index.jsx +0 -66
  113. package/src/components/cx-ui/modal/index.jsx +0 -212
  114. package/src/components/cx-ui/modal/index.less +0 -144
  115. package/src/components/cx-ui/modal/useCxModal.ts +0 -125
  116. package/src/components/cx-ui/multi-select/index.jsx +0 -74
  117. package/src/components/cx-ui/multi-select/index.less +0 -40
  118. package/src/components/cx-ui/multi-select/index2.tsx +0 -361
  119. package/src/components/cx-ui/radio/index.tsx +0 -33
  120. package/src/components/cx-ui/range-picker/index.less +0 -65
  121. package/src/components/cx-ui/range-picker/index.tsx +0 -219
  122. package/src/components/cx-ui/select/index.less +0 -34
  123. package/src/components/cx-ui/select/index.tsx +0 -196
  124. package/src/components/cx-ui/skeleton/index.tsx +0 -12
  125. package/src/components/cx-ui/steps/index.tsx +0 -14
  126. package/src/components/cx-ui/styles/_tokens.less +0 -79
  127. package/src/components/cx-ui/styles/index.less +0 -246
  128. package/src/components/cx-ui/switch/index.less +0 -106
  129. package/src/components/cx-ui/switch/index.tsx +0 -120
  130. package/src/components/cx-ui/table/index.less +0 -160
  131. package/src/components/cx-ui/table/index.tsx +0 -152
  132. package/src/components/cx-ui/tabs/index.less +0 -15
  133. package/src/components/cx-ui/tabs/index.tsx +0 -34
  134. package/src/components/cx-ui/tag/index.less +0 -51
  135. package/src/components/cx-ui/tag/index.tsx +0 -140
  136. package/src/components/cx-ui/timeline/index.tsx +0 -14
  137. package/src/components/cx-ui/tooltip/index.tsx +0 -67
  138. package/src/components/cx-ui/tree/index.tsx +0 -193
  139. package/src/components/cx-ui/tree-select/index.jsx +0 -91
  140. package/src/components/cx-ui/tree-select/index.less +0 -27
  141. package/src/components/cx-ui/upload-file/index.less +0 -223
  142. package/src/components/cx-ui/upload-file/index.tsx +0 -640
  143. package/src/components/cx-ui/upload-img/index.tsx +0 -291
  144. package/src/components/layout/components/Header.tsx +0 -216
  145. package/src/components/layout/components/Sidebar.tsx +0 -717
  146. package/src/components/layout/index.tsx +0 -95
  147. package/src/components/table-view/components/search-area.tsx +0 -411
  148. package/src/components/table-view/components/table-view-config.tsx +0 -528
  149. package/src/components/table-view/components/table-view.types.ts +0 -478
  150. package/src/components/table-view/components/tree-api-normalize.ts +0 -38
  151. package/src/components/table-view/components/tree-data-annotate.ts +0 -31
  152. package/src/components/table-view/components/tree-sidebar.tsx +0 -74
  153. package/src/components/table-view/index.tsx +0 -61
  154. package/src/components/table-view/list-page-view.tsx +0 -1049
  155. package/src/components/table-view/select-table-view.tsx +0 -1094
  156. package/src/components/table-view/styles/select-table-view.less +0 -51
  157. package/src/config/default-system-name.ts +0 -9
  158. package/src/config/system.ts +0 -165
  159. package/src/constants/countryCodes.ts +0 -3
  160. package/src/contexts/AuthContext.tsx +0 -256
  161. package/src/contexts/ChatContext.tsx +0 -839
  162. package/src/contexts/MenuContext.tsx +0 -62
  163. package/src/contexts/ToastContext.tsx +0 -181
  164. package/src/hooks/useCopyToClipboard.ts +0 -47
  165. package/src/hooks/useModalSubmit.ts +0 -104
  166. package/src/hooks/useRouter.ts +0 -240
  167. package/src/hooks/useStepForm.ts +0 -46
  168. package/src/hooks/useStickyHeader.ts +0 -42
  169. package/src/hooks/useThreadActions.ts +0 -105
  170. package/src/hooks/useUserPreferences.ts +0 -101
  171. package/src/http/axios.js +0 -372
  172. package/src/http/mock.interceptor.ts +0 -9
  173. package/src/http/obfuscationKey.ts +0 -41
  174. package/src/i18n.ts +0 -60
  175. package/src/index.js +0 -1
  176. package/src/index.less +0 -169
  177. package/src/locales/en/auth.ts +0 -70
  178. package/src/locales/en/base/memory.ts +0 -28
  179. package/src/locales/en/base/settings.ts +0 -41
  180. package/src/locales/en/chat.ts +0 -40
  181. package/src/locales/en/common.ts +0 -173
  182. package/src/locales/en/enum.ts +0 -27
  183. package/src/locales/en/menus/business-rules.ts +0 -48
  184. package/src/locales/en/menus/feedback.ts +0 -62
  185. package/src/locales/en/menus/knowledge.ts +0 -120
  186. package/src/locales/en/menus/model-metadata/index.ts +0 -10
  187. package/src/locales/en/menus/model-metadata/manage.ts +0 -151
  188. package/src/locales/en/menus/model-metadata/role.ts +0 -48
  189. package/src/locales/en/menus/model-metadata/training.ts +0 -65
  190. package/src/locales/en/menus/skill.ts +0 -34
  191. package/src/locales/en/system/agent-config.ts +0 -34
  192. package/src/locales/en/system/department.ts +0 -68
  193. package/src/locales/en/system/dict.ts +0 -44
  194. package/src/locales/en/system/menu.ts +0 -45
  195. package/src/locales/en/system/permission.ts +0 -89
  196. package/src/locales/en/system/role.ts +0 -25
  197. package/src/locales/en/system/sys-config.ts +0 -33
  198. package/src/locales/en/system/sys-log.ts +0 -38
  199. package/src/locales/en/system/user.ts +0 -113
  200. package/src/locales/en.ts +0 -68
  201. package/src/locales/zh/auth.ts +0 -70
  202. package/src/locales/zh/base/memory.ts +0 -29
  203. package/src/locales/zh/base/settings.ts +0 -41
  204. package/src/locales/zh/chat.ts +0 -47
  205. package/src/locales/zh/common.ts +0 -178
  206. package/src/locales/zh/enum.ts +0 -28
  207. package/src/locales/zh/menus/business-rules.ts +0 -47
  208. package/src/locales/zh/menus/feedback.ts +0 -62
  209. package/src/locales/zh/menus/knowledge.ts +0 -117
  210. package/src/locales/zh/menus/model-metadata/index.ts +0 -10
  211. package/src/locales/zh/menus/model-metadata/manage.ts +0 -151
  212. package/src/locales/zh/menus/model-metadata/role.ts +0 -47
  213. package/src/locales/zh/menus/model-metadata/training.ts +0 -64
  214. package/src/locales/zh/menus/skill.ts +0 -34
  215. package/src/locales/zh/system/agent-config.ts +0 -33
  216. package/src/locales/zh/system/department.ts +0 -69
  217. package/src/locales/zh/system/dict.ts +0 -44
  218. package/src/locales/zh/system/menu.ts +0 -47
  219. package/src/locales/zh/system/permission.ts +0 -94
  220. package/src/locales/zh/system/role.ts +0 -25
  221. package/src/locales/zh/system/sys-config.ts +0 -32
  222. package/src/locales/zh/system/sys-log.ts +0 -38
  223. package/src/locales/zh/system/user.ts +0 -114
  224. package/src/locales/zh.ts +0 -67
  225. package/src/main.tsx +0 -50
  226. package/src/meta/const/index.ts +0 -40
  227. package/src/meta/index-dict.ts +0 -56
  228. package/src/meta/index-enum.ts +0 -95
  229. package/src/meta/index.ts +0 -14
  230. package/src/meta/module/dict-data/runtime.ts +0 -199
  231. package/src/meta/module/dict-data/types.ts +0 -17
  232. package/src/meta/module/enum-data/runtime.ts +0 -75
  233. package/src/meta/module/enum-data/types.ts +0 -18
  234. package/src/router/index.tsx +0 -312
  235. package/src/styles/AntdThemeProvider.tsx +0 -40
  236. package/src/styles/antd-theme.ts +0 -20
  237. package/src/styles/global.less +0 -107
  238. package/src/styles/variable.less +0 -103
  239. package/src/types/feedback.ts +0 -43
  240. package/src/types/index.ts +0 -85
  241. package/src/types/menu.ts +0 -43
  242. package/src/utils/aesUtil.ts +0 -123
  243. package/src/utils/chatUtils.ts +0 -524
  244. package/src/utils/cn.ts +0 -6
  245. package/src/utils/crypto.ts +0 -164
  246. package/src/utils/date.ts +0 -72
  247. package/src/utils/file-icons.tsx +0 -79
  248. package/src/utils/index.ts +0 -168
  249. package/src/utils/markdown-math-plugins.ts +0 -21
  250. package/src/utils/menuI18n.ts +0 -305
  251. package/src/utils/menuRouteRegistry.ts +0 -78
  252. package/src/utils/permission-crud.ts +0 -147
  253. package/src/utils/routeConfig.ts +0 -350
  254. package/src/utils/storage.ts +0 -135
  255. package/src/utils/toastBridge.ts +0 -26
  256. package/src/utils/url.ts +0 -38
  257. package/src/utils/validation.ts +0 -16
  258. package/src/views/auth/auth-code/index.less +0 -169
  259. package/src/views/auth/auth-code/index.module.less +0 -174
  260. package/src/views/auth/auth-code/index.tsx +0 -233
  261. package/src/views/auth/login.tsx +0 -498
  262. package/src/views/auth/register.tsx +0 -388
  263. package/src/views/base/memory/index.tsx +0 -136
  264. package/src/views/base/memory/modal/detail-modal.tsx +0 -89
  265. package/src/views/base/memory/modal/submit-modal.tsx +0 -134
  266. package/src/views/base/settings/index.tsx +0 -657
  267. package/src/views/chat/chat.less +0 -323
  268. package/src/views/chat/components/chat-input.tsx +0 -298
  269. package/src/views/chat/components/header-thread-title.tsx +0 -210
  270. package/src/views/chat/components/message-list/content-answer.tsx +0 -100
  271. package/src/views/chat/components/message-list/content-question.tsx +0 -18
  272. package/src/views/chat/components/message-list/index.tsx +0 -520
  273. package/src/views/chat/components/message-list/message-item.tsx +0 -199
  274. package/src/views/chat/components/message-list/preparation-demo-items.ts +0 -147
  275. package/src/views/chat/components/message-list/preparation-steps.tsx +0 -506
  276. package/src/views/chat/components/message-list/suggestion-list.tsx +0 -36
  277. package/src/views/chat/components/message-list/thinking-process.tsx +0 -49
  278. package/src/views/chat/components/message-list/toolbar.tsx +0 -224
  279. package/src/views/chat/components/message-list/use-message-list-scroll.ts +0 -214
  280. package/src/views/chat/components/references-knowledge/context.tsx +0 -57
  281. package/src/views/chat/components/references-knowledge/index.ts +0 -9
  282. package/src/views/chat/components/references-knowledge/modal/knowledge-detail-drawer.tsx +0 -556
  283. package/src/views/chat/components/references-knowledge/modal/knowledge-doc-detail-drawer.tsx +0 -529
  284. package/src/views/chat/components/references-knowledge/panel.tsx +0 -115
  285. package/src/views/chat/hooks/use-chat-common.ts +0 -19
  286. package/src/views/chat/index-session.tsx +0 -647
  287. package/src/views/chat/index.tsx +0 -127
  288. package/src/views/page-error/401.tsx +0 -56
  289. package/src/views/page-error/404.tsx +0 -56
  290. package/src/views/page-menus/business-rules/index.tsx +0 -376
  291. package/src/views/page-menus/business-rules/modal/detail-modal.tsx +0 -186
  292. package/src/views/page-menus/business-rules/modal/scope-modal.tsx +0 -272
  293. package/src/views/page-menus/business-rules/modal/submit-modal.tsx +0 -142
  294. package/src/views/page-menus/feedback/components/feedback-dataset-list.tsx +0 -471
  295. package/src/views/page-menus/feedback/index.tsx +0 -166
  296. package/src/views/page-menus/feedback/modal/export-feedback-modal.tsx +0 -367
  297. package/src/views/page-menus/knowledge/components/doc-editor-by-type.tsx +0 -32
  298. package/src/views/page-menus/knowledge/components/doc-editor-type-file.tsx +0 -330
  299. package/src/views/page-menus/knowledge/detail.tsx +0 -600
  300. package/src/views/page-menus/knowledge/index.tsx +0 -337
  301. package/src/views/page-menus/knowledge/modal/detail-modal.tsx +0 -618
  302. package/src/views/page-menus/knowledge/modal/doc-detail-modal.tsx +0 -550
  303. package/src/views/page-menus/knowledge/modal/doc-parse.ts +0 -99
  304. package/src/views/page-menus/knowledge/modal/doc-submit-modal.tsx +0 -349
  305. package/src/views/page-menus/knowledge/modal/doc-type-picker-modal.tsx +0 -88
  306. package/src/views/page-menus/knowledge/modal/knowledge-user-select-modal.tsx +0 -283
  307. package/src/views/page-menus/knowledge/modal/submit-modal.tsx +0 -179
  308. package/src/views/page-menus/model-metadata/manage/components/metadata-detail-schema-tab.tsx +0 -114
  309. package/src/views/page-menus/model-metadata/manage/components/step1-basic-info.tsx +0 -232
  310. package/src/views/page-menus/model-metadata/manage/components/step2-schema.tsx +0 -316
  311. package/src/views/page-menus/model-metadata/manage/components/step3-permissions.tsx +0 -134
  312. package/src/views/page-menus/model-metadata/manage/components/step4-documents.tsx +0 -134
  313. package/src/views/page-menus/model-metadata/manage/components/step5-example-sql.tsx +0 -101
  314. package/src/views/page-menus/model-metadata/manage/components/submit-add.tsx +0 -338
  315. package/src/views/page-menus/model-metadata/manage/components/submit-edit.tsx +0 -276
  316. package/src/views/page-menus/model-metadata/manage/detail.tsx +0 -298
  317. package/src/views/page-menus/model-metadata/manage/hooks/model-metadata-submit-shared.ts +0 -113
  318. package/src/views/page-menus/model-metadata/manage/hooks/use-model-metadata-item-state.ts +0 -20
  319. package/src/views/page-menus/model-metadata/manage/index.tsx +0 -304
  320. package/src/views/page-menus/model-metadata/manage/modal/components/table-schema.ts +0 -374
  321. package/src/views/page-menus/model-metadata/manage/modal/components/use-table-detail-tabs.tsx +0 -151
  322. package/src/views/page-menus/model-metadata/manage/modal/components/use-table-submit-tabs.tsx +0 -423
  323. package/src/views/page-menus/model-metadata/manage/modal/detail-modal.tsx +0 -218
  324. package/src/views/page-menus/model-metadata/manage/modal/submit-modal.tsx +0 -261
  325. package/src/views/page-menus/model-metadata/manage/modal/table-detail-modal.tsx +0 -196
  326. package/src/views/page-menus/model-metadata/manage/modal/table-submit-modal.tsx +0 -229
  327. package/src/views/page-menus/model-metadata/manage/submit.tsx +0 -31
  328. package/src/views/page-menus/model-metadata/role/index.tsx +0 -207
  329. package/src/views/page-menus/model-metadata/role/modal/detail-modal.tsx +0 -97
  330. package/src/views/page-menus/model-metadata/role/modal/role-assign-users-modal.tsx +0 -254
  331. package/src/views/page-menus/model-metadata/role/modal/role-assign-users-panel.tsx +0 -393
  332. package/src/views/page-menus/model-metadata/role/modal/role-assign-users-utils.ts +0 -120
  333. package/src/views/page-menus/model-metadata/role/modal/role-permission-assign-panel.tsx +0 -698
  334. package/src/views/page-menus/model-metadata/role/modal/role-permission-modal.tsx +0 -237
  335. package/src/views/page-menus/model-metadata/role/modal/submit-modal.tsx +0 -135
  336. package/src/views/page-menus/model-metadata/training/components/detail-records/index.ts +0 -4
  337. package/src/views/page-menus/model-metadata/training/components/detail-records/node-card.tsx +0 -72
  338. package/src/views/page-menus/model-metadata/training/components/detail-records/summary-lines.ts +0 -196
  339. package/src/views/page-menus/model-metadata/training/components/detail-records/summary-list.tsx +0 -153
  340. package/src/views/page-menus/model-metadata/training/components/detail-records/timeline.tsx +0 -103
  341. package/src/views/page-menus/model-metadata/training/components/detail-records/types.ts +0 -82
  342. package/src/views/page-menus/model-metadata/training/detail.tsx +0 -159
  343. package/src/views/page-menus/model-metadata/training/index.tsx +0 -236
  344. package/src/views/page-menus/model-metadata/training/modal/update-detail-modal.tsx +0 -154
  345. package/src/views/page-menus/skill/index.tsx +0 -201
  346. package/src/views/page-menus/skill/modal/detail-modal.tsx +0 -156
  347. package/src/views/page-menus/skill/modal/submit-modal.tsx +0 -214
  348. package/src/views/page-system/agent-config/index.tsx +0 -370
  349. package/src/views/page-system/department/departmentFormShared.ts +0 -36
  350. package/src/views/page-system/department/index.tsx +0 -541
  351. package/src/views/page-system/department/modal/detail-modal.tsx +0 -94
  352. package/src/views/page-system/department/modal/member-role-modal.tsx +0 -128
  353. package/src/views/page-system/department/modal/submit-modal.tsx +0 -265
  354. package/src/views/page-system/dict/index.tsx +0 -440
  355. package/src/views/page-system/dict/modal/cate-submit-modal.tsx +0 -315
  356. package/src/views/page-system/dict/modal/submit-modal.tsx +0 -184
  357. package/src/views/page-system/logs/components/index.ts +0 -3
  358. package/src/views/page-system/logs/components/log-message-demo.tsx +0 -30
  359. package/src/views/page-system/logs/components/log-message-stream.ts +0 -184
  360. package/src/views/page-system/logs/components/message-list/content-answer.tsx +0 -100
  361. package/src/views/page-system/logs/components/message-list/content-question.tsx +0 -18
  362. package/src/views/page-system/logs/components/message-list/index.tsx +0 -515
  363. package/src/views/page-system/logs/components/message-list/message-item.tsx +0 -193
  364. package/src/views/page-system/logs/components/message-list/preparation-demo-items.ts +0 -147
  365. package/src/views/page-system/logs/components/message-list/preparation-steps.tsx +0 -506
  366. package/src/views/page-system/logs/components/message-list/suggestion-list.tsx +0 -36
  367. package/src/views/page-system/logs/components/message-list/thinking-process.tsx +0 -49
  368. package/src/views/page-system/logs/components/message-list/toolbar.tsx +0 -134
  369. package/src/views/page-system/logs/components/message-list/use-message-list-scroll.ts +0 -214
  370. package/src/views/page-system/logs/components/message-modal.tsx +0 -239
  371. package/src/views/page-system/logs/index.tsx +0 -132
  372. package/src/views/page-system/logs/modal/detail-modal.tsx +0 -157
  373. package/src/views/page-system/menu/components/menuFormShared.ts +0 -283
  374. package/src/views/page-system/menu/index.less +0 -12
  375. package/src/views/page-system/menu/index.tsx +0 -410
  376. package/src/views/page-system/menu/modal/icon-modal.less +0 -51
  377. package/src/views/page-system/menu/modal/icon-modal.tsx +0 -87
  378. package/src/views/page-system/menu/modal/submit-modal.tsx +0 -263
  379. package/src/views/page-system/permission/index.tsx +0 -562
  380. package/src/views/page-system/permission/modal/detail-modal.tsx +0 -179
  381. package/src/views/page-system/permission/modal/submit-modal.less +0 -146
  382. package/src/views/page-system/permission/modal/submit-modal.tsx +0 -650
  383. package/src/views/page-system/role/index.tsx +0 -163
  384. package/src/views/page-system/role/modal/detail-modal.tsx +0 -127
  385. package/src/views/page-system/role/modal/permission-assign-group-rules.ts +0 -86
  386. package/src/views/page-system/role/modal/permission-modal.tsx +0 -111
  387. package/src/views/page-system/role/modal/role-modal-shell-styles.ts +0 -21
  388. package/src/views/page-system/role/modal/role-permission-assign-panel.tsx +0 -916
  389. package/src/views/page-system/role/modal/role-permission-assign-shared.ts +0 -1047
  390. package/src/views/page-system/role/modal/submit-modal.tsx +0 -193
  391. package/src/views/page-system/sys-config/index.tsx +0 -294
  392. package/src/views/page-system/user/components/user-role-column.tsx +0 -87
  393. package/src/views/page-system/user/index.tsx +0 -439
  394. package/src/views/page-system/user/modal/assign-roles-modal.tsx +0 -389
  395. package/src/views/page-system/user/modal/detail-modal.tsx +0 -72
  396. package/src/views/page-system/user/modal/modal-style/submit-modal.less +0 -40
  397. package/src/views/page-system/user/modal/submit-modal.less +0 -40
  398. package/src/views/page-system/user/modal/submit-modal.tsx +0 -287
  399. package/src/views/page-system/user/userFormShared.ts +0 -51
  400. package/tailwind.config.js +0 -17
  401. package/tsconfig.app.json +0 -48
  402. package/tsconfig.json +0 -11
  403. package/tsconfig.node.json +0 -26
  404. package/vite.config.ts +0 -264
  405. /package/{public → dist}/favicon.ico +0 -0
  406. /package/{public → dist}/vite.svg +0 -0
@@ -1,542 +0,0 @@
1
- # table-view 模块架构说明
2
-
3
- > 对应源码:`src/components/table-view/`。列表整页壳组件为 **`ListPageView`**,弹层内选人表为 **`SelectTableView`**(入口另导出 `SelectTable` 等别名);配置工厂为 **`createListPageConfig`**(整页列表)与 **`createSelectTableConfig`**(弹层选人)。本文说明目录结构、职责划分与使用约定。
4
-
5
- ## 📁 文件结构
6
-
7
- ```
8
- src/components/table-view/
9
- ├─ index.tsx # 统一导出(默认 `ListPageView`、`createListPageConfig`、`createSelectTableConfig` 等)
10
- ├─ list-page-view.tsx # 列表页主组件(核心逻辑)
11
- ├─ select-table-view.tsx # 弹层内选人表
12
- └─ components/
13
- ├─ table-view.types.ts # 类型定义
14
- ├─ table-view-config.tsx # 配置工厂(`createListPageConfig` / `createSelectTableConfig`)
15
- ├─ search-area.tsx
16
- └─ tree-sidebar.tsx
17
- ```
18
-
19
- 轻量原生表格组件已迁移到:`src/components/common/lite-table/`(用于简单展示/工具方法复用)。
20
-
21
- 列表/选人表空状态(无数据、未选树等)使用 **`CxEmptyState`**(`import { CxEmptyState } from '@cx-ui'`),说明见 [`../cx-ui/comp.7.cx-empty-state.md`](../cx-ui/comp.7.cx-empty-state.md)。
22
-
23
- ---
24
-
25
- ## 🏗️ 架构设计理念
26
-
27
- ### 1. 配置驱动 + 组件组合
28
- - **80%** 的整页列表通过 `createListPageConfig` 快速生成;弹层选人场景用 `createSelectTableConfig` 与同一套请求/搜索组装逻辑
29
- - **20%** 的特殊需求通过自定义组件/插槽实现
30
-
31
- ### 2. 职责分离
32
- - **ListPageView**:带顶栏的整页列表(标题、树、搜索、表格、分页)
33
- - **SelectTableView**:弹层/嵌入场景的搜索 + 表格(可选树),与同一套 `pageConfig` 数据流一致
34
- - **子组件**(`components/` 内):树、搜索区、纯表格等可复用块
35
- - **页面**:只负责业务配置与对应工厂入参(`createListPageConfig` / `createSelectTableConfig`)、少量插槽
36
-
37
- ### 3. 组件自治
38
- - Modal 等子组件自己管理显示/隐藏状态
39
- - ListPageView 只通过 `ref` 触发,不管理细节
40
-
41
- ### 4. Hooks 规范
42
- - 每个组件内部独立调用 `useTranslation` 等 hooks
43
- - 不通过 props 传递 hooks(如 `t` 函数)
44
-
45
- ---
46
-
47
- ## 📋 核心接口
48
-
49
- 所有类型从 `@components/table-view` 导入:
50
-
51
- ```typescript
52
- import type {
53
- PageConfig, // 页面配置(核心)
54
- ListPageViewProps, // 列表页组件 props
55
- SearchField, // 搜索字段配置
56
- TreeConfig, // 树形配置
57
- ListRenderContext, // 列表渲染上下文
58
- TreeContext, // 树形上下文
59
- } from '@components/table-view'
60
- ```
61
-
62
- ---
63
-
64
- ## 🔧 使用示例
65
-
66
- ### 示例 1:标准 CRUD 页面(角色管理)
67
-
68
- ```tsx
69
- import ListPageView, { createListPageConfig } from '@components/table-view'
70
- import { getRoleListAPI, deleteRoleAPI } from '@api/system/role'
71
- import SubmitModal from './modal/submit-modal'
72
- import DetailModal from './modal/detail-modal'
73
-
74
- const useListPageConfig = createListPageConfig({
75
- tableAPI: getRoleListAPI,
76
- deleteAPI: deleteRoleAPI,
77
- pageInfo: {
78
- title: 'p_system.role.page_title',
79
- subTitle: 'p_system.role.page_subtitle',
80
- },
81
- searchFields: [
82
- {
83
- prop: 'searchQ',
84
- label: 'p_system.role.name',
85
- type: 'input',
86
- placeholder: 'p_system.role.search_placeholder',
87
- },
88
- ],
89
- columns: [], // 在组件中动态定义
90
- table: {
91
- showSelection: true,
92
- operationWidth: 250,
93
- },
94
- submitAction: {
95
- permission: 'role:create',
96
- submitType: 'modal',
97
- labelKey: 'p_system.role.add',
98
- },
99
- detailAction: {
100
- detailType: 'modal',
101
- labelKey: 'p_system.role.detail_title',
102
- },
103
- deleteConfirm: {
104
- title: 'p_system.role.delete_confirm_title',
105
- content: 'p_system.role.delete_confirm_content',
106
- },
107
- })
108
-
109
- function RolePage() {
110
- const pageConfig = useListPageConfig()
111
-
112
- // 动态定义 columns
113
- pageConfig.columns = useMemo(() => [
114
- {
115
- title: 'p_system.role.name',
116
- dataIndex: 'name',
117
- key: 'name',
118
- },
119
- // ... 其他列
120
- ], [])
121
-
122
- return (
123
- <ListPageView
124
- pageConfig={pageConfig}
125
- submitModalComponent={SubmitModal}
126
- detailModalComponent={DetailModal}
127
- />
128
- )
129
- }
130
- ```
131
-
132
- ---
133
-
134
- ### 示例 2:带树形选择器的页面(部门管理)
135
-
136
- ```tsx
137
- const useListPageConfig = createListPageConfig({
138
- // 列表:根据 deptId 分页查询成员
139
- tableAPI: async ({ page, size, sort, order, deptId }) => {
140
- if (!deptId) return { data: { items: [], total: 0 }, total: 0 }
141
- // 实际请求由 getDepartmentMembersAPI 消费 ListPageView 组装的整包 params(含 page/size/sort/order)
142
- const res = await getDepartmentMembersAPI({ page, size, sort, order, deptId })
143
- return { data: res.data, total: res.data?.total || 0 }
144
- },
145
- // 树:获取部门树
146
- treeAPI: async () => {
147
- const res = await getDepartmentTreeAPI()
148
- return res.data || []
149
- },
150
- tree: {
151
- title: 'department.title',
152
- fieldNames: {
153
- id: 'id',
154
- label: 'name',
155
- children: 'children',
156
- },
157
- searchField: 'deptId', // 选择树节点后,自动搜索的字段
158
- autoSearch: true, // 选择后是否自动刷新列表
159
- unselectText: 'department.unselect_tree_hint',
160
- // defaultSelectRoot 默认 true;部门管理常设 false(不自动选根,须点部门)
161
- // fetchTableOnMount 默认等价 false:有树时挂载不拉表;须 true 时才首屏拉表,见下文
162
- },
163
- // ... 其他配置
164
- })
165
-
166
- function DepartmentPage() {
167
- const pageConfig = useListPageConfig()
168
-
169
- return (
170
- <ListPageView
171
- pageConfig={pageConfig}
172
- tableActions={({ tree }) => {
173
- // 树形上下文:tree.selectedNode, tree.selectedKey
174
- if (!tree?.selectedNode) return null
175
-
176
- return (
177
- <div>
178
- <h2>{tree.selectedNode.name}</h2>
179
- {/* 自定义操作按钮 */}
180
- </div>
181
- )
182
- }}
183
- />
184
- )
185
- }
186
- ```
187
-
188
- ---
189
-
190
- ## 🌳 左侧树与表格:`defaultSelectRoot` 与 `fetchTableOnMount`
191
-
192
- 当页面配置了 `treeAPI` 时,列表常依赖树上的筛选字段(如 `deptId`)。**两件事分开配置**,避免「一个布尔既管选根又管拉表」语义冲突:
193
-
194
- | 配置项 | 职责 |
195
- |--------|------|
196
- | **`defaultSelectRoot`** | 仅控制树 `treeData` 就绪后是否**自动选中第一条根**(与手动点树走同一套 `handleTreeSelect`)。默认 `true`(`TABLE_VIEW_TREE_DEFAULTS`)。设为 `false` 时不自动选根(如部门管理须手动点部门)。 |
197
- | **`fetchTableOnMount`** | 仅控制**挂载时**是否在配置工厂返回的 hook 内立刻调 `fetchTableData`。有左侧树时**默认为不拉**(未写或不为 `true` 即不在挂载拉表)。**仅当**设 `tree.fetchTableOnMount: true` 时,有树也会在首屏拉表。 |
198
-
199
- **树节点选中后是否拉表**:由 **`tree.autoSearch`**(及 `handleTreeSelect` 内 `patchSearchAndRefresh` / `handleSearch`)决定,与 `fetchTableOnMount` **无关**。不应出现「配置了不在挂载拉表却希望点树也不拉表」这类与列表页职责相悖的组合;若业务真要「点树只改 UI 不查表」,应关 `autoSearch` 并自行在 `onSelect` 里控制,而不是用 `fetchTableOnMount`。
200
-
201
- ### 常见组合
202
-
203
- | 场景 | `defaultSelectRoot` | `fetchTableOnMount` | 效果概要 |
204
- |------|---------------------|---------------------|----------|
205
- | 通用「树+表」、须节点 ID 才能查 | 默认 `true` | 默认(不写) | 挂载不拉表 → 自动选根 → 按 `autoSearch` 拉表 |
206
- | **部门管理**(须选手动部门、未选不查人) | `false` | 默认(不写) | 挂载不拉表、不自动选根 → 用户点部门后 `autoSearch` 拉表 |
207
- | 有树但接口允许无筛选首屏也要数据 | 自定 | `true` | 挂载即拉表(仍可与自动选根并存,按业务避免重复请求) |
208
-
209
- ### 配置示例(部门管理,与现有一致)
210
-
211
- ```typescript
212
- const useListPageConfig = createListPageConfig({
213
- tableAPI: getDepartmentUsersAPI,
214
- treeAPI: getDepartmentTreeAPI,
215
- tree: { defaultSelectRoot: false },
216
- // 不写 fetchTableOnMount → 有树时挂载不拉表;点选部门后由 autoSearch 拉成员
217
- })
218
- ```
219
-
220
- ### 相关源码
221
-
222
- - `components/table-view.types.ts`:`TreeConfig.defaultSelectRoot`、`fetchTableOnMount`、`TABLE_VIEW_TREE_DEFAULTS`
223
- - `components/table-view-config.tsx`:首次 `useEffect` 仅在「无树」或 `fetchTableOnMount === true` 时 `fetchTableData`
224
- - `list-page-view.tsx`:`defaultSelectRoot !== false` 时树就绪后自动 `handleTreeSelect(第一条根)`
225
-
226
- ---
227
-
228
- ### 示例 3:完全自定义列表(反馈管理)
229
-
230
- ```tsx
231
- function FeedbackPage() {
232
- const pageConfig = useListPageConfig()
233
-
234
- return (
235
- <ListPageView
236
- pageConfig={pageConfig}
237
- headerActions={
238
- // 自定义头部操作
239
- <>
240
- <button onClick={() => setExportOpen(true)}>导出</button>
241
- {/* 状态筛选按钮 */}
242
- </>
243
- }
244
- renderList={(ctx) => (
245
- // 完全自定义列表渲染
246
- <FeedbackDatasetList
247
- pageConfig={pageConfig}
248
- tableData={ctx.tableData}
249
- loading={pageConfig.loading}
250
- />
251
- )}
252
- />
253
- )
254
- }
255
- ```
256
-
257
- ---
258
-
259
- ## ⚙️ PageConfig 配置项详解
260
-
261
- ### API 配置
262
-
263
- ```typescript
264
- // 扁平化设计,直接在根级别定义
265
- tableAPI: (params: any) => Promise<any> // 表格数据 API(可选)
266
- deleteAPI?: (id: string | number) => Promise<void> // 删除 API(可选)
267
- treeAPI?: () => Promise<any[]> // 树形数据 API(可选)
268
- ```
269
-
270
- ### 页面基本信息
271
-
272
- ```typescript
273
- pageInfo: {
274
- /** 页面标题(国际化 key) */
275
- title: string
276
-
277
- /** 副标题(国际化 key) */
278
- subTitle?: string
279
-
280
- /** 列表标题(显示在搜索区上方) */
281
- listTitle?: string
282
- }
283
- ```
284
-
285
- ### 分页配置
286
-
287
- ```typescript
288
- pagination: {
289
- page: number // 当前页码,从 1 开始(与请求参数 `page` 一致)
290
- pageSize: number // 每页数量(请求里字段名为 `size`)
291
- total: number // 总数
292
- }
293
-
294
- // 可选:覆盖底部分页「每页条数」下拉;默认 [10, 20, 50, 100, 200, 500, 1000]
295
- pageSizeOptions?: number[]
296
-
297
- // 可选:列表默认排序;默认 sort=createTime、order=desc
298
- listQuery?: { sort?: string; order?: 'asc' | 'desc' }
299
- ```
300
-
301
- `tableAPI` 收到的分页与排序字段为:`page`(≥1)、`size`、`sort`、`order`,其余为搜索区与树联动字段。
302
-
303
- ### 搜索表单配置
304
-
305
- ```typescript
306
- searchFields?: Array<{
307
- prop: string // 字段名(必填)
308
- label: string // 标签(必填)
309
- type?: 'input' | 'select' | 'date' // 类型,默认为 'input'
310
- placeholder?: string // 占位符
311
- clearable?: boolean // 是否可清空,默认为 true
312
- options?: Array<{ label: string; value: any }> // select 选项
313
- multiple?: boolean // select 是否多选
314
- format?: string // date 格式化
315
- }>
316
- ```
317
-
318
- ### 表格列配置
319
-
320
- ```typescript
321
- columns: ColumnsType<any>
322
- ```
323
-
324
- ### 表格行为配置
325
-
326
- ```typescript
327
- table?: {
328
- showSelection?: boolean // 是否显示多选框
329
- showPagination?: boolean // 是否显示分页
330
- showBatchDelete?: boolean // 是否显示批量删除
331
- operationWidth?: number // 操作列宽度
332
- }
333
- ```
334
-
335
- ### 新增/编辑操作配置
336
-
337
- ```typescript
338
- submitAction?: {
339
- permission: string // 权限标识
340
- submitType: 'modal' | 'page' // 提交方式
341
- labelKey: string // 按钮文案(国际化 key)
342
- }
343
- ```
344
-
345
- ### 详情操作配置
346
-
347
- ```typescript
348
- detailAction?: {
349
- permission: string
350
- detailType: 'modal' | 'page'
351
- labelKey: string
352
- }
353
- ```
354
-
355
- ### 删除确认弹窗配置
356
-
357
- ```typescript
358
- deleteConfirm?: {
359
- title: string
360
- content: string
361
- okText: string
362
- cancelText: string
363
- }
364
- ```
365
-
366
- ### 回调函数(可选,用于完全接管)
367
-
368
- ```typescript
369
- onAdd?: (payload: { type: 'add'; config?: any }) => void
370
- onEdit?: (payload: { type: 'edit'; record: any; config?: any }) => void
371
- onDetail?: (payload: { type: 'detail'; record: any; config?: any }) => void
372
-
373
- // 数据刷新方法(由 `createListPageConfig` / `createSelectTableConfig` 返回的 hook 自动提供)
374
- fetchTableData?: () => Promise<void>
375
- handleSearch?: () => void
376
- handleReset?: () => void
377
- patchSearchAndRefresh?: (patch: Record<string, unknown>) => void
378
-
379
- // 列表工厂可选扩展(见 props.1.create-table-view-config.md)
380
- afterGetPageData?: () => void | Promise<void>
381
- afterDelete?: (record: any) => void | Promise<void>
382
- afterStatusChange?: (record: any, nextStatus: number) => void | Promise<void>
383
- ```
384
-
385
- ---
386
-
387
- ## 🎯 Modal 组件规范
388
-
389
- ### ✅ 正确做法
390
-
391
- 使用 `forwardRef` + `useImperativeHandle` 模式:
392
-
393
- ```tsx
394
- import React, { forwardRef, useImperativeHandle, useState } from 'react'
395
- import { CxModal } from '@cx-ui'
396
-
397
- const RoleModal = forwardRef((props, ref) => {
398
- const [isOpen, setIsOpen] = useState(false)
399
- const [formData, setFormData] = useState({})
400
-
401
- useImperativeHandle(ref, () => ({
402
- open: (payload = {}) => {
403
- // 初始化数据
404
- setIsOpen(true)
405
- },
406
- close: () => {
407
- setIsOpen(false)
408
- },
409
- }))
410
-
411
- const handleOk = async () => {
412
- // 验证 → 提交 → 调用父组件 onOk → 关闭
413
- await props.onOk?.(formData)
414
- close()
415
- }
416
-
417
- return (
418
- <CxModal
419
- isOpen={isOpen}
420
- onClose={close}
421
- onOk={handleOk}
422
- >
423
- {/* 表单内容 */}
424
- </CxModal>
425
- )
426
- })
427
- ```
428
-
429
- ### ❌ 错误做法
430
-
431
- - ❌ 在父组件用 `useState` 控制 Modal 开关
432
- - ❌ Modal 没有暴露 `open/close` 方法
433
- - ❌ 父组件直接传递 `open/onClose` props
434
-
435
- ---
436
-
437
- ## 🔄 数据流
438
-
439
- ### 新增流程
440
-
441
- 1. 用户点击"新增"按钮
442
- 2. `ListPageView` 内新增流程 → `submitModalRef.current?.open({ opeType: 'add' })`
443
- 3. Modal 组件内部设置 `isOpen = true`
444
- 4. 用户填写表单并提交
445
- 5. Modal 内部验证 → 调用 `props.onOk(values)`
446
- 6. ListPageView 收到 `onOk` 回调 → 调用 `fetchTableData()` 刷新列表;若配置了 `afterGetPageData`,在拉表成功后会继续执行该钩子
447
- 7. Modal 关闭
448
-
449
- ### 删除流程
450
-
451
- 1. 用户点击删除按钮
452
- 2. `pageConfig.onDelete(record)`(由 ListPageView 注入)→ 打开确认弹窗
453
- 3. 用户确认 → `handleConfirmDelete()`
454
- 4. 调用 `API.delete(id)`
455
- 5. 刷新列表 → `fetchTableData()`
456
- 6. 关闭弹窗
457
-
458
- ### 树形选择流程
459
-
460
- 1. (默认)树数据加载完成后,若 `defaultSelectRoot !== false`,自动选中第一条根节点,后续步骤与手动点击一致
461
- 2. 用户点击树节点(或上一步自动选中)
462
- 3. `TreeSidebar` → `handleTreeSelect(key)`
463
- 4. ListPageView 将节点 ID 写入 `searchFormData` 中 `tree.searchField` 对应字段(如 `deptId`)
464
- 5. 在 `tree.autoSearch === true` 时调用 `patchSearchAndRefresh` / `handleSearch()` 刷新列表
465
- 6. 表格显示当前选中节点下的数据
466
-
467
- ---
468
-
469
- ## 📝 最佳实践
470
-
471
- ### 1. 优先使用配置
472
- - ✅ 能用配置解决的,不要写自定义代码
473
- - ✅ 保持代码一致性和可维护性
474
-
475
- ### 2. 按需扩展
476
- - ✅ 只有配置无法满足时,才使用 `onAdd/onEdit` 等回调
477
- - ✅ 尽量使用 `renderList/tableActions` 等插槽
478
-
479
- ### 3. Modal 自治
480
- - ✅ Modal 组件自己管理所有内部状态
481
- - ✅ 父组件只负责数据刷新
482
-
483
- ### 4. 类型安全
484
- - ✅ 所有配置都使用 TypeScript 类型
485
- - ✅ 从 `@components/table-view`(`components/table-view.types.ts`)导入类型
486
-
487
- ### 5. 国际化
488
- - ✅ 所有文案使用国际化 key
489
- - ✅ 组件内部调用 `useTranslation()`,不要通过 props 传递
490
-
491
- ---
492
-
493
- ## 🐛 常见问题
494
-
495
- ### Q1: Modal 不显示?
496
-
497
- **A:** 检查是否正确使用 `ref.current?.open()`,而不是试图用 props 控制
498
-
499
- ### Q2: 列表数据不刷新?
500
-
501
- **A:** 确保在 Modal 的 `onOk` 回调中调用了 `fetchTableData()`
502
-
503
- ### Q3: 树形选择后列表不更新?
504
-
505
- **A:** 检查 `tree.autoSearch` 是否为 true,或手动调用 `patchSearchAndRefresh()`
506
-
507
- ### Q6: 有左侧树时,一进页面就请求表格报错(如缺少 deptId)?
508
-
509
- **A:** 有树时默认**不会**在挂载拉表;自动选根或用户点树后再由 `autoSearch` 拉表。若仍出现首屏拉表,检查是否误设了 `tree.fetchTableOnMount: true`。需要「无筛选也首屏拉表」时显式 `fetchTableOnMount: true` 并保证接口语义正确。
510
-
511
- ### Q4: 自定义 columns 不生效?
512
-
513
- **A:** 确保在组件内使用 `useMemo` 动态赋值给 `pageConfig.columns`
514
-
515
- ### Q5: 搜索表单值变化但列表不刷新?
516
-
517
- **A:** 搜索表单的值不会自动触发刷新,需要点击"搜索"按钮或按回车
518
-
519
- ---
520
-
521
- ## 📚 相关文件
522
-
523
- - `src/components/table-view/components/table-view-config.tsx` - 配置工厂(`createListPageConfig`、`createSelectTableConfig`),由 `index.tsx` 统一再导出
524
- - `src/components/cx-ui/modal` - 模态框基础组件(CxModal);参数说明见 `src/_doc/cx-ui/comp.2.cx-modal.md`
525
- - `src/components/ui/Pagination.tsx` - 分页组件
526
- - `src/components/common/modal/confirm-dialog.tsx` - 确认对话框(列表删除等,`list-page-view` 使用;`ui/ConfirmDialog` 可作对照)
527
-
528
- ---
529
-
530
- ## 🎨 架构优势
531
-
532
- | 指标 | 优化前 | 优化后 | 改进 |
533
- |------|--------|--------|------|
534
- | **主文件行数** | 799 行 | 500 行 | **-37%** |
535
- | **最大文件** | 799 行 | 500 行 | **-37%** |
536
- | **文件数** | 1 个 | 6 个 | 模块化 |
537
- | **可读性** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | +67% |
538
- | **可维护性** | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | +20% |
539
-
540
- ---
541
-
542
- *最后更新:2026-04-17*