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,345 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'fs';
|
|
2
|
+
import { basename } from 'path';
|
|
3
|
+
import { AuthSession } from '../core/auth.js';
|
|
4
|
+
import { ApiClient } from '../core/client.js';
|
|
5
|
+
export function registerProjectCommands(program) {
|
|
6
|
+
const proj = program.command('project').description('Ecode 项目管理');
|
|
7
|
+
proj.command('create')
|
|
8
|
+
.description('新建 Ecode 项目')
|
|
9
|
+
.argument('<name>', '项目名称')
|
|
10
|
+
.argument('[desc]', '项目描述', '')
|
|
11
|
+
.option('--department-id <id>', '部门 ID(默认自动获取)', '')
|
|
12
|
+
.action(async (name, desc, cmdOpts) => {
|
|
13
|
+
const opts = program.opts();
|
|
14
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
15
|
+
if (!auth)
|
|
16
|
+
process.exit(1);
|
|
17
|
+
const client = new ApiClient(auth);
|
|
18
|
+
const baseUrl = auth.getBaseUrl();
|
|
19
|
+
// Auto-detect departmentId if not provided
|
|
20
|
+
let departmentId = cmdOpts.departmentId || '';
|
|
21
|
+
if (!departmentId) {
|
|
22
|
+
try {
|
|
23
|
+
// Try teamsCheck first (returns currentUser.department)
|
|
24
|
+
const tcResp = await fetch(`${baseUrl}/api/baseserver/layout/teamsCheck?clientType=not_xinchuang&client=WEB&domainName=${encodeURIComponent(baseUrl)}`, {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
headers: { 'accept': 'application/json', 'content-type': 'application/json', 'cookie': `ETEAMSID=${auth.eteamsId}` },
|
|
27
|
+
});
|
|
28
|
+
const tcData = await tcResp.json().catch(() => ({}));
|
|
29
|
+
departmentId = tcData?.currentUser?.department?.id || '';
|
|
30
|
+
}
|
|
31
|
+
catch { }
|
|
32
|
+
if (!departmentId) {
|
|
33
|
+
try {
|
|
34
|
+
const orgRes = await client.post(`${baseUrl}/api/hrm/common/browser/associate/organization`, {});
|
|
35
|
+
const orgData = orgRes?.data?.data || orgRes?.data || [];
|
|
36
|
+
if (Array.isArray(orgData) && orgData.length > 0) {
|
|
37
|
+
departmentId = orgData[0].id || '';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch { }
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const ts = new Date().toISOString().slice(2, 17).replace(/[-:]/g, '').replace('T', '_');
|
|
44
|
+
const fullName = `${name}_${ts}`;
|
|
45
|
+
const params = new URLSearchParams();
|
|
46
|
+
params.set('projectName', fullName);
|
|
47
|
+
params.set('description', desc);
|
|
48
|
+
if (departmentId)
|
|
49
|
+
params.set('departmentId', departmentId);
|
|
50
|
+
const data = await client.postForm(`${baseUrl}/api/ecode/project`, params.toString());
|
|
51
|
+
if (data?.code === 200 && data?.status) {
|
|
52
|
+
const projectId = data?.data?.id || '';
|
|
53
|
+
console.log(opts.json ? JSON.stringify({ id: projectId, name: fullName }) : `项目已创建,ID: ${projectId}`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.error(`创建失败: ${data?.msg || '未知错误'}`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
proj.command('tree')
|
|
61
|
+
.description('查看目录结构')
|
|
62
|
+
.argument('<parentId>', '父目录 ID')
|
|
63
|
+
.action(async (parentId) => {
|
|
64
|
+
const opts = program.opts();
|
|
65
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
66
|
+
if (!auth)
|
|
67
|
+
process.exit(1);
|
|
68
|
+
const client = new ApiClient(auth);
|
|
69
|
+
const data = await client.get(`${auth.getBaseUrl()}/api/ecode/tree/list?parentId=${parentId}`);
|
|
70
|
+
if (data?.code !== 200 || !data?.status) {
|
|
71
|
+
console.error(`获取失败: ${data?.msg || '未知错误'}`);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
const folders = data?.data?.folders || [];
|
|
75
|
+
const codes = data?.data?.codes || [];
|
|
76
|
+
const entries = [
|
|
77
|
+
...folders.map((f) => ({ id: f.id, name: f.name, type: 'folder' })),
|
|
78
|
+
...codes.map((c) => ({ id: c.id, name: c.name, type: 'file', sourceId: c.sourceId })),
|
|
79
|
+
];
|
|
80
|
+
if (opts.json) {
|
|
81
|
+
console.log(JSON.stringify(entries, null, 2));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
for (const e of entries) {
|
|
85
|
+
if (e.type === 'folder')
|
|
86
|
+
console.log(` [DIR] [${e.id}] ${e.name}`);
|
|
87
|
+
else
|
|
88
|
+
console.log(` [FILE] [${e.id}] ${e.name} sourceId=${e.sourceId}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
proj.command('read')
|
|
93
|
+
.description('读取代码文件内容')
|
|
94
|
+
.argument('<fileId>', '文件 ID')
|
|
95
|
+
.action(async (fileId) => {
|
|
96
|
+
const opts = program.opts();
|
|
97
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
98
|
+
if (!auth)
|
|
99
|
+
process.exit(1);
|
|
100
|
+
const client = new ApiClient(auth);
|
|
101
|
+
const data = await client.get(`${auth.getBaseUrl()}/api/ecode/code/getById/${fileId}`);
|
|
102
|
+
if (data?.code !== 200 || !data?.status) {
|
|
103
|
+
console.error(`读取失败: ${data?.msg || '未知错误'}`);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
const content = data?.data?.content || '';
|
|
107
|
+
if (content) {
|
|
108
|
+
const decoded = Buffer.from(content, 'base64').toString('utf-8');
|
|
109
|
+
console.log(decoded);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
proj.command('update')
|
|
113
|
+
.description('更新代码文件')
|
|
114
|
+
.argument('<fileId>', '文件 ID')
|
|
115
|
+
.argument('<content>', '新内容(或文件路径,以 @ 开头)')
|
|
116
|
+
.action(async (fileId, contentArg) => {
|
|
117
|
+
const opts = program.opts();
|
|
118
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
119
|
+
if (!auth)
|
|
120
|
+
process.exit(1);
|
|
121
|
+
let content = contentArg;
|
|
122
|
+
if (content.startsWith('@')) {
|
|
123
|
+
const filePath = content.slice(1);
|
|
124
|
+
if (!existsSync(filePath)) {
|
|
125
|
+
console.error(`文件不存在: ${filePath}`);
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
content = readFileSync(filePath, 'utf-8');
|
|
129
|
+
}
|
|
130
|
+
const encoded = Buffer.from(content, 'utf-8').toString('base64');
|
|
131
|
+
const client = new ApiClient(auth);
|
|
132
|
+
const baseUrl = auth.getBaseUrl();
|
|
133
|
+
// Get sourceId first
|
|
134
|
+
const info = await client.get(`${baseUrl}/api/ecode/code/getById/${fileId}`);
|
|
135
|
+
const sourceId = info?.data?.sourceId || '';
|
|
136
|
+
const params = new URLSearchParams();
|
|
137
|
+
params.set('id', fileId);
|
|
138
|
+
params.set('content', encoded);
|
|
139
|
+
params.set('compileContent', '');
|
|
140
|
+
params.set('sourceId', sourceId);
|
|
141
|
+
const data = await client.postForm(`${baseUrl}/api/ecode/code/update/${fileId}`, params.toString());
|
|
142
|
+
if (data?.code === 200 && data?.status) {
|
|
143
|
+
console.log(opts.json ? JSON.stringify({ success: true, fileId }) : `文件已更新: ${info?.data?.name || fileId}`);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
console.error(`更新失败: ${data?.msg || '未知错误'}`);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
proj.command('create-file')
|
|
151
|
+
.description('新建代码文件')
|
|
152
|
+
.argument('<name>', '文件名')
|
|
153
|
+
.argument('<parentId>', '父目录 ID')
|
|
154
|
+
.argument('[type]', '文件类型 (js/css/html)', 'js')
|
|
155
|
+
.action(async (name, parentId, fileType) => {
|
|
156
|
+
const opts = program.opts();
|
|
157
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
158
|
+
if (!auth)
|
|
159
|
+
process.exit(1);
|
|
160
|
+
const client = new ApiClient(auth);
|
|
161
|
+
const params = new URLSearchParams();
|
|
162
|
+
params.set('name', name);
|
|
163
|
+
params.set('type', fileType);
|
|
164
|
+
params.set('parentId', parentId);
|
|
165
|
+
const data = await client.postForm(`${auth.getBaseUrl()}/api/ecode/code/add`, params.toString());
|
|
166
|
+
if (data?.code === 200 && data?.status) {
|
|
167
|
+
const fileId = data?.data?.id || '';
|
|
168
|
+
console.log(opts.json ? JSON.stringify({ id: fileId, name }) : `文件已创建: [${fileId}] ${name}.${fileType}`);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
const msg = data?.msg || '未知错误';
|
|
172
|
+
if (/不存在|无.*目录|目录.*空/.test(msg)) {
|
|
173
|
+
console.error(`创建失败: 父目录 ${parentId} 不存在。新项目默认无目录结构,请先 \`project import <projectId> <zip>\` 导入代码,或在平台页面初始化目录后再建文件`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
console.error(`创建失败: ${msg}`);
|
|
177
|
+
}
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
proj.command('create-folder')
|
|
182
|
+
.description('新建文件夹')
|
|
183
|
+
.argument('<name>', '文件夹名')
|
|
184
|
+
.argument('<parentId>', '父目录 ID')
|
|
185
|
+
.action(async (name, parentId) => {
|
|
186
|
+
const opts = program.opts();
|
|
187
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
188
|
+
if (!auth)
|
|
189
|
+
process.exit(1);
|
|
190
|
+
const client = new ApiClient(auth);
|
|
191
|
+
const params = new URLSearchParams();
|
|
192
|
+
params.set('name', name);
|
|
193
|
+
params.set('parentId', parentId);
|
|
194
|
+
const data = await client.postForm(`${auth.getBaseUrl()}/api/ecode/folder/add`, params.toString());
|
|
195
|
+
if (data?.code === 200 && data?.status) {
|
|
196
|
+
const folderId = data?.data?.id || '';
|
|
197
|
+
console.log(opts.json ? JSON.stringify({ id: folderId, name }) : `文件夹已创建: [${folderId}] ${name}`);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
const msg = data?.msg || '未知错误';
|
|
201
|
+
if (/不存在|无.*目录|目录.*空/.test(msg)) {
|
|
202
|
+
console.error(`创建失败: 父目录 ${parentId} 不存在。新项目默认无目录结构,请先 \`project import <projectId> <zip>\` 导入代码,或在平台页面初始化目录后再建文件夹`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
console.error(`创建失败: ${msg}`);
|
|
206
|
+
}
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
proj.command('delete-folder')
|
|
211
|
+
.description('删除文件夹及应用')
|
|
212
|
+
.argument('<folderId>', '文件夹 ID')
|
|
213
|
+
.action(async (folderId) => {
|
|
214
|
+
const opts = program.opts();
|
|
215
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
216
|
+
if (!auth)
|
|
217
|
+
process.exit(1);
|
|
218
|
+
const client = new ApiClient(auth);
|
|
219
|
+
const data = await client.postForm(`${auth.getBaseUrl()}/api/ecode/folder/delete/${folderId}`, '');
|
|
220
|
+
if (data?.code === 200 && data?.status) {
|
|
221
|
+
console.log(opts.json ? JSON.stringify({ success: true, folderId }) : `已删除 folderId=${folderId}`);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
console.error(`删除失败: ${data?.msg || '未知错误'}`);
|
|
225
|
+
process.exit(1);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
proj.command('delete-file')
|
|
229
|
+
.description('删除代码文件')
|
|
230
|
+
.argument('<fileId>', '文件 ID')
|
|
231
|
+
.action(async (fileId) => {
|
|
232
|
+
const opts = program.opts();
|
|
233
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
234
|
+
if (!auth)
|
|
235
|
+
process.exit(1);
|
|
236
|
+
const client = new ApiClient(auth);
|
|
237
|
+
const data = await client.postForm(`${auth.getBaseUrl()}/api/ecode/code/delete/${fileId}`, '');
|
|
238
|
+
if (data?.code === 200 && data?.status) {
|
|
239
|
+
console.log(opts.json ? JSON.stringify({ success: true, fileId }) : `文件已删除 fileId=${fileId}`);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
console.error(`删除失败: ${data?.msg || '未知错误'}`);
|
|
243
|
+
process.exit(1);
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
proj.command('import')
|
|
247
|
+
.description('导入 zip 包到项目')
|
|
248
|
+
.argument('<projectId>', '项目 ID')
|
|
249
|
+
.argument('<zipPath>', 'zip 文件路径')
|
|
250
|
+
.requiredOption('--main-url <url>', '应用主页 URL(如 /sp/custom/ecode/table-demo)')
|
|
251
|
+
.action(async (projectId, zipPath, cmdOpts) => {
|
|
252
|
+
// Fix MSYS path mangling: /sp/... → D:/Program Files/Git/sp/...
|
|
253
|
+
let mainUrl = cmdOpts.mainUrl;
|
|
254
|
+
const msysMatch = mainUrl.match(/^[A-Za-z]:[/\\].+?(\/sp\/.+)$/);
|
|
255
|
+
if (msysMatch)
|
|
256
|
+
mainUrl = msysMatch[1];
|
|
257
|
+
// Ensure leading slash
|
|
258
|
+
if (!mainUrl.startsWith('/'))
|
|
259
|
+
mainUrl = '/' + mainUrl;
|
|
260
|
+
const opts = program.opts();
|
|
261
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
262
|
+
if (!auth)
|
|
263
|
+
process.exit(1);
|
|
264
|
+
if (!existsSync(zipPath)) {
|
|
265
|
+
console.error(`文件不存在: ${zipPath}`);
|
|
266
|
+
process.exit(1);
|
|
267
|
+
}
|
|
268
|
+
const baseUrl = auth.getBaseUrl();
|
|
269
|
+
const fileName = basename(zipPath);
|
|
270
|
+
const fileBuffer = readFileSync(zipPath);
|
|
271
|
+
// Step 1: Upload zip via multipart
|
|
272
|
+
const form = new FormData();
|
|
273
|
+
form.append('file', new Blob([fileBuffer], { type: 'application/x-zip-compressed' }), fileName);
|
|
274
|
+
form.append('projectId', projectId);
|
|
275
|
+
console.error(`上传 zip: ${fileName}`);
|
|
276
|
+
const uploadResp = await fetch(`${baseUrl}/api/ecode/folder/importCheck`, {
|
|
277
|
+
method: 'POST',
|
|
278
|
+
headers: {
|
|
279
|
+
Accept: 'application/json',
|
|
280
|
+
eteamsid: auth.eteamsId,
|
|
281
|
+
},
|
|
282
|
+
body: form,
|
|
283
|
+
});
|
|
284
|
+
const uploadData = await uploadResp.json();
|
|
285
|
+
if (uploadData?.code !== 200 || !uploadData?.status) {
|
|
286
|
+
console.error(`上传失败: ${uploadData?.msg || '未知错误'}`);
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
const fileId = uploadData?.data?.fileId || '';
|
|
290
|
+
const dirName = uploadData?.data?.dir || '';
|
|
291
|
+
const rootFolders = uploadData?.data?.rootFolders || [];
|
|
292
|
+
const root = rootFolders[0] || {};
|
|
293
|
+
console.error(` fileId: ${fileId}, dir: ${dirName}`);
|
|
294
|
+
// Step 2: Confirm import
|
|
295
|
+
const impParams = JSON.stringify([{
|
|
296
|
+
id: root.id || '',
|
|
297
|
+
autoPublish: true,
|
|
298
|
+
impType: 'cover',
|
|
299
|
+
coverConfig: false,
|
|
300
|
+
keepIdToken: false,
|
|
301
|
+
pcOrMobile: root.attribute || 'P',
|
|
302
|
+
}]);
|
|
303
|
+
const params = new URLSearchParams();
|
|
304
|
+
params.set('relevanceConfig', '{}');
|
|
305
|
+
params.set('projectId', projectId);
|
|
306
|
+
params.set('fileId', fileId);
|
|
307
|
+
params.set('dirName', dirName);
|
|
308
|
+
params.set('impParams', impParams);
|
|
309
|
+
console.error('确认导入...');
|
|
310
|
+
const importResp = await fetch(`${baseUrl}/api/ecode/folder/importEcode`, {
|
|
311
|
+
method: 'POST',
|
|
312
|
+
headers: {
|
|
313
|
+
'content-type': 'application/x-www-form-urlencoded',
|
|
314
|
+
Accept: 'application/json',
|
|
315
|
+
eteamsid: auth.eteamsId,
|
|
316
|
+
},
|
|
317
|
+
body: params.toString(),
|
|
318
|
+
});
|
|
319
|
+
const importData = await importResp.json();
|
|
320
|
+
if (importData?.code !== 200 || !importData?.status) {
|
|
321
|
+
console.error(`导入失败: ${importData?.msg || '未知错误'}`);
|
|
322
|
+
process.exit(1);
|
|
323
|
+
}
|
|
324
|
+
console.error('导入成功!');
|
|
325
|
+
// Step 3: Show tree
|
|
326
|
+
const treeData = await fetch(`${baseUrl}/api/ecode/tree/list?parentId=${projectId}`, {
|
|
327
|
+
headers: { Accept: 'application/json', eteamsid: auth.eteamsId },
|
|
328
|
+
}).then(r => r.json());
|
|
329
|
+
const folders = treeData?.data?.folders || [];
|
|
330
|
+
const codes = treeData?.data?.codes || [];
|
|
331
|
+
console.error(` 项目 [${projectId}] 目录结构:`);
|
|
332
|
+
for (const f of folders)
|
|
333
|
+
console.error(` [DIR] [${f.id}] ${f.name}`);
|
|
334
|
+
for (const c of codes)
|
|
335
|
+
console.error(` [FILE] [${c.id}] ${c.name}`);
|
|
336
|
+
if (opts.json) {
|
|
337
|
+
console.log(JSON.stringify({ projectId, mainUrl, fileId, dirName }));
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
console.log(`项目 [${projectId}] 导入完成`);
|
|
341
|
+
console.log(` mainUrl: ${mainUrl}`);
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/commands/role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsN3D"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { AuthSession } from '../core/auth.js';
|
|
2
|
+
import { ApiClient } from '../core/client.js';
|
|
3
|
+
function flattenTree(nodes, depth = 0) {
|
|
4
|
+
const result = [];
|
|
5
|
+
for (const node of nodes) {
|
|
6
|
+
result.push({ ...node, depth });
|
|
7
|
+
if (node.children && node.children.length > 0) {
|
|
8
|
+
result.push(...flattenTree(node.children, depth + 1));
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
function findRoleInTree(nodes, id) {
|
|
14
|
+
for (const node of nodes) {
|
|
15
|
+
if (node.id === id)
|
|
16
|
+
return node;
|
|
17
|
+
if (node.children && node.children.length > 0) {
|
|
18
|
+
const found = findRoleInTree(node.children, id);
|
|
19
|
+
if (found)
|
|
20
|
+
return found;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
export function registerRoleCommands(program) {
|
|
26
|
+
const role = program.command('role').description('角色管理');
|
|
27
|
+
role.command('list')
|
|
28
|
+
.description('列出所有角色(树形结构)')
|
|
29
|
+
.action(async () => {
|
|
30
|
+
const opts = program.opts();
|
|
31
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
32
|
+
if (!auth)
|
|
33
|
+
process.exit(1);
|
|
34
|
+
const client = new ApiClient(auth);
|
|
35
|
+
const baseUrl = auth.getBaseUrl();
|
|
36
|
+
const data = await client.get(`${baseUrl}/api/bs/auth/role/tree?menuCode=roleSettings`);
|
|
37
|
+
if (data?.code !== 200) {
|
|
38
|
+
console.error(`查询失败: ${data?.msg || '未知错误'}`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
const roles = data?.data?.data || [];
|
|
42
|
+
if (opts.json) {
|
|
43
|
+
console.log(JSON.stringify(roles, null, 2));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const flat = flattenTree(roles);
|
|
47
|
+
console.log(`共 ${flat.length} 个角色:`);
|
|
48
|
+
for (const r of flat) {
|
|
49
|
+
const indent = ' '.repeat(r.depth);
|
|
50
|
+
const canAdd = r.customParameters?.add ? '+' : '';
|
|
51
|
+
const canDel = r.customParameters?.del ? '-' : '';
|
|
52
|
+
const ops = [canAdd, canDel].filter(Boolean).join('');
|
|
53
|
+
const opStr = ops ? ` [${ops}]` : '';
|
|
54
|
+
console.log(`${indent}${r.id.padEnd(22)} ${r.content}${opStr}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
role.command('create')
|
|
59
|
+
.description('创建角色')
|
|
60
|
+
.argument('<name>', '角色名称')
|
|
61
|
+
.option('--parent <id>', '父角色 ID(不指定则创建顶级角色)')
|
|
62
|
+
.option('--code <code>', '角色编码')
|
|
63
|
+
.option('--remark <text>', '备注说明')
|
|
64
|
+
.action(async (name, cmdOpts) => {
|
|
65
|
+
const opts = program.opts();
|
|
66
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
67
|
+
if (!auth)
|
|
68
|
+
process.exit(1);
|
|
69
|
+
const client = new ApiClient(auth);
|
|
70
|
+
const baseUrl = auth.getBaseUrl();
|
|
71
|
+
// Generate a unique 19-digit ID
|
|
72
|
+
const roleId = String(Date.now()) + String(Math.floor(Math.random() * 900000 + 100000));
|
|
73
|
+
const roleCode = cmdOpts.code || String(Math.floor(Math.random() * 9000 + 1000));
|
|
74
|
+
// Resolve parent role info
|
|
75
|
+
let parentId = '';
|
|
76
|
+
let parentRole = [];
|
|
77
|
+
if (cmdOpts.parent) {
|
|
78
|
+
parentId = cmdOpts.parent;
|
|
79
|
+
// Look up parent role info from the role tree
|
|
80
|
+
const treeData = await client.get(`${baseUrl}/api/bs/auth/role/tree?menuCode=roleSettings`);
|
|
81
|
+
if (treeData?.code === 200) {
|
|
82
|
+
const parent = findRoleInTree(treeData.data.data || [], parentId);
|
|
83
|
+
if (parent) {
|
|
84
|
+
parentRole = [{
|
|
85
|
+
id: parent.id,
|
|
86
|
+
name: parent.content,
|
|
87
|
+
_entityType: 'role',
|
|
88
|
+
icon: parent.icon || 'Icon-role',
|
|
89
|
+
tenantKey: auth.tenantKey,
|
|
90
|
+
delete: false,
|
|
91
|
+
}];
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
console.error(`警告: 未找到父角色 ${parentId},将创建顶级角色`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const payload = [{
|
|
99
|
+
parentRole,
|
|
100
|
+
id: roleId,
|
|
101
|
+
parentId,
|
|
102
|
+
roleCode,
|
|
103
|
+
roleName: name,
|
|
104
|
+
remark: cmdOpts.remark || '',
|
|
105
|
+
applicationIdList: [],
|
|
106
|
+
}];
|
|
107
|
+
const data = await client.post(`${baseUrl}/api/bs/auth/role/saveOrUpdate`, payload);
|
|
108
|
+
if (data?.code === 200 && data?.status) {
|
|
109
|
+
const created = data?.data?.[0] || {};
|
|
110
|
+
if (opts.json) {
|
|
111
|
+
console.log(JSON.stringify(created, null, 2));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
const pInfo = parentId ? ` (父角色: ${parentId})` : '';
|
|
115
|
+
console.log(`角色已创建: ${created.roleName || name} id=${created.id}${pInfo}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.error(`创建失败: ${data?.msg || '未知错误'}`);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
role.command('delete')
|
|
124
|
+
.description('删除角色')
|
|
125
|
+
.argument('<ids...>', '角色 ID(可多个)')
|
|
126
|
+
.action(async (ids) => {
|
|
127
|
+
const opts = program.opts();
|
|
128
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
129
|
+
if (!auth)
|
|
130
|
+
process.exit(1);
|
|
131
|
+
const client = new ApiClient(auth);
|
|
132
|
+
const baseUrl = auth.getBaseUrl();
|
|
133
|
+
const data = await client.post(`${baseUrl}/api/bs/auth/role/del`, {
|
|
134
|
+
roleIds: ids,
|
|
135
|
+
});
|
|
136
|
+
if (data?.code === 200 && data?.status) {
|
|
137
|
+
const msg = opts.json
|
|
138
|
+
? JSON.stringify({ success: true, deleted: ids })
|
|
139
|
+
: `已删除 ${ids.length} 个角色: ${ids.join(', ')}`;
|
|
140
|
+
console.log(msg);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.error(`删除失败: ${data?.msg || '未知错误'}`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
role.command('add-member')
|
|
148
|
+
.description('添加成员到角色')
|
|
149
|
+
.argument('<roleId>', '角色 ID')
|
|
150
|
+
.argument('<keyword>', '人员搜索关键词')
|
|
151
|
+
.action(async (roleId, keyword) => {
|
|
152
|
+
const opts = program.opts();
|
|
153
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
154
|
+
if (!auth)
|
|
155
|
+
process.exit(1);
|
|
156
|
+
const client = new ApiClient(auth);
|
|
157
|
+
const baseUrl = auth.getBaseUrl();
|
|
158
|
+
// Search for user
|
|
159
|
+
const userData = await client.post(`${baseUrl}/api/hrm/common/getEmployeeByKeyWords`, {
|
|
160
|
+
keyword,
|
|
161
|
+
searchType: 1,
|
|
162
|
+
searchCount: 1,
|
|
163
|
+
appDetachModule: 'EM',
|
|
164
|
+
disableAppDetach: 0,
|
|
165
|
+
pageNo: 1,
|
|
166
|
+
pageSize: 1,
|
|
167
|
+
});
|
|
168
|
+
if (userData?.code !== 200 || !userData?.data?.userList?.length) {
|
|
169
|
+
console.error(`未找到人员: ${keyword}`);
|
|
170
|
+
process.exit(1);
|
|
171
|
+
}
|
|
172
|
+
const emp = userData.data.userList[0];
|
|
173
|
+
const payload = {
|
|
174
|
+
objType: 'resource',
|
|
175
|
+
obj_level: '1',
|
|
176
|
+
seclevel: { max: 100, min: 0 },
|
|
177
|
+
org_permission: 'ALL_SCOPE',
|
|
178
|
+
position_level: '1',
|
|
179
|
+
isOpenSubcompany: false,
|
|
180
|
+
isSeclevel: false,
|
|
181
|
+
includeFlag: false,
|
|
182
|
+
isAll: false,
|
|
183
|
+
appDetach: false,
|
|
184
|
+
objectTypeFilter: ['resource', 'department', 'channel', 'position', 'all', 'external', 'allExternal'],
|
|
185
|
+
isRoleMaintainer: false,
|
|
186
|
+
expireType: 'UNLIMITED',
|
|
187
|
+
detach: true,
|
|
188
|
+
obj_resource: [{
|
|
189
|
+
id: emp.id || '',
|
|
190
|
+
cid: emp.cid || emp.companyId || '',
|
|
191
|
+
userid: emp.userid || emp.userId || emp.id || '',
|
|
192
|
+
name: emp.name || '',
|
|
193
|
+
statusCode: emp.statusCode || 'normal',
|
|
194
|
+
content: emp.name || '',
|
|
195
|
+
title: `${emp.name || ''}|${emp.department || ''}`,
|
|
196
|
+
contentDesc: emp.name || '',
|
|
197
|
+
department: emp.department || '',
|
|
198
|
+
avatar: emp.avatar || { previewPath: '', appPreviewPath: '', name: emp.name || '', userId: emp.id || '' },
|
|
199
|
+
indexType: 'R',
|
|
200
|
+
isLeaf: true,
|
|
201
|
+
templateType: 'default',
|
|
202
|
+
originTargetType: 'user',
|
|
203
|
+
pid: '',
|
|
204
|
+
richContent: emp.name || '',
|
|
205
|
+
departmentId: emp.departmentId || emp.departmentid || '',
|
|
206
|
+
mainId: emp.mainId || emp.id || '',
|
|
207
|
+
stopDepartment: false,
|
|
208
|
+
leaf: true,
|
|
209
|
+
}],
|
|
210
|
+
};
|
|
211
|
+
const data = await client.post(`${baseUrl}/api/bs/auth/role/${roleId}/member/save-or-update`, payload);
|
|
212
|
+
if (data?.code === 200 && data?.status) {
|
|
213
|
+
const msg = opts.json
|
|
214
|
+
? JSON.stringify({ success: true, roleId, member: emp.name })
|
|
215
|
+
: `已添加成员: ${emp.name} (${emp.id}) → 角色 ${roleId}`;
|
|
216
|
+
console.log(msg);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
console.error(`添加失败: ${data?.msg || '未知错误'}`);
|
|
220
|
+
process.exit(1);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/commands/role.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/commands/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD3D"}
|