@microi.net/cli 5.9.2 → 5.9.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 (199) 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/.workbuddy-plugin/marketplace.json +2 -2
  5. package/.workbuddy-plugin/plugin.json +1 -1
  6. package/LICENSE +21 -21
  7. package/README.md +71 -71
  8. package/assets/build-meta.json +5 -5
  9. package/assets/feature-matrix.json +138 -138
  10. package/assets/logo.svg +4 -4
  11. package/cordis.patch.yml +1 -1
  12. package/package.json +1 -1
  13. package/scripts/microi-codex-broker.js +466 -450
  14. package/scripts/microi-codex-router.js +634 -618
  15. package/scripts/microi-skills.meta.json +384 -378
  16. package/skills/.microi-skills-version.json +2 -2
  17. package/skills/.progressive-disclosure-manifest.json +122 -115
  18. package/skills/README.md +287 -287
  19. package/skills/ai-engine/SKILL.md +269 -269
  20. package/skills/ai-engine/agents/openai.yaml +4 -4
  21. package/skills/ai-engine/references/ai-employees.md +48 -48
  22. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  23. package/skills/ai-platform-governance/SKILL.md +177 -177
  24. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  25. package/skills/app-store/SKILL.md +525 -525
  26. package/skills/app-store/agents/openai.yaml +4 -4
  27. package/skills/business-blueprint/SKILL.md +193 -193
  28. package/skills/datasource-engine/SKILL.md +93 -93
  29. package/skills/datasource-engine/agents/openai.yaml +4 -4
  30. package/skills/dos-orm/SKILL.md +101 -95
  31. package/skills/dos-orm/references/api-reference.md +229 -229
  32. package/skills/email-engine/SKILL.md +81 -81
  33. package/skills/email-engine/references/v8-email.md +34 -34
  34. package/skills/job-engine/SKILL.md +176 -176
  35. package/skills/job-engine/agents/openai.yaml +4 -4
  36. package/skills/message-notification/SKILL.md +156 -156
  37. package/skills/message-notification/agents/openai.yaml +5 -5
  38. package/skills/message-notification/references/contracts.md +102 -102
  39. package/skills/microi/SKILL.md +14 -14
  40. package/skills/microi-ai-app-auth.js +652 -652
  41. package/skills/microi-ai-application/SKILL.md +115 -115
  42. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  43. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  44. package/skills/microi-client-frontend/SKILL.md +242 -242
  45. 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
  46. 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
  47. 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
  48. package/skills/microi-codex-installer/SKILL.md +231 -231
  49. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  50. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  51. package/skills/microi-db-schema/SKILL.md +175 -175
  52. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  53. package/skills/microi-db-schema/references/core-tables.md +695 -695
  54. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  55. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  56. package/skills/microi-db-schema/references/schema.md +646 -646
  57. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  58. package/skills/microi-deployment/SKILL.md +239 -220
  59. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  60. package/skills/microi-docs-coverage/SKILL.md +133 -133
  61. package/skills/microi-docs-coverage/references/capability-map.md +90 -90
  62. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  63. package/skills/microi-form-engine/SKILL.md +338 -333
  64. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  65. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  66. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  67. 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
  68. package/skills/microi-left-right-layout/SKILL.md +141 -141
  69. package/skills/microi-microservice/SKILL.md +330 -328
  70. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  71. package/skills/microi-mobile-app-quality/SKILL.md +203 -203
  72. 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 +227 -227
  73. 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 +129 -129
  74. package/skills/microi-solution-quotation/SKILL.md +78 -78
  75. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  76. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  77. package/skills/microi-sso/SKILL.md +95 -91
  78. package/skills/microi-sso/references/acceptance.md +51 -49
  79. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  80. package/skills/microi-sso/references/inbound.md +53 -53
  81. package/skills/microi-sso/references/outbound.md +43 -39
  82. package/skills/microi-ui/SKILL.md +192 -192
  83. 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
  84. package/skills/microi-uniapp-frontend/SKILL.md +206 -204
  85. 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 +261 -261
  86. 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
  87. package/skills/microi.v8.js +1921 -1921
  88. package/skills/module-engine/SKILL.md +255 -255
  89. package/skills/module-engine/references/module-config.md +204 -204
  90. package/skills/ocr-engine/SKILL.md +113 -113
  91. package/skills/ocr-engine/agents/openai.yaml +4 -4
  92. package/skills/page-engine/SKILL.md +206 -206
  93. package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
  94. 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
  95. 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
  96. package/skills/performance-testing/SKILL.md +227 -221
  97. package/skills/playwright-e2e/SKILL.md +197 -196
  98. 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
  99. 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
  100. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  101. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  102. package/skills/print-engine/SKILL.md +259 -259
  103. package/skills/production-readonly-audit/SKILL.md +41 -41
  104. package/skills/report-engine/SKILL.md +71 -71
  105. package/skills/report-engine/agents/openai.yaml +4 -4
  106. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  107. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  108. package/skills/scripts/sync-embedded-skills.mjs +46 -46
  109. package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
  110. package/skills/search-engine/SKILL.md +75 -75
  111. package/skills/search-engine/agents/openai.yaml +4 -4
  112. package/skills/spider-engine/SKILL.md +190 -190
  113. package/skills/system-observability/SKILL.md +259 -246
  114. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  115. package/skills/translate-engine/SKILL.md +140 -140
  116. package/skills/translate-engine/agents/openai.yaml +4 -4
  117. package/skills/ui-design/SKILL.md +223 -223
  118. package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
  119. package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
  120. package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
  121. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  122. package/skills/ui-design/references/design-pattern-library.md +184 -184
  123. package/skills/ui-design/references/mci-design-contract.md +163 -163
  124. package/skills/ui-design/references/motion-and-media.md +78 -78
  125. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  126. 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
  127. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  128. 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
  129. 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
  130. 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
  131. 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
  132. 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
  133. 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
  134. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  135. package/skills/unity-integration/SKILL.md +178 -171
  136. package/skills/unity-integration/agents/openai.yaml +4 -4
  137. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  138. package/skills/unity-integration/references/sdk-api.md +82 -82
  139. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  140. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  141. package/skills/v8-api-config/SKILL.md +388 -388
  142. package/skills/v8-cache-pattern/SKILL.md +312 -312
  143. package/skills/v8-crud-api/SKILL.md +179 -178
  144. 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
  145. 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
  146. package/skills/v8-debugging/SKILL.md +284 -284
  147. package/skills/v8-explorer-tree/SKILL.md +228 -228
  148. package/skills/v8-export-import/SKILL.md +219 -219
  149. 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
  150. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  151. 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
  152. package/skills/v8-file-upload/SKILL.md +255 -284
  153. package/skills/v8-file-upload/references/cdn-alias-repair.md +13 -0
  154. 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
  155. 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
  156. package/skills/v8-file-upload/references/progressive-03-/347/251/272/347/233/256/345/275/225/346/240/207/350/256/260/344/270/216/350/277/234/347/250/213/344/270/213/350/275/275.md +36 -0
  157. package/skills/v8-formengine-http/SKILL.md +238 -238
  158. package/skills/v8-frontend-events/SKILL.md +180 -180
  159. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  160. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  161. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  162. package/skills/v8-http-integration/SKILL.md +182 -182
  163. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  164. 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
  165. package/skills/v8-image-processing/SKILL.md +190 -190
  166. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  167. package/skills/v8-image-processing/references/api-reference.md +623 -623
  168. package/skills/v8-menu-buttons/SKILL.md +186 -186
  169. 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
  170. 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
  171. 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
  172. package/skills/v8-mongodb/SKILL.md +200 -200
  173. package/skills/v8-mq-mqtt/SKILL.md +178 -176
  174. package/skills/v8-mq-mqtt/references/mqtt-production.md +352 -342
  175. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  176. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  177. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  178. package/skills/v8-security/SKILL.md +227 -210
  179. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  180. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  181. package/skills/v8-sql-query/SKILL.md +302 -302
  182. package/skills/v8-table-event/SKILL.md +176 -176
  183. 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
  184. 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
  185. package/skills/v8-tcp-integration/SKILL.md +158 -147
  186. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  187. package/skills/v8-template-engine/SKILL.md +167 -167
  188. package/skills/v8-utilities/SKILL.md +104 -104
  189. package/skills/v8-utilities/references/client-api-index.md +143 -143
  190. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  191. package/skills/v8-utilities/references/server-api-index.md +188 -188
  192. package/skills/v8-workflow/SKILL.md +252 -252
  193. 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
  194. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  195. package/skills/vision-engine/SKILL.md +160 -160
  196. package/skills/vision-engine/agents/openai.yaml +4 -4
  197. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  198. package/skills/workspace-conventions/SKILL.md +13 -13
  199. 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 +2 -2
