@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.
- package/package.json +1 -1
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-bar-chart-backend/SKILL.md +142 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-button-backend/SKILL.md +108 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-collapse-backend/SKILL.md +142 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-container-foot-backend/SKILL.md +192 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-data-census-backend/SKILL.md +104 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-dialog-backend/SKILL.md +205 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-drawer-backend/SKILL.md +100 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-empty-page-backend/SKILL.md +131 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-file-upload-backend/SKILL.md +291 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-flow-chart-backend/SKILL.md +118 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-form-editor-backend/SKILL.md +315 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-form-view-backend/SKILL.md +165 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-funnel-chart-backend/SKILL.md +102 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-gauge-chart-backend/SKILL.md +103 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-heatmap-chart-backend/SKILL.md +125 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-line-chart-backend/SKILL.md +136 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-map-chart-backend/SKILL.md +130 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-message-feedback-backend/SKILL.md +63 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-module-backend/SKILL.md +180 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-pie-chart-backend/SKILL.md +132 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-popover-backend/SKILL.md +61 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-preview-backend/SKILL.md +117 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-search-form-backend/SKILL.md +239 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-select-tree-backend/SKILL.md +161 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-table-simple-backend/SKILL.md +341 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-tips-backend/SKILL.md +257 -0
- package/src/zqyl-skills/backend/components/xiaoma-zqyl-title-backend/SKILL.md +145 -0
- package/src/zqyl-skills/backend/xiaoma-zqyl-feedback-page-backend/SKILL.md +30 -0
- package/src/zqyl-skills/backend/xiaoma-zqyl-feedback-page-backend/pages/feedbackPage.md +124 -0
- package/src/zqyl-skills/backend/xiaoma-zqyl-form-detail-page-backend/SKILL.md +39 -0
- package/src/zqyl-skills/backend/xiaoma-zqyl-form-detail-page-backend/pages/formDetailPage.md +354 -0
- package/src/zqyl-skills/backend/xiaoma-zqyl-import-dialog-page-backend/SKILL.md +27 -0
- package/src/zqyl-skills/backend/xiaoma-zqyl-import-dialog-page-backend/pages/importDialogPage.md +101 -0
- package/src/zqyl-skills/backend/xiaoma-zqyl-list-page-backend/SKILL.md +31 -0
- package/src/zqyl-skills/backend/xiaoma-zqyl-list-page-backend/pages/listPage.md +306 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-bar-chart-front/SKILL.md +142 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-button-front/SKILL.md +108 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-collapse-front/SKILL.md +142 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-container-foot-front/SKILL.md +192 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-data-census-front/SKILL.md +104 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-dialog-front/SKILL.md +205 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-drawer-front/SKILL.md +100 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-empty-page-front/SKILL.md +131 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-file-upload-front/SKILL.md +291 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-flow-chart-front/SKILL.md +118 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-form-editor-front/SKILL.md +315 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-form-view-front/SKILL.md +165 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-funnel-chart-front/SKILL.md +102 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-gauge-chart-front/SKILL.md +103 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-heatmap-chart-front/SKILL.md +125 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-line-chart-front/SKILL.md +136 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-map-chart-front/SKILL.md +130 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-message-feedback-front/SKILL.md +63 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-module-front/SKILL.md +180 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-pie-chart-front/SKILL.md +132 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-popover-front/SKILL.md +61 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-preview-front/SKILL.md +117 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-search-form-front/SKILL.md +239 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-select-tree-front/SKILL.md +161 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-table-simple-front/SKILL.md +341 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-tips-front/SKILL.md +257 -0
- package/src/zqyl-skills/front/components/xiaoma-zqyl-title-front/SKILL.md +145 -0
- package/src/zqyl-skills/front/xiaoma-zqyl-feedback-page-front/SKILL.md +30 -0
- package/src/zqyl-skills/front/xiaoma-zqyl-feedback-page-front/pages/feedbackPage.md +124 -0
- package/src/zqyl-skills/front/xiaoma-zqyl-form-detail-page-front/SKILL.md +39 -0
- package/src/zqyl-skills/front/xiaoma-zqyl-form-detail-page-front/pages/formDetailPage.md +351 -0
- package/src/zqyl-skills/front/xiaoma-zqyl-import-dialog-page-front/SKILL.md +27 -0
- package/src/zqyl-skills/front/xiaoma-zqyl-import-dialog-page-front/pages/importDialogPage.md +101 -0
- package/src/zqyl-skills/front/xiaoma-zqyl-list-page-front/SKILL.md +31 -0
- package/src/zqyl-skills/front/xiaoma-zqyl-list-page-front/pages/listPage.md +380 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-bar-chart-mid/SKILL.md +142 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-button-mid/SKILL.md +108 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-collapse-mid/SKILL.md +142 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-container-foot-mid/SKILL.md +192 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-data-census-mid/SKILL.md +104 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-dialog-mid/SKILL.md +205 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-drawer-mid/SKILL.md +100 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-empty-page-mid/SKILL.md +131 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-file-upload-mid/SKILL.md +291 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-flow-chart-mid/SKILL.md +118 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-form-editor-mid/SKILL.md +315 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-form-view-mid/SKILL.md +165 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-funnel-chart-mid/SKILL.md +102 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-gauge-chart-mid/SKILL.md +103 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-heatmap-chart-mid/SKILL.md +125 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-line-chart-mid/SKILL.md +136 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-manager-title-mid/SKILL.md +132 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-map-chart-mid/SKILL.md +130 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-message-feedback-mid/SKILL.md +63 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-module-mid/SKILL.md +180 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-mps-table-mid/SKILL.md +179 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-pie-chart-mid/SKILL.md +132 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-popover-mid/SKILL.md +61 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-preview-mid/SKILL.md +117 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-search-form-mid/SKILL.md +239 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-select-tree-mid/SKILL.md +161 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-table-simple-mid/SKILL.md +341 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-tips-mid/SKILL.md +257 -0
- package/src/zqyl-skills/mid/components/xiaoma-zqyl-title-mid/SKILL.md +145 -0
- package/src/zqyl-skills/mid/xiaoma-zqyl-feedback-page-mid/SKILL.md +30 -0
- package/src/zqyl-skills/mid/xiaoma-zqyl-feedback-page-mid/pages/feedbackPage.md +125 -0
- package/src/zqyl-skills/mid/xiaoma-zqyl-form-detail-page-mid/SKILL.md +39 -0
- package/src/zqyl-skills/mid/xiaoma-zqyl-form-detail-page-mid/pages/formDetailPage.md +357 -0
- package/src/zqyl-skills/mid/xiaoma-zqyl-import-dialog-page-mid/SKILL.md +27 -0
- package/src/zqyl-skills/mid/xiaoma-zqyl-import-dialog-page-mid/pages/importDialogPage.md +102 -0
- package/src/zqyl-skills/mid/xiaoma-zqyl-list-page-mid/SKILL.md +30 -0
- package/src/zqyl-skills/mid/xiaoma-zqyl-list-page-mid/pages/listPage.md +389 -0
- package/src/zqyl-skills/module-help.csv +15 -0
- package/src/zqyl-skills/module.yaml +38 -0
- package/src/zqyl-skills/xiaoma-zqyl-ui-spec/SKILL.md +478 -0
- package/src/zqyl-skills/xiaoma-zqyl-ui-spec/VERSION.md +30 -0
- package/src/zqyl-skills/xiaoma-zqyl-ui-spec/components-index.md +55 -0
- package/src/zqyl-skills/xiaoma-zqyl-ui-spec/design-tokens.md +167 -0
- package/src/zqyl-skills/xiaoma-zqyl-ui-spec/reference.md +385 -0
- package/tools/installer/core/manifest.js +4 -3
- package/tools/installer/list-options.js +2 -2
- package/tools/installer/modules/official-modules.js +15 -47
- package/tools/installer/modules/version-resolver.js +2 -2
- package/tools/installer/project-root.js +12 -9
- package/tools/installer/ui.js +2 -1
- package/tools/validate-zqyl-pack.js +171 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 表单详情页(中台)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# 表单详情页(中台)
|
|
7
|
+
|
|
8
|
+
你是一个前端页面实现助手。以本技能描述的表单详情页骨架为**基线**,结合需求/原型做区块增删改;遵守本 skill 的布局规则与 `xiaoma-zqyl-form-editor-mid` / `xiaoma-zqyl-form-view-mid` / `xiaoma-zqyl-tips-mid` 等组件 skill。
|
|
9
|
+
|
|
10
|
+
## 平台与参考
|
|
11
|
+
|
|
12
|
+
- 平台:中台
|
|
13
|
+
- 页头/表格:**`ylManagerTitle` + `ylMpsTable`**(项目 `components`,无则手动拷贝)
|
|
14
|
+
- 外部查询:**`ylSearchForm` 在入口按组件名 `Vue.component` 注册**(platformType:`mps`)
|
|
15
|
+
- 模板数据名:`formDetailPage`
|
|
16
|
+
- 布局类型:**表单详情/审批页**(二级 `ylTitle` 左侧返回 + 右侧页面级操作 → 可选全局 `ylTips` → 多 `el-card`(模块操作在小标题右侧)→ 按需 `ylContainerFoot`;只读 `ylFormView` + 可编辑 `ylFormEditor`)
|
|
17
|
+
|
|
18
|
+
## 页面说明
|
|
19
|
+
|
|
20
|
+
详情/审批/新增/编辑页:返回默认前台/中台 ylTitle 左侧、后台 ylTitle 右侧;其他页面级操作默认 ylTitle 右侧;卡片模块操作默认小标题行右侧;ylFormView + ylFormEditor + ylFileUpload + ylTips + ylCollapse + ylModule;仅需求明确置底时用 ylContainerFoot
|
|
21
|
+
|
|
22
|
+
## 返回按钮位置(默认)
|
|
23
|
+
|
|
24
|
+
需求/原型**未明确**返回按钮位置时:
|
|
25
|
+
|
|
26
|
+
- **中台(当前平台)**:页头使用 **`ylManagerTitle`**(见 `xiaoma-zqyl-manager-title-mid` skill);需返回时 `:showBack="true"` + `@go-back`;页头操作放 **`#btn`**。**勿用** `ylTitle`。
|
|
27
|
+
- 需求/原型**明确**指定返回位置(如「返回在标题右侧」「无返回」)时,以需求为准。
|
|
28
|
+
|
|
29
|
+
## 卡片小标题 class(强制)
|
|
30
|
+
|
|
31
|
+
- **中台(当前平台)**:卡片内区块小标题**必须**使用 **yl-title-sub**(14px,无左侧竖条)。
|
|
32
|
+
- **`yl_manager_subheading` 为后台专用样式**(加粗 + 左侧蓝条),当前平台**禁止**使用;勿参考 legacy 页面或后台 showcase 示例。
|
|
33
|
+
- 独立卡片标题(无右侧操作按钮):`<el-row class="yl-title-sub">区块名</el-row>`
|
|
34
|
+
- 带模块操作的小标题行:左侧 `el-col.yl-title-sub`,右侧 `el-col.text-right`。
|
|
35
|
+
|
|
36
|
+
## 操作按钮位置(优先级)
|
|
37
|
+
|
|
38
|
+
| 优先级 | 依据 | 操作按钮位置 |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| 1 | 需求/原型**明确**写「底部置底 / 底栏固定 / 页面底部按钮」 | `ylContainerFoot`(见模板一·置底) |
|
|
41
|
+
| 2 | 需求/原型**明确**写「标题右侧 / 页头操作」 | **`ylManagerTitle` `#btn`** 插槽 |
|
|
42
|
+
| 3 | **返回按钮**,**未说明**位置 | **`ylManagerTitle`** `:showBack="true"` + `@go-back` |
|
|
43
|
+
| 4 | **其他页面级**操作,**未说明**位置(确认/保存/提交等) | **`ylManagerTitle` `#btn`**;**不要**使用 `ylContainerFoot` |
|
|
44
|
+
| 5 | **卡片/模块内**操作,**未说明**位置(如添加行、模块内导入) | **小标题同一行右侧**(`el-row.mb16` + 左 `yl-title-sub` + 右 `text-right`);**不要**放在表格/内容区最下方 |
|
|
45
|
+
|
|
46
|
+
## 卡片模块操作按钮(默认)
|
|
47
|
+
|
|
48
|
+
需求仅在某个卡片/小模块描述操作(如「添加」「导入一行」),**未说明**按钮位置时:
|
|
49
|
+
|
|
50
|
+
1. 与小标题同一行:左侧 `el-col.yl-title-sub`,右侧 `el-col.text-right` 放按钮。
|
|
51
|
+
2. 按钮样式与同组规则一致:仅最右 1 个实心 `type="primary"`,其余 `type="primary" plain`。
|
|
52
|
+
3. **禁止**默认把模块操作按钮放在表格下方或卡片底部(除非需求明确要求)。
|
|
53
|
+
4. 表格区使用 **`ylTableSimple`**,行内操作用 `attr.type: 'handle'`;**禁止**默认 `el-table`。
|
|
54
|
+
|
|
55
|
+
```vue
|
|
56
|
+
<el-card class="yl-tabs-table">
|
|
57
|
+
<el-row class="mb16">
|
|
58
|
+
<el-col :span="12" class="yl-title-sub">添加相似问</el-col>
|
|
59
|
+
<el-col :span="12" class="text-right">
|
|
60
|
+
<el-button size="small" type="primary" plain icon="el-icon-plus">添加</el-button>
|
|
61
|
+
</el-col>
|
|
62
|
+
</el-row>
|
|
63
|
+
<yl-table-simple :data="similarTableData" />
|
|
64
|
+
</el-card>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 何时使用
|
|
68
|
+
|
|
69
|
+
- 详情页、审批页、新建/编辑多卡片表单、分步录入流程。
|
|
70
|
+
- **整卡全只读**时用 `ylFormView`;**存在可编辑字段**时用 `ylFormEditor`(含同卡混排只读+可编辑,见下节)。
|
|
71
|
+
- 用户提到「表单详情页/审批页/详情回显」「多卡片表单」「分步填写」「上一步/下一步」等场景信号时。
|
|
72
|
+
- 仅当需求明确「置底保存/取消/提交」时才选用 `ylContainerFoot`。
|
|
73
|
+
|
|
74
|
+
## 规范平台预览场景(对照用)
|
|
75
|
+
|
|
76
|
+
| 场景 | 要点 |
|
|
77
|
+
| --- | --- |
|
|
78
|
+
| 表单模板一(置底) | 多卡片 + `ylFormEditor` / `ylFormView` 混排 + `ylContainerFoot` |
|
|
79
|
+
| 表单模板二(分步) | 步骤条 + 分步 `ylFormEditor` + 置底上一步/下一步 |
|
|
80
|
+
| 纯只读审批 | **全** `ylFormView`,无 `ylFormEditor`、无必填 `*`;置底同意/驳回 |
|
|
81
|
+
| 单列表单居中 | `ylFormEditor` `layout="single"` + `label-width="auto"`;单卡片时按钮紧跟最后一个表单项下方,非 `ylContainerFoot`、**不需置底**、**不加** `el-card-padding-bottom0`;表单项标题**不限 8 字**、取消 label `ellipsis` |
|
|
82
|
+
| 同卡混排只读+可编辑 | **单个** `ylFormEditor`;只读项 `disabled: true`;**禁止**同卡 `ylFormView` + `ylFormEditor` 拆分 |
|
|
83
|
+
|
|
84
|
+
## 数据与接口(禁止 mock)
|
|
85
|
+
|
|
86
|
+
- **禁止**在生成业务页面中填充 mock、演示、假数据或静态业务行(如手写 `loadData: [{ companyName: 'xxx' }]`、`reqData` 示例值、`mounted` 里写死 `total` 等)。
|
|
87
|
+
- 列表/表格:`tableData.loadData` 保持 `[]`,数据由 `ylTableSimple` / `ylMpsTable` 通过 `searchParmas.request` / `queryListUrl` **调接口**获取;`request.url` / `queryListUrl` 写项目已有 `INTERFACE.xxx`,未知时留 `''` 并注释 `// TODO: 补充接口常量`。
|
|
88
|
+
- 查询区:`searchParmas.request` 配置 `url`、`type`、`method`、`options`;有 `url` 时 `:load="true"`(或省略,默认加载),由组件触发查询。
|
|
89
|
+
- 表单详情:`reqData` / 表单 model 初始 `{}` 或字段空值;在 `created` / `mounted` 调详情接口赋值;**禁止**预填示例姓名、金额等。
|
|
90
|
+
- 下拉/枚举:`select` 的 `data` 从字典或接口加载,无数据时 `data: []`;**禁止**写死 `{ name: '待审核', code: '1' }` 类占位项(除非需求明确给定静态枚举)。
|
|
91
|
+
- 统计区 `ylDataCensus`:`:list` 由接口或 `computed` 赋值,**禁止**手写示例金额/数量。
|
|
92
|
+
- 动态行表格:`detailRows` 等初始 `[]`,由接口回显或用户操作增删。
|
|
93
|
+
- 本 skill「示例」章节的静态数据**仅供理解组件 API**;生成业务页面时**不得**照搬进 `data()`。
|
|
94
|
+
|
|
95
|
+
## 同卡混排:只读 + 可编辑(强制)
|
|
96
|
+
|
|
97
|
+
同一 `el-card` / `ylCollapse` 内容区内,若**同时存在**只读回显字段与待填写/待编辑字段:
|
|
98
|
+
|
|
99
|
+
1. **整体使用一个 `ylFormEditor`**,所有字段写入同一 `formFields`。
|
|
100
|
+
2. **只读字段**:`disabled: true`(或 `type: slot` 自定义只读展示 + 操作链接,如「查看」「更新」);**不设** `formRules` 必填校验。
|
|
101
|
+
3. **可编辑字段**:正常配置 `type` / `placeholder` / `formRules`。
|
|
102
|
+
4. **禁止**在同卡片内先 `yl-form-view` 再 `yl-form-editor` 上下/左右拆分(破坏双列对齐与视觉一致性)。
|
|
103
|
+
5. **整卡全只读**(审批查看、无任何输入控件)→ 仍用 **`ylFormView`**。
|
|
104
|
+
|
|
105
|
+
```vue
|
|
106
|
+
<el-card class="el-card-padding-bottom0">
|
|
107
|
+
<el-row class="yl-title-sub">企业基本信息</el-row>
|
|
108
|
+
<yl-form-editor
|
|
109
|
+
ref="enterpriseEditor"
|
|
110
|
+
:form-fields="enterpriseFields"
|
|
111
|
+
:form-rules="enterpriseRules"
|
|
112
|
+
:initial-values="enterpriseForm"
|
|
113
|
+
layout="double"
|
|
114
|
+
:show-submit-button="false"
|
|
115
|
+
/>
|
|
116
|
+
</el-card>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```js
|
|
120
|
+
// enterpriseFields: [
|
|
121
|
+
// { label: '企业名称', prop: 'companyName', type: 'input', disabled: true },
|
|
122
|
+
// { label: '联系邮箱', prop: 'contactEmail', type: 'input', placeholder: '请输入' },
|
|
123
|
+
// { label: '营业执照照片', prop: 'licensePhoto', type: 'slot', slotName: 'licensePhoto' },
|
|
124
|
+
// ]
|
|
125
|
+
// enterpriseRules: { contactEmail: [{ required: true, message: '请输入联系邮箱', trigger: 'blur' }] }
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## 表单模板一(多卡片 · 默认 · 页头操作)
|
|
129
|
+
|
|
130
|
+
> **默认模板**。需求未说明按钮位置时使用;
|
|
131
|
+
> 中台操作在 **`ylManagerTitle` `#btn`**,**不使用** `ylContainerFoot`;**勿用** `ylTitle`。
|
|
132
|
+
|
|
133
|
+
1. **`ylManagerTitle`**:`:showBack="true"` + `@go-back` 处理返回(二级/详情页);**`#btn`** 放保存/提交等;仅最右 1 个实心 primary,其余 `primary plain`;列表入口页常用 `have-expand`。
|
|
134
|
+
2. **全局/卡片提示(按需)**:**`ylTips`**(见 `xiaoma-zqyl-tips-mid` skill)。
|
|
135
|
+
3. **多个 `el-card`**:小标题 + 表单区(`ylFormEditor` / `ylFormView`)或动态表格;**卡片内有模块操作且未说明位置** → 小标题行右侧放按钮,再渲染表格/表单内容。
|
|
136
|
+
4. **附件 / 折叠 / 模块(按需)**:见对应组件 skill。
|
|
137
|
+
5. **禁止**:未要求置底时添加 `ylContainerFoot`;页头与置底栏勿重复同一组按钮;**勿**把卡片模块操作默认放在表格下方。
|
|
138
|
+
|
|
139
|
+
## 表单模板一(多卡片 · 置底 · 按需)
|
|
140
|
+
|
|
141
|
+
> 仅需求/原型**明确要求**底部置底时使用。
|
|
142
|
+
|
|
143
|
+
1. **`ylTitle`**:仅标题与返回,**不在**右侧放保存/提交。
|
|
144
|
+
- 返回:`:showBack="true"` + `@go-back`
|
|
145
|
+
2. **置底操作栏**:**`ylContainerFoot`**(见 `xiaoma-zqyl-container-foot-mid` skill);**按钮放 `#center` 居中**,辅助文案放 `#left`,**禁止**默认插槽 flex `space-between`。
|
|
146
|
+
|
|
147
|
+
## 卡片公共 class
|
|
148
|
+
|
|
149
|
+
| 卡片内容 | 规则 |
|
|
150
|
+
| --- | --- |
|
|
151
|
+
| `ylFormEditor` / `ylFormView`(**直接**置于 `el-card` 内) | `el-card` 加 `el-card-padding-bottom0`(全平台,公共样式,勿在页面 `scoped` 重写) |
|
|
152
|
+
| 单卡片 + 单列表单 + 卡片内操作按钮 | **不加** `el-card-padding-bottom0` |
|
|
153
|
+
| `ylCollapse`(`el-card` 内**顶层**为折叠组件) | **不加** `el-card-padding-bottom0` |
|
|
154
|
+
| 表格组件(`ylTableSimple`) | `el-card` 加 `yl-tabs-table` |
|
|
155
|
+
| 中台页面根容器 | 最外层 `div` 加 `yl_manager_container` |
|
|
156
|
+
|
|
157
|
+
```vue
|
|
158
|
+
<!-- 折叠卡片:不加 el-card-padding-bottom0 -->
|
|
159
|
+
<el-card>
|
|
160
|
+
<yl-collapse title="企业基本信息" :is-collapse="false">
|
|
161
|
+
<template #content>
|
|
162
|
+
<yl-form-editor layout="double" :show-submit-button="false" ... />
|
|
163
|
+
</template>
|
|
164
|
+
</yl-collapse>
|
|
165
|
+
</el-card>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## 表单模板二(分步表单)
|
|
169
|
+
|
|
170
|
+
> 将冗长或不熟悉任务拆成多步;需做好信息分类与页面层级。
|
|
171
|
+
|
|
172
|
+
1. **`ylTitle`** + 可关闭 **全局说明**(`ylTips`,`type="info"`,监听 `@hiddenTips`)。
|
|
173
|
+
- 中台改用 **`ylManagerTitle`** 作页头,全局说明紧跟其下
|
|
174
|
+
2. **`el-steps`**:步骤标题(建议 ≤10 字),展示当前进度。
|
|
175
|
+
3. **当前步内容**:单卡或多卡;填写用 `ylFormEditor`,上游反显/确认用 `ylFormView`(复合表单);步骤内卡片模块操作未说明位置 → **小标题行右侧**。
|
|
176
|
+
4. **页面级操作按钮**:需求未说明位置时放 **`ylManagerTitle` `#btn`**;需求要求置底时用 `ylContainerFoot`。
|
|
177
|
+
5. **提交成功**:可切换结果区(成功图标 + 说明 + 返回入口)。
|
|
178
|
+
|
|
179
|
+
## 布局规则
|
|
180
|
+
|
|
181
|
+
| 场景 | 说明 |
|
|
182
|
+
| --- | --- |
|
|
183
|
+
| 单卡片单列 | 整体居中,提交在卡片内表单项下方,**不需置底**、**不加** `el-card-padding-bottom0`;表单项标题**不限 8 字** |
|
|
184
|
+
| 多卡片复合 | 双列/三列左对齐;**整卡全只读**用 View;**同卡混排只读+可编辑**用 **单个** Editor(只读项 `disabled`) |
|
|
185
|
+
| 未说明按钮位置(页面级) | **默认
|
|
186
|
+
`**ylManagerTitle` `#btn`**(返回见 `showBack`),不用 `ylContainerFoot` |
|
|
187
|
+
| 未说明返回位置 | **`ylManagerTitle`** `:showBack="true"` + `@go-back` |
|
|
188
|
+
| 未说明按钮位置(卡片模块) | **小标题行右侧**(`yl-title-sub` + `text-right`),不用表格/内容区最下方 |
|
|
189
|
+
| 数据表格 | **优先 `ylTableSimple`**;中台列表主表用 `ylMpsTable`;**禁止**默认 `el-table` |
|
|
190
|
+
|
|
191
|
+
## 数据表格(优先 ylTableSimple)
|
|
192
|
+
|
|
193
|
+
表单详情页中相似问、明细行、只读列表等**一律优先 `ylTableSimple`**:
|
|
194
|
+
|
|
195
|
+
```vue
|
|
196
|
+
<yl-table-simple :data="tableData" :is-table-form="true" />
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
- 动态行编辑:`:isTableForm="true"` 或自定义列 `slot`;行内操作用 `attr.type: 'handle'`
|
|
200
|
+
- 表格外包 `el-card.yl-tabs-table`,沿用平台默认表格线样式
|
|
201
|
+
- **禁止**默认手写 `el-table`;仅 `ylTableSimple` 无法满足且需求明确要求原生特性时才降级
|
|
202
|
+
|
|
203
|
+
## 复合表单:标准字段块 + 动态表格
|
|
204
|
+
|
|
205
|
+
> 典型:基础信息(Editor/View)+ 相似问/明细行(Table)。**基础信息卡片必须用 Editor/View,不得手写 el-form / view-item。**
|
|
206
|
+
|
|
207
|
+
### 编辑页
|
|
208
|
+
|
|
209
|
+
1. 卡片「基础信息」:`el-card.el-card-padding-bottom0` + `yl-form-editor`(`layout="double"`,`:show-submit-button="false"`)
|
|
210
|
+
2. 卡片「添加 xxx」:`el-card.yl-tabs-table` + **小标题行右侧**放模块操作按钮(如「添加」)+ **`ylTableSimple`**(`:isTableForm="true"` 或自定义 `slot` 列);**勿**把模块按钮放在表格下方;动态行 initial 可为 `[]`,由用户点「添加」增行
|
|
211
|
+
3. **`ylTitle` 右侧「确认」**(默认):在 `onSave` 中 `$refs.formEditor.$refs.dynamicForm.validate`,通过后 `getFormFieldValues()` 取值,再校验表格区并提交;**勿**在 `<yl-form-editor>` 上绑 `@submit` / `@reset`;**`type: 'slot'` 字段(远程选择等)不得绕过 `formRules` 或在确认按钮中 Toast 提示必填空值**
|
|
212
|
+
|
|
213
|
+
### 查看页
|
|
214
|
+
|
|
215
|
+
1. 卡片「基础信息」:`el-card.el-card-padding-bottom0` + `yl-form-view`(`layout="doubleRow"`,`:form-data` + `:req-data`)
|
|
216
|
+
2. 卡片「xxx 列表」:只读 **`ylTableSimple`**(无 input;行内查看用 `attr.type: 'handle'`)
|
|
217
|
+
3. **默认**:`ylManagerTitle` `:showBack="true"` + `@go-back`;页头操作放 `#btn`
|
|
218
|
+
|
|
219
|
+
### 禁止
|
|
220
|
+
|
|
221
|
+
- 基础信息卡片内手写 `<el-form><el-form-item>` 替代 `yl-form-editor`
|
|
222
|
+
- 查看页用 `<div class="view-item">` 替代 `yl-form-view`
|
|
223
|
+
- 需求未要求置底时使用 `yl-container-foot`
|
|
224
|
+
- 动态行表格:需求未写「至少 N 条」时,**允许删至 0 行**;**勿**默认禁止删最后一行或 Toast「至少保留一条」;提交时**仅校验现有各行**必填/格式(有行未填则标红)
|
|
225
|
+
- 卡片模块操作(如「添加」)**默认**放在表格下方或卡片内容区最底部
|
|
226
|
+
- **禁止**数据表格区默认使用 `el-table`(须优先 `ylTableSimple`)
|
|
227
|
+
- **中台/前台**卡片小标题使用 `yl_manager_subheading`(该 class 仅后台可用)
|
|
228
|
+
|
|
229
|
+
## 代码骨架(模板一 · 默认 · 页头操作)
|
|
230
|
+
|
|
231
|
+
```vue
|
|
232
|
+
<template>
|
|
233
|
+
<div class="yl_manager_container">
|
|
234
|
+
<ylManagerTitle title="二级页面标题" :showBack="true" have-expand @go-back="onBack">
|
|
235
|
+
<template #btn>
|
|
236
|
+
<el-button size="small" type="primary" plain @click="onCancel">取消</el-button>
|
|
237
|
+
<el-button size="small" type="primary" @click="onSave">保存</el-button>
|
|
238
|
+
</template>
|
|
239
|
+
</ylManagerTitle>
|
|
240
|
+
<yl-tips class="page-global-tip" type="warning" description="提交后将进入审批流程。" :show-close-icon="false" />
|
|
241
|
+
<el-card class="el-card-padding-bottom0">
|
|
242
|
+
<el-row class="yl-title-sub">基础信息</el-row>
|
|
243
|
+
<yl-form-editor ref="formEditor" layout="double" :show-submit-button="false" ... />
|
|
244
|
+
</el-card>
|
|
245
|
+
<el-card class="yl-tabs-table">
|
|
246
|
+
<el-row class="mb16">
|
|
247
|
+
<el-col :span="12" class="yl-title-sub">明细行</el-col>
|
|
248
|
+
<el-col :span="12" class="text-right">
|
|
249
|
+
<el-button size="small" type="primary" plain>添加</el-button>
|
|
250
|
+
</el-col>
|
|
251
|
+
</el-row>
|
|
252
|
+
<yl-table-simple :data="detailTableData" />
|
|
253
|
+
</el-card>
|
|
254
|
+
</div>
|
|
255
|
+
</template>
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
```js
|
|
259
|
+
// detailRows: [],created/mounted 调详情接口赋值;禁止预填 mock 行
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## 代码骨架(模板一 · 置底 · 按需)
|
|
263
|
+
|
|
264
|
+
```vue
|
|
265
|
+
<template>
|
|
266
|
+
<div class="yl_manager_container">
|
|
267
|
+
<ylManagerTitle title="二级页面标题" :showBack="true" have-expand @go-back="onBack" />
|
|
268
|
+
<div class="form-page__body">
|
|
269
|
+
<el-card class="el-card-padding-bottom0">
|
|
270
|
+
<yl-form-editor layout="double" :show-submit-button="false" ... />
|
|
271
|
+
</el-card>
|
|
272
|
+
</div>
|
|
273
|
+
<yl-container-foot>
|
|
274
|
+
<template #center>
|
|
275
|
+
<el-button>取 消</el-button>
|
|
276
|
+
<el-button type="primary">保 存</el-button>
|
|
277
|
+
</template>
|
|
278
|
+
</yl-container-foot>
|
|
279
|
+
</div>
|
|
280
|
+
</template>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
> 仅需求明确要求置底时使用上述骨架。
|
|
284
|
+
|
|
285
|
+
## 代码骨架(模板二 · 分步)
|
|
286
|
+
|
|
287
|
+
```vue
|
|
288
|
+
<template>
|
|
289
|
+
<div class="yl_manager_container">
|
|
290
|
+
<ylManagerTitle title="二级页面标题" :showBack="true" have-expand @go-back="onBack">
|
|
291
|
+
<template #btn>
|
|
292
|
+
<el-button size="small" type="primary" plain :disabled="step===0" @click="prev">上一步</el-button>
|
|
293
|
+
<el-button size="small" type="primary" @click="next">{{ step === lastStep ? '提交' : '下一步' }}</el-button>
|
|
294
|
+
</template>
|
|
295
|
+
</ylManagerTitle>
|
|
296
|
+
<yl-tips v-if="globalTipVisible" type="info" description="分步填写过程中可随时点击「保存」暂存草稿。" @hiddenTips="globalTipVisible = false" />
|
|
297
|
+
<el-card><el-steps :active="step" align-center>...</el-steps></el-card>
|
|
298
|
+
<el-card v-show="step===0" class="el-card-padding-bottom0">
|
|
299
|
+
<el-row class="mb16">
|
|
300
|
+
<el-col :span="12" class="yl-title-sub">步骤一字段</el-col>
|
|
301
|
+
<el-col :span="12" class="text-right">
|
|
302
|
+
<el-button size="small" type="primary" plain>添加</el-button>
|
|
303
|
+
</el-col>
|
|
304
|
+
</el-row>
|
|
305
|
+
<yl-form-editor layout="double" ... />
|
|
306
|
+
</el-card>
|
|
307
|
+
<el-card v-show="step===3" class="el-card-padding-bottom0"><yl-form-view layout="doubleRow" ... /></el-card>
|
|
308
|
+
</div>
|
|
309
|
+
</template>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## 引入与注册
|
|
313
|
+
|
|
314
|
+
> **zqyl-component-base**:公共组件须在**项目入口文件**(如 `entry_main.js`、`main.js`)按**真实组件名**逐个 `import` 并以 `Vue.component` 全局注册;样式在入口 `import 'zqyl-component-base/lib/theme-chalk/component.css'`。**禁止** `import zqylComponentBase from 'zqyl-component-base'` + `Vue.use(zqylComponentBase)` 全量注册。
|
|
315
|
+
|
|
316
|
+
生成前先检查项目入口:
|
|
317
|
+
- 入口**已**按组件名注册所需 `yl*` 组件 → 页面直接使用 `<yl-*>`,**勿**在页面 SFC 重复 import
|
|
318
|
+
- 入口**缺少**本页用到的组件 → **仅**在入口补注册缺失项(按组件名逐个 import),**勿**改页面 SFC 做局部注册,**勿**用全量 `Vue.use`
|
|
319
|
+
|
|
320
|
+
入口按组件名注册示例(仅列举本任务用到的组件,勿全量 `Vue.use`):
|
|
321
|
+
|
|
322
|
+
```js
|
|
323
|
+
import 'zqyl-component-base/lib/theme-chalk/component.css';
|
|
324
|
+
import ylTitle from 'zqyl-component-base/lib/ylTitle';
|
|
325
|
+
import ylFormEditor from 'zqyl-component-base/lib/ylFormEditor';
|
|
326
|
+
import ylFormView from 'zqyl-component-base/lib/ylFormView';
|
|
327
|
+
import ylTips from 'zqyl-component-base/lib/ylTips';
|
|
328
|
+
import ylContainerFoot from 'zqyl-component-base/lib/ylContainerFoot';
|
|
329
|
+
import ylDialog from 'zqyl-component-base/lib/ylDialog';
|
|
330
|
+
|
|
331
|
+
Vue.component('ylTitle', ylTitle);
|
|
332
|
+
Vue.component('ylFormEditor', ylFormEditor);
|
|
333
|
+
Vue.component('ylFormView', ylFormView);
|
|
334
|
+
Vue.component('ylTips', ylTips);
|
|
335
|
+
Vue.component('ylContainerFoot', ylContainerFoot);
|
|
336
|
+
Vue.component('ylDialog', ylDialog);
|
|
337
|
+
// 项目 legacy 组件(如 ylManagerTitle)可同样 Vue.component,勿覆盖 base 同名组件
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
页面 script 只需业务逻辑与接口,模板直接使用全局组件,例如:
|
|
341
|
+
|
|
342
|
+
```vue
|
|
343
|
+
<yl-title platformType="yx" title="列表页标题" :disabledBack="true" />
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## 注意事项
|
|
347
|
+
|
|
348
|
+
- **默认**页面级操作在 **`ylTitle` 右侧**(返回位置见「返回按钮位置」);**勿**默认添加 `ylContainerFoot`。
|
|
349
|
+
- **卡片模块操作**(如添加行、模块内导入):需求未说明位置时放 **小标题行右侧**,勿放表格/内容区最下方。
|
|
350
|
+
- **数据表格**:**优先 `ylTableSimple`**,禁止默认 `el-table`。
|
|
351
|
+
- 仅需求明确置底时,才用 `ylContainerFoot`;且勿与页头重复同一组按钮。
|
|
352
|
+
- 只读详情**整卡全只读**时用 `ylFormView`;**同卡混排只读+可编辑**时用 `ylFormEditor` + `disabled`,**勿**拆成 View + Editor。
|
|
353
|
+
- **标准字段块(如「基础信息」)必须用 `ylFormEditor` / `ylFormView`**,禁止整块手写 `el-form` / `view-item`(见「复合表单」章节)。
|
|
354
|
+
- 附件、校验、`visible` 联动见 `xiaoma-zqyl-form-editor-mid` / `xiaoma-zqyl-form-view-mid` / `xiaoma-zqyl-file-upload-mid` 组件 skill。
|
|
355
|
+
- 卡片内折叠:`ylCollapse` 见 `xiaoma-zqyl-collapse-mid`;模块分块 + 扩展区:`ylModule` 见 `xiaoma-zqyl-module-mid`。
|
|
356
|
+
- **`el-card` 内顶层为 `ylCollapse` 时**:**不要**加 `el-card-padding-bottom0`(该 class 仅用于卡片内**直接**放置 `ylFormEditor` / `ylFormView`,且**非**单卡片单列含卡片内按钮场景)。
|
|
357
|
+
- 页面/卡片/表单项提示见 `xiaoma-zqyl-tips-mid`;全局距标题 16px、卡片内距下方内容 16px。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xiaoma-zqyl-import-dialog-page-mid
|
|
3
|
+
description: 中台批量导入弹窗页面规范及骨架(批量导入弹窗(下载模板 + 拖拽上传 / 导入失败结果);配套组件:ylDialog、ylButton、ylFileUpload)。在用户新建或改造中台批量导入弹窗、或根据需求/原型生成该类型页面时使用;组件细节读取同模块的 xiaoma-zqyl-<组件>-mid skill(完整组件清单见 xiaoma-zqyl-ui-spec 的 components-index.md)。适用于中台仓库(如 mps-main,platformType `mps`;列表页页头/表格用 ylManagerTitle + ylMpsTable)。 Use when building or reviewing a ZQYL mid batch-import dialog page.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 批量导入弹窗(中台)
|
|
7
|
+
|
|
8
|
+
本整包提供**中台批量导入弹窗**的页面骨架与拼装规范。组件 Props / 列配置 / 查询项等细节从已安装的独立组件 skill 读取(同模块已一并安装)。使用时先读 **xiaoma-zqyl-ui-spec**,再按下方知识库层次展开。
|
|
9
|
+
|
|
10
|
+
`zqyl-component-base` 须在**项目入口文件**按**组件名逐个** `import` 并以 `Vue.component` 注册;样式在入口 `import 'zqyl-component-base/lib/theme-chalk/component.css'`。**禁止** `import zqylComponentBase from 'zqyl-component-base'` + `Vue.use(zqylComponentBase)` 全量注册。页面内直接使用 `<yl-*>`,勿单页重复 import。
|
|
11
|
+
|
|
12
|
+
## 知识库层次
|
|
13
|
+
|
|
14
|
+
| 层级 | skill / 路径 | 用途 |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| 页面模板 | [pages/importDialogPage.md](./pages/importDialogPage.md) | 批量导入弹窗 页面骨架与拼装顺序 |
|
|
17
|
+
| 配套组件 | `xiaoma-zqyl-dialog-mid` | ylDialog · 弹窗 |
|
|
18
|
+
| 配套组件 | `xiaoma-zqyl-button-mid` | ylButton · 按钮 |
|
|
19
|
+
| 配套组件 | `xiaoma-zqyl-file-upload-mid` | ylFileUpload · 文件上传 |
|
|
20
|
+
|
|
21
|
+
## 执行顺序
|
|
22
|
+
|
|
23
|
+
0. 若用户提供需求/原型,先按 **xiaoma-zqyl-ui-spec**「从需求/原型生成页面」提取字段与操作,再读本整包
|
|
24
|
+
1. 先读 [pages/importDialogPage.md](./pages/importDialogPage.md) 搭**批量导入弹窗**页面骨架
|
|
25
|
+
2. 按需求出现的组件,读取已安装的 `xiaoma-zqyl-{组件key}-mid` 组件 skill(如上表;同模块已一并安装)
|
|
26
|
+
3. 组件细节以组件 skill 为准,不得与页面骨架冲突
|
|
27
|
+
4. 交付前对照 **xiaoma-zqyl-ui-spec** 交付自检清单
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 批量导入弹窗(中台)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# 批量导入弹窗(中台)
|
|
7
|
+
|
|
8
|
+
你是一个前端页面实现助手。以本技能描述的批量导入弹窗为**基线**;**无公共批量导入组件**,由列表页按钮触发,用 `ylDialog` + `el-upload` 拼装;失败结果用 warning 标题弹窗。
|
|
9
|
+
|
|
10
|
+
## 平台与参考
|
|
11
|
+
|
|
12
|
+
- 平台:中台
|
|
13
|
+
- 页头/表格:**`ylManagerTitle` + `ylMpsTable`**(项目 `components`,无则手动拷贝)
|
|
14
|
+
- 外部查询:**`ylSearchForm` 在入口按组件名 `Vue.component` 注册**(platformType:`mps`)
|
|
15
|
+
- 模板数据名:`importDialogPage`
|
|
16
|
+
- 布局类型:**批量导入弹窗**(列表页按钮触发 → `ylDialog` 600px + 下载模板 + 拖拽上传;失败结果 warning 弹窗)
|
|
17
|
+
- **无公共批量导入组件**,弹窗本体按本 skill 拼装,不重复列表页骨架。
|
|
18
|
+
|
|
19
|
+
## 页面说明
|
|
20
|
+
|
|
21
|
+
列表页触发的 Excel 批量导入:ylDialog 600px + 下载模板 + 拖拽上传;导入失败 warning 结果弹窗
|
|
22
|
+
|
|
23
|
+
## 何时使用
|
|
24
|
+
|
|
25
|
+
- 列表页/管理页点击「批量导入」「Excel 导入」等按钮,弹出 **`ylDialog` + 拖拽上传** 场景。
|
|
26
|
+
- 需先下载模板、填写后上传 xlsx/xls,校验格式与大小后提交导入接口。
|
|
27
|
+
- 部分失败时需二次 **`warning` 标题弹窗** 展示成功/失败条数,并提供失败明细下载。
|
|
28
|
+
- 用户提到「批量导入弹窗、Excel 导入、下载模板上传、导入失败下载附件」等信号时。
|
|
29
|
+
|
|
30
|
+
## 重要说明
|
|
31
|
+
|
|
32
|
+
- **无公共批量导入组件**,按本模板用 `ylDialog` + `el-upload` 拼装。
|
|
33
|
+
- 弹窗通常由**列表页**触发,本模板描述弹窗本体结构与交互,不重复列表页骨架。
|
|
34
|
+
|
|
35
|
+
## 场景一:批量导入弹窗
|
|
36
|
+
|
|
37
|
+
1. **容器**:`xiaoma-zqyl-dialog-mid`,宽度 **600px**,`:closeOnClickModal="false"`。
|
|
38
|
+
2. **标题**:默认「批量导入」。
|
|
39
|
+
3. **正文顶部**:`请先` + 可点击「下载模板」+ `,录入信息后上传以批量导入`。
|
|
40
|
+
4. **上传区**:`el-upload` `drag`;`accept=".xlsx,.xls"`;`show-file-list="false"`。
|
|
41
|
+
- 空态:加号图标 +「将文件拖入此区域,或点击此处上传EXCEL表格」+ 格式/条数/大小说明(如 ≤100 条、≤10M)。
|
|
42
|
+
- 已选文件:Excel 图标 + 文件名 +「重新上传」按钮。
|
|
43
|
+
- 校验失败:上传区红色虚线边框 + 下方 `error-text` 提示。
|
|
44
|
+
5. **Footer**:`取消`(default)+ `导入`(primary),右对齐。
|
|
45
|
+
|
|
46
|
+
## 场景二:导入失败结果弹窗
|
|
47
|
+
|
|
48
|
+
1. **`ylDialog`** + `:dialogTitleDate="{ type: 'warning', title: '数据导入失败' }"`,宽 600px。
|
|
49
|
+
2. **正文**:`本次导入共计{n}条,导入成功{m}条,导入失败{k}条,点击【下载附件】查看导入失败数据`;「下载附件」用 `el-button type="text"`。
|
|
50
|
+
3. **Footer**:`知道了`(primary)。
|
|
51
|
+
|
|
52
|
+
## 布局与样式
|
|
53
|
+
|
|
54
|
+
| 元素 | 规则 |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| 弹窗宽度 | 600px |
|
|
57
|
+
| 上传拖拽区高度 | 240px,宽度 100% |
|
|
58
|
+
| 下载模板链接 | 主题色、`cursor: pointer` |
|
|
59
|
+
| 错误提示 | `#f56c6c`,12px |
|
|
60
|
+
|
|
61
|
+
## 示例骨架(批量导入)
|
|
62
|
+
|
|
63
|
+
```vue
|
|
64
|
+
<yl-dialog
|
|
65
|
+
:visible.sync="importVisible"
|
|
66
|
+
:closeOnClickModal="false"
|
|
67
|
+
:attributes="{ width: '600px', title: '批量导入' }"
|
|
68
|
+
>
|
|
69
|
+
<p class="mb10">请先<em class="link" @click="downloadTemplate">下载模板</em>,录入信息后上传以批量导入</p>
|
|
70
|
+
<el-upload drag accept=".xlsx,.xls" :show-file-list="false" ... />
|
|
71
|
+
<div slot="footer" class="text-right">
|
|
72
|
+
<el-button size="small" @click="importVisible = false">取消</el-button>
|
|
73
|
+
<el-button size="small" type="primary" @click="submitImport">导入</el-button>
|
|
74
|
+
</div>
|
|
75
|
+
</yl-dialog>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 引入与注册
|
|
79
|
+
|
|
80
|
+
> **zqyl-component-base**:公共组件须在**项目入口文件**(如 `entry_main.js`、`main.js`)按**真实组件名**逐个 `import` 并以 `Vue.component` 全局注册;样式在入口 `import 'zqyl-component-base/lib/theme-chalk/component.css'`。**禁止** `import zqylComponentBase from 'zqyl-component-base'` + `Vue.use(zqylComponentBase)` 全量注册。
|
|
81
|
+
|
|
82
|
+
生成前先检查项目入口:
|
|
83
|
+
- 入口**已**按组件名注册所需 `yl*` 组件 → 页面直接使用 `<yl-*>`,**勿**在页面 SFC 重复 import
|
|
84
|
+
- 入口**缺少**本页用到的组件 → **仅**在入口补注册缺失项(按组件名逐个 import),**勿**改页面 SFC 做局部注册,**勿**用全量 `Vue.use`
|
|
85
|
+
|
|
86
|
+
入口按组件名注册示例(仅列举本任务用到的组件,勿全量 `Vue.use`):
|
|
87
|
+
|
|
88
|
+
```js
|
|
89
|
+
import 'zqyl-component-base/lib/theme-chalk/component.css';
|
|
90
|
+
import ylDialog from 'zqyl-component-base/lib/ylDialog';
|
|
91
|
+
|
|
92
|
+
Vue.component('ylDialog', ylDialog);
|
|
93
|
+
// 项目 legacy 组件(如 ylManagerTitle)可同样 Vue.component,勿覆盖 base 同名组件
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
页面 script 只需业务逻辑与接口,模板直接使用全局组件,例如:
|
|
97
|
+
|
|
98
|
+
```vue
|
|
99
|
+
<yl-title platformType="yx" title="列表页标题" :disabledBack="true" />
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
列表页触发弹窗时,确保入口已注册 `ylDialog`;上传区用 Element `el-upload`。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xiaoma-zqyl-list-page-mid
|
|
3
|
+
description: 中台列表页页面规范及骨架(中台列表页(ylManagerTitle + ylMpsTable + 变体场景);配套组件:ylManagerTitle、ylSearchForm、ylMpsTable、ylTips、ylDialog、ylButton)。在用户新建或改造中台列表页、或根据需求/原型生成该类型页面时使用;组件细节读取同模块的 xiaoma-zqyl-<组件>-mid skill(完整组件清单见 xiaoma-zqyl-ui-spec 的 components-index.md)。适用于中台仓库(如 mps-main,platformType `mps`;列表页页头/表格用 ylManagerTitle + ylMpsTable)。 Use when building or reviewing a ZQYL mid list page.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 列表页(中台)
|
|
7
|
+
|
|
8
|
+
本整包提供**中台列表页**的页面骨架与拼装规范。组件 Props / 列配置 / 查询项等细节从已安装的独立组件 skill 读取(同模块已一并安装)。使用时先读 **xiaoma-zqyl-ui-spec**,再按下方知识库层次展开。
|
|
9
|
+
|
|
10
|
+
`zqyl-component-base` 须在**项目入口文件**按**组件名逐个** `import` 并以 `Vue.component` 注册;样式在入口 `import 'zqyl-component-base/lib/theme-chalk/component.css'`。**禁止** `import zqylComponentBase from 'zqyl-component-base'` + `Vue.use(zqylComponentBase)` 全量注册。页面内直接使用 `<yl-*>`,勿单页重复 import。
|
|
11
|
+
|
|
12
|
+
## 知识库层次
|
|
13
|
+
|
|
14
|
+
| 层级 | skill / 路径 | 用途 |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| 页面模板 | [pages/listPage.md](./pages/listPage.md) | 列表页 页面骨架与拼装顺序 |
|
|
17
|
+
| 配套组件 | `xiaoma-zqyl-manager-title-mid` | ylManagerTitle · 标题(中台) |
|
|
18
|
+
| 配套组件 | `xiaoma-zqyl-search-form-mid` | ylSearchForm · 查询条件(搜索表单) |
|
|
19
|
+
| 配套组件 | `xiaoma-zqyl-mps-table-mid` | ylMpsTable · 表格(中台) |
|
|
20
|
+
| 配套组件 | `xiaoma-zqyl-tips-mid` | ylTips · 提示 |
|
|
21
|
+
| 配套组件 | `xiaoma-zqyl-dialog-mid` | ylDialog · 弹窗 |
|
|
22
|
+
| 配套组件 | `xiaoma-zqyl-button-mid` | ylButton · 按钮 |
|
|
23
|
+
|
|
24
|
+
## 执行顺序
|
|
25
|
+
|
|
26
|
+
0. 若用户提供需求/原型,先按 **xiaoma-zqyl-ui-spec**「从需求/原型生成页面」提取字段与操作,再读本整包
|
|
27
|
+
1. 先读 [pages/listPage.md](./pages/listPage.md) 搭**列表页**页面骨架
|
|
28
|
+
2. 按需求出现的组件,读取已安装的 `xiaoma-zqyl-{组件key}-mid` 组件 skill(如上表;同模块已一并安装)
|
|
29
|
+
3. 组件细节以组件 skill 为准,不得与页面骨架冲突
|
|
30
|
+
4. 交付前对照 **xiaoma-zqyl-ui-spec** 交付自检清单
|