@microi.net/cli 5.8.4 → 5.8.6

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 (212) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.mcp.json +1 -1
  5. package/.workbuddy-plugin/marketplace.json +2 -2
  6. package/.workbuddy-plugin/plugin.json +1 -1
  7. package/LICENSE +21 -21
  8. package/README.md +71 -71
  9. package/assets/build-meta.json +7 -7
  10. package/assets/feature-matrix.json +138 -138
  11. package/assets/logo.svg +4 -4
  12. package/cordis.patch.yml +1 -1
  13. package/package.json +1 -1
  14. package/scripts/codex-marketplace.json +20 -20
  15. package/scripts/mcp-codex-stdio-adapter.js +189 -189
  16. package/scripts/mcp-server.js +5 -0
  17. package/scripts/mcp-trae-windows-launcher.cmd +21 -21
  18. package/scripts/microi-cli-mcp.js +7 -7
  19. package/scripts/microi-cli.js +67 -66
  20. package/scripts/microi-codex-broker.js +450 -450
  21. package/scripts/microi-codex-router.js +618 -582
  22. package/scripts/microi-skills.meta.json +384 -384
  23. package/skills/.microi-skills-version.json +2 -2
  24. package/skills/.progressive-disclosure-manifest.json +3566 -3566
  25. package/skills/README.md +287 -287
  26. package/skills/ai-engine/SKILL.md +269 -265
  27. package/skills/ai-engine/agents/openai.yaml +4 -4
  28. package/skills/ai-engine/references/ai-employees.md +48 -48
  29. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  30. package/skills/ai-platform-governance/SKILL.md +177 -177
  31. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  32. package/skills/app-store/SKILL.md +525 -525
  33. package/skills/app-store/agents/openai.yaml +4 -4
  34. package/skills/business-blueprint/SKILL.md +193 -193
  35. package/skills/datasource-engine/SKILL.md +93 -93
  36. package/skills/datasource-engine/agents/openai.yaml +4 -4
  37. package/skills/dos-orm/SKILL.md +97 -97
  38. package/skills/dos-orm/references/api-reference.md +229 -229
  39. package/skills/email-engine/SKILL.md +81 -81
  40. package/skills/email-engine/references/v8-email.md +34 -34
  41. package/skills/job-engine/SKILL.md +176 -176
  42. package/skills/job-engine/agents/openai.yaml +4 -4
  43. package/skills/message-notification/SKILL.md +156 -156
  44. package/skills/message-notification/agents/openai.yaml +5 -5
  45. package/skills/message-notification/references/contracts.md +102 -102
  46. package/skills/microi/SKILL.md +14 -14
  47. package/skills/microi-ai-app-auth.js +652 -652
  48. package/skills/microi-ai-application/SKILL.md +115 -115
  49. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  50. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  51. package/skills/microi-client-frontend/SKILL.md +244 -244
  52. package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -144
  53. package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +196 -196
  54. package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +167 -167
  55. package/skills/microi-codex/SKILL.md +102 -100
  56. package/skills/microi-codex-installer/SKILL.md +231 -227
  57. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  58. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  59. package/skills/microi-db-schema/SKILL.md +175 -175
  60. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  61. package/skills/microi-db-schema/references/core-tables.md +695 -695
  62. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  63. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  64. package/skills/microi-db-schema/references/schema.md +646 -646
  65. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  66. package/skills/microi-deployment/SKILL.md +221 -221
  67. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  68. package/skills/microi-docs-coverage/SKILL.md +133 -133
  69. package/skills/microi-docs-coverage/references/capability-map.md +91 -91
  70. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  71. package/skills/microi-form-engine/SKILL.md +333 -333
  72. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  73. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  74. package/skills/microi-form-layout/SKILL.md +205 -205
  75. package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -235
  76. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  77. package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +176 -176
  78. package/skills/microi-left-right-layout/SKILL.md +141 -141
  79. package/skills/microi-microservice/SKILL.md +326 -324
  80. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  81. package/skills/microi-mobile-app-quality/SKILL.md +185 -185
  82. package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +213 -213
  83. package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +128 -128
  84. package/skills/microi-solution-quotation/SKILL.md +78 -78
  85. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  86. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  87. package/skills/microi-sso/SKILL.md +92 -92
  88. package/skills/microi-sso/references/acceptance.md +49 -49
  89. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  90. package/skills/microi-sso/references/inbound.md +53 -53
  91. package/skills/microi-sso/references/outbound.md +39 -39
  92. package/skills/microi-system-delivery/SKILL.md +137 -137
  93. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +193 -193
  94. package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +217 -217
  95. package/skills/microi-ui/SKILL.md +192 -192
  96. package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
  97. package/skills/microi-uniapp-frontend/SKILL.md +193 -193
  98. package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -225
  99. package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -154
  100. package/skills/microi.v8.js +1921 -1921
  101. package/skills/module-engine/SKILL.md +255 -255
  102. package/skills/module-engine/references/module-config.md +204 -204
  103. package/skills/ocr-engine/SKILL.md +113 -113
  104. package/skills/ocr-engine/agents/openai.yaml +4 -4
  105. package/skills/page-engine/SKILL.md +206 -206
  106. package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
  107. package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -234
  108. package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -60
  109. package/skills/performance-testing/SKILL.md +221 -221
  110. package/skills/playwright-e2e/SKILL.md +196 -196
  111. package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -173
  112. package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -183
  113. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  114. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  115. package/skills/print-engine/SKILL.md +259 -259
  116. package/skills/production-readonly-audit/SKILL.md +41 -41
  117. package/skills/report-engine/SKILL.md +71 -71
  118. package/skills/report-engine/agents/openai.yaml +4 -4
  119. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  120. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  121. package/skills/scripts/sync-embedded-skills.mjs +46 -46
  122. package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
  123. package/skills/search-engine/SKILL.md +75 -75
  124. package/skills/search-engine/agents/openai.yaml +4 -4
  125. package/skills/spider-engine/SKILL.md +190 -190
  126. package/skills/system-observability/SKILL.md +248 -248
  127. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  128. package/skills/translate-engine/SKILL.md +140 -140
  129. package/skills/translate-engine/agents/openai.yaml +4 -4
  130. package/skills/ui-design/SKILL.md +223 -223
  131. package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
  132. package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
  133. package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
  134. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  135. package/skills/ui-design/references/design-pattern-library.md +184 -184
  136. package/skills/ui-design/references/mci-design-contract.md +163 -163
  137. package/skills/ui-design/references/motion-and-media.md +78 -78
  138. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  139. package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -218
  140. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  141. package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -235
  142. package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -152
  143. package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -238
  144. package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -194
  145. package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
  146. package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +142 -142
  147. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  148. package/skills/unity-integration/SKILL.md +171 -171
  149. package/skills/unity-integration/agents/openai.yaml +4 -4
  150. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  151. package/skills/unity-integration/references/sdk-api.md +82 -82
  152. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  153. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  154. package/skills/v8-api-config/SKILL.md +388 -388
  155. package/skills/v8-cache-pattern/SKILL.md +312 -312
  156. package/skills/v8-crud-api/SKILL.md +178 -178
  157. package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -226
  158. package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -49
  159. package/skills/v8-debugging/SKILL.md +284 -284
  160. package/skills/v8-explorer-tree/SKILL.md +228 -228
  161. package/skills/v8-export-import/SKILL.md +219 -219
  162. package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -211
  163. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  164. package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -42
  165. package/skills/v8-file-upload/SKILL.md +284 -284
  166. package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +263 -263
  167. package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +161 -161
  168. package/skills/v8-formengine-http/SKILL.md +238 -238
  169. package/skills/v8-frontend-events/SKILL.md +180 -180
  170. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  171. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  172. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  173. package/skills/v8-http-integration/SKILL.md +182 -182
  174. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  175. package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -44
  176. package/skills/v8-image-processing/SKILL.md +190 -190
  177. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  178. package/skills/v8-image-processing/references/api-reference.md +623 -623
  179. package/skills/v8-menu-buttons/SKILL.md +186 -186
  180. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +222 -222
  181. package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +228 -228
  182. package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -104
  183. package/skills/v8-mongodb/SKILL.md +200 -200
  184. package/skills/v8-mq-mqtt/SKILL.md +176 -176
  185. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  186. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  187. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  188. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  189. package/skills/v8-security/SKILL.md +210 -210
  190. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  191. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  192. package/skills/v8-sql-query/SKILL.md +302 -302
  193. package/skills/v8-table-event/SKILL.md +176 -176
  194. package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +216 -216
  195. package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -46
  196. package/skills/v8-tcp-integration/SKILL.md +147 -147
  197. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  198. package/skills/v8-template-engine/SKILL.md +167 -167
  199. package/skills/v8-utilities/SKILL.md +104 -104
  200. package/skills/v8-utilities/references/client-api-index.md +143 -143
  201. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  202. package/skills/v8-utilities/references/server-api-index.md +188 -188
  203. package/skills/v8-workflow/SKILL.md +252 -252
  204. package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -180
  205. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  206. package/skills/vision-engine/SKILL.md +160 -160
  207. package/skills/vision-engine/agents/openai.yaml +4 -4
  208. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  209. package/skills/workspace-conventions/SKILL.md +273 -270
  210. package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +209 -209
  211. package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +217 -217
  212. package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -27
