cloud-web-corejs 1.0.54-dev.702 → 1.0.54-dev.704

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cloud-web-corejs",
3
3
  "private": false,
4
- "version": "1.0.54-dev.702",
4
+ "version": "1.0.54-dev.704",
5
5
  "scripts": {
6
6
  "dev": "vue-cli-service serve",
7
7
  "lint": "eslint --ext .js,.vue src",
@@ -1,8 +1,8 @@
1
1
  # 后台字段(动态生成)JSON 说明
2
2
 
3
3
  > 适用场景:
4
- > - 表格布局容器(`table`)启用 **后台字段(动态生成)**(`dynamicSchemaEnabled`)
5
- > - 数据表格(`data-table`)启用 **接口动态列**(`dynamicColumnSourceType: api`)
4
+ > - 表格布局容器(`table`)启用 **动态字段**(`dynamicSchemaSourceType` 为 `script` 或 `api`)
5
+ > - 数据表格(`data-table`)启用 **接口动态列**(`dynamicColumnSourceType: api`)或 **前端列脚本**(`script`)
6
6
  >
7
7
  > 二者共用同一套请求/响应与字段定义 JSON 格式(见 `utils/dynamicSchemaUtil.js`)。
8
8
  >
@@ -15,14 +15,28 @@
15
15
  ## 1. 调用流程
16
16
 
17
17
  ```
18
- 表单渲染
19
- table 容器请求 dynamicSchemaScriptCode 脚本
20
- 解析响应为「字段定义数组」
21
- 按生成模式(append/replace/anchor)插入行布局
18
+ table mounted
19
+ 加载条件脚本(可选)
20
+ script:执行 dynamicSchemaScript
21
+ api:请求 dynamicSchemaScriptCode
22
+ → 解析 objx → 按 dynamicSchemaMode 插入行布局
22
23
  → 各字段控件初始化(下拉/状态等可能再次请求选项数据)
23
24
  → (业务需要时)脚本调用 loadDynamicSchema() 重新加载,见 §1.5
24
25
  ```
25
26
 
27
+ | 设计器配置 | 属性名 |
28
+ |-----------|--------|
29
+ | 动态字段来源 | `dynamicSchemaSourceType`:`none` / `script` / `api` |
30
+ | 前端字段脚本 | `dynamicSchemaScript` |
31
+ | 脚本编码 | `dynamicSchemaScriptCode` |
32
+ | 额外参数 | `dynamicSchemaScriptParam` |
33
+ | 转换脚本 | `dynamicSchemaConvert` |
34
+ | 加载条件 | `dynamicSchemaLoadScript` |
35
+ | 生成模式 | `dynamicSchemaMode`:`append` / `replace` / `anchor` |
36
+
37
+ > 设计器入口:选中 **table 容器** → 属性面板 **动态字段** 区块(布局与数据表格「列与动态列」一致)。
38
+ > 旧表单若仍含 `dynamicSchemaEnabled: true`,运行时按 `api` 模式兼容。
39
+
26
40
  ### 1.1 请求参数(前端 → 后台字段脚本)
27
41
 
28
42
  ```json
@@ -38,7 +52,7 @@
38
52
  | 字段 | 说明 |
39
53
  |------|------|
40
54
  | `formData` | 当前表单数据(`formModel`),固定传入 |
41
- | 其余字段 | 由容器属性「脚本返回对应的参数值」脚本动态返回 |
55
+ | 其余字段 | 由容器属性「额外参数」脚本动态返回 |
42
56
 
43
57
  ### 1.2 响应外层结构
44
58
 
@@ -57,7 +71,7 @@
57
71
  | 优先级 | 结构 | 场景 |
58
72
  |--------|------|------|
59
73
  | 1 | `objx` 为数组 | 通用 |
60
- | 2 | `objx.fields` 为数组 | 表头后台字段 |
74
+ | 2 | `objx.fields` 为数组 | 表头动态字段 |
61
75
  | 3 | `objx.columns` 为数组 | 数据表格动态列 |
62
76
 
63
77
  配置了 **转换脚本** `dynamicSchemaConvert` 时,入参为完整 `res`,需返回数组或 `{ fields: [...] }` / `{ columns: [...] }`。
@@ -70,9 +84,9 @@
70
84
 
71
85
  **数据表格专用文档(含各列类型完整示例):** [`数据表格动态列 JSON 说明.md`](./数据表格动态列%20JSON%20说明.md)
72
86
 
73
- ### 1.5 脚本重新加载(表头后台字段)
87
+ ### 1.5 脚本重新加载(表头动态字段)
74
88
 
75
- 首次加载在 `table` 容器 `mounted` 时自动执行。主表数据或业务条件变化后,需在脚本里**手动**调用以重新请求后台并刷新字段。
89
+ 首次加载在 `table` 容器 `mounted` 时自动执行(可通过 `dynamicSchemaLoadScript` 控制是否加载)。主表数据或业务条件变化后,需在脚本里**手动**调用以重新加载字段。
76
90
 
77
91
  **任意字段 / 按钮脚本(写法相同):**
78
92
 
@@ -95,9 +109,11 @@ this.getWidgetRef("headerTable").loadDynamicSchema().then(() => {
95
109
  |------|------|
96
110
  | 方法 | `loadDynamicSchema()` |
97
111
  | 挂载组件 | `table-item`(`dynamicFieldMixin.js`) |
98
- | 行为 | 删除上次动态生成的行 → 用当前 `formModel` +「脚本返回对应的参数值」重新请求 `dynamicSchemaMode` 插入 |
112
+ | `api` 模式 | 重新请求 `dynamicSchemaScriptCode`,解析 `objx` 后按生成模式插入行 |
113
+ | `script` 模式 | 重新执行 `dynamicSchemaScript` 并刷新字段 |
114
+ | 行为 | 删除上次动态生成的行 → 按 `dynamicSchemaMode` 插入 |
99
115
  | 默认 loading | 不显示全屏 loading |
100
- | 前提 | `dynamicSchemaEnabled: true` 且已配置 `dynamicSchemaScriptCode` |
116
+ | 前提 | `dynamicSchemaSourceType` `api` 或 `script`,且对应脚本已配置 |
101
117
 
102
118
  典型场景:主表 `billType` 变更、保存/加载单据后、点击「刷新表头」按钮。
103
119
 
@@ -915,9 +931,11 @@ attachments_<唯一后缀>
915
931
 
916
932
  ## 5. 完整综合 Java 示例代码
917
933
 
918
- 脚本编码建议:`getDynamicSchemaFields`(配置在 table 容器「后台字段 → 脚本编码」)
934
+ 脚本编码建议:`getDynamicSchemaFields`(配置在 table 容器「接口动态字段 → 脚本编码」)
919
935
  返回类型:`List<Map<String, Object>>`,平台自动包装为响应 `objx` 数组。
920
936
 
937
+ **前端字段脚本**(`dynamicSchemaSourceType: script`)不调接口,在设计器「前端字段脚本」中直接 `return` 与下方 JSON 相同结构的数组或 `{ fields: [...] }`。
938
+
921
939
  ### 5.1 脚本约定
922
940
 
923
941
  | 项目 | 说明 |
@@ -929,7 +947,7 @@ attachments_<唯一后缀>
929
947
  | 请求入参 | Java 脚本通过 `this.getBinding().getVariables()` 获取;表头脚本直接读 `formData`,见下方示例 |
930
948
  | 二次请求 | 下拉/状态等 `formScriptCode`、凭证 `getList` 需**单独维护**选项脚本 |
931
949
 
932
- 读取表单数据示例(表头后台字段脚本):
950
+ 读取表单数据示例(表头接口动态字段脚本):
933
951
 
934
952
  ```java
935
953
  Map<String, Object> variables = this.getBinding().getVariables();
@@ -1215,7 +1233,7 @@ return fields;
1215
1233
 
1216
1234
  | 占位 | 说明 |
1217
1235
  |------|------|
1218
- | `getDynamicSchemaFields` | table 容器「脚本编码」 |
1236
+ | `getDynamicSchemaFields` | table 容器「接口动态字段 → 脚本编码」 |
1219
1237
  | `payTypeList` | 下拉选项二次请求脚本 |
1220
1238
  | `ORDER_STATUS` | 系统词汇编码 |
1221
1239
  | `SUPPLIER_LIST` | 搜索弹框表单编码 |
@@ -1229,6 +1247,13 @@ return fields;
1229
1247
 
1230
1248
  | 容器配置 | 说明 |
1231
1249
  |---------|------|
1250
+ | `dynamicSchemaSourceType: none` | 不加载动态字段(默认) |
1251
+ | `dynamicSchemaSourceType: script` | 执行 `dynamicSchemaScript` 生成字段 |
1252
+ | `dynamicSchemaSourceType: api` | 请求 `dynamicSchemaScriptCode` 生成字段 |
1253
+ | `dynamicSchemaLoadScript` | 初始化前执行;`return false` 时不加载 |
1254
+ | `dynamicSchemaAnchorRowId` | anchor 模式占位行 id |
1255
+ | `dynamicSchemaAnchorPosition` | `replace` / `before` / `after`(设计器为下拉框) |
1256
+ | `dynamicSchemaInheritLayout` | anchor 模式是否继承占位行单元格布局 |
1232
1257
  | `dynamicSchemaColumns` | 每行列数,默认 4 |
1233
1258
  | `dynamicSchemaMode: append` | 追加到已有行之后 |
1234
1259
  | `dynamicSchemaMode: replace` | 清空已有行后替换 |
@@ -1254,7 +1279,7 @@ return fields;
1254
1279
  | 文件 | 说明 |
1255
1280
  |------|------|
1256
1281
  | `utils/dynamicSchemaUtil.js` | 协议常量(`DYNAMIC_SCHEMA_CORE_KEYS` 等)与规范化 |
1257
- | `form-render/container-item/dynamicFieldMixin.js` | 表头后台字段运行时 |
1282
+ | `form-render/container-item/dynamicFieldMixin.js` | 表头动态字段运行时 |
1258
1283
  | `form-render/container-item/data-table-mixin.js` | 数据表格动态列运行时 |
1259
1284
  | `form-designer/.../table-dynamicField-editor.vue` | 表头设计器配置 |
1260
1285
  | `form-designer/.../data-table-editor.vue` | 数据表格设计器配置 |
@@ -1,6 +1,6 @@
1
1
  # 数据表格动态列 JSON 说明
2
2
 
3
- > **本文只描述数据表格与表头后台字段的差异。** 控件类型、options 配置、选项脚本等**统一维护**在 [`后台字段(动态生成)JSON 说明.md`](./后台字段(动态生成)JSON%20说明.md)。
3
+ > **本文只描述数据表格与表头动态字段的差异。** 控件类型、options 配置、选项脚本等**统一维护**在 [`后台字段(动态生成)JSON 说明.md`](./后台字段(动态生成)JSON%20说明.md)。
4
4
  >
5
5
  > **完整 JSON / Java 综合示例见 §0。** 协议代码:`utils/dynamicSchemaUtil.js` · 运行时:`form-render/container-item/data-table-mixin.js`
6
6
 
@@ -440,7 +440,7 @@ this.getWidgetRef("orderItemsTable").loadDynamicColumns({
440
440
  | 行为 | 按 `dynamicColumnMode` 合并静态列 → 重建列控件 → `reloadColumn` |
441
441
  | 前提 | `dynamicColumnSourceType` 为 `api` 或 `script`,且对应脚本已配置 |
442
442
 
443
- 表头后台字段重新加载见主文档 **§1.5**(`loadDynamicSchema()`)。
443
+ 表头动态字段重新加载见主文档 **§1.5**(`loadDynamicSchema()`)。
444
444
 
445
445
  ---
446
446
 
@@ -20,6 +20,7 @@
20
20
  :disabled="field.options.disabled || isReadMode"
21
21
  :clearable="field.options.clearable"
22
22
  :filterable="field.options.filterable"
23
+ :collapse-tags="!field.options.flatCollapseTags"
23
24
  :placeholder="
24
25
  field.options.placeholder || i18nt('render.hint.selectPlaceholder')
25
26
  "