@zeyue0329/xiaoma-cli 1.20.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/xmc-skills/2-plan-workflows/xiaoma-prd-clarify/README.md +74 -0
- package/src/xmc-skills/2-plan-workflows/xiaoma-prd-clarify/SKILL.md +58 -0
- package/src/xmc-skills/2-plan-workflows/xiaoma-prd-clarify/examples/example-clarification.md +61 -0
- package/src/xmc-skills/2-plan-workflows/xiaoma-prd-clarify/references/checklist.md +99 -0
- package/src/xmc-skills/2-plan-workflows/xiaoma-prd-clarify/references/output-template.md +73 -0
- package/src/xmc-skills/2-plan-workflows/xiaoma-prd-clarify/references/scoring.md +73 -0
- package/src/xmc-skills/2-plan-workflows/xiaoma-prd-clarify/scripts/export_to_excel.py +156 -0
- package/src/xmc-skills/module-help.csv +1 -0
- 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,239 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xiaoma-zqyl-search-form-front
|
|
3
|
+
description: 前台列表页查询条件/搜索表单的 Vue2 实现规范与 searchParmas 结构(ylSearchForm)。在用户提及 ylSearchForm、查询条件、搜索表单、筛选、重置查询、展开收起,或需要在前台实现该组件时使用。适用于前台门户仓库(如 zqyl-crclopen,platformType `yx`;页头/表格用 ylTitle + ylTableSimple)。 Use when implementing or reviewing the search-form (ylSearchForm) component on a ZQYL front page.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 查询条件(搜索表单)(前台)
|
|
7
|
+
|
|
8
|
+
你是一个前端组件实现与改造助手。你必须严格按本技能的规则输出。
|
|
9
|
+
|
|
10
|
+
## 适用范围
|
|
11
|
+
- 平台:前台
|
|
12
|
+
- platformType:`yx`
|
|
13
|
+
- 组件条目:`searchForm`
|
|
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
|
+
- 查询条件与 `ylTableSimple` 联动分页查询。
|
|
47
|
+
- 用户提到「ylSearchForm」、「查询条件」、「搜索表单」时。
|
|
48
|
+
|
|
49
|
+
### 方案选择(内部分析用,勿在回答中罗列)
|
|
50
|
+
- 少于 3 个查询项:仅「查询」,不设重置(组件自动隐藏重置按钮)。
|
|
51
|
+
- 3 个及以上:显示「查询」+「重置」;与表格同卡片时 `isCard=false`。
|
|
52
|
+
- 已配置 `:tableRefs` + `tableRefsName` 联动表格时:**勿**写 `@searchDate` / `@resetDate` 及 `onSearch` / `onReset`,由组件自动触发查询;仅 Tab 切换、中台 `hideSearch` 同步 `queryParams`、`beforeSearch` 校验等特殊场景才绑定事件。
|
|
53
|
+
- **勿**显式写 `:toggleNum`(默认 `5`);仅产品明确要求非默认折叠阈值时设置。
|
|
54
|
+
- 规范平台预览无接口时可 `:load="false"`;**业务页面须配置 `request.url` 接接口**。
|
|
55
|
+
|
|
56
|
+
## API(ylSearchForm)
|
|
57
|
+
|
|
58
|
+
> 标签:`<yl-search-form>` / `ylSearchForm`;须在入口 `import ylSearchForm from 'zqyl-component-base/lib/ylSearchForm'` + `Vue.component('ylSearchForm', ylSearchForm)` 注册;页面模板直接使用,**勿**单页 import;**禁止**全量 `Vue.use(zqylComponentBase)`。
|
|
59
|
+
|
|
60
|
+
### Props
|
|
61
|
+
- `searchParmas: Object` 查询配置(见下方结构)
|
|
62
|
+
- `load: boolean` 是否挂载后自动请求(默认 `true`;纯展示/预览用 `false`)
|
|
63
|
+
- `isCard: boolean` 是否使用 `el-card` 包裹(默认 `true`;与表格同卡片用 `false`)
|
|
64
|
+
- `platformType: String` 平台类型(`yx` 前台 / `yxManager` 后台 / `mps` 中台)
|
|
65
|
+
- `tableRefs` / `tableRefsName` 关联表格 `$refs` 与 ref 名(有接口联动时传入)
|
|
66
|
+
- `toggleNum: number` 超过几项后折叠(默认 `5`)
|
|
67
|
+
- `isShowToggle: boolean` 是否显示展开/收起(默认 `true`)
|
|
68
|
+
- `beforeSearch: Function` 点击「查询」前回调,返回 `false` 拦截本次查询(无入参,需自行读取 `searchParmas.request.options`)
|
|
69
|
+
|
|
70
|
+
### 插槽
|
|
71
|
+
- `rightBtn` 查询区右侧额外操作按钮(与「查询/重置」分列展示)
|
|
72
|
+
- `searchBtn` 自定义查询按钮区域(替换默认查询/重置/展开)
|
|
73
|
+
- `search-custom` 完全自定义查询表单项(`searchParmas.custom: true`)
|
|
74
|
+
|
|
75
|
+
### searchParmas 结构
|
|
76
|
+
- `request` 列表请求配置(见下表)
|
|
77
|
+
- `parmas[]` 表单项配置:`title`、`type`、`prop`、`placeholder`、`data`(select)、`formAttr`、`tooltip` 等
|
|
78
|
+
- 表单项 `type` 可选:`text` / `select` / `date` / `daterange` / `datetimerange` / `cascader` / `mobile` 等
|
|
79
|
+
- `routerPush: boolean` 是否将查询参数同步到路由
|
|
80
|
+
|
|
81
|
+
### 表单项 tooltip(`parmas[].tooltip`)
|
|
82
|
+
- 在某一查询项上配置 `tooltip: string` 后,该项标签文字后会显示提示图标(`el-icon-warning-outline`)。
|
|
83
|
+
- 鼠标悬停在图标上时,通过 `el-tooltip` 展示 `tooltip` 中的详细释义;未配置则不显示图标。
|
|
84
|
+
- 有 `tooltip` 时标签展示 `title` 前 7 个字符 + 图标(组件内置截断)。
|
|
85
|
+
|
|
86
|
+
### request 配置项(`searchParmas.request`)
|
|
87
|
+
|
|
88
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 |
|
|
89
|
+
| --- | --- | --- | --- | --- |
|
|
90
|
+
| `url` | String | - | 是 | 请求接口地址 |
|
|
91
|
+
| `options` | Object | - | 是 | 请求参数对象(查询字段默认值) |
|
|
92
|
+
| `expand` | Object | - | 否 | 扩展参数对象 |
|
|
93
|
+
| `type` | String | axios | 否 | 请求类型;GET 用默认 `axios`,POST 用 `axiosJson` |
|
|
94
|
+
| `method` | String | get | 否 | 请求方法;GET 用默认 `get`,POST 用 `post` |
|
|
95
|
+
| `assign` | String | - | 否 | 列表数据在响应体中的字段路径 |
|
|
96
|
+
|
|
97
|
+
> **POST 列表接口**:`request.type = 'axiosJson'`,`request.method = 'post'`(勿沿用默认的 `axios` + `get`)。
|
|
98
|
+
|
|
99
|
+
### 事件
|
|
100
|
+
- `searchDate` 点击查询时抛出当前查询参数
|
|
101
|
+
- `resetDate` 点击重置时抛出重置后的参数
|
|
102
|
+
- `getFullData` / `changeListTotal` 启用接口请求时的列表数据回调
|
|
103
|
+
|
|
104
|
+
### 方法(ref)
|
|
105
|
+
- `getList(pageData?)` 按当前条件请求列表
|
|
106
|
+
- `reset()` 重置表单并触发查询
|
|
107
|
+
- `searchBtn()` 触发查询
|
|
108
|
+
|
|
109
|
+
### 规范要点
|
|
110
|
+
- 查询项 < 3:只显示查询按钮;≥ 3:显示查询 + 重置。
|
|
111
|
+
- 查询按钮与条件左对齐;输入框宽度、项间距为设计固定值。
|
|
112
|
+
- 条件较少时可与表格同卡片(`isCard=false`)。
|
|
113
|
+
- `parmas[].tooltip`:标签后出现提示图标,悬停图标展示详细释义。
|
|
114
|
+
- `beforeSearch` + `rightBtn`:查询前校验拦截;查询区右侧扩展操作按钮。
|
|
115
|
+
- **生成默认**:已写 `:tableRefs` + `tableRefsName` 时省略 `@searchDate` / `@resetDate` 与对应 methods;省略 `:toggleNum`(用默认 `5`)。
|
|
116
|
+
|
|
117
|
+
## 示例(参考写法,回答用户时只选用其中一种)
|
|
118
|
+
|
|
119
|
+
### 基础用法(与表格同卡片、少于 3 项)
|
|
120
|
+
```vue
|
|
121
|
+
<yl-search-form
|
|
122
|
+
ref="ylSearchForm"
|
|
123
|
+
:platformType="'yx'"
|
|
124
|
+
:searchParmas="searchParmas"
|
|
125
|
+
:tableRefs="$refs"
|
|
126
|
+
tableRefsName="ylTableSimple"
|
|
127
|
+
:load="false"
|
|
128
|
+
:isCard="false"
|
|
129
|
+
/>
|
|
130
|
+
|
|
131
|
+
// data.searchParmas 示例
|
|
132
|
+
searchParmas: {
|
|
133
|
+
routerPush: false,
|
|
134
|
+
request: {
|
|
135
|
+
url: '', // 有接口时填写
|
|
136
|
+
type: 'axios', // GET 默认;POST 改为 axiosJson
|
|
137
|
+
method: 'get', // GET 默认;POST 改为 post
|
|
138
|
+
options: { keyword: '', status: '' },
|
|
139
|
+
},
|
|
140
|
+
parmas: [
|
|
141
|
+
{ title: '关键字', type: 'text', prop: 'keyword', placeholder: '请输入' },
|
|
142
|
+
{ title: '状态', type: 'select', prop: 'status', placeholder: '请选择',
|
|
143
|
+
data: [] }, // 从字典/接口加载
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 三项及以上(含重置、联动表格)
|
|
149
|
+
```vue
|
|
150
|
+
<yl-search-form
|
|
151
|
+
ref="ylSearchForm"
|
|
152
|
+
:platformType="'yx'"
|
|
153
|
+
:searchParmas="searchParmas"
|
|
154
|
+
:tableRefs="$refs"
|
|
155
|
+
tableRefsName="ylTableSimple"
|
|
156
|
+
:isCard="false"
|
|
157
|
+
/>
|
|
158
|
+
<yl-table-simple ref="ylTableSimple" :data="tableData" :search="$refs" searchRefsName="ylSearchForm" />
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
> 已配置 `tableRefs` 联动时**勿**写 `@searchDate` / `@resetDate`;重置按钮由组件按查询项数量自动控制。
|
|
162
|
+
|
|
163
|
+
### POST 列表接口(request 配置)
|
|
164
|
+
```js
|
|
165
|
+
request: {
|
|
166
|
+
url: INTERFACE.list,
|
|
167
|
+
type: 'axiosJson',
|
|
168
|
+
method: 'post',
|
|
169
|
+
options: { keyword: '', status: '' },
|
|
170
|
+
},
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 表单项 tooltip(标签后提示图标)
|
|
174
|
+
```js
|
|
175
|
+
// parmas 某项配置 tooltip 即可
|
|
176
|
+
{
|
|
177
|
+
title: '融资编号',
|
|
178
|
+
type: 'text',
|
|
179
|
+
prop: 'applyNo',
|
|
180
|
+
placeholder: '请输入融资编号',
|
|
181
|
+
tooltip: '支持按业务流水号精确查询;可与企业名称组合筛选。',
|
|
182
|
+
},
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 搜索前拦截 + 右侧按钮(beforeSearch / rightBtn)
|
|
186
|
+
```vue
|
|
187
|
+
<yl-search-form
|
|
188
|
+
ref="ylSearchForm"
|
|
189
|
+
:platformType="'yx'"
|
|
190
|
+
:searchParmas="searchParmas"
|
|
191
|
+
:beforeSearch="beforeSearch"
|
|
192
|
+
:load="false"
|
|
193
|
+
@searchDate="handleSearch"
|
|
194
|
+
>
|
|
195
|
+
<template slot="rightBtn">
|
|
196
|
+
<el-button size="small">取消</el-button>
|
|
197
|
+
<el-button size="small" type="primary">操作按钮</el-button>
|
|
198
|
+
</template>
|
|
199
|
+
</yl-search-form>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
```js
|
|
203
|
+
// methods
|
|
204
|
+
beforeSearch() {
|
|
205
|
+
const { keyword } = this.searchParmas.request.options;
|
|
206
|
+
if (!keyword || !String(keyword).trim()) {
|
|
207
|
+
this.$message.warning('请输入关键词');
|
|
208
|
+
return false; // 拦截查询
|
|
209
|
+
}
|
|
210
|
+
return true;
|
|
211
|
+
},
|
|
212
|
+
handleSearch(params) {
|
|
213
|
+
console.log('搜索参数', params);
|
|
214
|
+
},
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### 条件较多(展开/收起,使用默认 toggleNum)
|
|
218
|
+
```vue
|
|
219
|
+
<yl-search-form
|
|
220
|
+
ref="ylSearchForm"
|
|
221
|
+
:platformType="'yx'"
|
|
222
|
+
:searchParmas="searchParmas"
|
|
223
|
+
:tableRefs="$refs"
|
|
224
|
+
tableRefsName="ylTableSimple"
|
|
225
|
+
:isCard="true"
|
|
226
|
+
/>
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
> 折叠阈值默认 `toggleNum=5`,**勿**显式书写,除非产品明确要求其他值。
|
|
230
|
+
|
|
231
|
+
## 注意事项
|
|
232
|
+
- 预览/文档页请设置 `:load="false"`,避免无 `request.url` 时仍触发默认请求逻辑。
|
|
233
|
+
- `parmas` 为组件内历史拼写,勿写成 `params`。
|
|
234
|
+
- 重置按钮由 `parmas.length > 2` 控制,即至少 3 个查询项才显示。
|
|
235
|
+
- select 选项默认字段:`name` / `code`,可通过 `label` / `code` 属性覆盖。
|
|
236
|
+
- POST 列表:`searchParmas.request.type = 'axiosJson'` 且 `method = 'post'`(默认 `axios` + `get` 仅适用于 GET)。
|
|
237
|
+
- `tooltip`:标签后出现提示图标,悬停图标显示详细释义;勿将 placeholder 当作 tooltip 文案。
|
|
238
|
+
- `beforeSearch` 无入参,返回 `false` 阻止查询;右侧按钮使用 `slot="rightBtn"`,事件名为 `searchDate`(非 searchData)。
|
|
239
|
+
- 已配置 `tableRefs` 联动表格时:**勿**生成 `@searchDate` / `@resetDate` 与 `onSearch` / `onReset`;**勿**写 `:toggleNum`(默认 5)。
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xiaoma-zqyl-select-tree-front
|
|
3
|
+
description: 前台下拉树选择(单选/多选、Tag 折叠、父子勾选策略、自定义过滤)的 Vue2 实现规范(ylSelectTree)。在用户提及 ylSelectTree、yl-select-tree、下拉树、树形选择、部门选择、角色树、组织树、checkStrictly、collapseTags,或需要在前台实现该组件时使用。适用于前台门户仓库(如 zqyl-crclopen,platformType `yx`;页头/表格用 ylTitle + ylTableSimple)。 Use when implementing or reviewing the select-tree (ylSelectTree) component on a ZQYL front page.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 下拉树选择(前台)
|
|
7
|
+
|
|
8
|
+
你是一个前端组件实现与改造助手。你必须严格按本技能的规则输出。
|
|
9
|
+
|
|
10
|
+
## 适用范围
|
|
11
|
+
- 平台:前台
|
|
12
|
+
- platformType:`yx`
|
|
13
|
+
- 组件条目:`selectTree`
|
|
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
|
+
- 用户提到「下拉树」、「树形选择」、「ylSelectTree」、「yl-select-tree」。
|
|
47
|
+
- 多选树需 Tag 展示、折叠(+N)、或父子勾选策略(`checkStrictly`)。
|
|
48
|
+
|
|
49
|
+
不适用:
|
|
50
|
+
- 选项扁平、无层级 → 优先 `el-select` 或远程搜索下拉。
|
|
51
|
+
- 仅需级联省市区 → 优先 `el-cascader` 或 `ylFormEditor` 的 `type: region`。
|
|
52
|
+
|
|
53
|
+
### 方案选择(内部分析用,勿在回答中罗列)
|
|
54
|
+
- 单选:`multiple: false`(默认),`v-model` 绑定标量 id。
|
|
55
|
+
- 多选:`multiple: true`,`v-model` 绑定 id 数组;需折叠 Tag 时加 `collapse-tags`。
|
|
56
|
+
- 业务字段非默认 `label`/`id`:配置 `props` 与 `value-key`。
|
|
57
|
+
- 父子独立勾选:`check-strictly: true`;联动勾选保持默认 `false`。
|
|
58
|
+
- 大数据树:`default-expand-all: false`,或后端过滤 / 懒加载。
|
|
59
|
+
|
|
60
|
+
## API(ylSelectTree)
|
|
61
|
+
|
|
62
|
+
> 标签:`<yl-select-tree>` / `ylSelectTree`;须在入口 `import ylSelectTree from 'zqyl-component-base/lib/ylSelectTree'` + `Vue.component('ylSelectTree', ylSelectTree)` 注册;页面模板直接使用,**勿**单页 import;**禁止**全量 `Vue.use(zqylComponentBase)`。
|
|
63
|
+
|
|
64
|
+
### Props
|
|
65
|
+
|
|
66
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
67
|
+
| --- | --- | --- | --- |
|
|
68
|
+
| `value` / `v-model` | String \| Number \| Array | 单选 `''` / 多选 `[]` | 选中值;单选标量,多选 id 数组 |
|
|
69
|
+
| `data` | Array | `[]` | 树数据 |
|
|
70
|
+
| `multiple` | Boolean | `false` | 是否多选(展示复选框) |
|
|
71
|
+
| `collapseTags` | Boolean | `false` | 多选时折叠为 1 个 Tag +「+N」 |
|
|
72
|
+
| `props` | Object | `{ children: 'children', label: 'label' }` | 透传 `el-tree` 字段映射 |
|
|
73
|
+
| `valueKey` | String | `'id'` | 节点唯一标识字段名 |
|
|
74
|
+
| `placeholder` | String | `'请选择'` | 占位文案 |
|
|
75
|
+
| `disabled` | Boolean | `false` | 是否禁用 |
|
|
76
|
+
| `clearable` | Boolean | `false` | 是否可清空 |
|
|
77
|
+
| `checkStrictly` | Boolean | `false` | 多选时父子是否不关联(`true` 为独立勾选) |
|
|
78
|
+
| `defaultExpandAll` | Boolean | `true` | 是否默认展开全部节点 |
|
|
79
|
+
| `filterNodeMethod` | Function | `null` | 自定义过滤,透传 `el-tree` |
|
|
80
|
+
|
|
81
|
+
### Events
|
|
82
|
+
|
|
83
|
+
| 事件名 | 参数 | 说明 |
|
|
84
|
+
| --- | --- | --- |
|
|
85
|
+
| `input` | 单选:节点值;多选:值数组 | `v-model` 同步 |
|
|
86
|
+
| `change` | 单选:`(value, data, node)`;多选:`(values)` | 选中变化 |
|
|
87
|
+
| `clear` | — | 清空后触发 |
|
|
88
|
+
|
|
89
|
+
### Methods(ref)
|
|
90
|
+
|
|
91
|
+
| 方法名 | 说明 |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| `setValue(val)` | 外部设置选中值(触发 `input`) |
|
|
94
|
+
| `getCheckedNodes()` | 多选模式下获取已勾选节点 |
|
|
95
|
+
|
|
96
|
+
## 示例(参考写法,回答用户时只选用其中一种)
|
|
97
|
+
|
|
98
|
+
### 单选(自定义 label 字段)
|
|
99
|
+
```vue
|
|
100
|
+
<template>
|
|
101
|
+
<yl-select-tree
|
|
102
|
+
v-model="deptId"
|
|
103
|
+
:data="treeData"
|
|
104
|
+
:props="{ label: 'name', children: 'children' }"
|
|
105
|
+
value-key="id"
|
|
106
|
+
placeholder="请选择部门"
|
|
107
|
+
clearable
|
|
108
|
+
@change="onDeptChange"
|
|
109
|
+
/>
|
|
110
|
+
</template>
|
|
111
|
+
|
|
112
|
+
<script>
|
|
113
|
+
export default {
|
|
114
|
+
data() {
|
|
115
|
+
return {
|
|
116
|
+
deptId: '',
|
|
117
|
+
treeData: [
|
|
118
|
+
{ id: 1, name: '总部', children: [{ id: 11, name: '研发部' }] },
|
|
119
|
+
],
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
methods: {
|
|
123
|
+
onDeptChange(value, data) {
|
|
124
|
+
// 单选:value 为 id,data 为节点数据
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
</script>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 多选 + Tag 折叠
|
|
132
|
+
```vue
|
|
133
|
+
<yl-select-tree
|
|
134
|
+
v-model="roleIds"
|
|
135
|
+
:data="treeData"
|
|
136
|
+
:props="{ label: 'name', children: 'children' }"
|
|
137
|
+
value-key="id"
|
|
138
|
+
multiple
|
|
139
|
+
collapse-tags
|
|
140
|
+
clearable
|
|
141
|
+
placeholder="请选择角色"
|
|
142
|
+
/>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 父子不联动(checkStrictly)
|
|
146
|
+
```vue
|
|
147
|
+
<yl-select-tree
|
|
148
|
+
v-model="checkedIds"
|
|
149
|
+
:data="treeData"
|
|
150
|
+
multiple
|
|
151
|
+
:check-strictly="true"
|
|
152
|
+
placeholder="父子独立勾选"
|
|
153
|
+
/>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 注意事项
|
|
157
|
+
- **`props` 与 `valueKey`** 必须与业务树数据字段一致;`label` 映射为 `name` 时,`filterNodeMethod` 内也应读 `data.name`。
|
|
158
|
+
- 单选 `v-model` 为标量,多选为 **id 数组**;勿混用类型。
|
|
159
|
+
- 多选 Tag 移除会通过 tree 勾选状态同步,无需手动 splice 数组。
|
|
160
|
+
- 大数据量树建议 `defaultExpandAll: false` 或后端过滤,避免一次展开全部节点卡顿。
|
|
161
|
+
- 与 `ylFormEditor` 组合时,树形字段可用 `type: 'slot'` 插槽内嵌本组件。
|