weaver-e10-builder 1.0.2-beta
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/README.md +200 -0
- package/dist/commands/app.d.ts +3 -0
- package/dist/commands/app.d.ts.map +1 -0
- package/dist/commands/app.js +305 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +386 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/check.d.ts +3 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +106 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/compile.d.ts +3 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +134 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/docx.d.ts +3 -0
- package/dist/commands/docx.d.ts.map +1 -0
- package/dist/commands/docx.js +54 -0
- package/dist/commands/docx.js.map +1 -0
- package/dist/commands/form-button.d.ts +3 -0
- package/dist/commands/form-button.d.ts.map +1 -0
- package/dist/commands/form-button.js +441 -0
- package/dist/commands/form-button.js.map +1 -0
- package/dist/commands/form-data.d.ts +3 -0
- package/dist/commands/form-data.d.ts.map +1 -0
- package/dist/commands/form-data.js +197 -0
- package/dist/commands/form-data.js.map +1 -0
- package/dist/commands/form-ebuilder-columns.d.ts +3 -0
- package/dist/commands/form-ebuilder-columns.d.ts.map +1 -0
- package/dist/commands/form-ebuilder-columns.js +118 -0
- package/dist/commands/form-ebuilder-columns.js.map +1 -0
- package/dist/commands/form-ebuilder-filter.d.ts +3 -0
- package/dist/commands/form-ebuilder-filter.d.ts.map +1 -0
- package/dist/commands/form-ebuilder-filter.js +135 -0
- package/dist/commands/form-ebuilder-filter.js.map +1 -0
- package/dist/commands/form-ebuilder-scope.d.ts +3 -0
- package/dist/commands/form-ebuilder-scope.d.ts.map +1 -0
- package/dist/commands/form-ebuilder-scope.js +321 -0
- package/dist/commands/form-ebuilder-scope.js.map +1 -0
- package/dist/commands/form-ebuilder-search.d.ts +3 -0
- package/dist/commands/form-ebuilder-search.d.ts.map +1 -0
- package/dist/commands/form-ebuilder-search.js +252 -0
- package/dist/commands/form-ebuilder-search.js.map +1 -0
- package/dist/commands/form-formula.d.ts +12 -0
- package/dist/commands/form-formula.d.ts.map +1 -0
- package/dist/commands/form-formula.js +252 -0
- package/dist/commands/form-formula.js.map +1 -0
- package/dist/commands/form-layout-init.d.ts +15 -0
- package/dist/commands/form-layout-init.d.ts.map +1 -0
- package/dist/commands/form-layout-init.js +162 -0
- package/dist/commands/form-layout-init.js.map +1 -0
- package/dist/commands/form-layout.d.ts +3 -0
- package/dist/commands/form-layout.d.ts.map +1 -0
- package/dist/commands/form-layout.js +236 -0
- package/dist/commands/form-layout.js.map +1 -0
- package/dist/commands/form-list-click.d.ts +3 -0
- package/dist/commands/form-list-click.d.ts.map +1 -0
- package/dist/commands/form-list-click.js +154 -0
- package/dist/commands/form-list-click.js.map +1 -0
- package/dist/commands/form-list-event.d.ts +3 -0
- package/dist/commands/form-list-event.d.ts.map +1 -0
- package/dist/commands/form-list-event.js +203 -0
- package/dist/commands/form-list-event.js.map +1 -0
- package/dist/commands/form-list-filter.d.ts +9 -0
- package/dist/commands/form-list-filter.d.ts.map +1 -0
- package/dist/commands/form-list-filter.js +107 -0
- package/dist/commands/form-list-filter.js.map +1 -0
- package/dist/commands/form-list-group.d.ts +11 -0
- package/dist/commands/form-list-group.d.ts.map +1 -0
- package/dist/commands/form-list-group.js +100 -0
- package/dist/commands/form-list-group.js.map +1 -0
- package/dist/commands/form-list-permission.d.ts +3 -0
- package/dist/commands/form-list-permission.d.ts.map +1 -0
- package/dist/commands/form-list-permission.js +127 -0
- package/dist/commands/form-list-permission.js.map +1 -0
- package/dist/commands/form-list-search-group.d.ts +3 -0
- package/dist/commands/form-list-search-group.d.ts.map +1 -0
- package/dist/commands/form-list-search-group.js +132 -0
- package/dist/commands/form-list-search-group.js.map +1 -0
- package/dist/commands/form-list-stats.d.ts +11 -0
- package/dist/commands/form-list-stats.d.ts.map +1 -0
- package/dist/commands/form-list-stats.js +139 -0
- package/dist/commands/form-list-stats.js.map +1 -0
- package/dist/commands/form-list-unit.d.ts +3 -0
- package/dist/commands/form-list-unit.d.ts.map +1 -0
- package/dist/commands/form-list-unit.js +95 -0
- package/dist/commands/form-list-unit.js.map +1 -0
- package/dist/commands/form-list-utils.d.ts +32 -0
- package/dist/commands/form-list-utils.d.ts.map +1 -0
- package/dist/commands/form-list-utils.js +76 -0
- package/dist/commands/form-list-utils.js.map +1 -0
- package/dist/commands/form-list.d.ts +3 -0
- package/dist/commands/form-list.d.ts.map +1 -0
- package/dist/commands/form-list.js +624 -0
- package/dist/commands/form-list.js.map +1 -0
- package/dist/commands/form-permission.d.ts +3 -0
- package/dist/commands/form-permission.d.ts.map +1 -0
- package/dist/commands/form-permission.js +193 -0
- package/dist/commands/form-permission.js.map +1 -0
- package/dist/commands/form-relate.d.ts +14 -0
- package/dist/commands/form-relate.d.ts.map +1 -0
- package/dist/commands/form-relate.js +140 -0
- package/dist/commands/form-relate.js.map +1 -0
- package/dist/commands/form-serial-mark.d.ts +18 -0
- package/dist/commands/form-serial-mark.d.ts.map +1 -0
- package/dist/commands/form-serial-mark.js +167 -0
- package/dist/commands/form-serial-mark.js.map +1 -0
- package/dist/commands/form-table-view.d.ts +3 -0
- package/dist/commands/form-table-view.d.ts.map +1 -0
- package/dist/commands/form-table-view.js +217 -0
- package/dist/commands/form-table-view.js.map +1 -0
- package/dist/commands/form-validate.d.ts +3 -0
- package/dist/commands/form-validate.d.ts.map +1 -0
- package/dist/commands/form-validate.js +122 -0
- package/dist/commands/form-validate.js.map +1 -0
- package/dist/commands/form-view-permission.d.ts +3 -0
- package/dist/commands/form-view-permission.d.ts.map +1 -0
- package/dist/commands/form-view-permission.js +86 -0
- package/dist/commands/form-view-permission.js.map +1 -0
- package/dist/commands/form-view.d.ts +3 -0
- package/dist/commands/form-view.d.ts.map +1 -0
- package/dist/commands/form-view.js +145 -0
- package/dist/commands/form-view.js.map +1 -0
- package/dist/commands/form.d.ts +3 -0
- package/dist/commands/form.d.ts.map +1 -0
- package/dist/commands/form.js +2467 -0
- package/dist/commands/form.js.map +1 -0
- package/dist/commands/icon.d.ts +3 -0
- package/dist/commands/icon.d.ts.map +1 -0
- package/dist/commands/icon.js +82 -0
- package/dist/commands/icon.js.map +1 -0
- package/dist/commands/matrix.d.ts +3 -0
- package/dist/commands/matrix.d.ts.map +1 -0
- package/dist/commands/matrix.js +587 -0
- package/dist/commands/matrix.js.map +1 -0
- package/dist/commands/menu-permission.d.ts +3 -0
- package/dist/commands/menu-permission.d.ts.map +1 -0
- package/dist/commands/menu-permission.js +188 -0
- package/dist/commands/menu-permission.js.map +1 -0
- package/dist/commands/menu.d.ts +16 -0
- package/dist/commands/menu.d.ts.map +1 -0
- package/dist/commands/menu.js +269 -0
- package/dist/commands/menu.js.map +1 -0
- package/dist/commands/project.d.ts +3 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +345 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/role.d.ts +3 -0
- package/dist/commands/role.d.ts.map +1 -0
- package/dist/commands/role.js +224 -0
- package/dist/commands/role.js.map +1 -0
- package/dist/commands/user.d.ts +3 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +49 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/commands/workflow-action.d.ts +3 -0
- package/dist/commands/workflow-action.d.ts.map +1 -0
- package/dist/commands/workflow-action.js +1821 -0
- package/dist/commands/workflow-action.js.map +1 -0
- package/dist/commands/workflow-advanced.d.ts +3 -0
- package/dist/commands/workflow-advanced.d.ts.map +1 -0
- package/dist/commands/workflow-advanced.js +290 -0
- package/dist/commands/workflow-advanced.js.map +1 -0
- package/dist/commands/workflow-condition.d.ts +7 -0
- package/dist/commands/workflow-condition.d.ts.map +1 -0
- package/dist/commands/workflow-condition.js +562 -0
- package/dist/commands/workflow-condition.js.map +1 -0
- package/dist/commands/workflow-message.d.ts +3 -0
- package/dist/commands/workflow-message.d.ts.map +1 -0
- package/dist/commands/workflow-message.js +399 -0
- package/dist/commands/workflow-message.js.map +1 -0
- package/dist/commands/workflow-node-overtime.d.ts +3 -0
- package/dist/commands/workflow-node-overtime.d.ts.map +1 -0
- package/dist/commands/workflow-node-overtime.js +150 -0
- package/dist/commands/workflow-node-overtime.js.map +1 -0
- package/dist/commands/workflow-node-reject.d.ts +3 -0
- package/dist/commands/workflow-node-reject.d.ts.map +1 -0
- package/dist/commands/workflow-node-reject.js +115 -0
- package/dist/commands/workflow-node-reject.js.map +1 -0
- package/dist/commands/workflow-node-sign.d.ts +15 -0
- package/dist/commands/workflow-node-sign.d.ts.map +1 -0
- package/dist/commands/workflow-node-sign.js +100 -0
- package/dist/commands/workflow-node-sign.js.map +1 -0
- package/dist/commands/workflow-node-validate.d.ts +16 -0
- package/dist/commands/workflow-node-validate.d.ts.map +1 -0
- package/dist/commands/workflow-node-validate.js +169 -0
- package/dist/commands/workflow-node-validate.js.map +1 -0
- package/dist/commands/workflow-node.d.ts +3 -0
- package/dist/commands/workflow-node.d.ts.map +1 -0
- package/dist/commands/workflow-node.js +347 -0
- package/dist/commands/workflow-node.js.map +1 -0
- package/dist/commands/workflow-numbering.d.ts +17 -0
- package/dist/commands/workflow-numbering.d.ts.map +1 -0
- package/dist/commands/workflow-numbering.js +191 -0
- package/dist/commands/workflow-numbering.js.map +1 -0
- package/dist/commands/workflow-plan-range.d.ts +3 -0
- package/dist/commands/workflow-plan-range.d.ts.map +1 -0
- package/dist/commands/workflow-plan-range.js +116 -0
- package/dist/commands/workflow-plan-range.js.map +1 -0
- package/dist/commands/workflow-setting.d.ts +3 -0
- package/dist/commands/workflow-setting.d.ts.map +1 -0
- package/dist/commands/workflow-setting.js +440 -0
- package/dist/commands/workflow-setting.js.map +1 -0
- package/dist/commands/workflow-title.d.ts +14 -0
- package/dist/commands/workflow-title.d.ts.map +1 -0
- package/dist/commands/workflow-title.js +106 -0
- package/dist/commands/workflow-title.js.map +1 -0
- package/dist/commands/workflow.d.ts +26 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +2359 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/core/auth.d.ts +36 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +351 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/client.d.ts +27 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +100 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/crypto.d.ts +11 -0
- package/dist/core/crypto.d.ts.map +1 -0
- package/dist/core/crypto.js +102 -0
- package/dist/core/crypto.js.map +1 -0
- package/dist/core/edition.d.ts +4 -0
- package/dist/core/edition.d.ts.map +1 -0
- package/dist/core/edition.js +19 -0
- package/dist/core/edition.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +118 -0
- package/dist/index.js.map +1 -0
- package/dist/services/action-detail.d.ts +112 -0
- package/dist/services/action-detail.d.ts.map +1 -0
- package/dist/services/action-detail.js +443 -0
- package/dist/services/action-detail.js.map +1 -0
- package/dist/services/condition-rules.d.ts +45 -0
- package/dist/services/condition-rules.d.ts.map +1 -0
- package/dist/services/condition-rules.js +207 -0
- package/dist/services/condition-rules.js.map +1 -0
- package/dist/services/form-create.d.ts +102 -0
- package/dist/services/form-create.d.ts.map +1 -0
- package/dist/services/form-create.js +835 -0
- package/dist/services/form-create.js.map +1 -0
- package/dist/services/form-ebuilder-filter.d.ts +60 -0
- package/dist/services/form-ebuilder-filter.d.ts.map +1 -0
- package/dist/services/form-ebuilder-filter.js +562 -0
- package/dist/services/form-ebuilder-filter.js.map +1 -0
- package/dist/services/form-table-view.d.ts +117 -0
- package/dist/services/form-table-view.d.ts.map +1 -0
- package/dist/services/form-table-view.js +882 -0
- package/dist/services/form-table-view.js.map +1 -0
- package/dist/services/form-view-permission.d.ts +30 -0
- package/dist/services/form-view-permission.d.ts.map +1 -0
- package/dist/services/form-view-permission.js +208 -0
- package/dist/services/form-view-permission.js.map +1 -0
- package/dist/services/form-view.d.ts +41 -0
- package/dist/services/form-view.d.ts.map +1 -0
- package/dist/services/form-view.js +334 -0
- package/dist/services/form-view.js.map +1 -0
- package/dist/services/formula-detail.d.ts +31 -0
- package/dist/services/formula-detail.d.ts.map +1 -0
- package/dist/services/formula-detail.js +66 -0
- package/dist/services/formula-detail.js.map +1 -0
- package/dist/services/rich-types.d.ts +35 -0
- package/dist/services/rich-types.d.ts.map +1 -0
- package/dist/services/rich-types.js +105 -0
- package/dist/services/rich-types.js.map +1 -0
- package/dist/services/workflow-layout.d.ts +118 -0
- package/dist/services/workflow-layout.d.ts.map +1 -0
- package/dist/services/workflow-layout.js +279 -0
- package/dist/services/workflow-layout.js.map +1 -0
- package/dist/services/workflow-operator.d.ts +36 -0
- package/dist/services/workflow-operator.d.ts.map +1 -0
- package/dist/services/workflow-operator.js +65 -0
- package/dist/services/workflow-operator.js.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/column-name.d.ts +13 -0
- package/dist/utils/column-name.d.ts.map +1 -0
- package/dist/utils/column-name.js +45 -0
- package/dist/utils/column-name.js.map +1 -0
- package/ecodecmd/package.json +27 -0
- package/ecodecmd/src/build.js +709 -0
- package/ecodecmd/src/compile.js +81 -0
- package/ecodecmd/src/index.js +48 -0
- package/ecodecmd/src/init.js +73 -0
- package/ecodecmd/src/lib/@babel/plugin-proposal-object-rest-spread@7.5.5/index.js +1795 -0
- package/ecodecmd/src/lib/@babel/plugin-proposal-optional-chaining@7.6.0/index.js +135 -0
- package/ecodecmd/src/lib/@babel/preset-env-standalone@7.5.5/babel-preset-env.js +76043 -0
- package/ecodecmd/src/lib/@babel/standalone@7.5.5/babel.js +90802 -0
- package/ecodecmd/src/lib/exec.js +77 -0
- package/ecodecmd/src/loaddep.js +154 -0
- package/ecodecmd/src/util/compress.js +58 -0
- package/ecodecmd/src/util/crypto-util.js +19 -0
- package/ecodecmd/src/util/index.js +153 -0
- package/ecodecmd/src/util/snowflake.js +144 -0
- package/package.json +43 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { AuthSession } from '../core/auth.js';
|
|
2
|
+
import { ApiClient } from '../core/client.js';
|
|
3
|
+
import { fetchFields, loadMobileConfig } from './form-list-utils.js';
|
|
4
|
+
/** 32-char hex uuid(对齐平台事件 id 格式) */
|
|
5
|
+
function uuid32() {
|
|
6
|
+
const hex = '0123456789abcdef';
|
|
7
|
+
let s = '';
|
|
8
|
+
for (let i = 0; i < 32; i++)
|
|
9
|
+
s += hex[Math.floor(Math.random() * 16)];
|
|
10
|
+
return s;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 字段事件 / 行事件(list-event)命令。
|
|
14
|
+
* 走 saveNListConfig config.eventGroup(明文 JSON,config+mConfig 都要写)。
|
|
15
|
+
* 结构 `[[{type:CLICKDATA, events:[{type:NewPage, linkInfo}]}]]`。
|
|
16
|
+
* NewPage 两种 linkInfo 变体:
|
|
17
|
+
* ① 选页面(--add-page):page.pageId 有值、pageType:LAYOUT —— 点击行打开固定页面
|
|
18
|
+
* ② 选字段(--add-field):page.pageId 空、pageType:LINK、urlLinkType:1 —— URL 取自行内字段值
|
|
19
|
+
*
|
|
20
|
+
* 行事件打开方式(linkInfo.openMode 为权威值,page.openMode 恒为 "4" 与打开方式无关):
|
|
21
|
+
* 当前页面=4 / 新窗口=0 / 弹出窗口=5 / 右侧滑出=1 / 右侧推出=7
|
|
22
|
+
* 弹出(5)/滑出(1)/推出(7) 带 modalWidth/modalHeight;滑出(1)/推出(7) 额外带 winSizeNew(滑出宽度百分比)。
|
|
23
|
+
*/
|
|
24
|
+
/** 行事件打开方式:语义名 → openMode 值(也接受直接传数字字符串) */
|
|
25
|
+
const OPEN_MODE_MAP = {
|
|
26
|
+
'当前页面': '4', 'current-page': '4', 'current': '4', '4': '4',
|
|
27
|
+
'新窗口': '0', 'new-window': '0', 'new': '0', '0': '0',
|
|
28
|
+
'弹出窗口': '5', 'popup': '5', '弹窗': '5', '5': '5',
|
|
29
|
+
'右侧滑出': '1', 'slide-out': '1', '滑出': '1', '1': '1',
|
|
30
|
+
'右侧推出': '7', 'push-out': '7', '推出': '7', '7': '7',
|
|
31
|
+
};
|
|
32
|
+
/** openMode 值 → 中文(读回展示用) */
|
|
33
|
+
const OPEN_MODE_CN = {
|
|
34
|
+
'4': '当前页面', '0': '新窗口', '5': '弹出窗口', '1': '右侧滑出', '7': '右侧推出',
|
|
35
|
+
};
|
|
36
|
+
export function registerListEventCommand(form, program) {
|
|
37
|
+
form.command('list-event')
|
|
38
|
+
.description('查看/配置行事件(点击行数据 NewPage 打开页面/字段URL)')
|
|
39
|
+
.argument('<objId>', '表单 objId')
|
|
40
|
+
.argument('<appId>', '应用 ID')
|
|
41
|
+
.argument('<listId>', '台账列表 ID')
|
|
42
|
+
.option('--add-page <json>', '选页面方式:\'{"pageId":"目标页/视图id","pageName":"我的任务","openMode":"右侧滑出"}\' 点击行打开固定页面')
|
|
43
|
+
.option('--add-field <json>', '选字段方式:\'{"urlFieldId":"字段id"}\' URL取自行内字段值(urlFieldText/Type自动补)')
|
|
44
|
+
.option('--open-mode <mode>', '行事件打开方式:当前页面/新窗口/弹出窗口/右侧滑出/右侧推出(缺省右侧滑出)。也可在 --add-page JSON 里写 "openMode"')
|
|
45
|
+
.option('--modal-width <pct>', '弹出/滑出/推出的弹窗宽(缺省 50%,如 "80%")')
|
|
46
|
+
.option('--modal-height <pct>', '弹出/滑出/推出的弹窗高(缺省 50%)')
|
|
47
|
+
.option('--win-size <pct>', '右侧滑出/推出的滑出宽度(缺省 100%,如 "60%")')
|
|
48
|
+
.option('--clear', '清空行事件')
|
|
49
|
+
.option('--pc-only', '目标明确只使用 PC;移动端配置不存在时允许继续')
|
|
50
|
+
.option('--json', 'JSON 格式输出当前行事件')
|
|
51
|
+
.action(async (objId, appId, listId, cmdOpts) => {
|
|
52
|
+
const opts = program.opts();
|
|
53
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
54
|
+
if (!auth)
|
|
55
|
+
process.exit(1);
|
|
56
|
+
const client = new ApiClient(auth);
|
|
57
|
+
const baseUrl = auth.getBaseUrl();
|
|
58
|
+
const isJson = cmdOpts.json || opts.json;
|
|
59
|
+
const getRes = await client.get(`${baseUrl}/api/bs/ebuilder/form/list/getNListConfig/${listId}?apid=${appId}&tpaid=${listId}&terminalType=PC`);
|
|
60
|
+
if (getRes?.code !== 200 || !getRes?.status) {
|
|
61
|
+
console.error(`查询配置失败: ${getRes?.msg}`);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
const cfg = getRes?.data || {};
|
|
65
|
+
// eventGroup 读回可能是 [[...]] 或空
|
|
66
|
+
const eg = cfg.eventGroup;
|
|
67
|
+
const isEmpty = !eg || (Array.isArray(eg) && eg.length === 0);
|
|
68
|
+
if (!cmdOpts.addPage && !cmdOpts.addField && !cmdOpts.clear) {
|
|
69
|
+
if (isJson) {
|
|
70
|
+
console.log(JSON.stringify(eg || [], null, 2));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (isEmpty) {
|
|
74
|
+
console.log('当前无行事件');
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const groups = Array.isArray(eg) ? eg : JSON.parse(eg);
|
|
79
|
+
for (const grp of groups || []) {
|
|
80
|
+
for (const ev of grp || []) {
|
|
81
|
+
const link = ev.events?.[0]?.linkInfo;
|
|
82
|
+
const page = link?.page || {};
|
|
83
|
+
const openModeCn = OPEN_MODE_CN[String(link?.openMode)] || (link?.openMode ? link.openMode : '');
|
|
84
|
+
const mode = page.pageType === 'LINK'
|
|
85
|
+
? `选字段(urlFieldId=${link.urlFieldId} urlFieldText=${link.urlFieldText})`
|
|
86
|
+
: `选页面(pageId=${page.pageId} pageName=${page.pageName || link.name}${openModeCn ? ` 打开方式=${openModeCn}` : ''})`;
|
|
87
|
+
console.log(` [${ev.type}] ${ev.name || ''} → ${ev.events?.[0]?.type}(${mode}) actionDesc=${ev.actionDesc || ''}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
console.log(`(eventGroup 解析失败,原始: ${JSON.stringify(eg).slice(0, 200)})`);
|
|
93
|
+
}
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (cmdOpts.clear) {
|
|
97
|
+
cfg.eventGroup = [];
|
|
98
|
+
}
|
|
99
|
+
else if (cmdOpts.addPage) {
|
|
100
|
+
let rule;
|
|
101
|
+
try {
|
|
102
|
+
rule = JSON.parse(cmdOpts.addPage);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
console.error('--add-page JSON 解析失败');
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
// pageId 缺省 "1/<objId>"(表单新建布局);"0/<objId>"=显示布局
|
|
109
|
+
const pageId = rule.pageId || `1/${objId}`;
|
|
110
|
+
const pageName = rule.pageName || '目标页';
|
|
111
|
+
// pageViewType 从 pageId 前缀推导("1/<objId>"新建→"1"、"0/<objId>"显示→"0"),缺省 "1"
|
|
112
|
+
const pageViewType = /^[01]\//.test(pageId) ? pageId.split('/')[0] : '1';
|
|
113
|
+
// 行事件打开方式(linkInfo.openMode 为权威值):当前页面=4 / 新窗口=0 / 弹出窗口=5 / 右侧滑出=1 / 右侧推出=7
|
|
114
|
+
// 缺省右侧滑出(1)(不指定=滑出)。rule.openMode / cmdOpts.openMode 可传语义名或数字。
|
|
115
|
+
const modeRaw = String(rule.openMode || cmdOpts.openMode || '右侧滑出');
|
|
116
|
+
const openMode = OPEN_MODE_MAP[modeRaw] || modeRaw;
|
|
117
|
+
const useModal = ['5', '1', '7'].includes(openMode); // 弹出/滑出/推出 带弹窗宽高
|
|
118
|
+
const useWinSize = ['1', '7'].includes(openMode); // 滑出/推出 带滑出宽度 winSizeNew
|
|
119
|
+
const modalWidth = rule.modalWidth || cmdOpts.modalWidth || '50%';
|
|
120
|
+
const modalHeight = rule.modalHeight || cmdOpts.modalHeight || '50%';
|
|
121
|
+
const winSizeNew = rule.winSize || cmdOpts.winSize || '100%';
|
|
122
|
+
// linkInfo 对齐浏览器行事件抓包:page.openMode 恒 "4"(页面默认打开方式,与行事件打开方式无关,五份抓包恒为 4);
|
|
123
|
+
// 补 flatToBottom/isRelationCustomPage/isNew/selectLayout/selectMobileLayout/isPcMobileSameLayout;
|
|
124
|
+
// 滑出模式带 winSizeNew(缺 microCode——抓包里没有)。
|
|
125
|
+
const linkInfo = {
|
|
126
|
+
page: { pageType: 'LAYOUT', pageId, pageName, parentId: `Form_${objId}`, openMode: '4', appid: appId, pageViewType, dsDataset: {} },
|
|
127
|
+
openMode,
|
|
128
|
+
params: [],
|
|
129
|
+
flatToBottom: false,
|
|
130
|
+
isRelationCustomPage: false,
|
|
131
|
+
isNew: true,
|
|
132
|
+
selectLayout: { isPcMobileSameLayout: true },
|
|
133
|
+
selectMobileLayout: { isPcMobileSameLayout: true },
|
|
134
|
+
name: pageName,
|
|
135
|
+
icon: { path: '#icon-eBuilder-o', style: { color: '#5d9cec', fillType: 'borderColor', borderColor: '#5d9cec' } },
|
|
136
|
+
isPcMobileSameLayout: true,
|
|
137
|
+
};
|
|
138
|
+
if (useModal) {
|
|
139
|
+
linkInfo.modalWidth = modalWidth;
|
|
140
|
+
linkInfo.modalHeight = modalHeight;
|
|
141
|
+
}
|
|
142
|
+
if (useWinSize) {
|
|
143
|
+
linkInfo.winSizeNew = winSizeNew;
|
|
144
|
+
}
|
|
145
|
+
cfg.eventGroup = [[{
|
|
146
|
+
type: 'CLICKDATA', name: '单击每一条数据', id: uuid32(), disableDelete: true,
|
|
147
|
+
events: [{ id: uuid32(), type: 'NewPage', linkInfo }],
|
|
148
|
+
actionDesc: `布局:${pageName}`,
|
|
149
|
+
}]];
|
|
150
|
+
}
|
|
151
|
+
else if (cmdOpts.addField) {
|
|
152
|
+
let rule;
|
|
153
|
+
try {
|
|
154
|
+
rule = JSON.parse(cmdOpts.addField);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
console.error('--add-field JSON 解析失败');
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
if (!rule.urlFieldId) {
|
|
161
|
+
console.error('--add-field JSON 需要 urlFieldId(行内字段 id)');
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
const fields = await fetchFields(client, baseUrl, objId);
|
|
165
|
+
const cf = fields.find((f) => String(f.id) === String(rule.urlFieldId));
|
|
166
|
+
if (!cf) {
|
|
167
|
+
console.error(`字段 ${rule.urlFieldId} 在表单 ${objId} 中不存在`);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
const urlFieldText = rule.urlFieldText || cf.text || cf.name;
|
|
171
|
+
const urlFieldType = rule.urlFieldType || cf.type || 'String';
|
|
172
|
+
const linkInfo = {
|
|
173
|
+
page: { pageId: '', pageName: '', pageType: 'LINK' },
|
|
174
|
+
openMode: '4', params: [], urlLinkType: '1',
|
|
175
|
+
urlFieldId: rule.urlFieldId, urlFieldText, urlFieldType,
|
|
176
|
+
urlObjId: objId, urlFieldName: `field_${rule.urlFieldId}`, paramsMode: '1',
|
|
177
|
+
};
|
|
178
|
+
cfg.eventGroup = [[{
|
|
179
|
+
type: 'CLICKDATA', name: '单击每一条数据', id: uuid32(), disableDelete: true,
|
|
180
|
+
events: [{ id: uuid32(), type: 'NewPage', linkInfo }],
|
|
181
|
+
actionDesc: `自定义字段:${urlFieldText}`,
|
|
182
|
+
}]];
|
|
183
|
+
}
|
|
184
|
+
// 保存前读回真实移动端 mConfig 原样回传,避免把移动端行事件清空
|
|
185
|
+
const { mobileConfig, mobilePreserved } = await loadMobileConfig(client, baseUrl, appId, listId, cmdOpts.pcOnly);
|
|
186
|
+
// 浏览器抓包:config.eventGroup 与 mConfig.eventGroup 都写(PC + 移动端同结构)。移动端存在时同步写。
|
|
187
|
+
if (mobilePreserved && Array.isArray(cfg.eventGroup)) {
|
|
188
|
+
mobileConfig.eventGroup = cfg.eventGroup;
|
|
189
|
+
}
|
|
190
|
+
const saveRes = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
|
|
191
|
+
listId, appId, terminalType: 'PC', config: cfg, mConfig: mobileConfig,
|
|
192
|
+
});
|
|
193
|
+
if (saveRes?.code === 200 && saveRes?.status) {
|
|
194
|
+
console.log(isJson ? JSON.stringify({ success: true, listId }) : '行事件已保存');
|
|
195
|
+
console.log(` 移动端配置: ${mobilePreserved ? '保持原样' : '目标为 PC-only'}`);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
|
|
199
|
+
process.exit(1);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=form-list-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-event.js","sourceRoot":"","sources":["../../src/commands/form-list-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* 视图数据条件(list-filter)命令。
|
|
4
|
+
* 走 saveNListConfig config.filter(明文条件树,非独立接口——同事 e10-list-view skill 实证:
|
|
5
|
+
* conditionEditor/saveOrUpdate 表单级不挂视图、saveBaseinfo 带 conditionData 都是错误端点)。
|
|
6
|
+
* 条件树结构与统计 rootdata 同构,filterIsNull:true(统计 rootdata 为 false)。
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerListFilterCommand(form: Command, program: Command): void;
|
|
9
|
+
//# sourceMappingURL=form-list-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-filter.d.ts","sourceRoot":"","sources":["../../src/commands/form-list-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA2E/E"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { AuthSession } from '../core/auth.js';
|
|
2
|
+
import { ApiClient } from '../core/client.js';
|
|
3
|
+
import { fetchFields, loadMobileConfig, buildConditionTree } from './form-list-utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* 视图数据条件(list-filter)命令。
|
|
6
|
+
* 走 saveNListConfig config.filter(明文条件树,非独立接口——同事 e10-list-view skill 实证:
|
|
7
|
+
* conditionEditor/saveOrUpdate 表单级不挂视图、saveBaseinfo 带 conditionData 都是错误端点)。
|
|
8
|
+
* 条件树结构与统计 rootdata 同构,filterIsNull:true(统计 rootdata 为 false)。
|
|
9
|
+
*/
|
|
10
|
+
export function registerListFilterCommand(form, program) {
|
|
11
|
+
form.command('list-filter')
|
|
12
|
+
.description('查看/配置视图数据条件(台账只显示满足条件的数据)')
|
|
13
|
+
.argument('<objId>', '表单 objId')
|
|
14
|
+
.argument('<appId>', '应用 ID')
|
|
15
|
+
.argument('<listId>', '台账列表 ID')
|
|
16
|
+
.option('--add <json>', '设置视图数据条件: \'{"conditions":[{"fieldId":"...","func":"eq","value":"研发valueKey","text":"研发"}]}\' func=eq 等于/notEq/in/like/gt/lt/between(单选Select实测用eq)')
|
|
17
|
+
.option('--clear', '清空视图数据条件')
|
|
18
|
+
.option('--pc-only', '目标明确只使用 PC;移动端配置不存在时允许继续')
|
|
19
|
+
.option('--json', 'JSON 格式输出当前视图数据条件')
|
|
20
|
+
.action(async (objId, appId, listId, cmdOpts) => {
|
|
21
|
+
const opts = program.opts();
|
|
22
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
23
|
+
if (!auth)
|
|
24
|
+
process.exit(1);
|
|
25
|
+
const client = new ApiClient(auth);
|
|
26
|
+
const baseUrl = auth.getBaseUrl();
|
|
27
|
+
const isJson = cmdOpts.json || opts.json;
|
|
28
|
+
const getRes = await client.get(`${baseUrl}/api/bs/ebuilder/form/list/getNListConfig/${listId}?apid=${appId}&tpaid=${listId}&terminalType=PC`);
|
|
29
|
+
if (getRes?.code !== 200 || !getRes?.status) {
|
|
30
|
+
console.error(`查询配置失败: ${getRes?.msg}`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
const cfg = getRes?.data || {};
|
|
34
|
+
// 读回的 filter 可能是对象或明文字符串,统一解析
|
|
35
|
+
const parseFilter = (raw) => {
|
|
36
|
+
if (raw == null)
|
|
37
|
+
return null;
|
|
38
|
+
if (typeof raw === 'string') {
|
|
39
|
+
try {
|
|
40
|
+
return JSON.parse(raw);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return raw;
|
|
47
|
+
};
|
|
48
|
+
let f = parseFilter(cfg.filter);
|
|
49
|
+
const isEmpty = !f || (typeof f === 'object' && !Array.isArray(f) && Object.keys(f).length === 0);
|
|
50
|
+
if (!cmdOpts.add && !cmdOpts.clear) {
|
|
51
|
+
if (isJson) {
|
|
52
|
+
console.log(JSON.stringify(f || {}, null, 2));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (isEmpty) {
|
|
56
|
+
console.log('当前无视图数据条件(显示全部数据)');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
console.log(`视图数据条件: ${f.rootStr || '(无 rootStr)'}`);
|
|
60
|
+
for (const d of f.datas || []) {
|
|
61
|
+
console.log(` - ${d.text} ${d.conditions?.func} value='${d.conditions?.value}' text='${d.conditions?.text}' (fieldId=${d.id})`);
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (cmdOpts.clear) {
|
|
66
|
+
cfg.filter = {};
|
|
67
|
+
}
|
|
68
|
+
else if (cmdOpts.add) {
|
|
69
|
+
let rule;
|
|
70
|
+
try {
|
|
71
|
+
rule = JSON.parse(cmdOpts.add);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
console.error('--add JSON 解析失败');
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
if (!Array.isArray(rule.conditions) || rule.conditions.length === 0) {
|
|
78
|
+
console.error('--add JSON 需要 conditions 数组(至少 1 条)');
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
const fields = await fetchFields(client, baseUrl, objId);
|
|
82
|
+
// 校验条件字段都存在
|
|
83
|
+
for (const c of rule.conditions) {
|
|
84
|
+
if (!fields.find((x) => String(x.id) === String(c.fieldId))) {
|
|
85
|
+
console.error(`条件字段 ${c.fieldId} 在表单 ${objId} 中不存在`);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const treeStr = buildConditionTree(rule.conditions, fields, objId, true);
|
|
90
|
+
cfg.filter = JSON.parse(treeStr); // 明文条件树对象存入 config.filter
|
|
91
|
+
}
|
|
92
|
+
// 保存前读回真实移动端 mConfig 原样回传,避免把移动端台账条件清空
|
|
93
|
+
const { mobileConfig, mobilePreserved } = await loadMobileConfig(client, baseUrl, appId, listId, cmdOpts.pcOnly);
|
|
94
|
+
const saveRes = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
|
|
95
|
+
listId, appId, terminalType: 'PC', config: cfg, mConfig: mobileConfig,
|
|
96
|
+
});
|
|
97
|
+
if (saveRes?.code === 200 && saveRes?.status) {
|
|
98
|
+
console.log(isJson ? JSON.stringify({ success: true, listId }) : '视图数据条件已保存');
|
|
99
|
+
console.log(` 移动端配置: ${mobilePreserved ? '保持原样' : '目标为 PC-only'}`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=form-list-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-filter.js","sourceRoot":"","sources":["../../src/commands/form-list-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* 启用分组(list-group)命令。
|
|
4
|
+
* 走 saveNListConfig config.enableGroup(对象 {enable, groupField, groupSize})。
|
|
5
|
+
* 实测(sjr 2026-08-20):saveNListConfig 存 enableGroup 持久化成功(读回 enable/groupField.id/groupSize 全对),
|
|
6
|
+
* 不走 designer/layout/save LZW(同事 e10-list-view skill 说"视图级不持久化、走 layout/save"在 sjr 不成立)。
|
|
7
|
+
* groupField 必须用完整字段对象(来自 ds/fields 查询,保留 id/text/type/compType/dbFieldType/formInfo/browserParams 等)。
|
|
8
|
+
* 禁用时保留 groupField + groupSize,只把 enable 改 false(避免丢重新启用所需的字段定义)。
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerListGroupCommand(form: Command, program: Command): void;
|
|
11
|
+
//# sourceMappingURL=form-list-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-group.d.ts","sourceRoot":"","sources":["../../src/commands/form-list-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E9E"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { AuthSession } from '../core/auth.js';
|
|
2
|
+
import { ApiClient } from '../core/client.js';
|
|
3
|
+
import { fetchFields, loadMobileConfig } from './form-list-utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* 启用分组(list-group)命令。
|
|
6
|
+
* 走 saveNListConfig config.enableGroup(对象 {enable, groupField, groupSize})。
|
|
7
|
+
* 实测(sjr 2026-08-20):saveNListConfig 存 enableGroup 持久化成功(读回 enable/groupField.id/groupSize 全对),
|
|
8
|
+
* 不走 designer/layout/save LZW(同事 e10-list-view skill 说"视图级不持久化、走 layout/save"在 sjr 不成立)。
|
|
9
|
+
* groupField 必须用完整字段对象(来自 ds/fields 查询,保留 id/text/type/compType/dbFieldType/formInfo/browserParams 等)。
|
|
10
|
+
* 禁用时保留 groupField + groupSize,只把 enable 改 false(避免丢重新启用所需的字段定义)。
|
|
11
|
+
*/
|
|
12
|
+
export function registerListGroupCommand(form, program) {
|
|
13
|
+
form.command('list-group')
|
|
14
|
+
.description('查看/配置台账启用分组(按某字段分组聚合显示)')
|
|
15
|
+
.argument('<objId>', '表单 objId')
|
|
16
|
+
.argument('<appId>', '应用 ID')
|
|
17
|
+
.argument('<listId>', '台账列表 ID')
|
|
18
|
+
.option('--enable', '启用分组(需配 --group-field)')
|
|
19
|
+
.option('--group-field <fieldId>', '分组字段 ID(启用/换分组字段时必填)')
|
|
20
|
+
.option('--group-size <n>', '分组聚合大小', '100')
|
|
21
|
+
.option('--disable', '禁用分组(保留 groupField/groupSize,仅 enable=false)')
|
|
22
|
+
.option('--pc-only', '目标明确只使用 PC;移动端配置不存在时允许继续')
|
|
23
|
+
.option('--json', 'JSON 格式输出当前启用分组配置')
|
|
24
|
+
.action(async (objId, appId, listId, cmdOpts) => {
|
|
25
|
+
const opts = program.opts();
|
|
26
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
27
|
+
if (!auth)
|
|
28
|
+
process.exit(1);
|
|
29
|
+
const client = new ApiClient(auth);
|
|
30
|
+
const baseUrl = auth.getBaseUrl();
|
|
31
|
+
const isJson = cmdOpts.json || opts.json;
|
|
32
|
+
const getRes = await client.get(`${baseUrl}/api/bs/ebuilder/form/list/getNListConfig/${listId}?apid=${appId}&tpaid=${listId}&terminalType=PC`);
|
|
33
|
+
if (getRes?.code !== 200 || !getRes?.status) {
|
|
34
|
+
console.error(`查询配置失败: ${getRes?.msg}`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
const cfg = getRes?.data || {};
|
|
38
|
+
const eg = cfg.enableGroup || null;
|
|
39
|
+
if (!cmdOpts.enable && !cmdOpts.disable && !cmdOpts.groupField) {
|
|
40
|
+
if (isJson) {
|
|
41
|
+
console.log(JSON.stringify(eg || {}, null, 2));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!eg || eg.enable !== true) {
|
|
45
|
+
console.log(`当前未启用分组${eg?.groupField ? `(上次分组字段: ${eg.groupField.text || eg.groupField.id})` : ''}`);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
console.log(`启用分组: 字段=${eg.groupField?.text || eg.groupField?.id} (fieldId=${eg.groupField?.id}) groupSize=${eg.groupSize}`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (cmdOpts.disable) {
|
|
52
|
+
// 禁用:保留 groupField/groupSize,仅 enable=false
|
|
53
|
+
cfg.enableGroup = { ...(eg || {}), enable: false };
|
|
54
|
+
if (!cfg.enableGroup.groupField) {
|
|
55
|
+
console.error('当前无分组字段,无需禁用');
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// 启用/换分组字段
|
|
61
|
+
if (!cmdOpts.groupField) {
|
|
62
|
+
console.error('启用分组需用 --group-field 指定分组字段 ID');
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
const fields = await fetchFields(client, baseUrl, objId);
|
|
66
|
+
const grpField = fields.find((f) => String(f.id) === String(cmdOpts.groupField));
|
|
67
|
+
if (!grpField) {
|
|
68
|
+
console.error(`分组字段 ${cmdOpts.groupField} 在表单 ${objId} 中不存在`);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
const size = parseInt(cmdOpts.groupSize || '100', 10);
|
|
72
|
+
if (!Number.isFinite(size) || size <= 0) {
|
|
73
|
+
console.error(`--group-size 须为正整数`);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
// 保留上次 groupSize(未传时),但显式 --group-size 优先
|
|
77
|
+
const prevSize = eg?.groupSize && Number.isFinite(Number(eg.groupSize)) ? Number(eg.groupSize) : 100;
|
|
78
|
+
cfg.enableGroup = {
|
|
79
|
+
enable: true,
|
|
80
|
+
groupField: grpField, // 完整字段对象
|
|
81
|
+
groupSize: cmdOpts.groupSize !== undefined ? size : prevSize,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// 保存前读回真实移动端 mConfig 原样回传
|
|
85
|
+
const { mobileConfig, mobilePreserved } = await loadMobileConfig(client, baseUrl, appId, listId, cmdOpts.pcOnly);
|
|
86
|
+
const saveRes = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
|
|
87
|
+
listId, appId, terminalType: 'PC', config: cfg, mConfig: mobileConfig,
|
|
88
|
+
});
|
|
89
|
+
if (saveRes?.code === 200 && saveRes?.status) {
|
|
90
|
+
const result = cfg.enableGroup;
|
|
91
|
+
console.log(isJson ? JSON.stringify({ success: true, listId, enable: result.enable, groupField: result.groupField?.id, groupSize: result.groupSize }) : `启用分组已保存: enable=${result.enable} 字段=${result.groupField?.text || result.groupField?.id} groupSize=${result.groupSize}`);
|
|
92
|
+
console.log(` 移动端配置: ${mobilePreserved ? '保持原样' : '目标为 PC-only'}`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=form-list-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-group.js","sourceRoot":"","sources":["../../src/commands/form-list-group.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-permission.d.ts","sourceRoot":"","sources":["../../src/commands/form-list-permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAqFnF"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { AuthSession } from '../core/auth.js';
|
|
2
|
+
import { ApiClient } from '../core/client.js';
|
|
3
|
+
/**
|
|
4
|
+
* 台账视图权限(list-permission)命令。
|
|
5
|
+
* 走 list/permission/save + list/permission/getList(专用端点,非 designer/layout/save LZW,
|
|
6
|
+
* 也非 saveNListConfig config.rights——同事 e10-list-view skill 说走 layout/save 在 sjr 不成立)。
|
|
7
|
+
* 存:POST list/permission/save?apid&tpaid&objId body {listId, listPermissions:[...]},头 ebBusinessId=appId + enableTrans:0
|
|
8
|
+
* 读:GET list/permission/getList/{listId}?apid&tpaid&objId
|
|
9
|
+
* 语义:full-replace(整列覆盖,omit 即删除)。已存条目带 id、新条目 id:"",平台生成 id。
|
|
10
|
+
* selectedType 实测:all(所有人 dataid="0") / user(人员 dataid=userId) / matrix(矩阵,结构复杂用 --add-raw)。
|
|
11
|
+
*/
|
|
12
|
+
const PERM_HEADERS = (appId) => ({ ebbusinessid: appId, enabletrans: '0' });
|
|
13
|
+
function allEntry() {
|
|
14
|
+
return { id: '', dataid: '0', name: '', selectedType: 'all', relation: '0', containExtra: '0',
|
|
15
|
+
levelScope: { minShowlevel: '', maxShowlevel: '' }, jobLevel: '0', jobLevelTextSpan: '',
|
|
16
|
+
orgVirtualType: '', orgVirtualTypeSpan: '', roleLevel: '3', opened: 1, thirdPartyFlag: 0 };
|
|
17
|
+
}
|
|
18
|
+
function userEntry(userId, name) {
|
|
19
|
+
return { id: '', selectedType: 'user', name, dataid: userId,
|
|
20
|
+
levelScope: { minShowlevel: '', maxShowlevel: '' }, relation: '0', jobLevel: '', jobLevelText: '',
|
|
21
|
+
jobLevelTextSpan: '', opened: 1, roleLevel: '1', containExtra: '0' };
|
|
22
|
+
}
|
|
23
|
+
export function registerListPermissionCommand(form, program) {
|
|
24
|
+
form.command('list-permission')
|
|
25
|
+
.description('查看/配置台账视图查看权限(谁能看这个台账)')
|
|
26
|
+
.argument('<objId>', '表单 objId')
|
|
27
|
+
.argument('<appId>', '应用 ID')
|
|
28
|
+
.argument('<listId>', '台账列表 ID')
|
|
29
|
+
.option('--add-all', '添加「所有人」权限')
|
|
30
|
+
.option('--add-user <userId>', '添加人员权限(人员 ID,配合 --name)')
|
|
31
|
+
.option('--name <name>', '人员/角色名称(--add-user 时填显示名)')
|
|
32
|
+
.option('--add-raw <json>', '添加原始权限对象(matrix/role/dept 等高级类型,整对象 JSON)')
|
|
33
|
+
.option('--remove <id>', '按权限 id 移除一条')
|
|
34
|
+
.option('--clear', '清空所有权限')
|
|
35
|
+
.option('--json', 'JSON 格式输出当前权限')
|
|
36
|
+
.action(async (objId, appId, listId, cmdOpts) => {
|
|
37
|
+
const opts = program.opts();
|
|
38
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
39
|
+
if (!auth)
|
|
40
|
+
process.exit(1);
|
|
41
|
+
const client = new ApiClient(auth);
|
|
42
|
+
const baseUrl = auth.getBaseUrl();
|
|
43
|
+
const isJson = cmdOpts.json || opts.json;
|
|
44
|
+
const readUrl = `${baseUrl}/api/bs/ebuilder/form/list/permission/getList/${listId}?apid=${appId}&tpaid=${listId}&objId=${objId}`;
|
|
45
|
+
const saveUrl = `${baseUrl}/api/bs/ebuilder/form/list/permission/save?apid=${appId}&tpaid=${listId}&objId=${objId}`;
|
|
46
|
+
const read = async () => {
|
|
47
|
+
const r = await client.get(readUrl, PERM_HEADERS(appId));
|
|
48
|
+
if (r?.code !== 200)
|
|
49
|
+
throw new Error(`读取权限失败: ${r?.msg || '未知'}`);
|
|
50
|
+
return Array.isArray(r?.data) ? r.data : [];
|
|
51
|
+
};
|
|
52
|
+
let perms = await read();
|
|
53
|
+
// 无修改参数 → 列出
|
|
54
|
+
if (!cmdOpts.addAll && !cmdOpts.addUser && !cmdOpts.addRaw && !cmdOpts.remove && !cmdOpts.clear) {
|
|
55
|
+
if (isJson) {
|
|
56
|
+
console.log(JSON.stringify(perms, null, 2));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (perms.length === 0) {
|
|
60
|
+
console.log('当前无视图权限');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
console.log(`视图权限 (${perms.length}):`);
|
|
64
|
+
for (const p of perms) {
|
|
65
|
+
const label = p.selectedType === 'all' ? '所有人' : p.selectedType === 'user' ? `人员: ${p.name || ''}` : p.selectedType === 'matrix' ? `矩阵: ${p.name || ''}` : `${p.selectedType}: ${p.name || ''}`;
|
|
66
|
+
console.log(` [${p.id}] ${label} dataid=${p.dataid || '-'}`);
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (cmdOpts.clear) {
|
|
71
|
+
perms = [];
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
if (cmdOpts.remove) {
|
|
75
|
+
const before = perms.length;
|
|
76
|
+
perms = perms.filter((p) => String(p.id) !== String(cmdOpts.remove));
|
|
77
|
+
if (perms.length === before) {
|
|
78
|
+
console.error(`权限 id ${cmdOpts.remove} 不存在`);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (cmdOpts.addAll) {
|
|
83
|
+
if (!perms.find((p) => p.selectedType === 'all'))
|
|
84
|
+
perms.push(allEntry());
|
|
85
|
+
}
|
|
86
|
+
if (cmdOpts.addUser) {
|
|
87
|
+
if (!cmdOpts.name) {
|
|
88
|
+
console.error('--add-user 需配合 --name 给显示名');
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
if (!perms.find((p) => p.selectedType === 'user' && String(p.dataid) === String(cmdOpts.addUser))) {
|
|
92
|
+
perms.push(userEntry(cmdOpts.addUser, cmdOpts.name));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (cmdOpts.addRaw) {
|
|
96
|
+
let raw;
|
|
97
|
+
try {
|
|
98
|
+
raw = JSON.parse(cmdOpts.addRaw);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
console.error('--add-raw JSON 解析失败');
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
raw.id = '';
|
|
105
|
+
perms.push(raw);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const saveRes = await client.post(saveUrl, { listId, listPermissions: perms }, PERM_HEADERS(appId));
|
|
109
|
+
if (saveRes?.code !== 200 || !saveRes?.status) {
|
|
110
|
+
console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
// 读回验证
|
|
114
|
+
const after = await read();
|
|
115
|
+
if (isJson) {
|
|
116
|
+
console.log(JSON.stringify({ success: true, listId, count: after.length, permissions: after }, null, 2));
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.log(`视图权限已保存 (${after.length} 条):`);
|
|
120
|
+
for (const p of after) {
|
|
121
|
+
const label = p.selectedType === 'all' ? '所有人' : p.selectedType === 'user' ? `人员: ${p.name || ''}` : `${p.selectedType}: ${p.name || ''}`;
|
|
122
|
+
console.log(` [${p.id}] ${label}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=form-list-permission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-permission.js","sourceRoot":"","sources":["../../src/commands/form-list-permission.ts"],"names":[],"mappings":"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"}
|