@@ -1,186 +1,186 @@
1
- ---
2
- name: v8-menu-buttons
3
- description: Microi 菜单按钮与 Tab V8 指南。用于配置 sys_menu MoreBtns、FormBtns、BatchSelectMoreBtns、PageTabs、PageBtns、ExportMoreBtns、显隐代码和行操作。
4
- ---
5
-
6
- > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
-
8
- # v8-menu-buttons — 菜单按钮 / Tab / 批量操作 V8 写法
9
-
10
- > 适用于 sys_menu 表的 MoreBtns、FormBtns、BatchSelectMoreBtns、PageTabs、ExportMoreBtns、PageBtns 字段。
11
- > 这些字段统一存为 **JSON 字符串**(数组),每个数组元素是一个按钮/Tab 对象。
12
- > AI 通过 MCP `microi_create_module` 创建菜单时应**主动**传入这些字段,业务系统才"活"。
13
-
14
- ---
15
-
16
- <!-- microi-progressive:begin -->
17
- <!-- microi-progressive:chunk id=v8-menu-buttons-000 sha256=bb9b02dd84d917e61d6a96b2b0222b31678994c38d1a14ea5cbbad02b5a2ab7d -->
18
- ## 1. 字段总览
19
-
20
- | 字段 | 渲染位置 | 必填项 |
21
- |------|---------|--------|
22
- | `MoreBtns` | 列表每行尾的"…更多"操作 | `Id, Name, V8Code`,建议 `ShowRow:true` |
23
- | `FormBtns` | 表单右上角 / 移动端 FAB | `Id, Name, V8Code` |
24
- | `BatchSelectMoreBtns` | 列表勾选多行后顶部出现 | `Id, Name, V8Code`,按钮里用 `V8.TableRowSelected` 取选中行 |
25
- | `PageTabs` | 列表页模块 Hero 下方的页签切换 | `Id, Name`,当前模块筛选用 `V8Code`;跨模块切换用 `TargetSysMenuId` |
26
- | `ExportMoreBtns` | 列表"导出"下拉的扩展 | `Id, Name, V8Code` |
27
- | `PageBtns` | 页面级顶部按钮 | `Id, Name, V8Code` |
28
-
29
- ---
30
-
31
- <!-- /microi-progressive:chunk -->
32
- <!-- microi-progressive:chunk id=v8-menu-buttons-001 sha256=bc876765afdb17bd70766ab39e26afacb7207702272465abbc88309356357973 -->
33
- ## 3. 模式 A:弹窗收集参数 → 调接口引擎(最常用)
34
-
35
- ```js
36
- V8.OpenAnyForm({
37
- TableName: 'Diy_Order',
38
- DialogType: 'Dialog',
39
- Id: V8.Form.Id,
40
- FormMode: 'Edit',
41
- SelectFields: ['AssigneeId', 'AssigneeName', 'AssignTime'], // 只显示这几个字段
42
- Width: '600px',
43
- EventReplace: {
44
- // 替换默认提交:改为调用业务接口引擎
45
- Submit: async function (v8, param, callback) {
46
- var result = await V8.ApiEngine.Run({
47
- ApiEngineKey: 'order_assign',
48
- Id: v8.Form.Id,
49
- AssigneeId: v8.Form.AssigneeId,
50
- AssigneeName: v8.Form.AssigneeName
51
- });
52
- callback(result); // 必须 callback
53
- V8.RefreshTable({ _PageIndex: 1 });
54
- }
55
- }
56
- });
57
- ```
58
-
59
- <!-- /microi-progressive:chunk -->
60
- <!-- microi-progressive:chunk id=v8-menu-buttons-002 sha256=9e242daca15f6ccfeed786b7dba77fa4362a4baeca166981bb8e2a15234a28f7 -->
61
- ## 4. 模式 B:直接确认 + 接口调用
62
-
63
- `ConfirmTips` 使用 HTML 模式渲染内容,只传固定文案或经过 HTML 转义的简单文本;不要拼接用户输入、接口消息或数据库富文本。
64
-
65
- ```js
66
- V8.ConfirmTips('确认领取该任务?', function () {
67
- V8.ApiEngine.Run({
68
- ApiEngineKey: 'order_take',
69
- Id: V8.Form.Id
70
- }, function (r) {
71
- if (r.Code == 1) V8.Tips('领取成功', true);
72
- else V8.Tips(r.Msg || '失败', false);
73
- V8.RefreshTable({ _PageIndex: 1 });
74
- });
75
- });
76
- ```
77
-
78
- <!-- /microi-progressive:chunk -->
79
- <!-- microi-progressive:chunk id=v8-menu-buttons-003 sha256=3b1d5525f9fc40203729f88d7e481b0ae6dc6cc9653f3752b330abbbcf68d4ef -->
80
- ## 4.1 模式 B2:在线微服务定制页(OpenAppDialog)
81
-
82
- 当弹窗包含复杂布局、多步骤交互、实时校验或后续需要 AI 在线维护时,优先把页面实现为在线微服务,按钮 V8 代码只负责打开页面、传入上下文和接收结果。不要把长篇 HTML/CSS 写进 `V8Code`。
83
-
84
- ```js
85
- V8.OpenAppDialog({
86
- AppKey: 'order_batch_processor',
87
- RoutePath: '/execute',
88
- Title: '批量处理订单',
89
- TitleIcon: 'fas fa-layer-group',
90
- Width: 'min(960px, calc(100vw - 32px))',
91
- OpenType: 'Dialog',
92
- Data: {
93
- ids: (V8.TableRowSelected || []).map(function (row) { return row.Id; }),
94
- source: 'order-list'
95
- },
96
- OnSuccess: function (data) {
97
- V8.Tips(data.message || '处理成功', true);
98
- V8.RefreshTable({ _PageIndex: -1 });
99
- },
100
- OnCancel: function () {},
101
- OnError: function (error) {
102
- V8.Tips(error.message || '应用执行失败', false);
103
- }
104
- });
105
- ```
106
-
107
- 参数规则:
108
-
109
- | 参数 | 必传 | 默认值 | 用法 |
110
- |------|------|--------|------|
111
- | `AppKey` | 是 | - | `sys_microiservice.MsKey`,目标微服务必须已经编译发布。 |
112
- | `RoutePath` | 否 | `/` | 子应用内部路由;`MicroRoute` 是兼容别名,优先取 `RoutePath`。 |
113
- | `Version` | 否 | 当前 `BuildVersion` | 固定加载某个发布版本;通常省略以使用当前版本。 |
114
- | `Title` | 否 | `应用` | Dialog/Drawer 标题。 |
115
- | `Header` | 否 | - | 初始外层标题栏 `{ title, tags, actions }`;仅可序列化文本和动作标识。 |
116
- | `OnHeaderAction(actionId, V8)` | 否 | - | 可选调用方前端 V8 动作;不设置时由子应用处理按钮点击。 |
117
- | `TitleIcon` | 否 | `fas fa-window-maximize` | 标题图标 class。 |
118
- | `Width` | 否 | `min(920px, calc(100vw - 32px))` | CSS 宽度值,推荐带移动端安全边距。 |
119
- | `OpenType` | 否 | `Dialog` | `Dialog` 或 `Drawer`。 |
120
- | `Data` | 否 | `{}` | 业务参数,子应用从 `window.microApp.getData().dialogData` 获取;只放普通可序列化数据。 |
121
- | `OnSuccess(data)` | 否 | - | 子应用成功回调,回调后自动关闭。 |
122
- | `OnCancel(data)` | 否 | - | 子应用取消回调,回调后自动关闭。 |
123
- | `OnError(error)` | 否 | - | 加载或执行错误回调,不自动关闭。 |
124
-
125
- 宿主还会自动传入 `apiBase`、`osClient`、`token`、`appKey`、`version`、`microRoute`、`dialog:true`。子应用返回协议:
126
-
127
- 宿主支持 `dialogHeaderBridge:true` 时,子应用可隐藏内部工具栏,使用 `window.microApp.forceDispatch({ type:'app-dialog:header', data:{ title:'单据号', tags:[{text:'待审核',tone:'warning'}], actions:[{id:'approve',text:'审核',tone:'success'}] } })` 更新外层标题栏。若未传 `OnHeaderAction`,宿主会把按钮点击作为 `host:dialog-action` 数据消息回传 `actionId/requestId`,子应用仍需向后端重新核验权限;旧宿主继续显示子应用自己的工具栏。
128
-
129
- ```js
130
- window.microApp.dispatch({ type: 'app-dialog:success', data: { message: '已提交' } });
131
- window.microApp.dispatch({ type: 'app-dialog:cancel', data: {} });
132
- window.microApp.dispatch({ type: 'app-dialog:error', data: { message: '校验失败' } });
133
- ```
134
-
135
- - `success` / `cancel` 会自动关闭,`error` 保持页面打开。
136
- - 禁止把回调函数放进 `Data`;回调必须使用 `OnSuccess` / `OnCancel` / `OnError`。
137
- - 不要把 Token 拼接到 URL;使用宿主自动下发的 `token`。
138
- - `OpenAppDialog` 加载在线微服务;`OpenDialog` 加载 Microi.Client 内已注册的 Vue 组件,两者不要混用。
139
-
140
- ### 4.2 业务面板复用通用弹窗宿主
141
-
142
- 某个模块是否出现入口、入口名称、排序、图标和显隐规则属于 `sys_menu.MoreBtns` 配置,禁止在 `diy-table.vue`、卡片模板或通用 mixin 中按菜单 Id、Url、表名直接渲染业务按钮。主前端已有 Vue 面板时先全局注册组件,再用 `V8.OpenDialog`;独立发布、跨应用升级的页面用 `V8.OpenAppDialog`。禁止为单个业务面板扩展 `V8.Open<业务名>` 包装方法。
143
-
144
- 系统账号的访问密钥入口示例:
145
-
146
- ```js
147
- // V8CodeShow
148
- var currentUser = V8.CurrentUser || {};
149
- var currentUserId = String(currentUser.Id || "").toLowerCase();
150
- var targetUserId = String((V8.Form && V8.Form.Id) || "").toLowerCase();
151
- V8.Result = typeof V8.OpenDialog === "function"
152
- && currentUser._AccessKeySession !== true
153
- && !!targetUserId
154
- && (currentUser._IsAdmin === true
155
- || Number(currentUser.Level || 0) >= 9999
156
- || currentUserId === targetUserId);
157
- ```
158
-
159
- ```js
160
- // V8Code
161
- var user = V8.Form || {};
162
- V8.OpenDialog({
163
- ComponentName: "UserAccessKeyPanel",
164
- Title: "访问密钥 - " + (user.Name || user.Account || ""),
165
- TitleIcon: "fas fa-key",
166
- Width: "min(980px, calc(100vw - 32px))",
167
- OpenType: "Dialog",
168
- DataAppend: { User: user }
169
- });
170
- ```
171
-
172
- 按钮应设置稳定 `Id`、`ShowRow:true`、`Icon:"fas fa-key"`。前端显隐只改善体验,创建、查询、吊销等接口仍必须在服务端重新校验普通登录会话以及本人/平台管理员权限。
173
-
174
- 复杂策略编辑器(例如角色 AI 数据权限)应把行按钮持久化到菜单 `MoreBtns`,按钮只通过
175
- `V8.OpenDialog({ ComponentName, DataAppend })` 打开已注册的 Vue 组件。验收需同时回读菜单按钮 JSON、
176
- 确认组件进入生产构建,并在真实列表行打开弹层;只保留旧定制页面里的按钮不算低代码菜单已迁移。
177
-
178
- <!-- /microi-progressive:chunk -->
179
- ## 详细参考路由(渐进披露)
180
-
181
- 仅在当前任务涉及对应主题时读取;下列文件合计保留了原 SKILL.md 的全部详细知识。
182
-
183
- - [references/progressive-01-2-按钮对象-schema.md](references/progressive-01-2-按钮对象-schema.md):2. 按钮对象 Schema;5. 模式 C:状态机推进(无需弹窗);6. 模式 D:批量操作(BatchSelectMoreBtns);7. 模式 E:PageTabs 切换筛选
184
- - [references/progressive-02-8-模式-f-后台任务按钮-长任务.md](references/progressive-02-8-模式-f-后台任务按钮-长任务.md):8. 模式 F:后台任务按钮(长任务);9. 通过 MCP 创建菜单 + 按钮(一次到位);前端 FormEngine 权限与兼容;10. 与接口引擎配套的工作流;10.1 后台直充/调账类行按钮
185
- - [references/progressive-03-10-反模式-避免.md](references/progressive-03-10-反模式-避免.md):10. 反模式(避免);10.2 复杂定制弹窗必须使用微服务;11. ⚠️ `V8.CurrentUser` 拿不到的历史陷阱(必看)
186
- <!-- microi-progressive:end -->
1
+ ---
2
+ name: v8-menu-buttons
3
+ description: Microi 菜单按钮与 Tab V8 指南。用于配置 sys_menu MoreBtns、FormBtns、BatchSelectMoreBtns、PageTabs、PageBtns、ExportMoreBtns、显隐代码和行操作。
4
+ ---
5
+
6
+ > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
+
8
+ # v8-menu-buttons — 菜单按钮 / Tab / 批量操作 V8 写法
9
+
10
+ > 适用于 sys_menu 表的 MoreBtns、FormBtns、BatchSelectMoreBtns、PageTabs、ExportMoreBtns、PageBtns 字段。
11
+ > 这些字段统一存为 **JSON 字符串**(数组),每个数组元素是一个按钮/Tab 对象。
12
+ > AI 通过 MCP `microi_create_module` 创建菜单时应**主动**传入这些字段,业务系统才"活"。
13
+
14
+ ---
15
+
16
+ <!-- microi-progressive:begin -->
17
+ <!-- microi-progressive:chunk id=v8-menu-buttons-000 sha256=bb9b02dd84d917e61d6a96b2b0222b31678994c38d1a14ea5cbbad02b5a2ab7d -->
18
+ ## 1. 字段总览
19
+
20
+ | 字段 | 渲染位置 | 必填项 |
21
+ |------|---------|--------|
22
+ | `MoreBtns` | 列表每行尾的"…更多"操作 | `Id, Name, V8Code`,建议 `ShowRow:true` |
23
+ | `FormBtns` | 表单右上角 / 移动端 FAB | `Id, Name, V8Code` |
24
+ | `BatchSelectMoreBtns` | 列表勾选多行后顶部出现 | `Id, Name, V8Code`,按钮里用 `V8.TableRowSelected` 取选中行 |
25
+ | `PageTabs` | 列表页模块 Hero 下方的页签切换 | `Id, Name`,当前模块筛选用 `V8Code`;跨模块切换用 `TargetSysMenuId` |
26
+ | `ExportMoreBtns` | 列表"导出"下拉的扩展 | `Id, Name, V8Code` |
27
+ | `PageBtns` | 页面级顶部按钮 | `Id, Name, V8Code` |
28
+
29
+ ---
30
+
31
+ <!-- /microi-progressive:chunk -->
32
+ <!-- microi-progressive:chunk id=v8-menu-buttons-001 sha256=bc876765afdb17bd70766ab39e26afacb7207702272465abbc88309356357973 -->
33
+ ## 3. 模式 A:弹窗收集参数 → 调接口引擎(最常用)
34
+
35
+ ```js
36
+ V8.OpenAnyForm({
37
+ TableName: 'Diy_Order',
38
+ DialogType: 'Dialog',
39
+ Id: V8.Form.Id,
40
+ FormMode: 'Edit',
41
+ SelectFields: ['AssigneeId', 'AssigneeName', 'AssignTime'], // 只显示这几个字段
42
+ Width: '600px',
43
+ EventReplace: {
44
+ // 替换默认提交:改为调用业务接口引擎
45
+ Submit: async function (v8, param, callback) {
46
+ var result = await V8.ApiEngine.Run({
47
+ ApiEngineKey: 'order_assign',
48
+ Id: v8.Form.Id,
49
+ AssigneeId: v8.Form.AssigneeId,
50
+ AssigneeName: v8.Form.AssigneeName
51
+ });
52
+ callback(result); // 必须 callback
53
+ V8.RefreshTable({ _PageIndex: 1 });
54
+ }
55
+ }
56
+ });
57
+ ```
58
+
59
+ <!-- /microi-progressive:chunk -->
60
+ <!-- microi-progressive:chunk id=v8-menu-buttons-002 sha256=9e242daca15f6ccfeed786b7dba77fa4362a4baeca166981bb8e2a15234a28f7 -->
61
+ ## 4. 模式 B:直接确认 + 接口调用
62
+
63
+ `ConfirmTips` 使用 HTML 模式渲染内容,只传固定文案或经过 HTML 转义的简单文本;不要拼接用户输入、接口消息或数据库富文本。
64
+
65
+ ```js
66
+ V8.ConfirmTips('确认领取该任务?', function () {
67
+ V8.ApiEngine.Run({
68
+ ApiEngineKey: 'order_take',
69
+ Id: V8.Form.Id
70
+ }, function (r) {
71
+ if (r.Code == 1) V8.Tips('领取成功', true);
72
+ else V8.Tips(r.Msg || '失败', false);
73
+ V8.RefreshTable({ _PageIndex: 1 });
74
+ });
75
+ });
76
+ ```
77
+
78
+ <!-- /microi-progressive:chunk -->
79
+ <!-- microi-progressive:chunk id=v8-menu-buttons-003 sha256=3b1d5525f9fc40203729f88d7e481b0ae6dc6cc9653f3752b330abbbcf68d4ef -->
80
+ ## 4.1 模式 B2:在线微服务定制页(OpenAppDialog)
81
+
82
+ 当弹窗包含复杂布局、多步骤交互、实时校验或后续需要 AI 在线维护时,优先把页面实现为在线微服务,按钮 V8 代码只负责打开页面、传入上下文和接收结果。不要把长篇 HTML/CSS 写进 `V8Code`。
83
+
84
+ ```js
85
+ V8.OpenAppDialog({
86
+ AppKey: 'order_batch_processor',
87
+ RoutePath: '/execute',
88
+ Title: '批量处理订单',
89
+ TitleIcon: 'fas fa-layer-group',
90
+ Width: 'min(960px, calc(100vw - 32px))',
91
+ OpenType: 'Dialog',
92
+ Data: {
93
+ ids: (V8.TableRowSelected || []).map(function (row) { return row.Id; }),
94
+ source: 'order-list'
95
+ },
96
+ OnSuccess: function (data) {
97
+ V8.Tips(data.message || '处理成功', true);
98
+ V8.RefreshTable({ _PageIndex: -1 });
99
+ },
100
+ OnCancel: function () {},
101
+ OnError: function (error) {
102
+ V8.Tips(error.message || '应用执行失败', false);
103
+ }
104
+ });
105
+ ```
106
+
107
+ 参数规则:
108
+
109
+ | 参数 | 必传 | 默认值 | 用法 |
110
+ |------|------|--------|------|
111
+ | `AppKey` | 是 | - | `sys_microiservice.MsKey`,目标微服务必须已经编译发布。 |
112
+ | `RoutePath` | 否 | `/` | 子应用内部路由;`MicroRoute` 是兼容别名,优先取 `RoutePath`。 |
113
+ | `Version` | 否 | 当前 `BuildVersion` | 固定加载某个发布版本;通常省略以使用当前版本。 |
114
+ | `Title` | 否 | `应用` | Dialog/Drawer 标题。 |
115
+ | `Header` | 否 | - | 初始外层标题栏 `{ title, tags, actions }`;仅可序列化文本和动作标识。 |
116
+ | `OnHeaderAction(actionId, V8)` | 否 | - | 可选调用方前端 V8 动作;不设置时由子应用处理按钮点击。 |
117
+ | `TitleIcon` | 否 | `fas fa-window-maximize` | 标题图标 class。 |
118
+ | `Width` | 否 | `min(920px, calc(100vw - 32px))` | CSS 宽度值,推荐带移动端安全边距。 |
119
+ | `OpenType` | 否 | `Dialog` | `Dialog` 或 `Drawer`。 |
120
+ | `Data` | 否 | `{}` | 业务参数,子应用从 `window.microApp.getData().dialogData` 获取;只放普通可序列化数据。 |
121
+ | `OnSuccess(data)` | 否 | - | 子应用成功回调,回调后自动关闭。 |
122
+ | `OnCancel(data)` | 否 | - | 子应用取消回调,回调后自动关闭。 |
123
+ | `OnError(error)` | 否 | - | 加载或执行错误回调,不自动关闭。 |
124
+
125
+ 宿主还会自动传入 `apiBase`、`osClient`、`token`、`appKey`、`version`、`microRoute`、`dialog:true`。子应用返回协议:
126
+
127
+ 宿主支持 `dialogHeaderBridge:true` 时,子应用可隐藏内部工具栏,使用 `window.microApp.forceDispatch({ type:'app-dialog:header', data:{ title:'单据号', tags:[{text:'待审核',tone:'warning'}], actions:[{id:'approve',text:'审核',tone:'success'}] } })` 更新外层标题栏。若未传 `OnHeaderAction`,宿主会把按钮点击作为 `host:dialog-action` 数据消息回传 `actionId/requestId`,子应用仍需向后端重新核验权限;旧宿主继续显示子应用自己的工具栏。
128
+
129
+ ```js
130
+ window.microApp.dispatch({ type: 'app-dialog:success', data: { message: '已提交' } });
131
+ window.microApp.dispatch({ type: 'app-dialog:cancel', data: {} });
132
+ window.microApp.dispatch({ type: 'app-dialog:error', data: { message: '校验失败' } });
133
+ ```
134
+
135
+ - `success` / `cancel` 会自动关闭,`error` 保持页面打开。
136
+ - 禁止把回调函数放进 `Data`;回调必须使用 `OnSuccess` / `OnCancel` / `OnError`。
137
+ - 不要把 Token 拼接到 URL;使用宿主自动下发的 `token`。
138
+ - `OpenAppDialog` 加载在线微服务;`OpenDialog` 加载 Microi.Client 内已注册的 Vue 组件,两者不要混用。
139
+
140
+ ### 4.2 业务面板复用通用弹窗宿主
141
+
142
+ 某个模块是否出现入口、入口名称、排序、图标和显隐规则属于 `sys_menu.MoreBtns` 配置,禁止在 `diy-table.vue`、卡片模板或通用 mixin 中按菜单 Id、Url、表名直接渲染业务按钮。主前端已有 Vue 面板时先全局注册组件,再用 `V8.OpenDialog`;独立发布、跨应用升级的页面用 `V8.OpenAppDialog`。禁止为单个业务面板扩展 `V8.Open<业务名>` 包装方法。
143
+
144
+ 系统账号的访问密钥入口示例:
145
+
146
+ ```js
147
+ // V8CodeShow
148
+ var currentUser = V8.CurrentUser || {};
149
+ var currentUserId = String(currentUser.Id || "").toLowerCase();
150
+ var targetUserId = String((V8.Form && V8.Form.Id) || "").toLowerCase();
151
+ V8.Result = typeof V8.OpenDialog === "function"
152
+ && currentUser._AccessKeySession !== true
153
+ && !!targetUserId
154
+ && (currentUser._IsAdmin === true
155
+ || Number(currentUser.Level || 0) >= 9999
156
+ || currentUserId === targetUserId);
157
+ ```
158
+
159
+ ```js
160
+ // V8Code
161
+ var user = V8.Form || {};
162
+ V8.OpenDialog({
163
+ ComponentName: "UserAccessKeyPanel",
164
+ Title: "访问密钥 - " + (user.Name || user.Account || ""),
165
+ TitleIcon: "fas fa-key",
166
+ Width: "min(980px, calc(100vw - 32px))",
167
+ OpenType: "Dialog",
168
+ DataAppend: { User: user }
169
+ });
170
+ ```
171
+
172
+ 按钮应设置稳定 `Id`、`ShowRow:true`、`Icon:"fas fa-key"`。前端显隐只改善体验,创建、查询、吊销等接口仍必须在服务端重新校验普通登录会话以及本人/平台管理员权限。
173
+
174
+ 复杂策略编辑器(例如角色 AI 数据权限)应把行按钮持久化到菜单 `MoreBtns`,按钮只通过
175
+ `V8.OpenDialog({ ComponentName, DataAppend })` 打开已注册的 Vue 组件。验收需同时回读菜单按钮 JSON、
176
+ 确认组件进入生产构建,并在真实列表行打开弹层;只保留旧定制页面里的按钮不算低代码菜单已迁移。
177
+
178
+ <!-- /microi-progressive:chunk -->
179
+ ## 详细参考路由(渐进披露)
180
+
181
+ 仅在当前任务涉及对应主题时读取;下列文件合计保留了原 SKILL.md 的全部详细知识。
182
+
183
+ - [references/progressive-01-2-按钮对象-schema.md](references/progressive-01-2-按钮对象-schema.md):2. 按钮对象 Schema;5. 模式 C:状态机推进(无需弹窗);6. 模式 D:批量操作(BatchSelectMoreBtns);7. 模式 E:PageTabs 切换筛选
184
+ - [references/progressive-02-8-模式-f-后台任务按钮-长任务.md](references/progressive-02-8-模式-f-后台任务按钮-长任务.md):8. 模式 F:后台任务按钮(长任务);9. 通过 MCP 创建菜单 + 按钮(一次到位);前端 FormEngine 权限与兼容;10. 与接口引擎配套的工作流;10.1 后台直充/调账类行按钮
185
+ - [references/progressive-03-10-反模式-避免.md](references/progressive-03-10-反模式-避免.md):10. 反模式(避免);10.2 复杂定制弹窗必须使用微服务;11. ⚠️ `V8.CurrentUser` 拿不到的历史陷阱(必看)
186
+ <!-- microi-progressive:end -->