@@ -1,144 +1,144 @@
1
- # microi-client-frontend 详细参考 1
2
-
3
- > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
-
5
- <!-- microi-progressive:chunk id=microi-client-frontend-005 sha256=189ca6438cd0fc58a5bf14bd13a3bad26a9254c766e4a6bed62ef2aeb1879e9d -->
6
- ## 3. 动态按钮系统
7
-
8
- 按钮配置来自 `sys_menu`:
9
-
10
- | 字段 | 渲染位置 |
11
- |------|----------|
12
- | `MoreBtns` | 列表行按钮/更多按钮 |
13
- | `FormBtns` | 表单右上角、移动端 FAB |
14
- | `BatchSelectMoreBtns` | 列表多选后批量按钮 |
15
- | `PageBtns` | 列表页顶部按钮 |
16
- | `PageTabs` | 列表页 Tab |
17
- | `ExportMoreBtns` | 导出下拉扩展 |
18
-
19
- `PageTabs.TargetSysMenuId` 是通用的跨模块页签协议。未配置时继续执行当前模块的页签 V8;配置其它 `sys_menu.Id` 时,`diy-table.vue` 在同一个组件实例内切换模块上下文,按目标 `sys_menu / diy_table / diy_field` 重载数据,同时保留入口路由、面包屑、顶部访问标签、宿主 Hero 和入口 PageTabs,URL 只更新 `Tab` 查询参数。入口模块是唯一 PageTabs 配置源,隐藏目标模块不得复制 PageTabs。不得为应用商城或其它单一模块在 schema/data mixin 中增加专用数据源分支。
20
-
21
- 按钮显隐链路:
22
-
23
- 1. `DiyCommon.ForConvertSysMenu()` 把 JSON 字符串转成数组并补默认值。
24
- 2. `HandlerBtns()` / `HandlerBtnsAsync()` 遍历按钮。
25
- 3. `LimitMoreBtn()` / `LimitMoreBtnAsync()` 构建前端 V8 上下文。
26
- 4. 执行 `btn.V8CodeShow`,支持两种写法:
27
-
28
- ```js
29
- return V8.Form.Status == '待审核';
30
- ```
31
-
32
- ```js
33
- V8.Result = V8.Form.Status == '待审核';
34
- ```
35
-
36
- 5. 点击时 `RunMoreBtn()` 执行 `btn.V8Code`。
37
-
38
- 修改按钮逻辑时必须同时检查:
39
-
40
- - `diy-form-full.vue`:表单 `FormBtns`。
41
- - `mixins/diy-table-actions.mixin.js`:列表按钮、PageBtns、BatchSelectMoreBtns、PageTabs 等。
42
- - `left-right/RightView.vue`、`left-right/RightForm.vue`:旧版左右布局兼容。
43
- - `src/utils/v8-button-visibility.js`:统一的 `V8CodeShow` 执行与布尔结果解析。
44
-
45
- ---
46
-
47
- <!-- /microi-progressive:chunk -->
48
- <!-- microi-progressive:chunk id=microi-client-frontend-006 sha256=b5d89b5a0b17ffb02579d4512b15468e52b599ddf4573afba85b9e5d3f9f5d49 -->
49
- ## 5. 路由与打开方式
50
-
51
- 登录首页支持“用户 > 系统 > 首个可访问菜单”的三级优先级:
52
-
53
- - 用户级首页保存到 `sys_user.DefaultIndexUrl`,系统级首页继续使用 `SysConfig.DefaultIndexUrl`;账号密码、Token 直达和 SSO 登录必须共用同一套跳转逻辑。
54
- - “个人设置”只能展示当前用户实际有权访问的动态路由,保存接口必须从 Token 绑定当前用户和 `OsClient`,不能接受前端传入任意用户 Id。
55
- - 路由保存前统一规范为站内绝对路由;拒绝外部 URL、协议相对 URL、反斜杠、登录页和控制字符。用户失权或菜单被删除后自动回退,不能造成登录循环或空白页。
56
- - `Id/CreateTime/UpdateTime/UserId/UserName/IsDeleted` 等审计列必须复用真实或合成的 `diy_field` 元数据,像普通列一样打开列头高级搜索;不要为审计列另写一套不可搜索的展示分支。
57
-
58
- `diy-form-full.vue` 支持三类形态:
59
-
60
- | 打开方式 | 特征 |
61
- |----------|------|
62
- | Dialog | `ShowFieldForm=true`,内部 `DiyForm` 使用 `ref="fieldForm"` |
63
- | Drawer | `ShowFieldFormDrawer=true`,`onDrawerOpened()` 中调用 `fieldForm.Init()` |
64
- | Page | 路由 `/diy/form-page/:TableId/:TableRowId?`,`IsPageMode=true`,内部 `fieldFormPage` 通过 props 自动初始化 |
65
-
66
- Page 模式要特别注意:
67
-
68
- - `SysMenuId` 可能来自 query `SysMenuId`、query `Id`、或 route meta。
69
- - `CallbackSetFormData` 到达后才能可靠评估 `FormBtns`,因为此时才有当前表单数据。
70
- - keep-alive 会触发 `activated/deactivated`,不要只在 `mounted` 里写一次性逻辑。
71
- - `diy-design.vue` 会复用同一个命名路由与 keep-alive 实例。必须以 `TableId + PageType` 作为表单实例 Key,并监听 `$route.fullPath`、在 `activated` 中同步路由上下文、清理旧表字段状态并重新加载;只依赖首次 `mounted` 会造成从列表跳转后白屏或显示上一张表。
72
-
73
- ### `/online-office` 匿名只读路由
74
-
75
- - 路由 `meta.anonymous=true` 只表示无需登录即可进入页面,不代表页面内的文件自动公开。组件仍必须校验文件边界。
76
- - 匿名公有存储场景只允许当前 `OsClient` 目录下的 `filePathName`;接口响应文件场景用 `fileUrl` 接收当前平台正式 `ApiBase`,或由同端口本地后端读取的 loopback `/apiengine/...`,并要求 URL 显式携带当前 `OsClient`。两种场景都拒绝私有文件、跨租户路径、路径穿越和任意第三方域名。
77
- - `fileUrl` 路径没有文件扩展名时必须同时传 `fileName` 或 `fileType`。组件先调用 `/api/HDFS/PrepareOfficePreviewFromUrl`,由后端严格校验当前平台、当前 `OsClient` 和单层 `/apiengine/{key}`,再把响应文件透明缓存到当前租户公有对象存储;OnlyOffice 使用返回的公网静态地址。开发环境 loopback 只允许同端口本地后端读取,不能简单替换 origin,也不能把该接口扩展成通用 URL 代理。
78
- - `canEdit` 不能直接作为授权结果。最终允许编辑必须同时满足有效登录态;匿名即使传 `canEdit=1` 也强制使用 OnlyOffice `mode:'view'` 和 `permissions.edit=false`。
79
- - 私有文件调用 `/apiengine/platform-private-file-url` 时传 `ForOfficePreview:true` 和权威资源上下文,让远程 OnlyOffice 使用租户公网 `ApiBase` 的审计代理地址,避免 `localhost` 导致“下载失败”。
80
- - `layout/index.vue` 仅在“路由要求隐藏外壳且当前无有效登录用户”时隐藏 Sidebar/Navbar/TagsView;登录用户打开同一路由仍保留正常系统布局。
81
- - 不要把匿名路由简单加入全局白名单后跳过组件鉴权;过期 Token 要清理,公有文件校验失败必须停止创建 OnlyOffice 配置。
82
-
83
- ### 在线微服务弹窗(OpenAppDialog)
84
-
85
- `V8.OpenAppDialog` 是 V8 定制页面的标准入口,宿主实现位于:
86
-
87
- | 文件 | 职责 |
88
- |------|------|
89
- | `views/micro-app/dialog.vue` | 按 `AppKey` 解析稳定入口 `/micro-app/{OsClient}/{AppKey}/index.html?v={Version}`;版本只用于缓存失效,不得写进入口路径。 |
90
- | `views/form-engine/mixins/diy-table-navigation.mixin.js` | 向列表、PageBtns、MoreBtns、BatchSelectMoreBtns 暴露 `OpenAppDialog`。 |
91
- | `views/form-engine/mixins/diy-form-navigation.mixin.js` | 向表单 V8 暴露同一套 `OpenAppDialog` 参数。 |
92
- | `views/form-engine/diy-table.vue`、`diy-form.vue` | 将方法挂到运行时 `V8` 对象并承载通用弹窗。 |
93
-
94
- 扩展或修复时必须保持表格与表单两条入口的参数一致:`AppKey`、`RoutePath/MicroRoute`、`Version`、`Title`、`TitleIcon`、`Width`、`OpenType`、`Data`、`OnSuccess`、`OnCancel`、`OnError`。
95
-
96
- - `Data` 映射为子应用的 `dialogData`,必须是普通业务数据;函数回调保留在宿主,不放进 micro-app data。
97
- - 宿主自动下发 `apiBase`、`osClient`、`token`、`appKey`、`version`、`microRoute`、`dialog:true` 和 `route`。
98
- - 子应用发送 `app-dialog:success` 或 `app-dialog:cancel` 后自动关闭;`app-dialog:error` 只触发错误回调,不自动关闭。
99
- - `OpenAppDialog` 用于发布后的在线微服务;`OpenDialog` 用于前端源码中预注册的 Vue 组件。
100
- - Token 通过 micro-app data 下发,禁止拼进加载 URL,避免日志、历史记录和代理链路泄露。
101
- - 新增参数或修改返回协议时,必须同步更新 `microi.doc/docs/doc/v8-engine/v8-client.md`、`v8-menu-buttons/SKILL.md` 和 `v8-frontend-events/SKILL.md`。
102
-
103
- ---
104
-
105
- ### 系统子菜单入口页(MenuChildrenGrid)
106
-
107
- `Microi.Client/src/views/system/menu-children-grid.vue` 是左侧父级菜单的落地入口页。修改此类页面时必须同时读取 `microi.skills/ui-design/SKILL.md` 的“PC 后台菜单宫格 / 入口页规范”。
108
-
109
- - 不要让宽屏通过纯 `auto-fill + 1fr` 一行挤出 10 个以上菜单;常规后台宽度推荐 6-8 个入口/行,并通过固定列宽、`max-width` 和 `justify-content:start` 控制密度。
110
- - 菜单卡片必须宽高一致,图标、菜单名称、子菜单统计要按固定槽位对齐;有无子菜单统计都不能导致标题位置上下漂移。
111
- - 子菜单统计应靠近菜单名称,间距约 4-6px;卡片内部必须保留足够 padding,不能让图标、标题或统计贴边。
112
- - 改完必须截图验收桌面宽屏和移动宽度,重点检查每行数量、图标/标题/统计对齐、文字溢出和横向滚动。
113
-
114
- ---
115
-
116
- <!-- /microi-progressive:chunk -->
117
- <!-- microi-progressive:chunk id=microi-client-frontend-007 sha256=573d988999f9721cf7efe7654c203342213728b4f1ce61a718b10815595ae894 -->
118
- ## 6. 修改前必查清单
119
-
120
- ### `diy-table` 嵌入分页条数
121
-
122
- - 定制页或界面引擎嵌入 `diy-table.vue` 时,可通过 `PageSizeList` props 追加分页条数,例如首页使用 `[10]`。
123
- - `PageSizeList` 必须与系统 `PageSizes`、菜单默认条数合并后转为正整数、去重并升序排列,不能覆盖系统已有候选值。
124
- - `sys_menu.DefaultPageSize` 明确配置时优先采用菜单值;未配置时默认采用最终候选列表中的最小值,保证紧凑嵌入页能稳定使用 10 条而不被全局默认值改回 15 条。
125
- - 界面引擎、工作台等移动端嵌入列表应传 `PropsEmbedded=true`:隐藏独立列表页的固定移动端返回栏和全局 FAB,同时让有权限的新增、PageBtns、批量操作继续在当前容器工具栏显示,避免按钮漂浮覆盖其它首页组件。
126
-
127
- 修改 `Microi.Client` 前,至少搜索:
128
-
129
- ```text
130
- 目标方法名 | 目标字段名 | V8CodeShow | SysMenuModel | CallbackSetFormData | HandlerBtns | RunMoreBtn
131
- ```
132
-
133
- 并确认:
134
-
135
- - 方法是否在 mixin 中,而不是当前 SFC。
136
- - PC/移动端是否有两套模板。
137
- - Page/Dialog/Drawer 是否都需要同样修复。
138
- - 旧版 `left-right` 是否仍需兼容。
139
- - 是否同时影响列表页按钮和表单按钮。
140
- - 是否需要更新 `microi.skills/v8-menu-buttons/SKILL.md` 或前端 V8 typings。
141
-
142
- ---
143
-
144
- <!-- /microi-progressive:chunk -->
1
+ # microi-client-frontend 详细参考 1
2
+
3
+ > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
+
5
+ <!-- microi-progressive:chunk id=microi-client-frontend-005 sha256=189ca6438cd0fc58a5bf14bd13a3bad26a9254c766e4a6bed62ef2aeb1879e9d -->
6
+ ## 3. 动态按钮系统
7
+
8
+ 按钮配置来自 `sys_menu`:
9
+
10
+ | 字段 | 渲染位置 |
11
+ |------|----------|
12
+ | `MoreBtns` | 列表行按钮/更多按钮 |
13
+ | `FormBtns` | 表单右上角、移动端 FAB |
14
+ | `BatchSelectMoreBtns` | 列表多选后批量按钮 |
15
+ | `PageBtns` | 列表页顶部按钮 |
16
+ | `PageTabs` | 列表页 Tab |
17
+ | `ExportMoreBtns` | 导出下拉扩展 |
18
+
19
+ `PageTabs.TargetSysMenuId` 是通用的跨模块页签协议。未配置时继续执行当前模块的页签 V8;配置其它 `sys_menu.Id` 时,`diy-table.vue` 在同一个组件实例内切换模块上下文,按目标 `sys_menu / diy_table / diy_field` 重载数据,同时保留入口路由、面包屑、顶部访问标签、宿主 Hero 和入口 PageTabs,URL 只更新 `Tab` 查询参数。入口模块是唯一 PageTabs 配置源,隐藏目标模块不得复制 PageTabs。不得为应用商城或其它单一模块在 schema/data mixin 中增加专用数据源分支。
20
+
21
+ 按钮显隐链路:
22
+
23
+ 1. `DiyCommon.ForConvertSysMenu()` 把 JSON 字符串转成数组并补默认值。
24
+ 2. `HandlerBtns()` / `HandlerBtnsAsync()` 遍历按钮。
25
+ 3. `LimitMoreBtn()` / `LimitMoreBtnAsync()` 构建前端 V8 上下文。
26
+ 4. 执行 `btn.V8CodeShow`,支持两种写法:
27
+
28
+ ```js
29
+ return V8.Form.Status == '待审核';
30
+ ```
31
+
32
+ ```js
33
+ V8.Result = V8.Form.Status == '待审核';
34
+ ```
35
+
36
+ 5. 点击时 `RunMoreBtn()` 执行 `btn.V8Code`。
37
+
38
+ 修改按钮逻辑时必须同时检查:
39
+
40
+ - `diy-form-full.vue`:表单 `FormBtns`。
41
+ - `mixins/diy-table-actions.mixin.js`:列表按钮、PageBtns、BatchSelectMoreBtns、PageTabs 等。
42
+ - `left-right/RightView.vue`、`left-right/RightForm.vue`:旧版左右布局兼容。
43
+ - `src/utils/v8-button-visibility.js`:统一的 `V8CodeShow` 执行与布尔结果解析。
44
+
45
+ ---
46
+
47
+ <!-- /microi-progressive:chunk -->
48
+ <!-- microi-progressive:chunk id=microi-client-frontend-006 sha256=b5d89b5a0b17ffb02579d4512b15468e52b599ddf4573afba85b9e5d3f9f5d49 -->
49
+ ## 5. 路由与打开方式
50
+
51
+ 登录首页支持“用户 > 系统 > 首个可访问菜单”的三级优先级:
52
+
53
+ - 用户级首页保存到 `sys_user.DefaultIndexUrl`,系统级首页继续使用 `SysConfig.DefaultIndexUrl`;账号密码、Token 直达和 SSO 登录必须共用同一套跳转逻辑。
54
+ - “个人设置”只能展示当前用户实际有权访问的动态路由,保存接口必须从 Token 绑定当前用户和 `OsClient`,不能接受前端传入任意用户 Id。
55
+ - 路由保存前统一规范为站内绝对路由;拒绝外部 URL、协议相对 URL、反斜杠、登录页和控制字符。用户失权或菜单被删除后自动回退,不能造成登录循环或空白页。
56
+ - `Id/CreateTime/UpdateTime/UserId/UserName/IsDeleted` 等审计列必须复用真实或合成的 `diy_field` 元数据,像普通列一样打开列头高级搜索;不要为审计列另写一套不可搜索的展示分支。
57
+
58
+ `diy-form-full.vue` 支持三类形态:
59
+
60
+ | 打开方式 | 特征 |
61
+ |----------|------|
62
+ | Dialog | `ShowFieldForm=true`,内部 `DiyForm` 使用 `ref="fieldForm"` |
63
+ | Drawer | `ShowFieldFormDrawer=true`,`onDrawerOpened()` 中调用 `fieldForm.Init()` |
64
+ | Page | 路由 `/diy/form-page/:TableId/:TableRowId?`,`IsPageMode=true`,内部 `fieldFormPage` 通过 props 自动初始化 |
65
+
66
+ Page 模式要特别注意:
67
+
68
+ - `SysMenuId` 可能来自 query `SysMenuId`、query `Id`、或 route meta。
69
+ - `CallbackSetFormData` 到达后才能可靠评估 `FormBtns`,因为此时才有当前表单数据。
70
+ - keep-alive 会触发 `activated/deactivated`,不要只在 `mounted` 里写一次性逻辑。
71
+ - `diy-design.vue` 会复用同一个命名路由与 keep-alive 实例。必须以 `TableId + PageType` 作为表单实例 Key,并监听 `$route.fullPath`、在 `activated` 中同步路由上下文、清理旧表字段状态并重新加载;只依赖首次 `mounted` 会造成从列表跳转后白屏或显示上一张表。
72
+
73
+ ### `/online-office` 匿名只读路由
74
+
75
+ - 路由 `meta.anonymous=true` 只表示无需登录即可进入页面,不代表页面内的文件自动公开。组件仍必须校验文件边界。
76
+ - 匿名公有存储场景只允许当前 `OsClient` 目录下的 `filePathName`;接口响应文件场景用 `fileUrl` 接收当前平台正式 `ApiBase`,或由同端口本地后端读取的 loopback `/apiengine/...`,并要求 URL 显式携带当前 `OsClient`。两种场景都拒绝私有文件、跨租户路径、路径穿越和任意第三方域名。
77
+ - `fileUrl` 路径没有文件扩展名时必须同时传 `fileName` 或 `fileType`。组件先调用 `/api/HDFS/PrepareOfficePreviewFromUrl`,由后端严格校验当前平台、当前 `OsClient` 和单层 `/apiengine/{key}`,再把响应文件透明缓存到当前租户公有对象存储;OnlyOffice 使用返回的公网静态地址。开发环境 loopback 只允许同端口本地后端读取,不能简单替换 origin,也不能把该接口扩展成通用 URL 代理。
78
+ - `canEdit` 不能直接作为授权结果。最终允许编辑必须同时满足有效登录态;匿名即使传 `canEdit=1` 也强制使用 OnlyOffice `mode:'view'` 和 `permissions.edit=false`。
79
+ - 私有文件调用 `/apiengine/platform-private-file-url` 时传 `ForOfficePreview:true` 和权威资源上下文,让远程 OnlyOffice 使用租户公网 `ApiBase` 的审计代理地址,避免 `localhost` 导致“下载失败”。
80
+ - `layout/index.vue` 仅在“路由要求隐藏外壳且当前无有效登录用户”时隐藏 Sidebar/Navbar/TagsView;登录用户打开同一路由仍保留正常系统布局。
81
+ - 不要把匿名路由简单加入全局白名单后跳过组件鉴权;过期 Token 要清理,公有文件校验失败必须停止创建 OnlyOffice 配置。
82
+
83
+ ### 在线微服务弹窗(OpenAppDialog)
84
+
85
+ `V8.OpenAppDialog` 是 V8 定制页面的标准入口,宿主实现位于:
86
+
87
+ | 文件 | 职责 |
88
+ |------|------|
89
+ | `views/micro-app/dialog.vue` | 按 `AppKey` 解析稳定入口 `/micro-app/{OsClient}/{AppKey}/index.html?v={Version}`;版本只用于缓存失效,不得写进入口路径。 |
90
+ | `views/form-engine/mixins/diy-table-navigation.mixin.js` | 向列表、PageBtns、MoreBtns、BatchSelectMoreBtns 暴露 `OpenAppDialog`。 |
91
+ | `views/form-engine/mixins/diy-form-navigation.mixin.js` | 向表单 V8 暴露同一套 `OpenAppDialog` 参数。 |
92
+ | `views/form-engine/diy-table.vue`、`diy-form.vue` | 将方法挂到运行时 `V8` 对象并承载通用弹窗。 |
93
+
94
+ 扩展或修复时必须保持表格与表单两条入口的参数一致:`AppKey`、`RoutePath/MicroRoute`、`Version`、`Title`、`TitleIcon`、`Width`、`OpenType`、`Data`、`OnSuccess`、`OnCancel`、`OnError`。
95
+
96
+ - `Data` 映射为子应用的 `dialogData`,必须是普通业务数据;函数回调保留在宿主,不放进 micro-app data。
97
+ - 宿主自动下发 `apiBase`、`osClient`、`token`、`appKey`、`version`、`microRoute`、`dialog:true` 和 `route`。
98
+ - 子应用发送 `app-dialog:success` 或 `app-dialog:cancel` 后自动关闭;`app-dialog:error` 只触发错误回调,不自动关闭。
99
+ - `OpenAppDialog` 用于发布后的在线微服务;`OpenDialog` 用于前端源码中预注册的 Vue 组件。
100
+ - Token 通过 micro-app data 下发,禁止拼进加载 URL,避免日志、历史记录和代理链路泄露。
101
+ - 新增参数或修改返回协议时,必须同步更新 `microi.doc/docs/doc/v8-engine/v8-client.md`、`v8-menu-buttons/SKILL.md` 和 `v8-frontend-events/SKILL.md`。
102
+
103
+ ---
104
+
105
+ ### 系统子菜单入口页(MenuChildrenGrid)
106
+
107
+ `Microi.Client/src/views/system/menu-children-grid.vue` 是左侧父级菜单的落地入口页。修改此类页面时必须同时读取 `microi.skills/ui-design/SKILL.md` 的“PC 后台菜单宫格 / 入口页规范”。
108
+
109
+ - 不要让宽屏通过纯 `auto-fill + 1fr` 一行挤出 10 个以上菜单;常规后台宽度推荐 6-8 个入口/行,并通过固定列宽、`max-width` 和 `justify-content:start` 控制密度。
110
+ - 菜单卡片必须宽高一致,图标、菜单名称、子菜单统计要按固定槽位对齐;有无子菜单统计都不能导致标题位置上下漂移。
111
+ - 子菜单统计应靠近菜单名称,间距约 4-6px;卡片内部必须保留足够 padding,不能让图标、标题或统计贴边。
112
+ - 改完必须截图验收桌面宽屏和移动宽度,重点检查每行数量、图标/标题/统计对齐、文字溢出和横向滚动。
113
+
114
+ ---
115
+
116
+ <!-- /microi-progressive:chunk -->
117
+ <!-- microi-progressive:chunk id=microi-client-frontend-007 sha256=573d988999f9721cf7efe7654c203342213728b4f1ce61a718b10815595ae894 -->
118
+ ## 6. 修改前必查清单
119
+
120
+ ### `diy-table` 嵌入分页条数
121
+
122
+ - 定制页或界面引擎嵌入 `diy-table.vue` 时,可通过 `PageSizeList` props 追加分页条数,例如首页使用 `[10]`。
123
+ - `PageSizeList` 必须与系统 `PageSizes`、菜单默认条数合并后转为正整数、去重并升序排列,不能覆盖系统已有候选值。
124
+ - `sys_menu.DefaultPageSize` 明确配置时优先采用菜单值;未配置时默认采用最终候选列表中的最小值,保证紧凑嵌入页能稳定使用 10 条而不被全局默认值改回 15 条。
125
+ - 界面引擎、工作台等移动端嵌入列表应传 `PropsEmbedded=true`:隐藏独立列表页的固定移动端返回栏和全局 FAB,同时让有权限的新增、PageBtns、批量操作继续在当前容器工具栏显示,避免按钮漂浮覆盖其它首页组件。
126
+
127
+ 修改 `Microi.Client` 前,至少搜索:
128
+
129
+ ```text
130
+ 目标方法名 | 目标字段名 | V8CodeShow | SysMenuModel | CallbackSetFormData | HandlerBtns | RunMoreBtn
131
+ ```
132
+
133
+ 并确认:
134
+
135
+ - 方法是否在 mixin 中,而不是当前 SFC。
136
+ - PC/移动端是否有两套模板。
137
+ - Page/Dialog/Drawer 是否都需要同样修复。
138
+ - 旧版 `left-right` 是否仍需兼容。
139
+ - 是否同时影响列表页按钮和表单按钮。
140
+ - 是否需要更新 `microi.skills/v8-menu-buttons/SKILL.md` 或前端 V8 typings。
141
+
142
+ ---
143
+
144
+ <!-- /microi-progressive:chunk -->