@steedos-widgets/amis-lib 1.2.3 → 1.2.6-beta.10
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/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/index.cjs.js +204 -178
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +205 -179
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +204 -178
- package/dist/index.umd.js.map +1 -1
- package/dist/types/lib/converter/amis/api.d.ts +4 -0
- package/dist/types/lib/converter/amis/fields_filter.d.ts +29 -23
- package/dist/types/lib/converter/amis/header.d.ts +13 -14
- package/dist/types/lib/converter/amis/index.d.ts +4 -0
- package/dist/types/lib/converter/amis/toolbar.d.ts +13 -14
- package/dist/types/lib/objects.d.ts +4 -0
- package/dist/types/lib/objectsRelated.d.ts +2 -0
- package/dist/types/lib/page_init.d.ts +4 -0
- package/dist/types/schema/standard_new.amis.d.ts +22 -0
- package/dist/types/standard/button.d.ts +22 -0
- package/package.json +2 -2
package/dist/index.cjs.js
CHANGED
|
@@ -361,7 +361,7 @@ const getSteedosAuth = () => {
|
|
|
361
361
|
* @Author: baozhoutao@steedos.com
|
|
362
362
|
* @Date: 2022-08-16 17:02:08
|
|
363
363
|
* @LastEditors: baozhoutao@steedos.com
|
|
364
|
-
* @LastEditTime: 2023-04-
|
|
364
|
+
* @LastEditTime: 2023-04-19 15:25:50
|
|
365
365
|
* @Description:
|
|
366
366
|
*/
|
|
367
367
|
|
|
@@ -373,7 +373,7 @@ const Router = {
|
|
|
373
373
|
return urlSearch.get('display')
|
|
374
374
|
}
|
|
375
375
|
// const key = `tab.${tab_id}.display`;
|
|
376
|
-
const key = `
|
|
376
|
+
const key = `page_display`;
|
|
377
377
|
const value = localStorage.getItem(key);
|
|
378
378
|
return value ? value : 'grid'
|
|
379
379
|
},
|
|
@@ -1395,8 +1395,8 @@ var config = {
|
|
|
1395
1395
|
/*
|
|
1396
1396
|
* @Author: baozhoutao@steedos.com
|
|
1397
1397
|
* @Date: 2022-11-01 15:51:00
|
|
1398
|
-
* @LastEditors:
|
|
1399
|
-
* @LastEditTime: 2023-04-
|
|
1398
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
1399
|
+
* @LastEditTime: 2023-04-19 20:26:27
|
|
1400
1400
|
* @Description:
|
|
1401
1401
|
*/
|
|
1402
1402
|
|
|
@@ -1506,7 +1506,27 @@ const getSchema$4 = async (uiSchema, ctx) => {
|
|
|
1506
1506
|
"id": "u:e11347411d2d",
|
|
1507
1507
|
"closeOnEsc": false,
|
|
1508
1508
|
"closeOnOutside": false,
|
|
1509
|
-
"size": "lg"
|
|
1509
|
+
"size": "lg",
|
|
1510
|
+
"actions": [
|
|
1511
|
+
{
|
|
1512
|
+
type: 'button',
|
|
1513
|
+
actionType: 'cancel',
|
|
1514
|
+
label: "取消"
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
type: 'button',
|
|
1518
|
+
label: "保存并新建",
|
|
1519
|
+
actionType: 'confirm',
|
|
1520
|
+
close: false,
|
|
1521
|
+
id: "confirmAndNew"
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
type: 'button',
|
|
1525
|
+
actionType: 'confirm',
|
|
1526
|
+
label: "保存",
|
|
1527
|
+
primary: true
|
|
1528
|
+
},
|
|
1529
|
+
]
|
|
1510
1530
|
}
|
|
1511
1531
|
}
|
|
1512
1532
|
]
|
|
@@ -2408,96 +2428,97 @@ async function getObjectFieldsFilterButtonSchema(objectSchema) {
|
|
|
2408
2428
|
}
|
|
2409
2429
|
}
|
|
2410
2430
|
|
|
2411
|
-
async function getObjectFieldsFilterFormSchema(
|
|
2412
|
-
|
|
2431
|
+
async function getObjectFieldsFilterFormSchema(ctx) {
|
|
2432
|
+
|
|
2433
|
+
if (!ctx) {
|
|
2413
2434
|
ctx = {};
|
|
2414
2435
|
}
|
|
2415
|
-
const
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2436
|
+
const formSchema = {
|
|
2437
|
+
"type": "service",
|
|
2438
|
+
"visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
|
|
2439
|
+
"className": ctx.formFactor === 'SMALL' ? "slds-filters__body p-0 mb-2" : "slds-filters__body p-0 sm:grid sm:gap-2 sm:grid-cols-4 mb-2",
|
|
2440
|
+
"schemaApi": {
|
|
2441
|
+
method: 'post',
|
|
2442
|
+
url: `\${context.rootUrl}/graphql?reload=\${filterFormSearchableFields|join}`,
|
|
2443
|
+
data: {
|
|
2444
|
+
$self: "$$",
|
|
2445
|
+
query: "{\n data: objects(filters: [[\"_id\",\"=\",null]],top: 1, skip: 0){_id}\n }"
|
|
2446
|
+
},
|
|
2447
|
+
requestAdaptor: `
|
|
2448
|
+
return {
|
|
2449
|
+
...api,
|
|
2450
|
+
data: {
|
|
2451
|
+
query: api.data.query
|
|
2452
|
+
}
|
|
2453
|
+
};
|
|
2454
|
+
`,
|
|
2455
|
+
adaptor: `
|
|
2456
|
+
if(payload.errors){
|
|
2457
|
+
payload.status = 2;
|
|
2458
|
+
payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
|
|
2459
|
+
}
|
|
2460
|
+
const selfData = api.body.$self;
|
|
2461
|
+
const filterFormSearchableFields = selfData.filterFormSearchableFields;
|
|
2462
|
+
const uiSchema = selfData.uiSchema;
|
|
2463
|
+
const fields = uiSchema.fields;
|
|
2464
|
+
const searchableFields = [];
|
|
2465
|
+
|
|
2466
|
+
const resolveAll = function(values){
|
|
2467
|
+
payload.data = {
|
|
2468
|
+
"body": values
|
|
2469
|
+
};
|
|
2470
|
+
return payload;
|
|
2471
|
+
}
|
|
2472
|
+
|
|
2473
|
+
const rejectAll = function(){
|
|
2474
|
+
console.warn("run function getFieldSearchable failed.");
|
|
2475
|
+
}
|
|
2476
|
+
|
|
2477
|
+
return Promise.all(filterFormSearchableFields.map(function (item) {
|
|
2478
|
+
const field = _.clone(fields[item]);
|
|
2479
|
+
if (
|
|
2480
|
+
!_.includes(
|
|
2481
|
+
[
|
|
2482
|
+
"grid",
|
|
2483
|
+
"avatar",
|
|
2484
|
+
"image",
|
|
2485
|
+
"object",
|
|
2486
|
+
"[object]",
|
|
2487
|
+
"[Object]",
|
|
2488
|
+
"[grid]",
|
|
2489
|
+
"[text]",
|
|
2490
|
+
"audio",
|
|
2491
|
+
"file",
|
|
2492
|
+
],
|
|
2493
|
+
field.type
|
|
2494
|
+
)
|
|
2495
|
+
) {
|
|
2496
|
+
delete field.defaultValue;
|
|
2497
|
+
delete field.required;
|
|
2498
|
+
delete field.is_wide;
|
|
2499
|
+
delete field.readonly;
|
|
2500
|
+
delete field.hidden;
|
|
2501
|
+
delete field.omit;
|
|
2502
|
+
var ctx = ${JSON.stringify(ctx)};
|
|
2503
|
+
const amisField = window.getFieldSearchable(field, fields, ctx);
|
|
2504
|
+
return amisField;
|
|
2505
|
+
}
|
|
2506
|
+
})).then(resolveAll, rejectAll);
|
|
2507
|
+
`,
|
|
2508
|
+
headers: {
|
|
2509
|
+
Authorization: "Bearer ${context.tenantId},${context.authToken}"
|
|
2443
2510
|
}
|
|
2444
2511
|
}
|
|
2445
|
-
}
|
|
2446
|
-
_$1.map(body, "name");
|
|
2447
|
-
if(ctx.enableSearchableFieldsVisibleOn){
|
|
2448
|
-
body.forEach(function(fieldItem){
|
|
2449
|
-
fieldItem.visibleOn = `this.filterFormSearchableFields && this.filterFormSearchableFields.indexOf("${fieldItem.fieldName}") > -1`;
|
|
2450
|
-
// fieldItem.clearValueOnHidden = true;//这个属性会把form字段值删除,但是点击搜索时crud还是把值给传递到过滤条件(api.requestAdaptor的data.$self)中了,应该是crud的bug
|
|
2451
|
-
});
|
|
2452
|
-
}
|
|
2453
|
-
|
|
2454
|
-
// const onBroadcastSearchableFieldsChangeScript = `
|
|
2455
|
-
// const data = event.data;
|
|
2456
|
-
// const listViewId = data.listViewId;
|
|
2457
|
-
// const searchableFields = data.fields;
|
|
2458
|
-
// const preSearchableFields = data.__super.__super.fields;
|
|
2459
|
-
// const removedFields = _.difference(preSearchableFields, searchableFields);
|
|
2460
|
-
// const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;
|
|
2461
|
-
// let localListViewProps = localStorage.getItem(listViewPropsStoreKey);
|
|
2462
|
-
// if(localListViewProps){
|
|
2463
|
-
// // 当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。
|
|
2464
|
-
// localListViewProps = JSON.parse(localListViewProps);
|
|
2465
|
-
// let removedKeys = [];
|
|
2466
|
-
// _.each(localListViewProps, function(n,k){
|
|
2467
|
-
// // __searchable__开头的不在searchableFields范围则清除其值
|
|
2468
|
-
// let isRemoved = !!removedFields.find(function(fieldName){
|
|
2469
|
-
// return new RegExp("__searchable__\.*" + fieldName + "$").test(k);
|
|
2470
|
-
// });
|
|
2471
|
-
// if(isRemoved){
|
|
2472
|
-
// removedKeys.push(k);
|
|
2473
|
-
// }
|
|
2474
|
-
// });
|
|
2475
|
-
// const removedValues = {};
|
|
2476
|
-
// removedKeys.forEach(function(key){
|
|
2477
|
-
// delete localListViewProps[key];
|
|
2478
|
-
// removedValues[key] = "";
|
|
2479
|
-
// });
|
|
2480
|
-
// doAction({
|
|
2481
|
-
// actionType: 'setValue',
|
|
2482
|
-
// args: {
|
|
2483
|
-
// value: removedValues
|
|
2484
|
-
// }
|
|
2485
|
-
// });
|
|
2486
|
-
// localStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));
|
|
2487
|
-
// }
|
|
2488
|
-
// `;
|
|
2512
|
+
};
|
|
2489
2513
|
|
|
2490
|
-
return
|
|
2514
|
+
return formSchema;
|
|
2491
2515
|
}
|
|
2492
2516
|
|
|
2493
|
-
async function getObjectFieldsFilterBarSchema(objectSchema,
|
|
2494
|
-
|
|
2495
|
-
if(!ctx){
|
|
2517
|
+
async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
2518
|
+
if (!ctx) {
|
|
2496
2519
|
ctx = {};
|
|
2497
2520
|
}
|
|
2498
|
-
const filterFormSchema = await getObjectFieldsFilterFormSchema(
|
|
2499
|
-
enableSearchableFieldsVisibleOn: true
|
|
2500
|
-
}, ctx));
|
|
2521
|
+
const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
|
|
2501
2522
|
const onSearchScript = `
|
|
2502
2523
|
const scope = event.context.scoped;
|
|
2503
2524
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
@@ -2530,18 +2551,21 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
|
|
|
2530
2551
|
searchableFieldsStoreKey += listViewId;
|
|
2531
2552
|
}
|
|
2532
2553
|
let defaultSearchableFields = sessionStorage.getItem(searchableFieldsStoreKey);
|
|
2533
|
-
if(
|
|
2554
|
+
if(defaultSearchableFields){
|
|
2555
|
+
defaultSearchableFields = defaultSearchableFields.split(",");
|
|
2556
|
+
}
|
|
2557
|
+
if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
|
|
2534
2558
|
let listView = data.uiSchema.list_views[data.listName];
|
|
2535
|
-
|
|
2536
|
-
if(
|
|
2537
|
-
defaultSearchableFields = _.map(
|
|
2559
|
+
const sFields = listView && listView.searchable_fields;
|
|
2560
|
+
if(sFields && sFields.length){
|
|
2561
|
+
defaultSearchableFields = _.map(sFields, 'field');
|
|
2538
2562
|
}
|
|
2539
2563
|
}
|
|
2540
2564
|
if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
|
|
2541
2565
|
defaultSearchableFields = _.map(
|
|
2542
|
-
_.filter(_.values(data.uiSchema.fields), (field) => {
|
|
2566
|
+
_.sortBy(_.filter(_.values(data.uiSchema.fields), (field) => {
|
|
2543
2567
|
return field.searchable;
|
|
2544
|
-
}),
|
|
2568
|
+
}), "sort_no"),
|
|
2545
2569
|
"name"
|
|
2546
2570
|
);
|
|
2547
2571
|
}
|
|
@@ -2679,7 +2703,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
|
|
|
2679
2703
|
// "filterFormValues": {"__searchable__name": "xxx"},//搜索项表单值
|
|
2680
2704
|
// "listViewId": "${listViewId}"
|
|
2681
2705
|
},
|
|
2682
|
-
"id": `service_listview_filter_form_${objectSchema.name}`,
|
|
2706
|
+
// "id": `service_listview_filter_form_${objectSchema.name}`,
|
|
2683
2707
|
"dataProvider": {
|
|
2684
2708
|
"inited": dataProviderInited
|
|
2685
2709
|
},
|
|
@@ -2687,15 +2711,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
|
|
|
2687
2711
|
"type": "wrapper",
|
|
2688
2712
|
"body": {
|
|
2689
2713
|
"type": "wrapper",
|
|
2690
|
-
"body": [{
|
|
2691
|
-
"type": "wrapper",
|
|
2692
|
-
"body": [
|
|
2693
|
-
filterFormSchema
|
|
2694
|
-
],
|
|
2695
|
-
"size": "xs",
|
|
2696
|
-
"visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
|
|
2697
|
-
"className": ctx.formFactor === 'SMALL' ? "slds-filters__body p-0 mb-2": "slds-filters__body p-0 sm:grid sm:gap-2 sm:grid-cols-4 mb-2"
|
|
2698
|
-
}, {
|
|
2714
|
+
"body": [filterFormSchema, {
|
|
2699
2715
|
"type": "wrapper",
|
|
2700
2716
|
"body": {
|
|
2701
2717
|
"type": "wrapper",
|
|
@@ -3054,16 +3070,7 @@ async function getObjectListHeaderSecordLine(objectSchema, listViewName, ctx) {
|
|
|
3054
3070
|
* @returns amisSchema
|
|
3055
3071
|
*/
|
|
3056
3072
|
async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ctx) {
|
|
3057
|
-
const
|
|
3058
|
-
const fields = _$1.sortBy(
|
|
3059
|
-
_$1.compact(
|
|
3060
|
-
_$1.map(searchableFields, (fieldName) => {
|
|
3061
|
-
return objectSchema.fields[fieldName];
|
|
3062
|
-
})
|
|
3063
|
-
),
|
|
3064
|
-
"sort_no"
|
|
3065
|
-
);
|
|
3066
|
-
const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, fields, ctx);
|
|
3073
|
+
const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, ctx);
|
|
3067
3074
|
return fieldsFilterBarSchema;
|
|
3068
3075
|
}
|
|
3069
3076
|
|
|
@@ -3842,12 +3849,11 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
|
|
|
3842
3849
|
"objectApiName": "object_listviews",
|
|
3843
3850
|
"recordId": "${recordId}",
|
|
3844
3851
|
"mode": "edit",
|
|
3845
|
-
"initApiAdaptor": "",
|
|
3846
3852
|
"fields": [
|
|
3847
3853
|
"filters"
|
|
3848
3854
|
],
|
|
3849
3855
|
"initApiRequestAdaptor": "",
|
|
3850
|
-
"initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet data_tmp;\nif (recordId_tmp) {\n data_tmp = payload.data
|
|
3856
|
+
"initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet data_tmp;\nif (recordId_tmp) {\n data_tmp = payload.data;\n // 数据格式转换\n if (data_tmp) {\n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n try {\n data_tmp.filters = JSON.parse(data_tmp.filters);\n } catch (e) { }\n }\n\n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n data_tmp._filters_type_controller = 'function';\n } else {\n data_tmp._filters_type_controller = 'conditions'\n }\n\n if (data_tmp._filters_type_controller === 'conditions') {\n data_tmp._filters_conditions = window.amisConvert.filtersToConditions(data_tmp.filters || []);\n data_tmp.filters = data_tmp._filters_conditions;\n } else {\n data_tmp._filters_function = data_tmp.filters;\n }\n }\n}\nfor (key in data_tmp) {\n if (data_tmp[key] === null) {\n delete data_tmp[key];\n }\n}\npayload.data = Object.assign(payload.data, data_tmp);\ndelete payload.extensions;",
|
|
3851
3857
|
"apiRequestAdaptor": "const recordId = api.body.recordId;\nif (formData._filters_type_controller === 'conditions' && formData._filters_conditions) {\n formData.filters = window.amisConvert.conditionsToFilters(formData.filters);\n} else {\n formData.filters = formData._filters_function || null;\n}\n\ndelete formData._filters_type_controller;\ndelete formData._filters_conditions;\ndelete formData._filters_function;\n// 字符串拼接(不支持ES6``语法)\nquery = 'mutation{record: ' + objectName + '__insert(doc: {__saveData}){_id}}';\nif (api.body.recordId) {\n query = 'mutation{record: ' + objectName + '__update(id: \"' + recordId + '\", doc: {__saveData}){_id}}';\n};\n__saveData = JSON.stringify(JSON.stringify(formData));\napi.data = { query: query.replace('{__saveData}', __saveData) };\n",
|
|
3852
3858
|
"fieldsExtend": "{\"filters\": {\n \"visible_on\": \"true\",\n \"amis\": {\n \"type\": \"condition-builder\",\n \"label\": \"条件组件\",\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-listviews/getFilterFields?objectName=${objectName}\",\n \"dataType\": \"json\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n}",
|
|
3853
3859
|
"onEvent": {
|
|
@@ -3907,7 +3913,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
|
|
|
3907
3913
|
"recordId": "${recordId}",
|
|
3908
3914
|
"mode": "edit",
|
|
3909
3915
|
"fieldsExtend": "{\n \"columns\": {\n \"amis\": {\n \"type\": \"transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/fields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n },\n \"mobile_columns\": {\n \"group\": \"手机端\",\n \"amis\": {\n \"type\": \"transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/fields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n}",
|
|
3910
|
-
"initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet columns_tmp = {}, mobile_columns_tmp = {};\nif (recordId_tmp) {\n columns_tmp = payload.data.
|
|
3916
|
+
"initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet columns_tmp = {}, mobile_columns_tmp = {};\nif (recordId_tmp) {\n columns_tmp = payload.data.columns;\n mobile_columns_tmp = payload.data.mobile_columns;\n if (columns_tmp) {\n columns_tmp = lodash.map(columns_tmp, 'field');\n }\n if (mobile_columns_tmp) {\n mobile_columns_tmp = lodash.map(mobile_columns_tmp, 'field');\n }\n}\npayload.data.columns = columns_tmp;\npayload.data.mobile_columns = mobile_columns_tmp;\n\ndelete payload.extensions;\nreturn payload;",
|
|
3911
3917
|
"apiRequestAdaptor": "const formData_tmp = api.body.$;\nconst objectName_tmp = api.body.objectName;\nconst recordId_tmp = api.body.recordId;\n\nif (typeof formData_tmp.columns == 'string') {\n formData_tmp.columns = formData_tmp.columns?.split(',');\n}\nif (typeof formData_tmp.mobile_columns == 'string') {\n formData_tmp.mobile_columns = formData_tmp.mobile_columns?.split(',');\n}\n\n// 数据格式转换\nformData_tmp.columns = lodash.map(formData_tmp.columns, (item) => {\n return { field: item };\n});\nformData.mobile_columns = lodash.map(formData.mobile_columns, (item) => {\n return { field: item };\n});\n\n// 字符串拼接(不支持ES6语法)\nlet query_tmp = 'mutation{record: ' + objectName_tmp + '__insert(doc: {__saveData}){_id}}';\nif (api.body.recordId) {\n query_tmp = 'mutation{record: ' + objectName_tmp + '__update(id: \"' + recordId_tmp +'\", doc: {__saveData}){_id}}';\n};\ndelete formData_tmp._id;\nlet __saveData_tmp = JSON.stringify(JSON.stringify(formData_tmp));\napi.data = { query: query_tmp.replace('{__saveData}', __saveData_tmp) };\n\nreturn api;",
|
|
3912
3918
|
"fields": [
|
|
3913
3919
|
"columns",
|
|
@@ -3989,7 +3995,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
|
|
|
3989
3995
|
}
|
|
3990
3996
|
},
|
|
3991
3997
|
"fieldsExtend": "{\n \"sort\": {\n \"amis\": {\n \"type\": \"tabs-transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/sortFields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n}",
|
|
3992
|
-
"initApiAdaptor": "let sort;\nif (recordId) {\n sort = payload.data.
|
|
3998
|
+
"initApiAdaptor": "let sort;\nif (recordId) {\n sort = payload.data.sort;\n //数据格式转换\n if (sort instanceof Array) {\n sort = lodash.map(sort, (item) => {\n return item.field_name + ':' + (item.order || 'asc')\n });\n }\n}\npayload.data.sort = sort;\ndelete payload.extensions;",
|
|
3993
3999
|
"apiRequestAdaptor": "const recordId = api.body.recordId;\n//数据格式转换\nif (typeof formData.sort == 'string') {\n formData.sort = formData.sort?.split(',');\n}\nformData.sort = lodash.map(formData.sort, (item) => {\n const arr = item.split(':');\n return { field_name: arr[0], order: arr[1] };\n});\nif (recordId) {\n query = 'mutation{record: ' + objectName + '__update(id: \"' + recordId + '\", doc: {__saveData}){_id}}';\n}\n__saveData = JSON.stringify(JSON.stringify(formData));\napi.data = { query: query.replace('{__saveData}', __saveData) };\n"
|
|
3994
4000
|
}
|
|
3995
4001
|
],
|
|
@@ -4528,13 +4534,16 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
4528
4534
|
var sort = orderBy + ' ' + orderDir;
|
|
4529
4535
|
sort = orderBy ? sort : "${sort}";
|
|
4530
4536
|
var allowSearchFields = ${JSON.stringify(searchableFields)};
|
|
4537
|
+
let fieldValue;
|
|
4531
4538
|
if(api.data.$term){
|
|
4532
4539
|
filters = [["name", "contains", "'+ api.data.$term +'"]];
|
|
4533
4540
|
}else if(selfData.op === 'loadOptions' && selfData.value){
|
|
4534
4541
|
if(selfData.value?.indexOf(',') > 0){
|
|
4535
|
-
|
|
4542
|
+
fieldValue = selfData.value.split(',');
|
|
4543
|
+
filters = [["${referenceTo.valueField.name}", "=", fieldValue]];
|
|
4536
4544
|
}else{
|
|
4537
|
-
|
|
4545
|
+
fieldValue = selfData.value;
|
|
4546
|
+
filters = [["${referenceTo.valueField.name}", "=", fieldValue]];
|
|
4538
4547
|
}
|
|
4539
4548
|
}
|
|
4540
4549
|
|
|
@@ -4588,6 +4597,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
4588
4597
|
if(enable_tree){
|
|
4589
4598
|
pageSize = 10000;
|
|
4590
4599
|
}
|
|
4600
|
+
if(fieldValue && _.isArray(fieldValue) && fieldValue.length > pageSize){
|
|
4601
|
+
pageSize = fieldValue.length;
|
|
4602
|
+
}
|
|
4591
4603
|
api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());
|
|
4592
4604
|
return api;
|
|
4593
4605
|
`;
|
|
@@ -4688,13 +4700,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
4688
4700
|
//TODO: 等待放大镜bug修复,if会去掉,始终显示放大镜
|
|
4689
4701
|
if(referenceTo.objectName != "space_users" || field.reference_to_field != "user"){
|
|
4690
4702
|
if (ctx.filterVisible !== false) {
|
|
4691
|
-
let filterLoopCount = ctx.filterLoopCount || 0;
|
|
4692
|
-
filterLoopCount++;
|
|
4693
|
-
// 可以传入filterVisible为false防止死循环
|
|
4694
4703
|
pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
|
|
4695
4704
|
isLookup: true,
|
|
4696
|
-
...ctx
|
|
4697
|
-
filterLoopCount,
|
|
4705
|
+
...ctx
|
|
4698
4706
|
});
|
|
4699
4707
|
}
|
|
4700
4708
|
}
|
|
@@ -5673,7 +5681,7 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
5673
5681
|
columnsTogglable: false,
|
|
5674
5682
|
strictMode:false,
|
|
5675
5683
|
affixHeader: false, // 是否固定表头, 不固定表头, 否则form有y轴滚动条时, 表头会跟随滚动条滚动.
|
|
5676
|
-
|
|
5684
|
+
needConfirm: false,
|
|
5677
5685
|
editable: !readonly,
|
|
5678
5686
|
addable: !readonly,
|
|
5679
5687
|
removable: !readonly,
|
|
@@ -5752,6 +5760,14 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
5752
5760
|
convertData.visibleOn = `${field.visible_on.replace(/formData./g, 'data.')}`;
|
|
5753
5761
|
}
|
|
5754
5762
|
}
|
|
5763
|
+
|
|
5764
|
+
if(___namespace.isString(baseData.required)){
|
|
5765
|
+
if(baseData.required.startsWith("{{")){
|
|
5766
|
+
baseData.requiredOn = `${baseData.required.substring(2, baseData.required.length -2).replace(/formData./g, 'data.')}`;
|
|
5767
|
+
delete baseData.required;
|
|
5768
|
+
}
|
|
5769
|
+
}
|
|
5770
|
+
|
|
5755
5771
|
if(convertData.type === 'group'){
|
|
5756
5772
|
convertData.body[0] = Object.assign({}, baseData, convertData.body[0], { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});
|
|
5757
5773
|
return convertData
|
|
@@ -5766,8 +5782,9 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
5766
5782
|
}
|
|
5767
5783
|
|
|
5768
5784
|
async function getFieldSearchable(perField, permissionFields, ctx){
|
|
5769
|
-
|
|
5770
|
-
|
|
5785
|
+
if(!ctx){
|
|
5786
|
+
ctx = {};
|
|
5787
|
+
}
|
|
5771
5788
|
let field = perField;
|
|
5772
5789
|
if(field.type === 'grid'){
|
|
5773
5790
|
field = await getGridFieldSubFields(perField, permissionFields);
|
|
@@ -5828,14 +5845,17 @@ async function getFieldSearchable(perField, permissionFields, ctx){
|
|
|
5828
5845
|
_field.multiple = true;
|
|
5829
5846
|
_field.is_wide = false;
|
|
5830
5847
|
_field.defaultValue = undefined;
|
|
5831
|
-
|
|
5832
|
-
const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, filterVisible: filterLoopCount < maxFilterLoopCount}));
|
|
5848
|
+
const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true}));
|
|
5833
5849
|
if(amisField){
|
|
5834
5850
|
return amisField;
|
|
5835
5851
|
}
|
|
5836
5852
|
}
|
|
5837
5853
|
}
|
|
5838
5854
|
|
|
5855
|
+
if(typeof window != 'undefined'){
|
|
5856
|
+
window.getFieldSearchable = getFieldSearchable;
|
|
5857
|
+
}
|
|
5858
|
+
|
|
5839
5859
|
var index = /*#__PURE__*/Object.freeze({
|
|
5840
5860
|
__proto__: null,
|
|
5841
5861
|
OMIT_FIELDS: OMIT_FIELDS,
|
|
@@ -6015,12 +6035,12 @@ function getScriptForRewriteValueForFileFields(fields){
|
|
|
6015
6035
|
});
|
|
6016
6036
|
}
|
|
6017
6037
|
}else{
|
|
6018
|
-
data[item] = {
|
|
6038
|
+
data[item] = [{
|
|
6019
6039
|
value: fileFieldValue,
|
|
6020
6040
|
name: fileFieldDisplayValue.name,
|
|
6021
6041
|
url: fileFieldDisplayValue.url + "?download=true",
|
|
6022
6042
|
state: "uploaded"
|
|
6023
|
-
};
|
|
6043
|
+
}];
|
|
6024
6044
|
}
|
|
6025
6045
|
}
|
|
6026
6046
|
})
|
|
@@ -6096,12 +6116,12 @@ async function getEditFormInitApi(object, recordId, fields, options){
|
|
|
6096
6116
|
if(uiSchema.form){
|
|
6097
6117
|
try{
|
|
6098
6118
|
var objectFormConfig = JSON.parse(uiSchema.form);
|
|
6099
|
-
|
|
6100
|
-
if(
|
|
6101
|
-
|
|
6119
|
+
var formInitialValuesFun = objectFormConfig.initialValues;
|
|
6120
|
+
if(formInitialValuesFun){
|
|
6121
|
+
formInitialValuesFun = new Function("return " + formInitialValuesFun)();
|
|
6102
6122
|
}
|
|
6103
|
-
if(typeof
|
|
6104
|
-
initialValues =
|
|
6123
|
+
if(typeof formInitialValuesFun === "function"){
|
|
6124
|
+
initialValues = formInitialValuesFun.apply({doc: defaultValues || {} , global: api.body.global})
|
|
6105
6125
|
}
|
|
6106
6126
|
}
|
|
6107
6127
|
catch(ex){
|
|
@@ -6118,12 +6138,15 @@ async function getEditFormInitApi(object, recordId, fields, options){
|
|
|
6118
6138
|
}
|
|
6119
6139
|
// data下的变量需要在保存接口(getSaveApi)中被删除。
|
|
6120
6140
|
payload.data = {
|
|
6121
|
-
initialValues
|
|
6122
|
-
editFormInited: true
|
|
6141
|
+
...initialValues
|
|
6123
6142
|
}
|
|
6124
6143
|
${options.initApiAdaptor || ''}
|
|
6125
6144
|
return payload;
|
|
6126
6145
|
`,
|
|
6146
|
+
responseData: {
|
|
6147
|
+
initialValues: "$$",
|
|
6148
|
+
editFormInited: true
|
|
6149
|
+
},
|
|
6127
6150
|
data: data,
|
|
6128
6151
|
headers: {
|
|
6129
6152
|
Authorization: "Bearer ${context.tenantId},${context.authToken}"
|
|
@@ -6530,6 +6553,8 @@ async function getObjectForm(objectSchema, ctx){
|
|
|
6530
6553
|
},
|
|
6531
6554
|
labelAlign,
|
|
6532
6555
|
persistData: false,
|
|
6556
|
+
resetAfterSubmit: true,
|
|
6557
|
+
preventEnterSubmit: true,
|
|
6533
6558
|
promptPageLeave: true,
|
|
6534
6559
|
canAccessSuperData: false,
|
|
6535
6560
|
name: `form_edit_${recordId}`,
|
|
@@ -6567,10 +6592,14 @@ async function getObjectForm(objectSchema, ctx){
|
|
|
6567
6592
|
},
|
|
6568
6593
|
"expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
|
|
6569
6594
|
},
|
|
6570
|
-
{
|
|
6571
|
-
|
|
6572
|
-
|
|
6573
|
-
}
|
|
6595
|
+
// {
|
|
6596
|
+
// "actionType": "custom",
|
|
6597
|
+
// "script": "debugger;"
|
|
6598
|
+
// },
|
|
6599
|
+
// {
|
|
6600
|
+
// "args": {},
|
|
6601
|
+
// "actionType": "closeDialog"
|
|
6602
|
+
// }
|
|
6574
6603
|
]
|
|
6575
6604
|
}
|
|
6576
6605
|
}
|
|
@@ -6738,6 +6767,13 @@ async function getTableColumns(fields, options){
|
|
|
6738
6767
|
}else if(field.type === 'html'){
|
|
6739
6768
|
type = 'markdown';
|
|
6740
6769
|
}
|
|
6770
|
+
let className = "";
|
|
6771
|
+
if(field.type === 'textarea'){
|
|
6772
|
+
className = 'min-w-56';
|
|
6773
|
+
}
|
|
6774
|
+
if(field.wrap === false){
|
|
6775
|
+
className += " whitespace-nowrap";
|
|
6776
|
+
}
|
|
6741
6777
|
if(!field.hidden && !field.extra){
|
|
6742
6778
|
columns.push(Object.assign({}, {
|
|
6743
6779
|
name: field.name,
|
|
@@ -6748,7 +6784,7 @@ async function getTableColumns(fields, options){
|
|
|
6748
6784
|
type: type,
|
|
6749
6785
|
tpl: tpl,
|
|
6750
6786
|
toggled: field.toggled,
|
|
6751
|
-
className
|
|
6787
|
+
className,
|
|
6752
6788
|
html: field.type === 'html' ? true : null
|
|
6753
6789
|
// toggled: true
|
|
6754
6790
|
}, field.amis, {name: field.name}));
|
|
@@ -7088,13 +7124,17 @@ async function getTableApi(mainObject, fields, options){
|
|
|
7088
7124
|
}
|
|
7089
7125
|
|
|
7090
7126
|
api.data.$term = "$term";
|
|
7127
|
+
api.data.term = "$term";
|
|
7091
7128
|
api.data.$self = "$$";
|
|
7129
|
+
api.data.self = "$$";
|
|
7092
7130
|
api.data.filter = "$filter";
|
|
7093
7131
|
api.data.loaded = "${loaded}";
|
|
7094
7132
|
api.data.listViewId = "${listViewId}";
|
|
7095
7133
|
api.requestAdaptor = `
|
|
7096
7134
|
// selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.
|
|
7097
7135
|
let selfData = JSON.parse(JSON.stringify(api.data.$self));
|
|
7136
|
+
// 保留一份初始data,以供自定义发送适配器中获取原始数据。
|
|
7137
|
+
const data = _.cloneDeep(api.data);
|
|
7098
7138
|
try{
|
|
7099
7139
|
// TODO: 不应该直接在这里取localStorage,应该从外面传入
|
|
7100
7140
|
const listViewId = api.data.listViewId;
|
|
@@ -7240,7 +7280,6 @@ async function getTableApi(mainObject, fields, options){
|
|
|
7240
7280
|
if(_.isEmpty(filters)){
|
|
7241
7281
|
filters = userFilters;
|
|
7242
7282
|
}else{
|
|
7243
|
-
filters.push('and');
|
|
7244
7283
|
filters.push(userFilters)
|
|
7245
7284
|
}
|
|
7246
7285
|
}
|
|
@@ -7278,29 +7317,9 @@ async function getTableApi(mainObject, fields, options){
|
|
|
7278
7317
|
})
|
|
7279
7318
|
|
|
7280
7319
|
if(enable_tree){
|
|
7281
|
-
const records = payload.data.rows;
|
|
7282
|
-
const
|
|
7283
|
-
|
|
7284
|
-
if(!childrenIds){
|
|
7285
|
-
return;
|
|
7286
|
-
}
|
|
7287
|
-
const children = _.filter(records, (record)=>{
|
|
7288
|
-
return _.includes(childrenIds, record._id)
|
|
7289
|
-
});
|
|
7290
|
-
_.each(children, (item)=>{
|
|
7291
|
-
if(item.children){
|
|
7292
|
-
item.children = getChildren(records, item.children)
|
|
7293
|
-
}
|
|
7294
|
-
})
|
|
7295
|
-
return children;
|
|
7296
|
-
}
|
|
7297
|
-
|
|
7298
|
-
_.each(records, (record)=>{
|
|
7299
|
-
if(!record.parent){
|
|
7300
|
-
treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));
|
|
7301
|
-
}
|
|
7302
|
-
});
|
|
7303
|
-
payload.data.rows = treeRecords;
|
|
7320
|
+
const records = payload.data.rows || [];
|
|
7321
|
+
const getTreeOptions = SteedosUI.getTreeOptions
|
|
7322
|
+
payload.data.rows = getTreeOptions(records,{"valueField":"_id"});
|
|
7304
7323
|
}
|
|
7305
7324
|
|
|
7306
7325
|
|
|
@@ -7688,7 +7707,6 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
|
|
|
7688
7707
|
// ObjectForm会认作用域下的变量值
|
|
7689
7708
|
// TODO: 待组件支持initValues属性后应该改掉,不应该通过data直接传值
|
|
7690
7709
|
// TODO: 全天事件属性传入doc了但是没有生效,需要手动在ObjectForm中勾选全天事件
|
|
7691
|
-
event.data = doc;
|
|
7692
7710
|
const title = "新建 ${objectSchema.label}";
|
|
7693
7711
|
doAction(
|
|
7694
7712
|
{
|
|
@@ -7701,6 +7719,7 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
|
|
|
7701
7719
|
"type": "steedos-object-form",
|
|
7702
7720
|
"objectApiName": "\${objectName}",
|
|
7703
7721
|
"mode": "edit",
|
|
7722
|
+
"defaultData": doc,
|
|
7704
7723
|
"onEvent": {
|
|
7705
7724
|
"submitSucc": {
|
|
7706
7725
|
"weight": 0,
|
|
@@ -7993,7 +8012,7 @@ const getRecordPermissions = async (objectName, recordId)=>{
|
|
|
7993
8012
|
* @Author: baozhoutao@steedos.com
|
|
7994
8013
|
* @Date: 2022-07-05 15:55:39
|
|
7995
8014
|
* @LastEditors: Please set LastEditors
|
|
7996
|
-
* @LastEditTime: 2023-04-11
|
|
8015
|
+
* @LastEditTime: 2023-04-20 11:43:14
|
|
7997
8016
|
* @Description:
|
|
7998
8017
|
*/
|
|
7999
8018
|
|
|
@@ -8090,10 +8109,12 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
|
|
|
8090
8109
|
mainRelated[arr[0]] = arr[1];
|
|
8091
8110
|
}
|
|
8092
8111
|
}else {
|
|
8093
|
-
const details = mainObjectUiSchema.details || [];
|
|
8112
|
+
const details = _$1.union(mainObjectUiSchema.details,mainObjectUiSchema.lookup_details) || [];
|
|
8094
8113
|
for (const detail of details) {
|
|
8095
8114
|
const arr = detail.split(".");
|
|
8096
|
-
mainRelated
|
|
8115
|
+
if(!_$1.has(mainRelated,arr[0])){
|
|
8116
|
+
mainRelated[arr[0]] = arr[1];
|
|
8117
|
+
}
|
|
8097
8118
|
}
|
|
8098
8119
|
}
|
|
8099
8120
|
}
|
|
@@ -8298,13 +8319,17 @@ async function getRelatedListSchema(
|
|
|
8298
8319
|
delete ctx.globalFilter;
|
|
8299
8320
|
|
|
8300
8321
|
const adaptor = `
|
|
8301
|
-
|
|
8302
|
-
if(
|
|
8303
|
-
|
|
8304
|
-
|
|
8305
|
-
|
|
8306
|
-
|
|
8307
|
-
|
|
8322
|
+
try{
|
|
8323
|
+
if(setDataToComponentId){
|
|
8324
|
+
if(payload.data.count){
|
|
8325
|
+
setTimeout(function(){
|
|
8326
|
+
window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
|
|
8327
|
+
}, 10);
|
|
8328
|
+
}
|
|
8329
|
+
};
|
|
8330
|
+
}catch(e){
|
|
8331
|
+
console.log(e);
|
|
8332
|
+
}
|
|
8308
8333
|
`;
|
|
8309
8334
|
const amisSchema = {
|
|
8310
8335
|
"type": "steedos-object-table",
|
|
@@ -8315,7 +8340,8 @@ async function getRelatedListSchema(
|
|
|
8315
8340
|
"filtersFunction": filtersFunction,
|
|
8316
8341
|
"sort": listViewSort,
|
|
8317
8342
|
"filterVisible": false,
|
|
8318
|
-
|
|
8343
|
+
"requestAdaptor": ctx.requestAdaptor,
|
|
8344
|
+
"adaptor": adaptor + ctx.adaptor || '',
|
|
8319
8345
|
"ctx": ctx
|
|
8320
8346
|
};
|
|
8321
8347
|
// console.log(`getRelatedListSchema amisSchema`, amisSchema);
|