@steedos/service-plugin-amis 2.3.0-beta.12 → 2.3.0-beta.15
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/main/default/client/amis.render.client.js +47 -9
- package/main/default/pages/apps_form.page.amis.json +526 -0
- package/main/default/pages/apps_form.page.yml +14 -0
- package/main/default/pages/generate_object_tabs.page.amis.json +102 -0
- package/main/default/pages/generate_object_tabs.page.yml +7 -0
- package/main/default/pages/object_layouts.page.amis.json +695 -705
- package/main/default/services/metadata/objects.service.js +137 -0
- package/package.json +2 -2
- package/public/amis/amis.css +1 -1
|
@@ -127,6 +127,26 @@ module.exports = {
|
|
|
127
127
|
|
|
128
128
|
return { status: 0, data: { options } }
|
|
129
129
|
},
|
|
130
|
+
},
|
|
131
|
+
getObjectsForGenerateTabsOptions: {
|
|
132
|
+
rest: {
|
|
133
|
+
method: "GET",
|
|
134
|
+
path: "/objects/generate_tabs_options"
|
|
135
|
+
},
|
|
136
|
+
async handler(ctx) {
|
|
137
|
+
const options = await this.getObjectsGenerateTabsOptions(ctx);
|
|
138
|
+
return { status: 0, data: { options } }
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
generateTabs: {
|
|
142
|
+
rest: {
|
|
143
|
+
method: "POST",
|
|
144
|
+
path: "/objects/generate/tabs"
|
|
145
|
+
},
|
|
146
|
+
async handler(ctx) {
|
|
147
|
+
const result = await this.generateTabs(ctx);
|
|
148
|
+
return { status: 0, data: result }
|
|
149
|
+
}
|
|
130
150
|
}
|
|
131
151
|
},
|
|
132
152
|
|
|
@@ -357,6 +377,123 @@ module.exports = {
|
|
|
357
377
|
})
|
|
358
378
|
return options;
|
|
359
379
|
}
|
|
380
|
+
},
|
|
381
|
+
getObjectsGenerateTabsOptions: {
|
|
382
|
+
async handler(ctx) {
|
|
383
|
+
const userSession = ctx.meta.user;
|
|
384
|
+
const lng = userSession.language || 'zh-CN';
|
|
385
|
+
const spaceId = userSession.spaceId;
|
|
386
|
+
const objectTabs = await objectql.getObject('tabs').find({filters: [['type', '=', "object"]]});
|
|
387
|
+
const tabObjects = _.map(objectTabs, "object");
|
|
388
|
+
const allMetadataObjects = await objectql.getSteedosSchema().getAllObject();
|
|
389
|
+
const allObjects = _.map(clone(allMetadataObjects), 'metadata');
|
|
390
|
+
const query = {
|
|
391
|
+
filters: [['hidden', '!=', true], ['name', '<>', tabObjects]],
|
|
392
|
+
projection: {
|
|
393
|
+
name: 1,
|
|
394
|
+
label: 1
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
// 只列出未找到tabs记录的对象清单
|
|
398
|
+
const objects = objectql.getSteedosSchema().metadataDriver.find(allObjects, query, spaceId);
|
|
399
|
+
|
|
400
|
+
_.each(objects, (object)=>{
|
|
401
|
+
if(object && object.name){
|
|
402
|
+
steedosI18n.translationObject(lng, object.name, object)
|
|
403
|
+
}
|
|
404
|
+
})
|
|
405
|
+
return _.map(objects, (object)=>{
|
|
406
|
+
return {
|
|
407
|
+
value: object.name,
|
|
408
|
+
label: object.label || object.name
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
generateTabs: {
|
|
414
|
+
async handler(ctx) {
|
|
415
|
+
let selectedObjects = ctx.params && ctx.params.objects && ctx.params.objects.split(",");
|
|
416
|
+
if(!selectedObjects || !selectedObjects.length){
|
|
417
|
+
return {
|
|
418
|
+
doneCount:0,
|
|
419
|
+
errors: []
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
const userSession = ctx.meta.user;
|
|
423
|
+
const lng = userSession.language || 'zh-CN';
|
|
424
|
+
const spaceId = userSession.spaceId;
|
|
425
|
+
const userId = userSession.userId;
|
|
426
|
+
const companyId = userSession.company_id;
|
|
427
|
+
const companyIds = userSession.company_ids;
|
|
428
|
+
const allMetadataObjects = await objectql.getSteedosSchema().getAllObject();
|
|
429
|
+
const allObjects = _.map(clone(allMetadataObjects), 'metadata');
|
|
430
|
+
const query = {
|
|
431
|
+
filters: [['name', 'in', selectedObjects]], //['hidden', '!=', true] ,
|
|
432
|
+
projection: {
|
|
433
|
+
name: 1,
|
|
434
|
+
label: 1
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
const objects = objectql.getSteedosSchema().metadataDriver.find(allObjects, query, spaceId);
|
|
439
|
+
|
|
440
|
+
_.each(objects, (object) => {
|
|
441
|
+
if (object && object.name) {
|
|
442
|
+
steedosI18n.translationObject(lng, object.name, object)
|
|
443
|
+
}
|
|
444
|
+
})
|
|
445
|
+
const errors = [];
|
|
446
|
+
let doneCount = 0;
|
|
447
|
+
for(let i = 0;i < objects.length; i++) {
|
|
448
|
+
const object = objects[i];
|
|
449
|
+
try{
|
|
450
|
+
const existCount = await objectql.getObject('tabs').count({filters: [['object', '=', object.name]]});
|
|
451
|
+
if(existCount > 0){
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
const tabLabel = object.label || object.name;
|
|
455
|
+
const tabName = "object_" + object.name.replace(/__c$/, "");
|
|
456
|
+
const now = new Date();
|
|
457
|
+
const doc = {
|
|
458
|
+
label: tabLabel,
|
|
459
|
+
name: tabName,
|
|
460
|
+
icon: object.icon,
|
|
461
|
+
type: "object",
|
|
462
|
+
mobile: true,
|
|
463
|
+
desktop: true,
|
|
464
|
+
object: object.name,
|
|
465
|
+
space: spaceId,
|
|
466
|
+
owner: userId,
|
|
467
|
+
created_by: userId,
|
|
468
|
+
created: now,
|
|
469
|
+
modified_by: userId,
|
|
470
|
+
modified: now,
|
|
471
|
+
company_id: companyId,
|
|
472
|
+
company_ids: companyIds
|
|
473
|
+
};
|
|
474
|
+
const tab = await objectql.getObject('tabs').insert(doc);
|
|
475
|
+
if(tab && tab._id){
|
|
476
|
+
doneCount++;
|
|
477
|
+
}
|
|
478
|
+
else{
|
|
479
|
+
errors.push({
|
|
480
|
+
object: (object.label || object.name) + `(${object.name})`,
|
|
481
|
+
message: ""
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
catch(ex){
|
|
486
|
+
errors.push({
|
|
487
|
+
object: (object.label || object.name) + `(${object.name})`,
|
|
488
|
+
message: ex.message
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
return {
|
|
493
|
+
doneCount:doneCount,
|
|
494
|
+
errors: errors
|
|
495
|
+
}
|
|
496
|
+
}
|
|
360
497
|
}
|
|
361
498
|
}
|
|
362
499
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-plugin-amis",
|
|
3
|
-
"version": "2.3.0-beta.
|
|
3
|
+
"version": "2.3.0-beta.15",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "node .scripts/build.tailwind.js"
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
12
12
|
},
|
|
13
|
-
"gitHead": "
|
|
13
|
+
"gitHead": "c3db84dc93be4194cf902d5db0f5522b6d18281b"
|
|
14
14
|
}
|
package/public/amis/amis.css
CHANGED
|
@@ -52,7 +52,7 @@ body{
|
|
|
52
52
|
min-width: 100px;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
.steedos-amis-form .antd-Collapse .antd-Form--normal{
|
|
55
|
+
.steedos-amis-form .antd-Collapse .antd-Form--normal, .antd-Form--normal .antd-Tabs .antd-Tabs-content .antd-Tabs-pane .form-content{
|
|
56
56
|
display: grid!important;
|
|
57
57
|
grid-template-columns: repeat(2,minmax(0,1fr))!important;
|
|
58
58
|
grid-row-gap: 1rem!important;
|