@zeyue0329/xiaoma-cli 1.21.0 → 1.22.0

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 (122) hide show
  1. package/package.json +1 -1
  2. package/src/zqyl-skills/backend/components/xiaoma-zqyl-bar-chart-backend/SKILL.md +142 -0
  3. package/src/zqyl-skills/backend/components/xiaoma-zqyl-button-backend/SKILL.md +108 -0
  4. package/src/zqyl-skills/backend/components/xiaoma-zqyl-collapse-backend/SKILL.md +142 -0
  5. package/src/zqyl-skills/backend/components/xiaoma-zqyl-container-foot-backend/SKILL.md +192 -0
  6. package/src/zqyl-skills/backend/components/xiaoma-zqyl-data-census-backend/SKILL.md +104 -0
  7. package/src/zqyl-skills/backend/components/xiaoma-zqyl-dialog-backend/SKILL.md +205 -0
  8. package/src/zqyl-skills/backend/components/xiaoma-zqyl-drawer-backend/SKILL.md +100 -0
  9. package/src/zqyl-skills/backend/components/xiaoma-zqyl-empty-page-backend/SKILL.md +131 -0
  10. package/src/zqyl-skills/backend/components/xiaoma-zqyl-file-upload-backend/SKILL.md +291 -0
  11. package/src/zqyl-skills/backend/components/xiaoma-zqyl-flow-chart-backend/SKILL.md +118 -0
  12. package/src/zqyl-skills/backend/components/xiaoma-zqyl-form-editor-backend/SKILL.md +315 -0
  13. package/src/zqyl-skills/backend/components/xiaoma-zqyl-form-view-backend/SKILL.md +165 -0
  14. package/src/zqyl-skills/backend/components/xiaoma-zqyl-funnel-chart-backend/SKILL.md +102 -0
  15. package/src/zqyl-skills/backend/components/xiaoma-zqyl-gauge-chart-backend/SKILL.md +103 -0
  16. package/src/zqyl-skills/backend/components/xiaoma-zqyl-heatmap-chart-backend/SKILL.md +125 -0
  17. package/src/zqyl-skills/backend/components/xiaoma-zqyl-line-chart-backend/SKILL.md +136 -0
  18. package/src/zqyl-skills/backend/components/xiaoma-zqyl-map-chart-backend/SKILL.md +130 -0
  19. package/src/zqyl-skills/backend/components/xiaoma-zqyl-message-feedback-backend/SKILL.md +63 -0
  20. package/src/zqyl-skills/backend/components/xiaoma-zqyl-module-backend/SKILL.md +180 -0
  21. package/src/zqyl-skills/backend/components/xiaoma-zqyl-pie-chart-backend/SKILL.md +132 -0
  22. package/src/zqyl-skills/backend/components/xiaoma-zqyl-popover-backend/SKILL.md +61 -0
  23. package/src/zqyl-skills/backend/components/xiaoma-zqyl-preview-backend/SKILL.md +117 -0
  24. package/src/zqyl-skills/backend/components/xiaoma-zqyl-search-form-backend/SKILL.md +239 -0
  25. package/src/zqyl-skills/backend/components/xiaoma-zqyl-select-tree-backend/SKILL.md +161 -0
  26. package/src/zqyl-skills/backend/components/xiaoma-zqyl-table-simple-backend/SKILL.md +341 -0
  27. package/src/zqyl-skills/backend/components/xiaoma-zqyl-tips-backend/SKILL.md +257 -0
  28. package/src/zqyl-skills/backend/components/xiaoma-zqyl-title-backend/SKILL.md +145 -0
  29. package/src/zqyl-skills/backend/xiaoma-zqyl-feedback-page-backend/SKILL.md +30 -0
  30. package/src/zqyl-skills/backend/xiaoma-zqyl-feedback-page-backend/pages/feedbackPage.md +124 -0
  31. package/src/zqyl-skills/backend/xiaoma-zqyl-form-detail-page-backend/SKILL.md +39 -0
  32. package/src/zqyl-skills/backend/xiaoma-zqyl-form-detail-page-backend/pages/formDetailPage.md +354 -0
  33. package/src/zqyl-skills/backend/xiaoma-zqyl-import-dialog-page-backend/SKILL.md +27 -0
  34. package/src/zqyl-skills/backend/xiaoma-zqyl-import-dialog-page-backend/pages/importDialogPage.md +101 -0
  35. package/src/zqyl-skills/backend/xiaoma-zqyl-list-page-backend/SKILL.md +31 -0
  36. package/src/zqyl-skills/backend/xiaoma-zqyl-list-page-backend/pages/listPage.md +306 -0
  37. package/src/zqyl-skills/front/components/xiaoma-zqyl-bar-chart-front/SKILL.md +142 -0
  38. package/src/zqyl-skills/front/components/xiaoma-zqyl-button-front/SKILL.md +108 -0
  39. package/src/zqyl-skills/front/components/xiaoma-zqyl-collapse-front/SKILL.md +142 -0
  40. package/src/zqyl-skills/front/components/xiaoma-zqyl-container-foot-front/SKILL.md +192 -0
  41. package/src/zqyl-skills/front/components/xiaoma-zqyl-data-census-front/SKILL.md +104 -0
  42. package/src/zqyl-skills/front/components/xiaoma-zqyl-dialog-front/SKILL.md +205 -0
  43. package/src/zqyl-skills/front/components/xiaoma-zqyl-drawer-front/SKILL.md +100 -0
  44. package/src/zqyl-skills/front/components/xiaoma-zqyl-empty-page-front/SKILL.md +131 -0
  45. package/src/zqyl-skills/front/components/xiaoma-zqyl-file-upload-front/SKILL.md +291 -0
  46. package/src/zqyl-skills/front/components/xiaoma-zqyl-flow-chart-front/SKILL.md +118 -0
  47. package/src/zqyl-skills/front/components/xiaoma-zqyl-form-editor-front/SKILL.md +315 -0
  48. package/src/zqyl-skills/front/components/xiaoma-zqyl-form-view-front/SKILL.md +165 -0
  49. package/src/zqyl-skills/front/components/xiaoma-zqyl-funnel-chart-front/SKILL.md +102 -0
  50. package/src/zqyl-skills/front/components/xiaoma-zqyl-gauge-chart-front/SKILL.md +103 -0
  51. package/src/zqyl-skills/front/components/xiaoma-zqyl-heatmap-chart-front/SKILL.md +125 -0
  52. package/src/zqyl-skills/front/components/xiaoma-zqyl-line-chart-front/SKILL.md +136 -0
  53. package/src/zqyl-skills/front/components/xiaoma-zqyl-map-chart-front/SKILL.md +130 -0
  54. package/src/zqyl-skills/front/components/xiaoma-zqyl-message-feedback-front/SKILL.md +63 -0
  55. package/src/zqyl-skills/front/components/xiaoma-zqyl-module-front/SKILL.md +180 -0
  56. package/src/zqyl-skills/front/components/xiaoma-zqyl-pie-chart-front/SKILL.md +132 -0
  57. package/src/zqyl-skills/front/components/xiaoma-zqyl-popover-front/SKILL.md +61 -0
  58. package/src/zqyl-skills/front/components/xiaoma-zqyl-preview-front/SKILL.md +117 -0
  59. package/src/zqyl-skills/front/components/xiaoma-zqyl-search-form-front/SKILL.md +239 -0
  60. package/src/zqyl-skills/front/components/xiaoma-zqyl-select-tree-front/SKILL.md +161 -0
  61. package/src/zqyl-skills/front/components/xiaoma-zqyl-table-simple-front/SKILL.md +341 -0
  62. package/src/zqyl-skills/front/components/xiaoma-zqyl-tips-front/SKILL.md +257 -0
  63. package/src/zqyl-skills/front/components/xiaoma-zqyl-title-front/SKILL.md +145 -0
  64. package/src/zqyl-skills/front/xiaoma-zqyl-feedback-page-front/SKILL.md +30 -0
  65. package/src/zqyl-skills/front/xiaoma-zqyl-feedback-page-front/pages/feedbackPage.md +124 -0
  66. package/src/zqyl-skills/front/xiaoma-zqyl-form-detail-page-front/SKILL.md +39 -0
  67. package/src/zqyl-skills/front/xiaoma-zqyl-form-detail-page-front/pages/formDetailPage.md +351 -0
  68. package/src/zqyl-skills/front/xiaoma-zqyl-import-dialog-page-front/SKILL.md +27 -0
  69. package/src/zqyl-skills/front/xiaoma-zqyl-import-dialog-page-front/pages/importDialogPage.md +101 -0
  70. package/src/zqyl-skills/front/xiaoma-zqyl-list-page-front/SKILL.md +31 -0
  71. package/src/zqyl-skills/front/xiaoma-zqyl-list-page-front/pages/listPage.md +380 -0
  72. package/src/zqyl-skills/mid/components/xiaoma-zqyl-bar-chart-mid/SKILL.md +142 -0
  73. package/src/zqyl-skills/mid/components/xiaoma-zqyl-button-mid/SKILL.md +108 -0
  74. package/src/zqyl-skills/mid/components/xiaoma-zqyl-collapse-mid/SKILL.md +142 -0
  75. package/src/zqyl-skills/mid/components/xiaoma-zqyl-container-foot-mid/SKILL.md +192 -0
  76. package/src/zqyl-skills/mid/components/xiaoma-zqyl-data-census-mid/SKILL.md +104 -0
  77. package/src/zqyl-skills/mid/components/xiaoma-zqyl-dialog-mid/SKILL.md +205 -0
  78. package/src/zqyl-skills/mid/components/xiaoma-zqyl-drawer-mid/SKILL.md +100 -0
  79. package/src/zqyl-skills/mid/components/xiaoma-zqyl-empty-page-mid/SKILL.md +131 -0
  80. package/src/zqyl-skills/mid/components/xiaoma-zqyl-file-upload-mid/SKILL.md +291 -0
  81. package/src/zqyl-skills/mid/components/xiaoma-zqyl-flow-chart-mid/SKILL.md +118 -0
  82. package/src/zqyl-skills/mid/components/xiaoma-zqyl-form-editor-mid/SKILL.md +315 -0
  83. package/src/zqyl-skills/mid/components/xiaoma-zqyl-form-view-mid/SKILL.md +165 -0
  84. package/src/zqyl-skills/mid/components/xiaoma-zqyl-funnel-chart-mid/SKILL.md +102 -0
  85. package/src/zqyl-skills/mid/components/xiaoma-zqyl-gauge-chart-mid/SKILL.md +103 -0
  86. package/src/zqyl-skills/mid/components/xiaoma-zqyl-heatmap-chart-mid/SKILL.md +125 -0
  87. package/src/zqyl-skills/mid/components/xiaoma-zqyl-line-chart-mid/SKILL.md +136 -0
  88. package/src/zqyl-skills/mid/components/xiaoma-zqyl-manager-title-mid/SKILL.md +132 -0
  89. package/src/zqyl-skills/mid/components/xiaoma-zqyl-map-chart-mid/SKILL.md +130 -0
  90. package/src/zqyl-skills/mid/components/xiaoma-zqyl-message-feedback-mid/SKILL.md +63 -0
  91. package/src/zqyl-skills/mid/components/xiaoma-zqyl-module-mid/SKILL.md +180 -0
  92. package/src/zqyl-skills/mid/components/xiaoma-zqyl-mps-table-mid/SKILL.md +179 -0
  93. package/src/zqyl-skills/mid/components/xiaoma-zqyl-pie-chart-mid/SKILL.md +132 -0
  94. package/src/zqyl-skills/mid/components/xiaoma-zqyl-popover-mid/SKILL.md +61 -0
  95. package/src/zqyl-skills/mid/components/xiaoma-zqyl-preview-mid/SKILL.md +117 -0
  96. package/src/zqyl-skills/mid/components/xiaoma-zqyl-search-form-mid/SKILL.md +239 -0
  97. package/src/zqyl-skills/mid/components/xiaoma-zqyl-select-tree-mid/SKILL.md +161 -0
  98. package/src/zqyl-skills/mid/components/xiaoma-zqyl-table-simple-mid/SKILL.md +341 -0
  99. package/src/zqyl-skills/mid/components/xiaoma-zqyl-tips-mid/SKILL.md +257 -0
  100. package/src/zqyl-skills/mid/components/xiaoma-zqyl-title-mid/SKILL.md +145 -0
  101. package/src/zqyl-skills/mid/xiaoma-zqyl-feedback-page-mid/SKILL.md +30 -0
  102. package/src/zqyl-skills/mid/xiaoma-zqyl-feedback-page-mid/pages/feedbackPage.md +125 -0
  103. package/src/zqyl-skills/mid/xiaoma-zqyl-form-detail-page-mid/SKILL.md +39 -0
  104. package/src/zqyl-skills/mid/xiaoma-zqyl-form-detail-page-mid/pages/formDetailPage.md +357 -0
  105. package/src/zqyl-skills/mid/xiaoma-zqyl-import-dialog-page-mid/SKILL.md +27 -0
  106. package/src/zqyl-skills/mid/xiaoma-zqyl-import-dialog-page-mid/pages/importDialogPage.md +102 -0
  107. package/src/zqyl-skills/mid/xiaoma-zqyl-list-page-mid/SKILL.md +30 -0
  108. package/src/zqyl-skills/mid/xiaoma-zqyl-list-page-mid/pages/listPage.md +389 -0
  109. package/src/zqyl-skills/module-help.csv +15 -0
  110. package/src/zqyl-skills/module.yaml +38 -0
  111. package/src/zqyl-skills/xiaoma-zqyl-ui-spec/SKILL.md +478 -0
  112. package/src/zqyl-skills/xiaoma-zqyl-ui-spec/VERSION.md +30 -0
  113. package/src/zqyl-skills/xiaoma-zqyl-ui-spec/components-index.md +55 -0
  114. package/src/zqyl-skills/xiaoma-zqyl-ui-spec/design-tokens.md +167 -0
  115. package/src/zqyl-skills/xiaoma-zqyl-ui-spec/reference.md +385 -0
  116. package/tools/installer/core/manifest.js +4 -3
  117. package/tools/installer/list-options.js +2 -2
  118. package/tools/installer/modules/official-modules.js +15 -47
  119. package/tools/installer/modules/version-resolver.js +2 -2
  120. package/tools/installer/project-root.js +12 -9
  121. package/tools/installer/ui.js +2 -1
  122. package/tools/validate-zqyl-pack.js +171 -0
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: xiaoma-zqyl-collapse-front
3
+ description: 前台可折叠内容区块(标题行展开/收起、header 右侧操作区、content 内容区)的 Vue2 实现规范(ylCollapse)。在用户提及 ylCollapse、yl-collapse、折叠、折叠面板、可收起区块、展开收起,或需要在前台实现该组件时使用。适用于前台门户仓库(如 zqyl-crclopen,platformType `yx`;页头/表格用 ylTitle + ylTableSimple)。 Use when implementing or reviewing the collapse (ylCollapse) component on a ZQYL front page.
4
+ ---
5
+
6
+ # 折叠(前台)
7
+
8
+ 你是一个前端组件实现与改造助手。你必须严格按本技能的规则输出。
9
+
10
+ ## 适用范围
11
+ - 平台:前台
12
+ - platformType:`yx`
13
+ - 组件条目:`collapse`
14
+
15
+ ## 目标
16
+ - 当用户提到该组件/场景时,给出可落地的 Vue2 + Element UI + zqyl-component-base 代码片段与参数建议。
17
+ - 不改变业务行为,仅替换/补齐结构与交互规范。
18
+
19
+ ## 组件注册(必读)
20
+
21
+ - `zqyl-component-base` 公共组件在**项目入口**按组件名逐个 `import 'zqyl-component-base/lib/<ComponentName>'` + `Vue.component` 注册;样式在入口引入 `component.css`。
22
+ - **禁止** `import zqylComponentBase from 'zqyl-component-base'` + `Vue.use(zqylComponentBase)`;页面模板直接使用 `<yl-*>`,**勿**单页重复 import。
23
+ - 生成前先检查入口是否已注册本页用到的组件;缺失则仅在入口补注册。
24
+
25
+ ## 输出要求
26
+ - 回答用户时:根据用户输入与页面场景,只输出**一段**最符合需求的 Vue 代码(可直接粘贴),并简要说明关键 props/注意事项。
27
+ - 不要在一次回答中罗列多种候选实现;不要输出“变体 A/B/C/D”或“方案一/方案二”等对比式内容。
28
+ - 本技能文档「示例」章节含多种参考写法,仅供你内部分析选型;**不得**把多个示例原样全部贴给用户。
29
+ - 示例代码必须可直接粘贴使用(Vue2 单文件组件片段)。
30
+
31
+ ## 数据与接口(禁止 mock)
32
+
33
+ - **禁止**在生成业务页面中填充 mock、演示、假数据或静态业务行(如手写 `loadData: [{ companyName: 'xxx' }]`、`reqData` 示例值、`mounted` 里写死 `total` 等)。
34
+ - 列表/表格:`tableData.loadData` 保持 `[]`,数据由 `ylTableSimple` / `ylMpsTable` 通过 `searchParmas.request` / `queryListUrl` **调接口**获取;`request.url` / `queryListUrl` 写项目已有 `INTERFACE.xxx`,未知时留 `''` 并注释 `// TODO: 补充接口常量`。
35
+ - 查询区:`searchParmas.request` 配置 `url`、`type`、`method`、`options`;有 `url` 时 `:load="true"`(或省略,默认加载),由组件触发查询。
36
+ - 表单详情:`reqData` / 表单 model 初始 `{}` 或字段空值;在 `created` / `mounted` 调详情接口赋值;**禁止**预填示例姓名、金额等。
37
+ - 下拉/枚举:`select` 的 `data` 从字典或接口加载,无数据时 `data: []`;**禁止**写死 `{ name: '待审核', code: '1' }` 类占位项(除非需求明确给定静态枚举)。
38
+ - 统计区 `ylDataCensus`:`:list` 由接口或 `computed` 赋值,**禁止**手写示例金额/数量。
39
+ - 动态行表格:`detailRows` 等初始 `[]`,由接口回显或用户操作增删。
40
+ - 本 skill「示例」章节的静态数据**仅供理解组件 API**;生成业务页面时**不得**照搬进 `data()`。
41
+
42
+ ## 何时使用(智能体选择规则)
43
+
44
+ 当需求/页面出现以下任一信号时,必须优先调用本 skills 并按规则产出代码:
45
+ - 详情/表单页需要将**较长内容分块**,且支持用户展开/收起。
46
+ - 卡片或模块内仅需**单行标题 + 可折叠正文**,标题右侧可放轻量操作。
47
+ - 次要信息默认折叠、关键信息默认展开(通过 `isCollapse` 控制)。
48
+ - 用户提到「yl-collapse」、「ylCollapse」、「折叠组件」、「展开收起」时。
49
+
50
+ 不适用:
51
+ - 需模块卡片、副标题、底部 `footer`、扩展区过渡动画 → 使用 **`ylModule`**。
52
+ - Element 多面板手风琴 → 使用 `el-collapse` / `el-collapse-item`。
53
+
54
+ ### 方案选择(内部分析用,勿在回答中罗列)
55
+ - 默认折叠展示:`isCollapse: true`(默认),仅传 `title` + `#content`。
56
+ - 默认展开:`:is-collapse="false"`。
57
+ - 标题行右侧操作:`#header` 放按钮/链接,与标题同一行右对齐。
58
+ - 父级受控:`:is-collapse` + `@update:collapse` 同步状态。
59
+
60
+ ## API(ylCollapse)
61
+
62
+ > 标签:`<yl-collapse>` / `ylCollapse`;须在入口 `import ylCollapse from 'zqyl-component-base/lib/ylCollapse'` + `Vue.component('ylCollapse', ylCollapse)` 注册;页面模板直接使用,**勿**单页 import;**禁止**全量 `Vue.use(zqylComponentBase)`。
63
+
64
+ ### Props
65
+
66
+ | 属性名 | 类型 | 默认值 | 说明 |
67
+ | --- | --- | --- | --- |
68
+ | `title` | String | `''` | 折叠区标题(左侧,可点击切换) |
69
+ | `isCollapse` / `is-collapse` | Boolean | `true` | 是否处于折叠(收起)状态 |
70
+
71
+ ### Events
72
+
73
+ | 事件名 | 说明 | 回调参数 |
74
+ | --- | --- | --- |
75
+ | `update:collapse` | 展开/收起状态变化时触发 | `Boolean`(当前是否折叠) |
76
+
77
+ ### Slots
78
+
79
+ | 插槽名 | 说明 |
80
+ | --- | --- |
81
+ | `header` | 标题行右侧自定义内容(右对齐) |
82
+ | `content` | 折叠内容区;无此插槽时不渲染内容区 |
83
+
84
+ ### 样式与布局(以组件库为准)
85
+
86
+ - 标题:14px bold / `#303133`;图标与标题间距 6px,点击可切换。
87
+ - `header` 插槽:14px / `#606266`,标题行右侧右对齐。
88
+ - 内容区:`margin-top: 24px`;展开时箭头旋转 180°。
89
+
90
+ ## 示例(参考写法,回答用户时只选用其中一种)
91
+
92
+ ### 基础用法(默认折叠)
93
+ ```vue
94
+ <yl-collapse title="折叠标题">
95
+ <template #content>
96
+ <div>折叠组件的内容区域,可以包含任意业务内容。</div>
97
+ </template>
98
+ </yl-collapse>
99
+ ```
100
+
101
+ ### 卡片内默认展开
102
+ ```vue
103
+ <el-card shadow="never">
104
+ <yl-collapse title="默认展开的折叠区域" :is-collapse="false">
105
+ <template #content>
106
+ <div>该折叠区域初始为展开状态。</div>
107
+ </template>
108
+ </yl-collapse>
109
+ </el-card>
110
+ ```
111
+
112
+ ### 自定义头部右侧(header 插槽)
113
+ ```vue
114
+ <yl-collapse title="自定义头部内容">
115
+ <template #header>
116
+ <el-button type="primary" size="small">提交</el-button>
117
+ </template>
118
+ <template #content>
119
+ <div>折叠组件的内容区域。</div>
120
+ </template>
121
+ </yl-collapse>
122
+ ```
123
+
124
+ ### 受控折叠状态
125
+ ```vue
126
+ <yl-collapse
127
+ title="受控折叠"
128
+ :is-collapse="panelCollapsed"
129
+ @update:collapse="panelCollapsed = $event"
130
+ >
131
+ <template #content>
132
+ <div>内容区</div>
133
+ </template>
134
+ </yl-collapse>
135
+ ```
136
+
137
+ ## 注意事项
138
+ - 内容必须放在 **`#content`** 插槽;无插槽时仅展示标题行。
139
+ - 默认 **`isCollapse: true`**(折叠);需首屏展示正文时设 **`:is-collapse="false"`**。
140
+ - 标题行右侧操作用 **`#header`**;勿与标题文案混写在 `title` 中。
141
+ - 父级需同步状态时监听 **`@update:collapse`**;与 `ylModule` 的扩展区区分使用场景。
142
+ - **`el-card` 内顶层为 `yl-collapse` 时**:**不要**给 `el-card` 加 `el-card-padding-bottom0`(该 class 仅用于卡片内**直接**放置 `ylFormEditor` / `ylFormView`)。
@@ -0,0 +1,192 @@
1
+ ---
2
+ name: xiaoma-zqyl-container-foot-front
3
+ description: 前台固定在页面底部的操作区(title/left/center 插槽、keepBlank 占位)的 Vue2 实现规范(ylContainerFoot)。在用户提及 ylContainerFoot、yl-container-foot、页面底部、底栏、页脚、提交栏、保存取消,或需要在前台实现该组件时使用。适用于前台门户仓库(如 zqyl-crclopen,platformType `yx`;页头/表格用 ylTitle + ylTableSimple)。 Use when implementing or reviewing the container-foot (ylContainerFoot) component on a ZQYL front page.
4
+ ---
5
+
6
+ # 页面底部(前台)
7
+
8
+ 你是一个前端组件实现与改造助手。你必须严格按本技能的规则输出。
9
+
10
+ ## 适用范围
11
+ - 平台:前台
12
+ - platformType:`yx`
13
+ - 组件条目:`containerFoot`
14
+
15
+ ## 目标
16
+ - 当用户提到该组件/场景时,给出可落地的 Vue2 + Element UI + zqyl-component-base 代码片段与参数建议。
17
+ - 不改变业务行为,仅替换/补齐结构与交互规范。
18
+
19
+ ## 组件注册(必读)
20
+
21
+ - `zqyl-component-base` 公共组件在**项目入口**按组件名逐个 `import 'zqyl-component-base/lib/<ComponentName>'` + `Vue.component` 注册;样式在入口引入 `component.css`。
22
+ - **禁止** `import zqylComponentBase from 'zqyl-component-base'` + `Vue.use(zqylComponentBase)`;页面模板直接使用 `<yl-*>`,**勿**单页重复 import。
23
+ - 生成前先检查入口是否已注册本页用到的组件;缺失则仅在入口补注册。
24
+
25
+ ## 输出要求
26
+ - 回答用户时:根据用户输入与页面场景,只输出**一段**最符合需求的 Vue 代码(可直接粘贴),并简要说明关键 props/注意事项。
27
+ - 不要在一次回答中罗列多种候选实现;不要输出“变体 A/B/C/D”或“方案一/方案二”等对比式内容。
28
+ - 本技能文档「示例」章节含多种参考写法,仅供你内部分析选型;**不得**把多个示例原样全部贴给用户。
29
+ - 示例代码必须可直接粘贴使用(Vue2 单文件组件片段)。
30
+
31
+ ## 数据与接口(禁止 mock)
32
+
33
+ - **禁止**在生成业务页面中填充 mock、演示、假数据或静态业务行(如手写 `loadData: [{ companyName: 'xxx' }]`、`reqData` 示例值、`mounted` 里写死 `total` 等)。
34
+ - 列表/表格:`tableData.loadData` 保持 `[]`,数据由 `ylTableSimple` / `ylMpsTable` 通过 `searchParmas.request` / `queryListUrl` **调接口**获取;`request.url` / `queryListUrl` 写项目已有 `INTERFACE.xxx`,未知时留 `''` 并注释 `// TODO: 补充接口常量`。
35
+ - 查询区:`searchParmas.request` 配置 `url`、`type`、`method`、`options`;有 `url` 时 `:load="true"`(或省略,默认加载),由组件触发查询。
36
+ - 表单详情:`reqData` / 表单 model 初始 `{}` 或字段空值;在 `created` / `mounted` 调详情接口赋值;**禁止**预填示例姓名、金额等。
37
+ - 下拉/枚举:`select` 的 `data` 从字典或接口加载,无数据时 `data: []`;**禁止**写死 `{ name: '待审核', code: '1' }` 类占位项(除非需求明确给定静态枚举)。
38
+ - 统计区 `ylDataCensus`:`:list` 由接口或 `computed` 赋值,**禁止**手写示例金额/数量。
39
+ - 动态行表格:`detailRows` 等初始 `[]`,由接口回显或用户操作增删。
40
+ - 本 skill「示例」章节的静态数据**仅供理解组件 API**;生成业务页面时**不得**照搬进 `data()`。
41
+
42
+ ## 何时使用(智能体选择规则)
43
+
44
+ 当需求/页面出现以下任一信号时,必须优先调用本 skills 并按规则产出代码:
45
+ - 表单/详情/分步页需要在**页面底部固定**展示操作按钮(提交、保存、取消等)。
46
+ - 底部需同时展示辅助说明(如 Ukey 提示)与主操作按钮。
47
+ - 底部需展示协议勾选、说明文案与操作按钮。
48
+ - 用户提到「yl-container-foot」、「ylContainerFoot」、「页面底部」、「底栏」、「页脚」时。
49
+
50
+ 不适用:
51
+ - 弹窗内底部按钮 → 使用 `ylDialog` 默认 footer 或 `#footer` 插槽。
52
+ - 卡片内局部操作区(非全页固定底栏)→ 使用 `el-card` 内按钮组或表单行内按钮。
53
+ - **表单详情页默认操作** → 使用 **`ylTitle` 右侧插槽**(需求未说明按钮位置时**不要**用本组件)。
54
+
55
+ ### 操作按钮居中(强制)
56
+
57
+ `ylContainerFoot` 底栏**主操作按钮默认居中**,须通过 **`#center` 插槽**渲染(组件内 `.foot-content-center { text-align: center }`)。
58
+
59
+ | 规则 | 说明 |
60
+ | --- | --- |
61
+ | **必须** | 保存/取消/提交/暂存等操作按钮 → **`#center` 插槽** |
62
+ | **必须** | 协议勾选、Ukey 提示等辅助文案 → **`#left` 插槽**(或两行场景用 `#title`) |
63
+ | **禁止** | 默认插槽 + `display:flex; justify-content:space-between` 将按钮顶到右侧(会破坏居中) |
64
+ | **禁止** | 在 `#left` 内放主操作按钮(除非原型明确要求且与规范方确认) |
65
+
66
+ 仅按钮、无左侧文案时:只用 **`#center`**,不要包一层自定义 flex。
67
+
68
+ ### 选型优先级(强制)
69
+
70
+ 1. **有具体说明或原型图/截图** → 以需求/原型为准:按底栏**实际行数、文案位置**选用插槽;**按钮仍默认放 `#center` 居中**(除非原型明确写「按钮右对齐」)。
71
+ 2. **无具体说明、无原型** → 按本 skill 下方「默认插槽选型」与「方案选择」执行,**不得**自行臆造 `#title` 或默认插槽 flex。
72
+
73
+ 判据示例:原型底栏**同一行**左勾选 + 按钮 → **`#left` + `#center`**(按钮居中),**勿**用 `#title`、**勿**用默认插槽 flex;原型**明确两行**(上行协议、下行 Ukey + 按钮)→ 才用 `#title` + `#left` + `#center`。
74
+
75
+ ### 默认插槽选型(无原型/无具体说明时)
76
+
77
+ | 场景 | 插槽组合 | 说明 |
78
+ | --- | --- | --- |
79
+ | **单行**:左侧协议勾选 + 操作按钮(常见签约底栏) | **`#left` + `#center`** | 勾选/协议放 `#left`,**按钮放 `#center` 居中**;**禁止** `#title`、**禁止**默认插槽 flex |
80
+ | 上行协议/说明 + 下行 Ukey 提示 + 按钮 | `#title` + `#left` + `#center` | 仅原型明确两行时才用 `#title`;按钮仍放 `#center` |
81
+ | 左侧 Ukey/说明 + 操作按钮 | `#left` + `#center` | 无协议顶栏 |
82
+ | 仅按钮 | **`#center`** | 取消/保存/提交等居中展示 |
83
+
84
+ > 上表为**默认**;有原型/需求具体描述时**以原型为准**,但**按钮默认仍居中**(`#center`),仅原型明确「按钮右对齐」时才改布局。
85
+
86
+ > **`#title` 为独立顶栏**:组件内渲染在 `foot-content` **上方**(`keepBlank-title` 占位约 94px),与 `#center` **不在同一行**。单行底栏(左勾选 + 按钮)**勿用 `#title`**;仅原型明确两行时才用。
87
+
88
+ ### 方案选择(内部分析用,勿在回答中罗列;无原型时按此默认)
89
+ - 仅主操作:**`#center`** 放按钮组(保存/取消、提交等),按钮居中。
90
+ - 辅助说明 + 主操作:**`#left`** 放 Ukey/协议/提示文案,**`#center`** 放主按钮(居中)。
91
+ - **单行**协议勾选 + 按钮:**`#left`** 放勾选 + 协议链接,**`#center`** 放按钮(**勿用 `#title`**,**勿用**默认插槽 flex)。
92
+ - **两行**(上行协议 + 下行 Ukey + 按钮):**`#title`** 放 checkbox + 协议链接,再配 **`#left`** / **`#center`**。
93
+ - 旧版默认插槽:仅兼容存量页;**新建页禁止**用默认插槽包 flex 布局替代 `#center`。
94
+
95
+ ## API(ylContainerFoot)
96
+
97
+ > 标签:`<yl-container-foot>` / `ylContainerFoot`;须在入口 `import ylContainerFoot from 'zqyl-component-base/lib/ylContainerFoot'` + `Vue.component('ylContainerFoot', ylContainerFoot)` 注册;页面模板直接使用,**勿**单页 import;**禁止**全量 `Vue.use(zqylComponentBase)`。
98
+
99
+ ### Props
100
+
101
+ 无。
102
+
103
+ ### Events
104
+
105
+ 无。
106
+
107
+ ### Slots
108
+
109
+ | 插槽名 | 说明 |
110
+ | --- | --- |
111
+ | `title` | **独立顶栏**(协议勾选、说明等);渲染在 `foot-content` **上方**;有内容时占位约 94px;**与按钮不在同一行** |
112
+ | `left` | 左侧辅助说明或次要操作(约 40% 宽,左对齐) |
113
+ | `center` | **主操作按钮区(居中)**;组件 `.foot-content-center { text-align: center }` |
114
+ | `right` | 预留,当前未实现 |
115
+ | default | 兼容旧版;**新建页勿用**自定义 flex 替代 `#center` |
116
+
117
+ ### 布局与样式
118
+
119
+ - 固定于视口底部(`position: fixed`),`z-index: 3`,`el-card` 阴影 `0 0 5px rgba(0,0,0,.09)`。
120
+ - 无 `title`:底栏 `min-height: 56px`,内置 `keepBlank` 占位 56px。
121
+ - 有 `title`:`keepBlank-title` 占位约 94px。
122
+ - 使用 `#left` / `#center` 时:三栏 table 布局,**`#center` 内按钮水平居中**。
123
+ - 业务基座内默认 `padding-left: 180px` 让出侧栏;子应用/iframe 场景组件会自动调整宽度。
124
+ - 文案高亮可用工具类 `defaultTextColor`(主题色)。
125
+
126
+ ## 示例(参考写法,回答用户时只选用其中一种)
127
+
128
+ ### 基础用法(left + center)
129
+ ```vue
130
+ <yl-container-foot>
131
+ <template #left>
132
+ 请插入尾号为<span class="defaultTextColor">【Ukey后四位】</span>的 Ukey 操作
133
+ </template>
134
+ <template #center>
135
+ <el-button type="primary">提交</el-button>
136
+ </template>
137
+ </yl-container-foot>
138
+ ```
139
+
140
+ ### 表单详情(取消 + 保存)
141
+ ```vue
142
+ <yl-container-foot>
143
+ <template #center>
144
+ <el-button>取 消</el-button>
145
+ <el-button type="primary">保 存</el-button>
146
+ </template>
147
+ </yl-container-foot>
148
+ ```
149
+
150
+ ### 单行:协议勾选 + 按钮(**默认;按钮居中**)
151
+ ```vue
152
+ <yl-container-foot>
153
+ <template #left>
154
+ <el-checkbox v-model="agreed">我已阅读并确认</el-checkbox>
155
+ <el-button type="text">《用户协议》</el-button>
156
+ </template>
157
+ <template #center>
158
+ <el-button type="primary" plain>暂存</el-button>
159
+ <el-button type="primary" :disabled="!agreed">提交</el-button>
160
+ </template>
161
+ </yl-container-foot>
162
+ ```
163
+
164
+ ### 两行:title 顶栏协议 + 下行 Ukey + 按钮(**原型明确两行时**)
165
+ ```vue
166
+ <yl-container-foot>
167
+ <div slot="title">
168
+ <el-checkbox v-model="agreed">我已阅读并确认</el-checkbox>
169
+ <el-button type="text">《用户协议》</el-button>
170
+ </div>
171
+ <template #left>
172
+ 请插入尾号为<span class="defaultTextColor">【Ukey后四位】</span>的 Ukey 操作
173
+ </template>
174
+ <template #center>
175
+ <el-button type="primary" :disabled="!agreed">提交</el-button>
176
+ </template>
177
+ </yl-container-foot>
178
+ ```
179
+
180
+ ### 默认插槽(兼容旧版,新建页勿用)
181
+ ```vue
182
+ <yl-container-foot>
183
+ <el-button>取 消</el-button>
184
+ <el-button type="primary">确 定</el-button>
185
+ </yl-container-foot>
186
+ ```
187
+
188
+ ## 注意事项
189
+ - **操作按钮默认居中**:主操作**必须**放 **`#center`**;**禁止**默认插槽 + `justify-content: space-between` 把按钮顶到右侧。
190
+ - **有原型/具体说明 → 以原型为准**;**无说明 → 按本 skill 默认插槽选型**,勿臆造结构。
191
+ - **`#title` 与 `#center` 不在同一行**:`#title` 为独立顶栏;单行底栏(左勾选 + 按钮)→ **`#left` + `#center`**,**禁止** `#title` + `#center`、**禁止**默认插槽 flex。
192
+ - 有 `#title` 时页面需 `keepBlank-title`(约 94px)占位;单行底栏无 `#title` 时占位 56px。
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: xiaoma-zqyl-data-census-front
3
+ description: 前台指标摘要卡片(描述 + 数值)的 Vue2 实现规范(ylDataCensus)。在用户提及 ylDataCensus、yl-data-census、数据统计、指标摘要、仪表盘统计区,或需要在前台实现该组件时使用。适用于前台门户仓库(如 zqyl-crclopen,platformType `yx`;页头/表格用 ylTitle + ylTableSimple)。 Use when implementing or reviewing the data-census (ylDataCensus) component on a ZQYL front page.
4
+ ---
5
+
6
+ # 数据统计(前台)
7
+
8
+ 你是一个前端组件实现与改造助手。你必须严格按本技能的规则输出。
9
+
10
+ ## 适用范围
11
+ - 平台:前台
12
+ - platformType:`yx`
13
+ - 组件条目:`dataCensus`
14
+
15
+ ## 目标
16
+ - 当用户提到该组件/场景时,给出可落地的 Vue2 + Element UI + zqyl-component-base 代码片段与参数建议。
17
+ - 不改变业务行为,仅替换/补齐结构与交互规范。
18
+
19
+ ## 组件注册(必读)
20
+
21
+ - `zqyl-component-base` 公共组件在**项目入口**按组件名逐个 `import 'zqyl-component-base/lib/<ComponentName>'` + `Vue.component` 注册;样式在入口引入 `component.css`。
22
+ - **禁止** `import zqylComponentBase from 'zqyl-component-base'` + `Vue.use(zqylComponentBase)`;页面模板直接使用 `<yl-*>`,**勿**单页重复 import。
23
+ - 生成前先检查入口是否已注册本页用到的组件;缺失则仅在入口补注册。
24
+
25
+ ## 输出要求
26
+ - 回答用户时:根据用户输入与页面场景,只输出**一段**最符合需求的 Vue 代码(可直接粘贴),并简要说明关键 props/注意事项。
27
+ - 不要在一次回答中罗列多种候选实现;不要输出“变体 A/B/C/D”或“方案一/方案二”等对比式内容。
28
+ - 本技能文档「示例」章节含多种参考写法,仅供你内部分析选型;**不得**把多个示例原样全部贴给用户。
29
+ - 示例代码必须可直接粘贴使用(Vue2 单文件组件片段)。
30
+
31
+ ## 数据与接口(禁止 mock)
32
+
33
+ - **禁止**在生成业务页面中填充 mock、演示、假数据或静态业务行(如手写 `loadData: [{ companyName: 'xxx' }]`、`reqData` 示例值、`mounted` 里写死 `total` 等)。
34
+ - 列表/表格:`tableData.loadData` 保持 `[]`,数据由 `ylTableSimple` / `ylMpsTable` 通过 `searchParmas.request` / `queryListUrl` **调接口**获取;`request.url` / `queryListUrl` 写项目已有 `INTERFACE.xxx`,未知时留 `''` 并注释 `// TODO: 补充接口常量`。
35
+ - 查询区:`searchParmas.request` 配置 `url`、`type`、`method`、`options`;有 `url` 时 `:load="true"`(或省略,默认加载),由组件触发查询。
36
+ - 表单详情:`reqData` / 表单 model 初始 `{}` 或字段空值;在 `created` / `mounted` 调详情接口赋值;**禁止**预填示例姓名、金额等。
37
+ - 下拉/枚举:`select` 的 `data` 从字典或接口加载,无数据时 `data: []`;**禁止**写死 `{ name: '待审核', code: '1' }` 类占位项(除非需求明确给定静态枚举)。
38
+ - 统计区 `ylDataCensus`:`:list` 由接口或 `computed` 赋值,**禁止**手写示例金额/数量。
39
+ - 动态行表格:`detailRows` 等初始 `[]`,由接口回显或用户操作增删。
40
+ - 本 skill「示例」章节的静态数据**仅供理解组件 API**;生成业务页面时**不得**照搬进 `data()`。
41
+
42
+ ## 何时使用(智能体选择规则)
43
+
44
+ 当需求/页面出现以下任一信号时,必须优先调用本 skills 并按规则产出代码:
45
+ - 列表页/详情页顶部需要展示若干**指标摘要**(描述 + 数值),无复杂交互。
46
+ - 数据面板、仪表盘统计区、待办/状态数量概览。
47
+ - 用户提到「yl-data-census」、「ylDataCensus」、「数据统计」卡片时。
48
+
49
+ 不适用:趋势图、对比图、可钻取分析 → 使用 ECharts 或业务定制模块。
50
+
51
+ ## API(ylDataCensus)
52
+
53
+ > 标签:`<yl-data-census>` / `ylDataCensus`;须在入口 `import ylDataCensus from 'zqyl-component-base/lib/ylDataCensus'` + `Vue.component('ylDataCensus', ylDataCensus)` 注册;页面模板直接使用,**勿**单页 import;**禁止**全量 `Vue.use(zqylComponentBase)`。
54
+
55
+ ### Props
56
+
57
+ | 属性名 | 类型 | 默认值 | 说明 |
58
+ | --- | --- | --- | --- |
59
+ | `list` | Array | `null` | 指标列表(**必填**,勿传空数组) |
60
+ | `title` | Boolean | `false` | 是否显示标题区(为 `true` 时顶部展示「数据统计」) |
61
+
62
+ ### `list[]` 项字段
63
+
64
+ | 字段 | 类型 | 说明 |
65
+ | --- | --- | --- |
66
+ | `describe` | String | 指标描述文案 |
67
+ | `data` | String \| Number | 指标值;金额等建议在业务层格式化后传入 |
68
+
69
+ ### Events / Slots / Methods
70
+
71
+ 无对外事件、插槽与方法(以组件库为准)。
72
+
73
+ ### 样式与布局(以组件库为准)
74
+
75
+ - 容器:`el-card` + Element 栅格;列宽约 `24 / list.length`。
76
+ - 数据项之间使用左边框分隔;`title` 为 true 时标题约 14px bold,下边框 `1px solid #F2F2F2`。
77
+ - 描述约 14px / `#909399`;数值约 24px bold / `#303133`。
78
+
79
+ ## 示例(参考写法,回答用户时只选用其中一种)
80
+
81
+ ### 基础用法(无标题)
82
+ ```vue
83
+ <yl-data-census :list="dataList" />
84
+ ```
85
+
86
+ // dataList: 由接口赋值,项为 { describe, data }
87
+
88
+ ### 带标题
89
+ ```vue
90
+ <yl-data-census :list="dataList" :title="true" />
91
+ ```
92
+
93
+ ### 金额类指标(字符串格式化)
94
+ ```vue
95
+ <yl-data-census :list="censusList" />
96
+ ```
97
+
98
+ // censusList: 由接口赋值,金额类 data 可为格式化字符串
99
+
100
+ ## 注意事项
101
+ - `list` 由接口或 `computed` 赋值;**禁止**手写示例指标;接口未就绪时 `list: []`,待 `created`/`mounted` 请求后更新。
102
+ - 同一页面多处统计卡时,保持 `list` 长度一致,避免栅格列宽跳动。
103
+ - `title` 为 `true` 时展示内置标题「数据统计」;列表页概览常用无标题或带标题两种。
104
+ - 金额、百分比等在业务层格式化为字符串再传入;组件仅负责展示,无点击事件。
@@ -0,0 +1,205 @@
1
+ ---
2
+ name: xiaoma-zqyl-dialog-front
3
+ description: 前台弹窗(确认/取消、表格选择、表单编辑、关闭前确认)的 Vue2 实现规范(ylDialog)。在用户提及 ylDialog、yl-dialog、弹窗、对话框、表格选择弹窗,或需要在前台实现该组件时使用。适用于前台门户仓库(如 zqyl-crclopen,platformType `yx`;页头/表格用 ylTitle + ylTableSimple)。 Use when implementing or reviewing the dialog (ylDialog) component on a ZQYL front page.
4
+ ---
5
+
6
+ # 弹窗(前台)
7
+
8
+ 你是一个前端组件实现与改造助手。你必须严格按本技能的规则输出。
9
+
10
+ ## 适用范围
11
+ - 平台:前台
12
+ - platformType:`yx`
13
+ - 组件条目:`dialog`
14
+
15
+ ## 目标
16
+ - 当用户提到该组件/场景时,给出可落地的 Vue2 + Element UI + zqyl-component-base 代码片段与参数建议。
17
+ - 不改变业务行为,仅替换/补齐结构与交互规范。
18
+
19
+ ## 组件注册(必读)
20
+
21
+ - `zqyl-component-base` 公共组件在**项目入口**按组件名逐个 `import 'zqyl-component-base/lib/<ComponentName>'` + `Vue.component` 注册;样式在入口引入 `component.css`。
22
+ - **禁止** `import zqylComponentBase from 'zqyl-component-base'` + `Vue.use(zqylComponentBase)`;页面模板直接使用 `<yl-*>`,**勿**单页重复 import。
23
+ - 生成前先检查入口是否已注册本页用到的组件;缺失则仅在入口补注册。
24
+
25
+ ## 输出要求
26
+ - 回答用户时:根据用户输入与页面场景,只输出**一段**最符合需求的 Vue 代码(可直接粘贴),并简要说明关键 props/注意事项。
27
+ - 不要在一次回答中罗列多种候选实现;不要输出“变体 A/B/C/D”或“方案一/方案二”等对比式内容。
28
+ - 本技能文档「示例」章节含多种参考写法,仅供你内部分析选型;**不得**把多个示例原样全部贴给用户。
29
+ - 示例代码必须可直接粘贴使用(Vue2 单文件组件片段)。
30
+
31
+ ## 数据与接口(禁止 mock)
32
+
33
+ - **禁止**在生成业务页面中填充 mock、演示、假数据或静态业务行(如手写 `loadData: [{ companyName: 'xxx' }]`、`reqData` 示例值、`mounted` 里写死 `total` 等)。
34
+ - 列表/表格:`tableData.loadData` 保持 `[]`,数据由 `ylTableSimple` / `ylMpsTable` 通过 `searchParmas.request` / `queryListUrl` **调接口**获取;`request.url` / `queryListUrl` 写项目已有 `INTERFACE.xxx`,未知时留 `''` 并注释 `// TODO: 补充接口常量`。
35
+ - 查询区:`searchParmas.request` 配置 `url`、`type`、`method`、`options`;有 `url` 时 `:load="true"`(或省略,默认加载),由组件触发查询。
36
+ - 表单详情:`reqData` / 表单 model 初始 `{}` 或字段空值;在 `created` / `mounted` 调详情接口赋值;**禁止**预填示例姓名、金额等。
37
+ - 下拉/枚举:`select` 的 `data` 从字典或接口加载,无数据时 `data: []`;**禁止**写死 `{ name: '待审核', code: '1' }` 类占位项(除非需求明确给定静态枚举)。
38
+ - 统计区 `ylDataCensus`:`:list` 由接口或 `computed` 赋值,**禁止**手写示例金额/数量。
39
+ - 动态行表格:`detailRows` 等初始 `[]`,由接口回显或用户操作增删。
40
+ - 本 skill「示例」章节的静态数据**仅供理解组件 API**;生成业务页面时**不得**照搬进 `data()`。
41
+
42
+ ## 示例(参考写法,回答用户时只选用其中一种)
43
+
44
+ ## 何时使用(智能体选择规则)
45
+
46
+ 当需求/页面出现以下任一信号时,必须优先调用本 skills 并按规则产出代码:
47
+ - 需要弹窗承载内容区 + 底部按钮(确认/取消/关闭)。
48
+ - 表格选择(单选/多选),且未选中时底部主操作需置灰。
49
+ - 弹窗内表单编辑(建议两列以内)、或需在关闭前二次确认。
50
+ - 弹窗内需要放查询条件、标签切换、合计等组合内容。
51
+ - 弹窗内表格展示(含附件列表、选择列表、只读明细等)。
52
+
53
+ 约束:只要是弹窗场景,一律使用 `ylDialog` / `<yl-dialog>`(不要直接使用 Element `el-dialog`)。
54
+ 约束:弹窗内表格遵循 **`xiaoma-zqyl-table-simple-front`** 全页表格优先级:优先 `ylTableSimple`,勿用 `el-table`;行内操作用 `attr.type: 'handle'`。
55
+
56
+ ## API(ylDialog)
57
+
58
+ > 标签:`<yl-dialog>` / `ylDialog`;须在入口 `import ylDialog from 'zqyl-component-base/lib/ylDialog'` + `Vue.component('ylDialog', ylDialog)` 注册;页面模板直接使用,**勿**单页 import;**禁止**全量 `Vue.use(zqylComponentBase)`。
59
+
60
+ ### Props
61
+ - `visible: boolean` 是否显示;建议使用 `:visible.sync`
62
+ - `attributes: object` 透传给 `el-dialog`(与 `$attrs` 合并),如 `width` / `title` / `closeOnClickModal` 等
63
+ - `dialogTitleDate: object|null` 自定义标题区;常用字段:`type` / `title` / `icon` / `color`
64
+ - `showClose: boolean` 是否显示关闭按钮,默认 `true`
65
+ - `beforeClose: Function` 关闭回调;若传入,关闭时仅调用该函数,不会自动同步 `visible`
66
+ - `appendToBody: boolean` 同 `el-dialog`
67
+ - `botSpace: boolean` 是否保留底部间距,默认 `true`
68
+
69
+ ### Events
70
+ - `update:visible`(`.sync` 用于可见性同步)
71
+ - `open` / `opened` / `close` / `closed`(透传自 `el-dialog`)
72
+
73
+ ### Slots
74
+ - `default` 主体内容
75
+ - `subTitle` 标题行内副标题(`#subTitle` 插槽,内容用公共 class `sub-title` 包裹)
76
+ - `footer` 底部操作区
77
+
78
+ ### 基础对话框
79
+ ```vue
80
+ <yl-dialog
81
+ :visible.sync="dialogVisible"
82
+ :attributes="{ width: '600px', title: '标题', closeOnClickModal: false }"
83
+ >
84
+ <div>内容</div>
85
+ <div slot="footer" class="text-right">
86
+ <el-button size="small" @click="dialogVisible = false">取消</el-button>
87
+ <el-button size="small" type="primary" @click="dialogVisible = false">确定</el-button>
88
+ </div>
89
+ </yl-dialog>
90
+ ```
91
+
92
+ ### 状态标题 / 隐藏标题
93
+ ```vue
94
+ <!-- success / warning / error -->
95
+ <yl-dialog
96
+ :visible.sync="visible"
97
+ :dialog-title-date="{ type: 'success', title: '操作成功' }"
98
+ :attributes="{ width: '600px' }"
99
+ />
100
+
101
+ <!-- type: hidden 隐藏原生标题栏 -->
102
+ <yl-dialog :dialog-title-date="{ type: 'hidden' }" :attributes="{ width: '600px' }" />
103
+ ```
104
+
105
+ ### 副标题(subTitle 插槽)
106
+ ```vue
107
+ <yl-dialog
108
+ :visible.sync="visible"
109
+ :attributes="{ title: '标题', width: '600px' }"
110
+ >
111
+ <template slot="subTitle">
112
+ <div class="sub-title">这是对话框的副标题</div>
113
+ </template>
114
+ <div>内容</div>
115
+ </yl-dialog>
116
+ ```
117
+
118
+ - 副标题须用 `#subTitle` 插槽 + 公共 class `sub-title`(组件库已定义样式,勿自定义 class)。
119
+
120
+ ### 只读表格弹窗(无底部操作按钮)
121
+ ```vue
122
+ <yl-dialog :visible.sync="visible" :attributes="{ title: '查看明细', width: '900px' }">
123
+ <yl-table-simple :data="tableData" :page="true" />
124
+ </yl-dialog>
125
+ ```
126
+
127
+ - 只读查看时不使用 `#footer` 插槽;关闭依赖标题栏 × 或 `visible.sync`;此时 `el-dialog__body` 保留 **24px** 底边距。
128
+
129
+ ### 表格选择弹窗(单选 / 多选,未选时按钮置灰)
130
+ ```vue
131
+ <yl-dialog :visible.sync="visible" :attributes="{ title: '选择企业', width: '900px' }">
132
+ <yl-table-simple :data="tableData" :page="true" @changeRadioData="onRadio" />
133
+ <div slot="footer" class="text-right">
134
+ <el-button size="small" @click="visible = false">取消</el-button>
135
+ <el-button size="small" type="primary" :disabled="!selectedRow" @click="confirm">确定</el-button>
136
+ </div>
137
+ </yl-dialog>
138
+ ```
139
+
140
+ ### 关闭前确认(beforeClose)
141
+ ```vue
142
+ <yl-dialog
143
+ :visible.sync="visible"
144
+ :attributes="{ title: '编辑', width: '600px' }"
145
+ :before-close="handleBeforeClose"
146
+ />
147
+ ```
148
+
149
+ ```js
150
+ // handleBeforeClose 内需自行 visible = false;不会自动 sync
151
+ handleBeforeClose() {
152
+ this.$confirm('确认关闭?').then(() => { this.visible = false });
153
+ },
154
+ ```
155
+
156
+ ### 附件列表弹窗(ylTableSimple + handle)
157
+ ```vue
158
+ <yl-dialog :visible.sync="visible" :attributes="{ title: '附件标题', width: '900px' }">
159
+ <yl-table-simple :data="attachTableData" :page="false" />
160
+ </yl-dialog>
161
+ ```
162
+
163
+ ```js
164
+ attachTableData: {
165
+ loadData: [],
166
+ attributes: { height: '360px' },
167
+ header: [
168
+ { prop: 'name', label: '文件名称', minWidth: 240, tooltip: true },
169
+ {
170
+ label: '操作',
171
+ width: 200,
172
+ attr: {
173
+ fixed: 'right',
174
+ type: 'handle',
175
+ handle: [
176
+ { text: '下载', type: 'primary', callback: (scope) => this.onDownload(scope.row) },
177
+ { text: '删除', callback: (scope) => this.onRemove(scope.row) },
178
+ ],
179
+ },
180
+ },
181
+ ],
182
+ },
183
+ ```
184
+
185
+ ### 多层级弹窗
186
+ ```vue
187
+ <yl-dialog :visible.sync="layer1" :attributes="{ title: '一级', width: '600px' }">
188
+ <el-button @click="layer2 = true">打开二级</el-button>
189
+ </yl-dialog>
190
+ <yl-dialog :visible.sync="layer2" :append-to-body="true" :attributes="{ title: '二级', width: '520px' }" />
191
+ ```
192
+
193
+ ## 注意事项
194
+ - 高度:内容区 **200px ~ 550px**(`dialogMinHeight` / `dialogMaxHeight`);非 `ylDialog` 内置限制,须在内容区或表格 `attributes.height` 中自行约束。
195
+ - 宽度优先 **600px / 900px / 1200px**;`attributes` 与标签属性合并透传给 `el-dialog`。
196
+ - `beforeClose` 传入后关闭不会自动 `update:visible`,须在回调或业务逻辑中手动置 `visible` 为 false。
197
+ - `dialogTitleDate.type`:`success` / `warning` / `error` / `none` / `hidden`(隐藏原生标题栏)。
198
+ - 弹窗内表格:遵循全页 **`ylTableSimple` 优先**规则;须设置 `data.attributes.height` 使表格体在内容区(200px ~ 550px)内滚动。
199
+ - 表格弹窗:只读查看时不附带行内操作、**不展示底部操作按钮**(无 `#footer`);无 footer 时 `el-dialog__body` 须保留 **24px** 底边距;单选/多选未选中时底部主操作置灰;分页与列表页 `ylTableSimple` 一致(`:page="true"`,总数由接口返回)。
200
+ - 说明信息:标题右侧用 `subTitle` 插槽 + `<div class="sub-title">`;表格相关信息放表格上方;次要提示放弹窗底部。
201
+ - 底部次要信息布局:当需要在弹窗底部展示次要提示时,放在 `footer` 区域**按钮左侧**(左文右按钮)。可用 `el-row` + 两列 `el-col(:span="12")`,左列 `text-left textMinor`,右列 `text-right` 放操作按钮。
202
+ - 弹窗表单:不建议三列;内容区高度 200px ~ 550px,超出滚动。
203
+ - 滚动:一行查询时条件/表头固定,仅表格区域滚动;多行查询时条件与表格同滚;弹窗内表格分页展示与列表页一致。
204
+ - 组合能力:弹窗内可放 `ylSearchForm`、合计行、多 `el-tabs`。
205
+ - 多层级:二级弹窗建议 `appendToBody`。