@microi.net/cli 5.8.5 → 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 (211) 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 +6 -6
  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-trae-windows-launcher.cmd +21 -21
  17. package/scripts/microi-cli-mcp.js +7 -7
  18. package/scripts/microi-cli.js +66 -65
  19. package/scripts/microi-codex-broker.js +450 -450
  20. package/scripts/microi-codex-router.js +618 -618
  21. package/scripts/microi-skills.meta.json +384 -384
  22. package/skills/.microi-skills-version.json +2 -2
  23. package/skills/.progressive-disclosure-manifest.json +3566 -3566
  24. package/skills/README.md +287 -287
  25. package/skills/ai-engine/SKILL.md +269 -265
  26. package/skills/ai-engine/agents/openai.yaml +4 -4
  27. package/skills/ai-engine/references/ai-employees.md +48 -48
  28. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  29. package/skills/ai-platform-governance/SKILL.md +177 -177
  30. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  31. package/skills/app-store/SKILL.md +525 -525
  32. package/skills/app-store/agents/openai.yaml +4 -4
  33. package/skills/business-blueprint/SKILL.md +193 -193
  34. package/skills/datasource-engine/SKILL.md +93 -93
  35. package/skills/datasource-engine/agents/openai.yaml +4 -4
  36. package/skills/dos-orm/SKILL.md +97 -97
  37. package/skills/dos-orm/references/api-reference.md +229 -229
  38. package/skills/email-engine/SKILL.md +81 -81
  39. package/skills/email-engine/references/v8-email.md +34 -34
  40. package/skills/job-engine/SKILL.md +176 -176
  41. package/skills/job-engine/agents/openai.yaml +4 -4
  42. package/skills/message-notification/SKILL.md +156 -156
  43. package/skills/message-notification/agents/openai.yaml +5 -5
  44. package/skills/message-notification/references/contracts.md +102 -102
  45. package/skills/microi/SKILL.md +14 -14
  46. package/skills/microi-ai-app-auth.js +652 -652
  47. package/skills/microi-ai-application/SKILL.md +115 -115
  48. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  49. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  50. package/skills/microi-client-frontend/SKILL.md +244 -244
  51. 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
  52. 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
  53. 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
  54. package/skills/microi-codex/SKILL.md +102 -102
  55. package/skills/microi-codex-installer/SKILL.md +231 -231
  56. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  57. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  58. package/skills/microi-db-schema/SKILL.md +175 -175
  59. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  60. package/skills/microi-db-schema/references/core-tables.md +695 -695
  61. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  62. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  63. package/skills/microi-db-schema/references/schema.md +646 -646
  64. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  65. package/skills/microi-deployment/SKILL.md +221 -221
  66. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  67. package/skills/microi-docs-coverage/SKILL.md +133 -133
  68. package/skills/microi-docs-coverage/references/capability-map.md +91 -91
  69. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  70. package/skills/microi-form-engine/SKILL.md +333 -333
  71. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  72. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  73. package/skills/microi-form-layout/SKILL.md +205 -205
  74. 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
  75. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  76. 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
  77. package/skills/microi-left-right-layout/SKILL.md +141 -141
  78. package/skills/microi-microservice/SKILL.md +326 -324
  79. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  80. package/skills/microi-mobile-app-quality/SKILL.md +185 -185
  81. 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
  82. 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
  83. package/skills/microi-solution-quotation/SKILL.md +78 -78
  84. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  85. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  86. package/skills/microi-sso/SKILL.md +92 -92
  87. package/skills/microi-sso/references/acceptance.md +49 -49
  88. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  89. package/skills/microi-sso/references/inbound.md +53 -53
  90. package/skills/microi-sso/references/outbound.md +39 -39
  91. package/skills/microi-system-delivery/SKILL.md +137 -137
  92. 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
  93. 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
  94. package/skills/microi-ui/SKILL.md +192 -192
  95. 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
  96. package/skills/microi-uniapp-frontend/SKILL.md +193 -193
  97. 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
  98. 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
  99. package/skills/microi.v8.js +1921 -1921
  100. package/skills/module-engine/SKILL.md +255 -255
  101. package/skills/module-engine/references/module-config.md +204 -204
  102. package/skills/ocr-engine/SKILL.md +113 -113
  103. package/skills/ocr-engine/agents/openai.yaml +4 -4
  104. package/skills/page-engine/SKILL.md +206 -206
  105. package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
  106. 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
  107. 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
  108. package/skills/performance-testing/SKILL.md +221 -221
  109. package/skills/playwright-e2e/SKILL.md +196 -196
  110. 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
  111. 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
  112. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  113. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  114. package/skills/print-engine/SKILL.md +259 -259
  115. package/skills/production-readonly-audit/SKILL.md +41 -41
  116. package/skills/report-engine/SKILL.md +71 -71
  117. package/skills/report-engine/agents/openai.yaml +4 -4
  118. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  119. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  120. package/skills/scripts/sync-embedded-skills.mjs +46 -46
  121. package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
  122. package/skills/search-engine/SKILL.md +75 -75
  123. package/skills/search-engine/agents/openai.yaml +4 -4
  124. package/skills/spider-engine/SKILL.md +190 -190
  125. package/skills/system-observability/SKILL.md +248 -248
  126. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  127. package/skills/translate-engine/SKILL.md +140 -140
  128. package/skills/translate-engine/agents/openai.yaml +4 -4
  129. package/skills/ui-design/SKILL.md +223 -223
  130. package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
  131. package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
  132. package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
  133. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  134. package/skills/ui-design/references/design-pattern-library.md +184 -184
  135. package/skills/ui-design/references/mci-design-contract.md +163 -163
  136. package/skills/ui-design/references/motion-and-media.md +78 -78
  137. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  138. 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
  139. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  140. 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
  141. 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
  142. 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
  143. 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
  144. 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
  145. 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
  146. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  147. package/skills/unity-integration/SKILL.md +171 -171
  148. package/skills/unity-integration/agents/openai.yaml +4 -4
  149. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  150. package/skills/unity-integration/references/sdk-api.md +82 -82
  151. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  152. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  153. package/skills/v8-api-config/SKILL.md +388 -388
  154. package/skills/v8-cache-pattern/SKILL.md +312 -312
  155. package/skills/v8-crud-api/SKILL.md +178 -178
  156. 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
  157. 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
  158. package/skills/v8-debugging/SKILL.md +284 -284
  159. package/skills/v8-explorer-tree/SKILL.md +228 -228
  160. package/skills/v8-export-import/SKILL.md +219 -219
  161. 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
  162. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  163. 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
  164. package/skills/v8-file-upload/SKILL.md +284 -284
  165. 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
  166. 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
  167. package/skills/v8-formengine-http/SKILL.md +238 -238
  168. package/skills/v8-frontend-events/SKILL.md +180 -180
  169. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  170. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  171. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  172. package/skills/v8-http-integration/SKILL.md +182 -182
  173. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  174. 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
  175. package/skills/v8-image-processing/SKILL.md +190 -190
  176. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  177. package/skills/v8-image-processing/references/api-reference.md +623 -623
  178. package/skills/v8-menu-buttons/SKILL.md +186 -186
  179. 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
  180. 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
  181. 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
  182. package/skills/v8-mongodb/SKILL.md +200 -200
  183. package/skills/v8-mq-mqtt/SKILL.md +176 -176
  184. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  185. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  186. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  187. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  188. package/skills/v8-security/SKILL.md +210 -210
  189. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  190. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  191. package/skills/v8-sql-query/SKILL.md +302 -302
  192. package/skills/v8-table-event/SKILL.md +176 -176
  193. 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
  194. 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
  195. package/skills/v8-tcp-integration/SKILL.md +147 -147
  196. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  197. package/skills/v8-template-engine/SKILL.md +167 -167
  198. package/skills/v8-utilities/SKILL.md +104 -104
  199. package/skills/v8-utilities/references/client-api-index.md +143 -143
  200. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  201. package/skills/v8-utilities/references/server-api-index.md +188 -188
  202. package/skills/v8-workflow/SKILL.md +252 -252
  203. 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
  204. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  205. package/skills/vision-engine/SKILL.md +160 -160
  206. package/skills/vision-engine/agents/openai.yaml +4 -4
  207. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  208. package/skills/workspace-conventions/SKILL.md +273 -273
  209. 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
  210. 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
  211. 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 -->