@microi.net/cli 6.2.1 → 6.2.2
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/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/assets/build-meta.json +5 -5
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server.js +144 -119
- package/scripts/microi-cli.js +54 -54
- package/scripts/microi-skills.meta.json +247 -238
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +40 -40
- package/skills/README.md +1 -1
- package/skills/microi-client-frontend/SKILL.md +20 -14
- package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +9 -1
- package/skills/microi-codex/SKILL.md +2 -0
- package/skills/microi-datasource-mapping/SKILL.md +5 -0
- package/skills/microi-db-schema/references/form-component-options.md +7 -0
- package/skills/microi-deployment/SKILL.md +3 -3
- package/skills/microi-deployment/references/deployment-matrix.md +1 -1
- package/skills/microi-docs-coverage/references/capability-map.md +6 -6
- package/skills/microi-form-engine/SKILL.md +21 -3
- package/skills/microi-form-engine/references/business-numbering.md +70 -0
- package/skills/microi-form-engine/references/component-catalog.md +4 -0
- package/skills/microi-form-engine/references/component-config-index.md +359 -0
- package/skills/microi-form-engine/references/data-source-events.md +7 -1
- package/skills/microi-form-engine/references/form-generation-quality.md +160 -0
- package/skills/microi-system-delivery/SKILL.md +7 -0
- package/skills/microi-system-delivery/references/delivery-pitfalls.md +5 -0
- package/skills/microi-uniapp-frontend/SKILL.md +3 -1
- package/skills/microi.v8.js +6 -4
- package/skills/module-engine/SKILL.md +8 -0
- package/skills/scripts/sync-embedded-skills.mjs +13 -0
- package/skills/uniapp-mall-assets/SKILL.md +3 -0
- package/skills/v8-file-upload/SKILL.md +283 -283
- package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +7 -1
- package/skills/v8-frontend-events/SKILL.md +14 -6
- package/skills/v8-image-processing/SKILL.md +13 -2
- package/skills/v8-image-processing/references/api-reference.md +49 -3
- package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +6 -1
- package/skills/v8-utilities/references/server-api-index.md +1 -0
- package/skills/vision-engine/references/video-timeline.md +1 -0
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
`Microi.Client/src/views/form-engine/diy-field-component/diy-component-list.json`
|
|
5
5
|
为当前事实源;物理类型以服务器/MCP 允许类型为准。
|
|
6
6
|
|
|
7
|
+
控件名覆盖不等于配置覆盖。完整生成先读 [表单生成质量规则](form-generation-quality.md),
|
|
8
|
+
按控件查询 MCP `microi_get_form_component_catalog` 的配置路径、标签、枚举及来源哈希;
|
|
9
|
+
离线查 [控件配置源码索引](component-config-index.md)。
|
|
10
|
+
|
|
7
11
|
## 基础输入
|
|
8
12
|
|
|
9
13
|
| Component | 用途 | 推荐物理类型 |
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
# 控件配置源码索引
|
|
2
|
+
|
|
3
|
+
由 `microi.mcp/scripts/generate-form-component-catalog.mjs` 从全部当前控件、共用配置弹窗及其本地依赖生成。修改控件后重新生成并执行 `--check`。
|
|
4
|
+
|
|
5
|
+
PC 前端静态配置目录。designerFieldType 是历史设计器默认值,不是服务器允许的建模类型。configPaths 为源码静态路径,动态键、外部 API 语义及跨端支持须查看 sourceFiles 和责任 Skill。defaultConfig 是源码字面量,不是业务推荐值,也不能整体覆盖存量字段。
|
|
6
|
+
|
|
7
|
+
共 44 类控件、61 个来源文件。决策与验收见 [表单生成质量规则](form-generation-quality.md)。先通过 MCP `microi_get_form_component_catalog` 查询目标控件,避免每次加载全量正文。
|
|
8
|
+
|
|
9
|
+
## Text(单行文本)
|
|
10
|
+
|
|
11
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-input.vue`。
|
|
12
|
+
|
|
13
|
+
Config 静态路径:`Button.PreviewCanClick`、`ReadOnlyButton`、`ShowButton`、`ShowIcon`、`SlotButtonV8Code`、`TextApend`、`TextApendPosition`、`TextIcon`、`TextIconPosition`、`TextShowPassword`、`V8Code`、`V8CodeBlur`。
|
|
14
|
+
|
|
15
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`ReadOnlyButton`、`ShowButton`、`ShowIcon`、`TextApend`、`TextApendPosition`、`TextIcon`、`TextIconPosition`、`TextShowPassword`。
|
|
16
|
+
|
|
17
|
+
## Guid(GUID)
|
|
18
|
+
|
|
19
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-input.vue`。
|
|
20
|
+
|
|
21
|
+
Config 静态路径:`Button.PreviewCanClick`、`ReadOnlyButton`、`ShowButton`、`ShowIcon`、`SlotButtonV8Code`、`TextApend`、`TextApendPosition`、`TextIcon`、`TextIconPosition`、`TextShowPassword`、`V8Code`、`V8CodeBlur`。
|
|
22
|
+
|
|
23
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`ReadOnlyButton`、`ShowButton`、`ShowIcon`、`TextApend`、`TextApendPosition`、`TextIcon`、`TextIconPosition`、`TextShowPassword`。
|
|
24
|
+
|
|
25
|
+
## Textarea(多行文本)
|
|
26
|
+
|
|
27
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-textarea.vue`。
|
|
28
|
+
|
|
29
|
+
Config 静态路径:`Button.PreviewCanClick`、`TextApend`、`TextApendPosition`、`TextIcon`、`TextIconPosition`、`TextShowPassword`、`Textarea`、`Textarea.DefaultRows`、`V8Code`。
|
|
30
|
+
|
|
31
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DefaultRows`。
|
|
32
|
+
|
|
33
|
+
## NumberText(数字输入)
|
|
34
|
+
|
|
35
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-input-number.vue`。
|
|
36
|
+
|
|
37
|
+
Config 静态路径:`Button.PreviewCanClick`、`NumberTextBtn`、`NumberTextBtnPosition`、`NumberTextPrecision`、`NumberTextStep`、`V8Code`。
|
|
38
|
+
|
|
39
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`NumberTextBtn`、`NumberTextBtnPosition`、`NumberTextPrecision`、`NumberTextStep`。
|
|
40
|
+
|
|
41
|
+
## DateTime(日期时间)
|
|
42
|
+
|
|
43
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-datetime.vue`。
|
|
44
|
+
|
|
45
|
+
Config 静态路径:`Button.PreviewCanClick`、`DateTimeType`、`V8Code`。
|
|
46
|
+
|
|
47
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DateTimeType`。
|
|
48
|
+
|
|
49
|
+
## Select(下拉单选)
|
|
50
|
+
|
|
51
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-select.vue`、`Microi.Client/src/views/form-engine/diy-field-component/field-data-load-fallback.js`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiyDataSourceConfig.vue`。
|
|
52
|
+
|
|
53
|
+
Config 静态路径:`Api`、`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup`、`Sql`、`V8Code`。
|
|
54
|
+
|
|
55
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup === true`、`Sql`、`configForm`。
|
|
56
|
+
|
|
57
|
+
## MultipleSelect(下拉多选)
|
|
58
|
+
|
|
59
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-select.vue`、`Microi.Client/src/views/form-engine/diy-field-component/field-data-load-fallback.js`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiyDataSourceConfig.vue`。
|
|
60
|
+
|
|
61
|
+
Config 静态路径:`Api`、`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup`、`Sql`、`V8Code`。
|
|
62
|
+
|
|
63
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup === true`、`Sql`、`configForm`。
|
|
64
|
+
|
|
65
|
+
## Radio(单选框)
|
|
66
|
+
|
|
67
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-radio.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiyDataSourceConfig.vue`。
|
|
68
|
+
|
|
69
|
+
Config 静态路径:`Button.PreviewCanClick`、`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup`、`Sql`、`V8Code`。
|
|
70
|
+
|
|
71
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup === true`、`Sql`、`configForm`。
|
|
72
|
+
|
|
73
|
+
## Checkbox(复选框)
|
|
74
|
+
|
|
75
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-checkbox.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiyDataSourceConfig.vue`。
|
|
76
|
+
|
|
77
|
+
Config 静态路径:`Button.PreviewCanClick`、`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup`、`Sql`、`V8Code`。
|
|
78
|
+
|
|
79
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup === true`、`Sql`、`configForm`。
|
|
80
|
+
|
|
81
|
+
## Switch(开关)
|
|
82
|
+
|
|
83
|
+
来源:`Microi.Client/src/utils/form-switch-value.js`、`Microi.Client/src/views/form-engine/diy-field-component/diy-switch.vue`。
|
|
84
|
+
|
|
85
|
+
Config 静态路径:`Button.PreviewCanClick`、`Switch`、`Switch.ActiveText`、`Switch.Description`、`Switch.DisplayMode`、`Switch.Icon`、`Switch.InactiveText`、`Switch.NullValue`、`Switch.Title`、`Switch.VisualStyle`、`V8Code`。
|
|
86
|
+
|
|
87
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`ActiveText`、`Description`、`DisplayMode`、`Icon`、`InactiveText`、`Title`、`VisualStyle`。
|
|
88
|
+
|
|
89
|
+
## Rate(评分)
|
|
90
|
+
|
|
91
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-rate.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiySimpleFieldConfigDialog.vue`。
|
|
92
|
+
|
|
93
|
+
Config 静态路径:`Button.PreviewCanClick`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`Rate`、`Rate.AllowHalf`、`Rate.Clearable`、`Rate.Max`、`Rate.ScoreTemplate`、`Rate.ShowScore`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`V8Code`。
|
|
94
|
+
|
|
95
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`AllowHalf`、`Clearable`、`Max`、`ScoreTemplate`、`ShowScore`。
|
|
96
|
+
|
|
97
|
+
## Progress(进度条)
|
|
98
|
+
|
|
99
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-progress.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiySimpleFieldConfigDialog.vue`。
|
|
100
|
+
|
|
101
|
+
Config 静态路径:`Button.PreviewCanClick`、`NumberTextBtn`、`NumberTextBtnPosition`、`NumberTextPrecision`、`NumberTextStep`、`Progress`、`Progress.Color`、`Progress.ShowText`、`Progress.Status`、`Progress.StrokeWidth`、`Progress.TextInside`、`Progress.Type`、`V8Code`。
|
|
102
|
+
|
|
103
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Color`、`ShowText`、`Status`、`StrokeWidth`、`TextInside`、`Type`。
|
|
104
|
+
|
|
105
|
+
## Slider(滑块)
|
|
106
|
+
|
|
107
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-slider.vue`。
|
|
108
|
+
|
|
109
|
+
Config 静态路径:`Slider`、`Slider.Max`、`Slider.Min`、`Slider.Range`、`Slider.ShowInput`、`Slider.ShowStops`、`Slider.Step`。
|
|
110
|
+
|
|
111
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Max`、`Min`、`Range`、`ShowInput`、`ShowStops`、`Step`。
|
|
112
|
+
|
|
113
|
+
## ColorPicker(颜色选择)
|
|
114
|
+
|
|
115
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-colorpicker.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiySimpleFieldConfigDialog.vue`。
|
|
116
|
+
|
|
117
|
+
Config 静态路径:`Button.PreviewCanClick`、`ColorPicker`、`ColorPicker.Format`、`ColorPicker.Predefine`、`ColorPicker.ShowAlpha`、`ColorPicker.Size`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`V8Code`。
|
|
118
|
+
|
|
119
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Format`、`PredefineText`、`ShowAlpha`、`Size`。
|
|
120
|
+
|
|
121
|
+
## AutoNumber(自动编号)
|
|
122
|
+
|
|
123
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-autonumber.vue`。
|
|
124
|
+
|
|
125
|
+
Config 静态路径:`AutoNumber`、`AutoNumber.CreateRule`、`AutoNumber.DataRule`、`AutoNumberFields`、`AutoNumberFixed`、`AutoNumberLength`、`Button.PreviewCanClick`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`TextApend`、`TextApendPosition`、`TextIcon`、`TextIconPosition`、`V8Code`。
|
|
126
|
+
|
|
127
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`AutoNumberFields`、`AutoNumberFixed`、`AutoNumberLength`、`CreateRule`、`DataRule`。
|
|
128
|
+
|
|
129
|
+
## Button(按钮)
|
|
130
|
+
|
|
131
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-button.vue`、`Microi.Client/src/views/form-engine/diy-field-component/dos.fontawesome/Fontawesome.vue`。
|
|
132
|
+
|
|
133
|
+
Config 静态路径:`Button`、`Button.Icon`、`Button.Loading`、`Button.PreviewCanClick`、`Button.RefreshTableAfterClick`、`Button.Size`、`Button.Type`。
|
|
134
|
+
|
|
135
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Button.Icon`、`Button.PreviewCanClick`、`Button.RefreshTableAfterClick`、`Button.Type`。
|
|
136
|
+
|
|
137
|
+
## Divider(分割线)
|
|
138
|
+
|
|
139
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-divider.vue`。
|
|
140
|
+
|
|
141
|
+
Config 静态路径:`Divider`、`Divider.Icon`、`Divider.Tag`、`DividerPosition`。
|
|
142
|
+
|
|
143
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Divider.Icon`、`Divider.Tag`、`DividerPosition`。
|
|
144
|
+
|
|
145
|
+
## CollapseGroup(折叠分组)
|
|
146
|
+
|
|
147
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-collapse-group.vue`。
|
|
148
|
+
|
|
149
|
+
Config 静态路径:`CollapseGroup`、`CollapseGroup.DefaultCollapsed`、`CollapseGroup.Description`、`CollapseGroup.FieldCount`、`CollapseGroup.Icon`、`CollapseGroup.ScopeMode`、`CollapseGroup.ShowFieldCount`、`CollapseGroup.Theme`。
|
|
150
|
+
|
|
151
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DefaultCollapsed`、`Description`、`FieldCount`、`Icon`、`ScopeMode`、`ShowFieldCount`、`Theme`。
|
|
152
|
+
|
|
153
|
+
## Tabs(页签分组)
|
|
154
|
+
|
|
155
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-tabs.vue`。
|
|
156
|
+
|
|
157
|
+
Config 静态路径:`FieldTabs`、`FieldTabs.CaptureRest`、`FieldTabs.DefaultActiveKey`、`FieldTabs.Description`、`FieldTabs.Position`、`FieldTabs.ScopeMode`、`FieldTabs.ShowFieldCount`、`FieldTabs.Stretch`、`FieldTabs.Tabs`、`FieldTabs.Theme`、`FieldTabs.TotalFieldCount`、`FieldTabs.Type`。
|
|
158
|
+
|
|
159
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`CaptureRest`、`DefaultActiveKey`、`Description`、`Position`、`ScopeMode`、`ShowFieldCount`、`Stretch`、`TotalFieldCount`、`Type`。
|
|
160
|
+
|
|
161
|
+
## Alert(提示说明)
|
|
162
|
+
|
|
163
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-alert.vue`。
|
|
164
|
+
|
|
165
|
+
Config 静态路径:`Alert`、`Alert.Content`、`Alert.Effect`、`Alert.ShowIcon`、`Alert.Title`、`Alert.Type`。
|
|
166
|
+
|
|
167
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Content`、`Effect`、`ShowIcon`、`Title`、`Type`。
|
|
168
|
+
|
|
169
|
+
## StaticText(静态文本)
|
|
170
|
+
|
|
171
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-statictext.vue`。
|
|
172
|
+
|
|
173
|
+
Config 静态路径:`StaticText`、`StaticText.Align`、`StaticText.Content`、`StaticText.Theme`、`StaticText.Title`。
|
|
174
|
+
|
|
175
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Align`、`Content`、`Theme`、`Title`。
|
|
176
|
+
|
|
177
|
+
## Html(HTML内容)
|
|
178
|
+
|
|
179
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-html.vue`。
|
|
180
|
+
|
|
181
|
+
Config 静态路径:`Html`、`Html.Content`、`Html.MinHeight`、`Html.Padding`、`Html.UseFieldValue`。
|
|
182
|
+
|
|
183
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Content`、`MinHeight`、`Padding`、`UseFieldValue`。
|
|
184
|
+
|
|
185
|
+
## RichText(富文本)
|
|
186
|
+
|
|
187
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-richtext.vue`、`Microi.Client/src/views/form-engine/diy-field-component/richtext-assets.js`。
|
|
188
|
+
|
|
189
|
+
Config 静态路径:`RichText`、`RichText.EditorProduct`、`RichText.File`、`RichText.File.Accept`、`RichText.File.Enabled`、`RichText.File.MaxCount`、`RichText.File.MaxSize`、`RichText.Image`、`RichText.Image.CompressMaxSize`、`RichText.Image.CompressMaxWidth`、`RichText.Image.Enabled`、`RichText.Image.MaxCount`、`RichText.Image.MaxSize`、`RichText.Image.Preview`、`RichText.Limit`、`RichText.Video`、`RichText.Video.Enabled`、`RichText.Video.MaxCount`、`RichText.Video.MaxSize`。
|
|
190
|
+
|
|
191
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`File.Accept`、`File.Enabled`、`File.MaxCount`、`File.MaxSize`、`Image.CompressMaxSize`、`Image.CompressMaxWidth`、`Image.Enabled`、`Image.MaxCount`、`Image.MaxSize`、`Image.Preview`、`Limit`、`Video.Enabled`、`Video.MaxCount`、`Video.MaxSize`。
|
|
192
|
+
|
|
193
|
+
## CodeEditor(代码编辑器)
|
|
194
|
+
|
|
195
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/AiChatPanel.vue`、`Microi.Client/src/views/form-engine/diy-field-component/diy-code-editor.vue`。
|
|
196
|
+
|
|
197
|
+
Config 静态路径:`CodeEditor`、`CodeEditor.ButtonText`、`CodeEditor.DisplayMode`、`CodeEditor.Height`、`CodeEditor.Language`、`CodeEditor.V8CodeType`。
|
|
198
|
+
|
|
199
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`ButtonText`、`DisplayMode`、`Height`、`Language`、`V8CodeType`。
|
|
200
|
+
|
|
201
|
+
## JsonTable(JSON表格)
|
|
202
|
+
|
|
203
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-jsontable.vue`、`Microi.Client/src/views/form-engine/diy-field-component/json-table-column-field-runtime.js`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiyDataSourceConfig.vue`。
|
|
204
|
+
|
|
205
|
+
Config 静态路径:`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`JsonTable`、`JsonTable.ApiEngineKey`、`JsonTable.Columns`、`JsonTable.DataSource`、`JsonTable.DataSourceId`、`JsonTable.DataSourceSqlRemote`、`JsonTable.KeyValueList`、`JsonTable.SelectLabel`、`JsonTable.Sql`、`SelectLabel`、`Sql`。
|
|
206
|
+
|
|
207
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup === true`、`Sql`。
|
|
208
|
+
|
|
209
|
+
## ImgUpload(图片上传)
|
|
210
|
+
|
|
211
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-image-crop-dialog.vue`、`Microi.Client/src/views/form-engine/diy-field-component/diy-imgupload.vue`、`Microi.Client/src/views/form-engine/diy-field-component/diy-upload-compact-summary.vue`、`Microi.Client/src/views/form-engine/diy-field-component/image-crop-config.js`。
|
|
212
|
+
|
|
213
|
+
Config 静态路径:`ImgUpload`、`ImgUpload.Crop`、`ImgUpload.Crop.AllowFlip`、`ImgUpload.Crop.AllowRotate`、`ImgUpload.Crop.AllowZoom`、`ImgUpload.Crop.CustomHeight`、`ImgUpload.Crop.CustomWidth`、`ImgUpload.Crop.Enabled`、`ImgUpload.Crop.Mode`、`ImgUpload.Crop.Ratio`、`ImgUpload.Limit`、`ImgUpload.MaxCount`、`ImgUpload.MaxSize`、`ImgUpload.Multiple`、`ImgUpload.Preview`、`ImgUpload.SaveFullPath`、`ImgUpload.ShowFileList`、`ImgUpload.Tips`、`Upload`、`Upload.BeforeUploadV8`、`Upload.UploadSuccessV8`。
|
|
214
|
+
|
|
215
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Crop.AllowFlip`、`Crop.AllowRotate`、`Crop.AllowZoom`、`Crop.CustomHeight`、`Crop.CustomWidth`、`Crop.Enabled`、`Crop.Mode`、`Crop.Ratio`、`Limit`、`MaxCount`、`MaxSize`、`Multiple`、`Preview`、`SaveFullPath`、`Tips`。
|
|
216
|
+
|
|
217
|
+
## FileUpload(文件上传)
|
|
218
|
+
|
|
219
|
+
来源:`Microi.Client/src/utils/file-role-permission.js`、`Microi.Client/src/views/form-engine/diy-field-component/diy-file-download-dialog.vue`、`Microi.Client/src/views/form-engine/diy-field-component/diy-file-role-tags.vue`、`Microi.Client/src/views/form-engine/diy-field-component/diy-fileupload.vue`、`Microi.Client/src/views/form-engine/diy-field-component/diy-upload-compact-summary.vue`。
|
|
220
|
+
|
|
221
|
+
Config 静态路径:`FileUpload`、`FileUpload.AllowOfficeEdit`、`FileUpload.ConfigurableRoleIds`、`FileUpload.DisableRoleInheritance`、`FileUpload.EnableOfficePreview`、`FileUpload.EnableOfficeVersion`、`FileUpload.EnableRolePermission`、`FileUpload.HideUnauthorizedFiles`、`FileUpload.Limit`、`FileUpload.MaxCount`、`FileUpload.MaxSize`、`FileUpload.MediaType`、`FileUpload.Multiple`、`FileUpload.SaveFullPath`、`FileUpload.ShowFileList`、`FileUpload.ShowUnauthorizedFileName`、`FileUpload.Tips`、`Upload`、`Upload.BeforeUploadV8`、`Upload.UploadSuccessV8`。
|
|
222
|
+
|
|
223
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`AllowOfficeEdit`、`ConfigurableRoleIds`、`DisableRoleInheritance`、`EnableOfficePreview`、`EnableOfficeVersion`、`EnableRolePermission`、`HideUnauthorizedFiles`、`Limit`、`MaxCount`、`MaxSize`、`MediaType`、`Multiple`、`SaveFullPath`、`ShowUnauthorizedFileName`、`Tips`。
|
|
224
|
+
|
|
225
|
+
## Autocomplete(自动完成)
|
|
226
|
+
|
|
227
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-autocomplete.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiyDataSourceConfig.vue`。
|
|
228
|
+
|
|
229
|
+
Config 静态路径:`Button.PreviewCanClick`、`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`SelectLabel`、`SelectedValueLookup`、`Sql`、`TextApend`、`TextApendPosition`、`TextIcon`、`TextIconPosition`、`V8Code`。
|
|
230
|
+
|
|
231
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`EnableSearch`、`SelectLabel`、`SelectSaveField`、`SelectSaveFormat`、`SelectedValueLookup === true`、`Sql`、`configForm`。
|
|
232
|
+
|
|
233
|
+
## TagInput(标签输入)
|
|
234
|
+
|
|
235
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-taginput.vue`。
|
|
236
|
+
|
|
237
|
+
Config 静态路径:`TagInput`、`TagInput.MaxCount`、`TagInput.Options`、`TagInput.Placeholder`。
|
|
238
|
+
|
|
239
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`MaxCount`、`OptionsText`、`Placeholder`。
|
|
240
|
+
|
|
241
|
+
## Transfer(穿梭框)
|
|
242
|
+
|
|
243
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-transfer.vue`。
|
|
244
|
+
|
|
245
|
+
Config 静态路径:`Transfer`、`Transfer.Filterable`、`Transfer.LeftTitle`、`Transfer.Options`、`Transfer.RightTitle`。
|
|
246
|
+
|
|
247
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Filterable`、`LeftTitle`、`OptionsText`、`RightTitle`。
|
|
248
|
+
|
|
249
|
+
## Cascader(级联选择)
|
|
250
|
+
|
|
251
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-cascader-value.js`、`Microi.Client/src/views/form-engine/diy-field-component/diy-cascader.vue`、`Microi.Client/src/views/form-engine/diy-field-component/field-data-load-fallback.js`。
|
|
252
|
+
|
|
253
|
+
Config 静态路径:`Button.PreviewCanClick`、`Cascader`、`Cascader.Children`、`Cascader.Disabled`、`Cascader.EmitPath`、`Cascader.Filterable`、`Cascader.Label`、`Cascader.Lazy`、`Cascader.Leaf`、`Cascader.Multiple`、`Cascader.ParentField`、`Cascader.ParentFields`、`Cascader.Value`、`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`SelectLabel`、`SelectSaveField`、`Sql`、`V8Code`。
|
|
254
|
+
|
|
255
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Cascader.Children`、`Cascader.Disabled`、`Cascader.EmitPath`、`Cascader.Filterable`、`Cascader.Lazy`、`Cascader.Leaf`、`Cascader.Multiple`、`Cascader.ParentField`、`Cascader.ParentFields`、`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`SelectLabel`、`SelectSaveField`、`Sql`。
|
|
256
|
+
|
|
257
|
+
## Address(省市区地址)
|
|
258
|
+
|
|
259
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-address.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiySimpleFieldConfigDialog.vue`。
|
|
260
|
+
|
|
261
|
+
Config 静态路径:`Address`、`Address.CheckStrictly`、`Address.Separator`、`Address.ShowAllLevels`、`V8Code`。
|
|
262
|
+
|
|
263
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`CheckStrictly`、`Separator`、`ShowAllLevels`。
|
|
264
|
+
|
|
265
|
+
## Department(部门选择)
|
|
266
|
+
|
|
267
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-department.vue`。
|
|
268
|
+
|
|
269
|
+
Config 静态路径:`Button.PreviewCanClick`、`Cascader.Children`、`Cascader.Disabled`、`Cascader.Lazy`、`Cascader.Leaf`、`Cascader.Multiple`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`Department`、`Department.EmitPath`、`Department.Filterable`、`Department.Multiple`、`SelectLabel`、`SelectSaveField`、`V8Code`。
|
|
270
|
+
|
|
271
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Department.EmitPath`、`Department.Filterable`、`Department.Multiple`。
|
|
272
|
+
|
|
273
|
+
## SelectTree(树形选择)
|
|
274
|
+
|
|
275
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-select-tree.vue`、`Microi.Client/src/views/form-engine/diy-field-component/paged-select-tree.vue`、`Microi.Client/src/views/form-engine/diy-field-component/select-tree-paging.js`。
|
|
276
|
+
|
|
277
|
+
Config 静态路径:`Button.PreviewCanClick`、`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`DataSourceSqlRemoteLoading`、`Filterable`、`SelectLabel`、`SelectSaveField`、`SelectTree`、`SelectTree.Children`、`SelectTree.Disabled`、`SelectTree.Filterable`、`SelectTree.Label`、`SelectTree.Lazy`、`SelectTree.LazyLoad`、`SelectTree.Leaf`、`SelectTree.Multiple`、`SelectTree.PageSize`、`SelectTree.ParentChildLinkage`、`SelectTree.ParentField`、`SelectTree.ParentFields`、`SelectTree.Value`、`Sql`、`V8Code`。
|
|
278
|
+
|
|
279
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DataSource`、`DataSourceApiEngineKey`、`DataSourceId`、`DataSourceSqlRemote`、`SelectLabel`、`SelectSaveField`、`SelectTree.Children`、`SelectTree.Disabled`、`SelectTree.Filterable`、`SelectTree.Lazy`、`SelectTree.Leaf`、`SelectTree.Multiple`、`SelectTree.PageSize`、`SelectTree.ParentChildLinkage`、`SelectTree.ParentField`、`SelectTree.ParentFields`、`Sql`。
|
|
280
|
+
|
|
281
|
+
## TreeCheckbox(树形权限)
|
|
282
|
+
|
|
283
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-treecheckbox.vue`。
|
|
284
|
+
|
|
285
|
+
Config 静态路径:`TreeCheckbox`、`TreeCheckbox.DataSourceApi`、`TreeCheckbox.DataSourceType`、`TreeCheckbox.DefaultExpandAll`、`TreeCheckbox.NameColumnLabel`、`TreeCheckbox.NameColumnWidth`、`TreeCheckbox.PermissionColumnLabel`、`TreeCheckbox.ShowIcon`、`TreeCheckbox.ShowSearch`、`V8Code`。
|
|
286
|
+
|
|
287
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DataSourceApi`、`DataSourceType`、`DefaultExpandAll`、`NameColumnLabel`、`NameColumnWidth`、`PermissionColumnLabel`、`ShowIcon`、`ShowSearch`。
|
|
288
|
+
|
|
289
|
+
## OpenTable(弹出表格)
|
|
290
|
+
|
|
291
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-opentable.vue`。
|
|
292
|
+
|
|
293
|
+
Config 静态路径:`OpenTable`、`OpenTable.BeforeOpenV8`、`OpenTable.BtnName`、`OpenTable.MultipleSelect`、`OpenTable.PropsWhere`、`OpenTable.SearchAppend`、`OpenTable.ShowDialog`、`OpenTable.SubmitV8`、`OpenTable.SysMenuId`、`OpenTable.SysMenuName`、`OpenTable.TableId`、`OpenTable.TableName`。
|
|
294
|
+
|
|
295
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`BeforeOpenV8`、`BtnName`、`MultipleSelect`、`SubmitV8`。
|
|
296
|
+
|
|
297
|
+
## JoinTable(关联表格)
|
|
298
|
+
|
|
299
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-jointable.vue`。
|
|
300
|
+
|
|
301
|
+
Config 静态路径:`JoinTable`、`JoinTable.ModuleId`、`JoinTable.ModuleName`、`JoinTable.TableId`、`JoinTable.Where`。
|
|
302
|
+
|
|
303
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`Where`。
|
|
304
|
+
|
|
305
|
+
## JoinForm(关联表单)
|
|
306
|
+
|
|
307
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-joinform.vue`。
|
|
308
|
+
|
|
309
|
+
Config 静态路径:`JoinForm`、`JoinForm.FormMode`、`JoinForm.Id`、`JoinForm.JoinFieldName`、`JoinForm.TableId`、`JoinForm.TableName`、`JoinForm._SearchEqual`。
|
|
310
|
+
|
|
311
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`FormMode`、`JoinFieldName`、`TableId`。
|
|
312
|
+
|
|
313
|
+
## TableChild(子表)
|
|
314
|
+
|
|
315
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-tablechild.vue`。
|
|
316
|
+
|
|
317
|
+
Config 静态路径:`TableChild`、`TableChild.Data`、`TableChild.DisablePagination`、`TableChild.FieldRelations`、`TableChild.ImportAutoFillFk`、`TableChild.LastSysMenuId`、`TableChild.LastSysMenuName`、`TableChild.LastTableId`、`TableChild.NoneDefaultHeight`、`TableChild.PrimaryTableFieldName`、`TableChild.SearchAppend`、`TableChildFkFieldName`、`TableChildSysMenuId`、`TableChildSysMenuName`、`TableChildTableId`。
|
|
318
|
+
|
|
319
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DisablePagination`、`FieldRelations`、`ImportAutoFillFk`、`PrimaryTableFieldName`、`TableChildFkFieldName`。
|
|
320
|
+
|
|
321
|
+
## Map(地图定位)
|
|
322
|
+
|
|
323
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-map.vue`、`Microi.Client/src/views/form-engine/diy-field-component/map-runtime.js`。
|
|
324
|
+
|
|
325
|
+
Config 静态路径:`MapCompany`。
|
|
326
|
+
|
|
327
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`MapCompany`。
|
|
328
|
+
|
|
329
|
+
## MapArea(地图区域)
|
|
330
|
+
|
|
331
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-map.vue`、`Microi.Client/src/views/form-engine/diy-field-component/map-runtime.js`。
|
|
332
|
+
|
|
333
|
+
Config 静态路径:`MapCompany`。
|
|
334
|
+
|
|
335
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`MapCompany`。
|
|
336
|
+
|
|
337
|
+
## Qrcode(二维码)
|
|
338
|
+
|
|
339
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-qrcode.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiySimpleFieldConfigDialog.vue`。
|
|
340
|
+
|
|
341
|
+
Config 静态路径:`Qrcode`、`Qrcode.DisplayWidth`、`Qrcode.DownloadText`、`Qrcode.ShowDownload`。
|
|
342
|
+
|
|
343
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DisplayWidth`、`DownloadText`、`ShowDownload`。
|
|
344
|
+
|
|
345
|
+
## FontAwesome(图标选择)
|
|
346
|
+
|
|
347
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-fontawesome.vue`、`Microi.Client/src/views/form-engine/diy-field-component/shared/DiySimpleFieldConfigDialog.vue`。
|
|
348
|
+
|
|
349
|
+
Config 静态路径:`Button.PreviewCanClick`、`FontAwesome`、`FontAwesome.AllowClear`、`FontAwesome.DefaultIcon`、`FontAwesome.PreviewSize`、`V8Code`。
|
|
350
|
+
|
|
351
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`AllowClear`、`DefaultIcon`、`PreviewSize`。
|
|
352
|
+
|
|
353
|
+
## DevComponent(自定义组件)
|
|
354
|
+
|
|
355
|
+
来源:`Microi.Client/src/views/form-engine/diy-field-component/diy-devcomponent.vue`。
|
|
356
|
+
|
|
357
|
+
Config 静态路径:`DevComponentName`、`DevComponentPath`。
|
|
358
|
+
|
|
359
|
+
设计器绑定(含临时编辑键,不能直接当 Config):`DevComponentName`、`DevComponentPath`。
|
|
@@ -43,11 +43,17 @@ SQL 仍必须经过平台受控数据源;不要把用户文本拼成标识符
|
|
|
43
43
|
|
|
44
44
|
## 动态联动
|
|
45
45
|
|
|
46
|
+
下列内容只说明候选联动。**显示名称、保存关联 Id、其它字段回填是三个不同契约**;
|
|
47
|
+
选择项目/人员后还要核对当前表已有的名称、负责人、电话、岗位、组织等字段并逐项映射。
|
|
48
|
+
`SelectLabel/SelectSaveField/SelectedValueLookup` 不自动完成这些业务回填。
|
|
49
|
+
完整清空、改选、异步代次、快照与后端重算规则见 [表单生成质量规则](form-generation-quality.md)。
|
|
50
|
+
|
|
46
51
|
字段值变化时可用前端 V8 更新另一个字段的数据源:
|
|
47
52
|
|
|
48
53
|
```javascript
|
|
49
54
|
if (V8.LoadMode === 'Design') return;
|
|
50
55
|
|
|
56
|
+
// 此处只展示候选供数;完整联动还需清理旧选择、保存依赖值并校验异步请求代次。
|
|
51
57
|
var result = await V8.FormEngine.GetTableData('biz_contact', {
|
|
52
58
|
_SelectFields: ['Id', 'Name'],
|
|
53
59
|
_Where: [['CustomerId', '=', V8.ThisValue]],
|
|
@@ -79,7 +85,7 @@ if (!V8.Form.Name) return { Code: 0, Msg: '名称不能为空' };
|
|
|
79
85
|
|
|
80
86
|
## 字段属性
|
|
81
87
|
|
|
82
|
-
|
|
88
|
+
常用持久化属性包括 `Visible`、`AppVisible`、`NotEmpty`、`Readonly`、`Data`、
|
|
83
89
|
`Config`、`FormWidth`、`TableWidth`、`Tab`、角色绑定和前端事件代码。
|
|
84
90
|
|
|
85
91
|
- 除非明确隐藏,`Visible=1`、`AppVisible=1`。
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# 表单生成质量规则
|
|
2
|
+
|
|
3
|
+
本页用于生成或修复业务表单。先确定字段的业务含义、保存值、显示值和依赖,再选控件;
|
|
4
|
+
不能把“存在一个外键字段”当作关联交互已完成。
|
|
5
|
+
|
|
6
|
+
## 每张表的字段契约
|
|
7
|
+
|
|
8
|
+
建模前为适用字段记录:名称与物理类型、控件、Config、数据源、显示键、保存键、
|
|
9
|
+
关联来源及回填目标、清空行为、默认值、精度/单位、权限和验收动作。
|
|
10
|
+
先回读当前表全部字段和来源表字段;已有负责人、联系方式、组织等列时,主动检查它们
|
|
11
|
+
是否应由选择器回填。只映射本业务确实需要且当前用户有权读取的字段,不复制整条来源记录。
|
|
12
|
+
|
|
13
|
+
| 控件族 | 必须决定的配置与行为 |
|
|
14
|
+
|---|---|
|
|
15
|
+
| Text、Guid | 编号/电话/证件号保留文本及前导零;Guid 是标识,不能用随机默认值覆盖编辑记录;插槽动作写 `SlotButtonV8Code` |
|
|
16
|
+
| Textarea | `Textarea.DefaultRows`、合理长度与整行宽度;不要拿它代替结构化明细 |
|
|
17
|
+
| NumberText | 数量/金额/比率的单位、小数位 `NumberTextPrecision` 和 `NumberTextStep`;物理精度匹配;电话不是数字计算字段 |
|
|
18
|
+
| DateTime | 明确日历日期、完整时间、钟点、年月、年、月日及多选;配置 `DateTimeType`,不能因不含年份或只含时间而退成 Text |
|
|
19
|
+
| Select、MultipleSelect、Radio、Checkbox、Autocomplete | 完整数据源、保存键/显示键、Text/Json、多选格式、搜索/分页、已选值回显;单选清空、数值 0、旧对象值均测试 |
|
|
20
|
+
| Switch | `int` 的 0/1;`Switch.NullValue=1` 仅表示空值显示开启,不回写旧值;默认值与只读/权限分开 |
|
|
21
|
+
| Rate、Progress、Slider | 分值上限、半星、0–100 进度、范围/步长及展示与录入区别;Slider.Range 保存数组时不能配 int |
|
|
22
|
+
| ColorPicker | 颜色格式、透明度和预设颜色;不把设计器临时 `PredefineText` 保存成运行配置 |
|
|
23
|
+
| AutoNumber | 前缀、位数、关联字段、DataRule/CreateRule;由可信后端生成,不用前端拼号替代并发唯一性 |
|
|
24
|
+
| Button | 行为、图标、预览可点击和 loading;提交业务调用授权接口,不能只生成外观按钮 |
|
|
25
|
+
| Divider、CollapseGroup、Tabs | Divider 标签/图标;折叠组范围和字段数;字段 Tabs 存 `FieldTabs`,表级 Tabs 存 `diy_table.Tabs`;不让分组吞掉必填字段 |
|
|
26
|
+
| Alert、StaticText、Html | 独立内容、主题、类型和显示来源;说明不是业务数据;HTML 需可信并净化 |
|
|
27
|
+
| RichText | `RichText.Limit` 以及图片/视频/文件开关、大小、数量和压缩;私有正文不保存临时地址 |
|
|
28
|
+
| CodeEditor | `CodeEditor.Language/Height/DisplayMode/ButtonText`;语言按实际内容选择,长配置可用 Dialog;保留 V8 代码 |
|
|
29
|
+
| JsonTable | `JsonTable.Columns` 的 Key/Label/Component/Config、唯一列键、数据源、必填、只读和 JSON 存储;不能只生成空表控件 |
|
|
30
|
+
| ImgUpload、FileUpload | `mediumtext`、公私桶、单/多文件、数量与大小;图片压缩/裁剪、文件媒体类型/Office/角色权限;角色 Id 来自当前租户 |
|
|
31
|
+
| TagInput、Transfer | 候选项、键值、标题、过滤和数量;OptionsText 是设计器编辑中间值,持久化 Options |
|
|
32
|
+
| Cascader、Address、Department、SelectTree、TreeCheckbox | 节点值/显示/子节点/父键、路径还是末级、多选、懒加载、父子联动和权限;Department 路径末级才是部门 Id |
|
|
33
|
+
| OpenTable | 真实来源菜单/表、单/多选、固定筛选、BeforeOpenV8/SubmitV8;选择后用 `V8.TableRowSelected` 映射到当前表 |
|
|
34
|
+
| JoinTable、JoinForm、TableChild | 区分集合展示、嵌入一条表单和 1:N 明细;子表真实外键、隐藏菜单、索引、父记录隔离,按主 Skill 的关系门禁执行 |
|
|
35
|
+
| Map、MapArea | 供应商、点/区域结构和有效坐标;凭据只进入租户安全设置,字段不保存 Key/Secret |
|
|
36
|
+
| Qrcode、FontAwesome | 二维码数据用 `DataAppend.Code`;纯展示优先虚拟字段,不能把 PNG Base64 写短列;图标选允许值及清空回退 |
|
|
37
|
+
| DevComponent | 明确页面/稳定别名、输入输出、权限、只读与生命周期;先证明标准控件无法表达,复杂租户页面优先微服务 |
|
|
38
|
+
|
|
39
|
+
完整配置键、设计器标签、编辑器、选项和值域通过
|
|
40
|
+
`microi_get_form_component_catalog(component:"控件名")` 获取。无该工具的旧宿主查
|
|
41
|
+
[源码索引](component-config-index.md) 和当前客户端,不能编造键或退成文本框。
|
|
42
|
+
目录是 PC 静态证据,不代表小程序已经实现每个配置。
|
|
43
|
+
|
|
44
|
+
## 关联选择与回填
|
|
45
|
+
|
|
46
|
+
先区分三件事:选择器显示名称、保存稳定 Id、把其它业务列保存为关联快照。
|
|
47
|
+
`SelectLabel` 只负责显示,`SelectSaveField` 只决定当前字段保存值,它们不会自动写
|
|
48
|
+
负责人电话、岗位、组织等其它字段。`SelectedValueLookup` 只补显示名,也不等于业务回填。
|
|
49
|
+
|
|
50
|
+
1. 用实时 Schema 和 `microi_get_field_list` 确认来源/目标字段、原 Config 和既有事件。
|
|
51
|
+
2. 明确回填模式:历史单据通常保存选择时的快照;实时展示只读取,不在打开旧单据时
|
|
52
|
+
自动改历史值。人工允许修改的快照需约定再次选择时是否覆盖。
|
|
53
|
+
3. 按“目标字段 → 来源字段”列出完整映射,包括已有 Id、名称、负责人、电话等适用列。
|
|
54
|
+
来源表只有 `OwnerId` 而没有电话时,需要继续按 OwnerId 查授权人员资料或使用受控
|
|
55
|
+
接口返回完整投影;不得从字段名猜手机号,也不得假设 `Project.Phone` 必然存在。
|
|
56
|
+
4. `Select` 的 `V8.ThisValue` 可能是字符串、数值、对象或旧 JSON 文本。按真实保存键解析,
|
|
57
|
+
不无条件读取 `.Id`;空字符串/null 与数值 0 分开。Department 可能返回路径数组;
|
|
58
|
+
多选必须明确数组、逐行明细或聚合规则,不能取第一条悄悄填到单值列。
|
|
59
|
+
5. 改选和清空时清理本选择器拥有的回填列及依赖候选/旧选择;不清无关手填列。
|
|
60
|
+
重新选择后不能保留上一位负责人的电话和岗位。
|
|
61
|
+
6. 异步查询仅选所需字段,保留菜单/表/行/字段权限;失败显示原因。结果应用前核对
|
|
62
|
+
表单、记录、依赖值和本次请求代次;A→B→A 也要丢弃第一次 A 的响应。
|
|
63
|
+
自定义容器关闭、卸载和重开同记录还需取消请求或校验自己的打开代次。
|
|
64
|
+
7. 既有 V8 不得被模板覆盖;先合并事件。前端只提供体验,重要项目归属、人员资格、
|
|
65
|
+
金额和组织权限必须由后端表单事件/接口引擎重新读取权威数据并校验。
|
|
66
|
+
|
|
67
|
+
### MCP 的单选回填构建器
|
|
68
|
+
|
|
69
|
+
`microi_build_field_config` 的既有数据源类型可附 `options.autoFill`:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"sourceType": "Sql",
|
|
74
|
+
"options": {
|
|
75
|
+
"sql": "select Id,Name from Biz_Project where IsDeleted=0 limit 0,20",
|
|
76
|
+
"selectLabel": "Name",
|
|
77
|
+
"selectSaveField": "Id",
|
|
78
|
+
"autoFill": {
|
|
79
|
+
"fieldName": "Project",
|
|
80
|
+
"targetTable": "Biz_Project",
|
|
81
|
+
"valueField": "Id",
|
|
82
|
+
"mappings": {
|
|
83
|
+
"ProjectId": "Id",
|
|
84
|
+
"ProjectName": "Name",
|
|
85
|
+
"OwnerId": "OwnerId",
|
|
86
|
+
"OwnerPhone": "OwnerPhone"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
示例表/列必须替换成已回读的真实名称。当前选择字段 `Project` 保存来源 Id;目标
|
|
94
|
+
`ProjectId` 是业务外键,不是当前记录主键 `Id`。工具输出 `configJson` 和 `v8Code`,
|
|
95
|
+
包含清空与异步代次保护,使用正常 `V8.FormEngine.GetFormData` 读取当前用户有权资料。
|
|
96
|
+
它不会自动补来源 SQL 的业务资格条件;服务端仍需验证资格,不能把回填成功当成可提交。
|
|
97
|
+
|
|
98
|
+
Manifest 可在字段根部写同等 `autoFill`,省略 `fieldName`(生成器用当前字段名):
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"name": "Project", "label": "项目", "component": "Select", "type": "varchar(50)",
|
|
103
|
+
"configSource": { "sourceType": "Sql", "sql": "select Id,Name from Biz_Project limit 0,20" },
|
|
104
|
+
"autoFill": {
|
|
105
|
+
"targetTable": "Biz_Project", "valueField": "Id",
|
|
106
|
+
"mappings": { "ProjectId": "Id", "ProjectName": "Name", "OwnerId": "OwnerId" }
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
对应目标列必须存在于当前表。`v8Code`/`V8Code` 在生成时同时写入根列与
|
|
112
|
+
`Config.V8Code`;两处不一致、已有事件与 autoFill 冲突时停止并合并。
|
|
113
|
+
多跳依赖、树路径、多选汇总或接口专属资格规则自行写可维护的事件/接口,不冒用单记录模板。
|
|
114
|
+
|
|
115
|
+
配套新版 PC 的 `FormSet` 会绑定启动事件的表单对象、记录与加载代次,切记录或重新加载后
|
|
116
|
+
丢弃旧回写;旧 PC 没有此兜底。直接修改 `V8.Form`、自定义容器和其它异步副作用仍需自己的
|
|
117
|
+
实例/打开代次检查,不能只更新 CLI 就宣称所有客户端已具备同等保护。
|
|
118
|
+
|
|
119
|
+
OpenTable 使用 `Config.OpenTable.SubmitV8` 和 `V8.TableRowSelected`。单选为行对象,
|
|
120
|
+
多选为数组;明确写入每个目标字段,再关闭弹层。不能把 SubmitV8 写到字段 V8Code。
|
|
121
|
+
|
|
122
|
+
## 日期、钟点、月日与时长
|
|
123
|
+
|
|
124
|
+
| 业务含义 | 控件 Config.DateTimeType | 前端显示/保存格式 |
|
|
125
|
+
|---|---|---|
|
|
126
|
+
| 日期 | `date` | `YYYY-MM-DD` |
|
|
127
|
+
| 日期与秒 | `datetime` | `YYYY-MM-DD HH:mm:ss` |
|
|
128
|
+
| 日期与分钟 | `datetime_HHmm` | `YYYY-MM-DD HH:mm` |
|
|
129
|
+
| 日期与小时(兼容) | `datetime_HH` | `YYYY-MM-DD HH` |
|
|
130
|
+
| 仅钟点 | `HH:mm` / `HH:mm:ss` | 同名格式 |
|
|
131
|
+
| 仅年月/年 | `month` / `year` | `YYYY-MM` / `YYYY` |
|
|
132
|
+
| 每年纪念日、生日月日 | `MM-dd` | Day.js `MM-DD`,例如 `11-04` |
|
|
133
|
+
| 年周 | `week` | `YYYY 第 ww 周`,按实际业务核对周定义 |
|
|
134
|
+
| 多选天/月/年 | `dates` / `months` / `years` | 对应字符串数组,物理列需容量支持序列化数组 |
|
|
135
|
+
|
|
136
|
+
`MM` 是月份,`mm` 是分钟;`MM-dd` 是字段协议,前端 Day.js 日号用 `DD`。
|
|
137
|
+
`MM-dd` 不是任意自由格式扩展,也不是 Element 的 picker type。旧 PC 需升级后才可使用。
|
|
138
|
+
月日没有年份,普通字典序区间不能表达跨年范围;跨年生日筛选需明确 OR/业务查询。
|
|
139
|
+
时长超过 24 小时、用时分钟数等使用数值和单位,不能误用日历/钟点控件。
|
|
140
|
+
|
|
141
|
+
Manifest 可声明 `valueKind:date/datetime/time/monthDay/month/year`。
|
|
142
|
+
若配了 Text,预检拒绝;DateTime 未给 DateTimeType 时按语义补齐。未声明语义时,
|
|
143
|
+
名称只能作为提示,不能按 `Time` 子串粗暴改写已有类型。单值日期通常用 `varchar(25)`,
|
|
144
|
+
多值日期用足够长的 varchar/mediumtext;不用数据库 datetime/date/time 类型。
|
|
145
|
+
|
|
146
|
+
## 生成、修复与验收
|
|
147
|
+
|
|
148
|
+
- 对全部字段检查上述契约,不能只检查 Select 和 DateTime。构建器通用控件接受
|
|
149
|
+
`sourceType:"Slider", options:{config:{Slider:{Min:0,Max:100,Step:1}}}`;完整 Config
|
|
150
|
+
路径不能省成 `{Min:0}`。错误 JSON、非法格式和明显错误数值在写前拒绝。
|
|
151
|
+
- 缺少数据源/列定义等静态信息可能由运行事件动态提供:预检告警时须检查完整事件;
|
|
152
|
+
未证明动态实现就不能当作可用表单交付。预检不是后端权限、运行 UI 或完整业务验收。
|
|
153
|
+
- 修改原字段先取完整 Config 再合并;保留 false、0、空字符串、NULL 与省略的区别,
|
|
154
|
+
不把全目录默认配置一次性写入字段。保存后回读全部事件/Config/Data、刷新缓存。
|
|
155
|
+
- 至少验证:新增 A→改选 B→清空、快速 A→B→A、0 值、空/无权限/失败、
|
|
156
|
+
编辑保存重开、只读历史快照、多选格式、导入/直接 HTTP 提交与后端校验。
|
|
157
|
+
已授权开发/验收记录可用 `microi_add_form_data`、`microi_update_form_data` 验证直接提交,
|
|
158
|
+
再用 `microi_get_table_data` 按准确 Id 回读;这些动作仍服从当前租户与写入授权。
|
|
159
|
+
- PC 与所承诺移动端分别验收。小程序不能执行任意前端 V8,须按当前原生白名单
|
|
160
|
+
ActionSchema 或后端表单事件实现同等规则;PC V8 测试不能冒充小程序联动通过。
|
|
@@ -55,6 +55,13 @@ Manifest 使用 `tables[].formBanner`;未显式配置时仍按字段类型选
|
|
|
55
55
|
语义字段。跨表统计由接口引擎批量返回,禁止随机数、固定演示值和 N+1;Banner 不属于
|
|
56
56
|
模块引擎或 `sys_menu`。逐步建模在字段完成后调用 `microi_configure_form_banner` 回读验收。
|
|
57
57
|
|
|
58
|
+
表单建模与局部修复还必须读取 `microi-form-engine/references/form-generation-quality.md`:
|
|
59
|
+
审查全部字段的控件配置、关联来源/逐字段回填与清空、日期/钟点/月日精度及跨端边界。
|
|
60
|
+
不能以控件类型正确或结构验收通过,代替选择项目/人员后的业务数据完整性验收。
|
|
61
|
+
|
|
62
|
+
涉及业务编号或追溯时,再读取 `microi-form-engine/references/business-numbering.md`:
|
|
63
|
+
蓝图明确编号用途、分配及唯一范围;验收覆盖名称/编号展示、历史编码保留和真实关联跳转。
|
|
64
|
+
|
|
58
65
|
<!-- microi-progressive:begin -->
|
|
59
66
|
<!-- microi-progressive:chunk id=microi-system-delivery-000 sha256=83a624f454346eac4a63fe64e0e6902b5fd1d0d74c8de578208e06ea11e180cf -->
|
|
60
67
|
## 交付总原则
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
每项在项目验收表记录 `适用 / 检查方法 / 证据位置 / 结果 / 未完成原因`,失败不得记通过。
|
|
5
5
|
规则不能保证模型一定服从;使用确定性检查、真实身份和原菜单结果约束交付结论。
|
|
6
6
|
|
|
7
|
+
编号与追溯复测同时执行
|
|
8
|
+
[业务编号与追溯契约](../../microi-form-engine/references/business-numbering.md):
|
|
9
|
+
区分内部 Id、业务编号、历史外部编码,确认持久保存和实际搜索/复制/导出;来源、去向必须
|
|
10
|
+
有真实关联与权限,缺失明确标注,不把改号计划、蓝色文本或进行中的任务当作最终证据。
|
|
11
|
+
|
|
7
12
|
## 执行顺序
|
|
8
13
|
|
|
9
14
|
1. 固定租户、源码/运行版本、用户要求编号、目标菜单和已授权写入范围;完整读取基础规范及实际专项正文。输出截断须补读,不能称“已加载”。
|
|
@@ -38,7 +38,7 @@ UniApp/H5/小程序必须通过项目统一 `microi.v8.js` 的 `V8.uploadFile` /
|
|
|
38
38
|
创建、重构或修复任何 Microi 移动端项目前,必须同时应用 `microi.skills/microi-mobile-app-quality/SKILL.md`,并读取其[首版交付与外部服务验收](../microi-mobile-app-quality/references/mobile-first-delivery.md)。手机号快捷登录、会话续签、导航几何、真实地图、页面动效和公开发布回读从首版纳入需求与测试,不能先交静态占位版,再等待用户逐页指出问题。涉及后台与第三方服务时按实际业务范围执行,既有授权和租户策略优先。
|
|
39
39
|
|
|
40
40
|
<!-- /microi-progressive:chunk -->
|
|
41
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-001 sha256=
|
|
41
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-001 sha256=de245aa65643e8bbb5d9cfd5256066295b4857bfa2fc8ef2689161eee9b2bc25 -->
|
|
42
42
|
## 标准产品、视图协议与租户扩展
|
|
43
43
|
|
|
44
44
|
地图提供行政区与附近距离两类筛选时,应复用省市区字典,并允许省、市、区逐级选“全部”;省级“全部”须显式启用,不能改变普通地址录入的默认值。行政区域查询不依赖手机定位、不叠加附近半径,空地区仍可保留既有附近模式。范围筛选必须在原有菜单/租户/行权限内执行,分批读取并丢弃迟到响应;来源列表存在同表不同菜单时,地图入口与查询应保留准确的来源菜单和固定业务条件。验收覆盖全国、全省、全市、区县、直辖市、定位拒绝、旧接口兼容和快速切换。
|
|
@@ -49,6 +49,8 @@ UniApp/H5/小程序必须通过项目统一 `microi.v8.js` 的 `V8.uploadFile` /
|
|
|
49
49
|
|
|
50
50
|
Microi 标准小程序必须采用“平台内核 + 版本化元数据 + Profile + 租户插件”架构,不能把某个交付项目直接写死成平台产品:
|
|
51
51
|
|
|
52
|
+
JSON 历史字段的只读展示使用 `Config.ReadonlyView.Type=Timeline`,通过 `TitleField/TimeField/Fields[{Name,Label}]/ToneMap/EmptyText` 声明;复用 `mci-record-timeline` 与 `record-timeline.mjs`。只展示映射的标量字段,不泄露内部 ID,不执行 HTML 或 V8;模块详情整行布局,最近三条和逐批展开,空值及损坏数据均有可读提示。通用组件不得按客户表名或字段名硬编码。更新后验证旧记录、排序、长说明及两套小程序构建。
|
|
53
|
+
|
|
52
54
|
- `src/platform/`、通用 `mci-*` 组件、动态模块页和动态表单页只实现平台能力,不得出现租户表名、字段名、品牌文案、素材或客户路由。
|
|
53
55
|
- `src/tenants/<tenant>/` 存放客户专属业务组合、首页统计、表单联动、子表规则、扫码/定位/相机和复杂原生流程;`profiles/<id>/` 管理 OsClient、API、品牌、功能开关、路由和真实编译范围。
|
|
54
56
|
- `src/generated/`、`pages.json`、`manifest.json` 等 Profile 产物由脚本生成,不能作为人工定制入口。多人合并冲突时以 Profile 与租户源码为准重新生成。
|