@steedos-widgets/amis-lib 1.2.3-beta.1 → 1.2.5
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 +184 -170
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +185 -171
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +184 -170
- 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.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _$1 from 'lodash';
|
|
2
|
-
import ___default, { isEmpty, isArray, each, find, endsWith, cloneDeep, includes, get, map,
|
|
2
|
+
import ___default, { isEmpty, isArray, each, find, endsWith, cloneDeep, includes, get, map, toArray, mergeWith, isBoolean, omitBy, isNil, isString, union, has, slice, defaultsDeep as defaultsDeep$1, isObject as isObject$1, filter, startsWith } from 'lodash';
|
|
3
3
|
import { Router as Router$1, getSteedosAuth as getSteedosAuth$1, lookupToAmis as lookupToAmis$1, fetchAPI as fetchAPI$1 } from '@steedos-widgets/amis-lib';
|
|
4
4
|
import isPlainObject from 'lodash/isPlainObject';
|
|
5
5
|
|
|
@@ -334,7 +334,7 @@ const getSteedosAuth = () => {
|
|
|
334
334
|
* @Author: baozhoutao@steedos.com
|
|
335
335
|
* @Date: 2022-08-16 17:02:08
|
|
336
336
|
* @LastEditors: baozhoutao@steedos.com
|
|
337
|
-
* @LastEditTime: 2023-04-
|
|
337
|
+
* @LastEditTime: 2023-04-19 15:25:50
|
|
338
338
|
* @Description:
|
|
339
339
|
*/
|
|
340
340
|
|
|
@@ -346,7 +346,7 @@ const Router = {
|
|
|
346
346
|
return urlSearch.get('display')
|
|
347
347
|
}
|
|
348
348
|
// const key = `tab.${tab_id}.display`;
|
|
349
|
-
const key = `
|
|
349
|
+
const key = `page_display`;
|
|
350
350
|
const value = localStorage.getItem(key);
|
|
351
351
|
return value ? value : 'grid'
|
|
352
352
|
},
|
|
@@ -1368,8 +1368,8 @@ var config = {
|
|
|
1368
1368
|
/*
|
|
1369
1369
|
* @Author: baozhoutao@steedos.com
|
|
1370
1370
|
* @Date: 2022-11-01 15:51:00
|
|
1371
|
-
* @LastEditors:
|
|
1372
|
-
* @LastEditTime: 2023-04-
|
|
1371
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
1372
|
+
* @LastEditTime: 2023-04-19 20:26:27
|
|
1373
1373
|
* @Description:
|
|
1374
1374
|
*/
|
|
1375
1375
|
|
|
@@ -1479,7 +1479,27 @@ const getSchema$4 = async (uiSchema, ctx) => {
|
|
|
1479
1479
|
"id": "u:e11347411d2d",
|
|
1480
1480
|
"closeOnEsc": false,
|
|
1481
1481
|
"closeOnOutside": false,
|
|
1482
|
-
"size": "lg"
|
|
1482
|
+
"size": "lg",
|
|
1483
|
+
"actions": [
|
|
1484
|
+
{
|
|
1485
|
+
type: 'button',
|
|
1486
|
+
actionType: 'cancel',
|
|
1487
|
+
label: "取消"
|
|
1488
|
+
},
|
|
1489
|
+
{
|
|
1490
|
+
type: 'button',
|
|
1491
|
+
label: "保存并新建",
|
|
1492
|
+
actionType: 'confirm',
|
|
1493
|
+
close: false,
|
|
1494
|
+
id: "confirmAndNew"
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
type: 'button',
|
|
1498
|
+
actionType: 'confirm',
|
|
1499
|
+
label: "保存",
|
|
1500
|
+
primary: true
|
|
1501
|
+
},
|
|
1502
|
+
]
|
|
1483
1503
|
}
|
|
1484
1504
|
}
|
|
1485
1505
|
]
|
|
@@ -2381,96 +2401,97 @@ async function getObjectFieldsFilterButtonSchema(objectSchema) {
|
|
|
2381
2401
|
}
|
|
2382
2402
|
}
|
|
2383
2403
|
|
|
2384
|
-
async function getObjectFieldsFilterFormSchema(
|
|
2385
|
-
|
|
2404
|
+
async function getObjectFieldsFilterFormSchema(ctx) {
|
|
2405
|
+
|
|
2406
|
+
if (!ctx) {
|
|
2386
2407
|
ctx = {};
|
|
2387
2408
|
}
|
|
2388
|
-
const
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2409
|
+
const formSchema = {
|
|
2410
|
+
"type": "service",
|
|
2411
|
+
"visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
|
|
2412
|
+
"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",
|
|
2413
|
+
"schemaApi": {
|
|
2414
|
+
method: 'post',
|
|
2415
|
+
url: `\${context.rootUrl}/graphql?reload=\${filterFormSearchableFields|join}`,
|
|
2416
|
+
data: {
|
|
2417
|
+
$self: "$$",
|
|
2418
|
+
query: "{\n data: objects(filters: [[\"_id\",\"=\",null]],top: 1, skip: 0){_id}\n }"
|
|
2419
|
+
},
|
|
2420
|
+
requestAdaptor: `
|
|
2421
|
+
return {
|
|
2422
|
+
...api,
|
|
2423
|
+
data: {
|
|
2424
|
+
query: api.data.query
|
|
2425
|
+
}
|
|
2426
|
+
};
|
|
2427
|
+
`,
|
|
2428
|
+
adaptor: `
|
|
2429
|
+
if(payload.errors){
|
|
2430
|
+
payload.status = 2;
|
|
2431
|
+
payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
|
|
2432
|
+
}
|
|
2433
|
+
const selfData = api.body.$self;
|
|
2434
|
+
const filterFormSearchableFields = selfData.filterFormSearchableFields;
|
|
2435
|
+
const uiSchema = selfData.uiSchema;
|
|
2436
|
+
const fields = uiSchema.fields;
|
|
2437
|
+
const searchableFields = [];
|
|
2438
|
+
|
|
2439
|
+
const resolveAll = function(values){
|
|
2440
|
+
payload.data = {
|
|
2441
|
+
"body": values
|
|
2442
|
+
};
|
|
2443
|
+
return payload;
|
|
2444
|
+
}
|
|
2445
|
+
|
|
2446
|
+
const rejectAll = function(){
|
|
2447
|
+
console.warn("run function getFieldSearchable failed.");
|
|
2448
|
+
}
|
|
2449
|
+
|
|
2450
|
+
return Promise.all(filterFormSearchableFields.map(function (item) {
|
|
2451
|
+
const field = _.clone(fields[item]);
|
|
2452
|
+
if (
|
|
2453
|
+
!_.includes(
|
|
2454
|
+
[
|
|
2455
|
+
"grid",
|
|
2456
|
+
"avatar",
|
|
2457
|
+
"image",
|
|
2458
|
+
"object",
|
|
2459
|
+
"[object]",
|
|
2460
|
+
"[Object]",
|
|
2461
|
+
"[grid]",
|
|
2462
|
+
"[text]",
|
|
2463
|
+
"audio",
|
|
2464
|
+
"file",
|
|
2465
|
+
],
|
|
2466
|
+
field.type
|
|
2467
|
+
)
|
|
2468
|
+
) {
|
|
2469
|
+
delete field.defaultValue;
|
|
2470
|
+
delete field.required;
|
|
2471
|
+
delete field.is_wide;
|
|
2472
|
+
delete field.readonly;
|
|
2473
|
+
delete field.hidden;
|
|
2474
|
+
delete field.omit;
|
|
2475
|
+
var ctx = ${JSON.stringify(ctx)};
|
|
2476
|
+
const amisField = window.getFieldSearchable(field, fields, ctx);
|
|
2477
|
+
return amisField;
|
|
2478
|
+
}
|
|
2479
|
+
})).then(resolveAll, rejectAll);
|
|
2480
|
+
`,
|
|
2481
|
+
headers: {
|
|
2482
|
+
Authorization: "Bearer ${context.tenantId},${context.authToken}"
|
|
2416
2483
|
}
|
|
2417
2484
|
}
|
|
2418
|
-
}
|
|
2419
|
-
map(body, "name");
|
|
2420
|
-
if(ctx.enableSearchableFieldsVisibleOn){
|
|
2421
|
-
body.forEach(function(fieldItem){
|
|
2422
|
-
fieldItem.visibleOn = `this.filterFormSearchableFields && this.filterFormSearchableFields.indexOf("${fieldItem.fieldName}") > -1`;
|
|
2423
|
-
// fieldItem.clearValueOnHidden = true;//这个属性会把form字段值删除,但是点击搜索时crud还是把值给传递到过滤条件(api.requestAdaptor的data.$self)中了,应该是crud的bug
|
|
2424
|
-
});
|
|
2425
|
-
}
|
|
2426
|
-
|
|
2427
|
-
// const onBroadcastSearchableFieldsChangeScript = `
|
|
2428
|
-
// const data = event.data;
|
|
2429
|
-
// const listViewId = data.listViewId;
|
|
2430
|
-
// const searchableFields = data.fields;
|
|
2431
|
-
// const preSearchableFields = data.__super.__super.fields;
|
|
2432
|
-
// const removedFields = _.difference(preSearchableFields, searchableFields);
|
|
2433
|
-
// const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;
|
|
2434
|
-
// let localListViewProps = localStorage.getItem(listViewPropsStoreKey);
|
|
2435
|
-
// if(localListViewProps){
|
|
2436
|
-
// // 当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。
|
|
2437
|
-
// localListViewProps = JSON.parse(localListViewProps);
|
|
2438
|
-
// let removedKeys = [];
|
|
2439
|
-
// _.each(localListViewProps, function(n,k){
|
|
2440
|
-
// // __searchable__开头的不在searchableFields范围则清除其值
|
|
2441
|
-
// let isRemoved = !!removedFields.find(function(fieldName){
|
|
2442
|
-
// return new RegExp("__searchable__\.*" + fieldName + "$").test(k);
|
|
2443
|
-
// });
|
|
2444
|
-
// if(isRemoved){
|
|
2445
|
-
// removedKeys.push(k);
|
|
2446
|
-
// }
|
|
2447
|
-
// });
|
|
2448
|
-
// const removedValues = {};
|
|
2449
|
-
// removedKeys.forEach(function(key){
|
|
2450
|
-
// delete localListViewProps[key];
|
|
2451
|
-
// removedValues[key] = "";
|
|
2452
|
-
// });
|
|
2453
|
-
// doAction({
|
|
2454
|
-
// actionType: 'setValue',
|
|
2455
|
-
// args: {
|
|
2456
|
-
// value: removedValues
|
|
2457
|
-
// }
|
|
2458
|
-
// });
|
|
2459
|
-
// localStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));
|
|
2460
|
-
// }
|
|
2461
|
-
// `;
|
|
2485
|
+
};
|
|
2462
2486
|
|
|
2463
|
-
return
|
|
2487
|
+
return formSchema;
|
|
2464
2488
|
}
|
|
2465
2489
|
|
|
2466
|
-
async function getObjectFieldsFilterBarSchema(objectSchema,
|
|
2467
|
-
|
|
2468
|
-
if(!ctx){
|
|
2490
|
+
async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
2491
|
+
if (!ctx) {
|
|
2469
2492
|
ctx = {};
|
|
2470
2493
|
}
|
|
2471
|
-
const filterFormSchema = await getObjectFieldsFilterFormSchema(
|
|
2472
|
-
enableSearchableFieldsVisibleOn: true
|
|
2473
|
-
}, ctx));
|
|
2494
|
+
const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
|
|
2474
2495
|
const onSearchScript = `
|
|
2475
2496
|
const scope = event.context.scoped;
|
|
2476
2497
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
@@ -2503,18 +2524,21 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
|
|
|
2503
2524
|
searchableFieldsStoreKey += listViewId;
|
|
2504
2525
|
}
|
|
2505
2526
|
let defaultSearchableFields = sessionStorage.getItem(searchableFieldsStoreKey);
|
|
2506
|
-
if(
|
|
2527
|
+
if(defaultSearchableFields){
|
|
2528
|
+
defaultSearchableFields = defaultSearchableFields.split(",");
|
|
2529
|
+
}
|
|
2530
|
+
if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
|
|
2507
2531
|
let listView = data.uiSchema.list_views[data.listName];
|
|
2508
|
-
|
|
2509
|
-
if(
|
|
2510
|
-
defaultSearchableFields = _.map(
|
|
2532
|
+
const sFields = listView && listView.searchable_fields;
|
|
2533
|
+
if(sFields && sFields.length){
|
|
2534
|
+
defaultSearchableFields = _.map(sFields, 'field');
|
|
2511
2535
|
}
|
|
2512
2536
|
}
|
|
2513
2537
|
if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
|
|
2514
2538
|
defaultSearchableFields = _.map(
|
|
2515
|
-
_.filter(_.values(data.uiSchema.fields), (field) => {
|
|
2539
|
+
_.sortBy(_.filter(_.values(data.uiSchema.fields), (field) => {
|
|
2516
2540
|
return field.searchable;
|
|
2517
|
-
}),
|
|
2541
|
+
}), "sort_no"),
|
|
2518
2542
|
"name"
|
|
2519
2543
|
);
|
|
2520
2544
|
}
|
|
@@ -2652,7 +2676,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
|
|
|
2652
2676
|
// "filterFormValues": {"__searchable__name": "xxx"},//搜索项表单值
|
|
2653
2677
|
// "listViewId": "${listViewId}"
|
|
2654
2678
|
},
|
|
2655
|
-
"id": `service_listview_filter_form_${objectSchema.name}`,
|
|
2679
|
+
// "id": `service_listview_filter_form_${objectSchema.name}`,
|
|
2656
2680
|
"dataProvider": {
|
|
2657
2681
|
"inited": dataProviderInited
|
|
2658
2682
|
},
|
|
@@ -2660,15 +2684,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
|
|
|
2660
2684
|
"type": "wrapper",
|
|
2661
2685
|
"body": {
|
|
2662
2686
|
"type": "wrapper",
|
|
2663
|
-
"body": [{
|
|
2664
|
-
"type": "wrapper",
|
|
2665
|
-
"body": [
|
|
2666
|
-
filterFormSchema
|
|
2667
|
-
],
|
|
2668
|
-
"size": "xs",
|
|
2669
|
-
"visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
|
|
2670
|
-
"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"
|
|
2671
|
-
}, {
|
|
2687
|
+
"body": [filterFormSchema, {
|
|
2672
2688
|
"type": "wrapper",
|
|
2673
2689
|
"body": {
|
|
2674
2690
|
"type": "wrapper",
|
|
@@ -3027,16 +3043,7 @@ async function getObjectListHeaderSecordLine(objectSchema, listViewName, ctx) {
|
|
|
3027
3043
|
* @returns amisSchema
|
|
3028
3044
|
*/
|
|
3029
3045
|
async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ctx) {
|
|
3030
|
-
const
|
|
3031
|
-
const fields = sortBy(
|
|
3032
|
-
compact(
|
|
3033
|
-
map(searchableFields, (fieldName) => {
|
|
3034
|
-
return objectSchema.fields[fieldName];
|
|
3035
|
-
})
|
|
3036
|
-
),
|
|
3037
|
-
"sort_no"
|
|
3038
|
-
);
|
|
3039
|
-
const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, fields, ctx);
|
|
3046
|
+
const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, ctx);
|
|
3040
3047
|
return fieldsFilterBarSchema;
|
|
3041
3048
|
}
|
|
3042
3049
|
|
|
@@ -3815,12 +3822,11 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
|
|
|
3815
3822
|
"objectApiName": "object_listviews",
|
|
3816
3823
|
"recordId": "${recordId}",
|
|
3817
3824
|
"mode": "edit",
|
|
3818
|
-
"initApiAdaptor": "",
|
|
3819
3825
|
"fields": [
|
|
3820
3826
|
"filters"
|
|
3821
3827
|
],
|
|
3822
3828
|
"initApiRequestAdaptor": "",
|
|
3823
|
-
"initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet data_tmp;\nif (recordId_tmp) {\n data_tmp = payload.data
|
|
3829
|
+
"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;",
|
|
3824
3830
|
"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",
|
|
3825
3831
|
"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}",
|
|
3826
3832
|
"onEvent": {
|
|
@@ -3880,7 +3886,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
|
|
|
3880
3886
|
"recordId": "${recordId}",
|
|
3881
3887
|
"mode": "edit",
|
|
3882
3888
|
"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}",
|
|
3883
|
-
"initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet columns_tmp = {}, mobile_columns_tmp = {};\nif (recordId_tmp) {\n columns_tmp = payload.data.
|
|
3889
|
+
"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;",
|
|
3884
3890
|
"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;",
|
|
3885
3891
|
"fields": [
|
|
3886
3892
|
"columns",
|
|
@@ -3962,7 +3968,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
|
|
|
3962
3968
|
}
|
|
3963
3969
|
},
|
|
3964
3970
|
"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}",
|
|
3965
|
-
"initApiAdaptor": "let sort;\nif (recordId) {\n sort = payload.data.
|
|
3971
|
+
"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;",
|
|
3966
3972
|
"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"
|
|
3967
3973
|
}
|
|
3968
3974
|
],
|
|
@@ -4661,13 +4667,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
4661
4667
|
//TODO: 等待放大镜bug修复,if会去掉,始终显示放大镜
|
|
4662
4668
|
if(referenceTo.objectName != "space_users" || field.reference_to_field != "user"){
|
|
4663
4669
|
if (ctx.filterVisible !== false) {
|
|
4664
|
-
let filterLoopCount = ctx.filterLoopCount || 0;
|
|
4665
|
-
filterLoopCount++;
|
|
4666
|
-
// 可以传入filterVisible为false防止死循环
|
|
4667
4670
|
pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
|
|
4668
4671
|
isLookup: true,
|
|
4669
|
-
...ctx
|
|
4670
|
-
filterLoopCount,
|
|
4672
|
+
...ctx
|
|
4671
4673
|
});
|
|
4672
4674
|
}
|
|
4673
4675
|
}
|
|
@@ -5725,6 +5727,14 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
5725
5727
|
convertData.visibleOn = `${field.visible_on.replace(/formData./g, 'data.')}`;
|
|
5726
5728
|
}
|
|
5727
5729
|
}
|
|
5730
|
+
|
|
5731
|
+
if(_$1.isString(baseData.required)){
|
|
5732
|
+
if(baseData.required.startsWith("{{")){
|
|
5733
|
+
baseData.requiredOn = `${baseData.required.substring(2, baseData.required.length -2).replace(/formData./g, 'data.')}`;
|
|
5734
|
+
delete baseData.required;
|
|
5735
|
+
}
|
|
5736
|
+
}
|
|
5737
|
+
|
|
5728
5738
|
if(convertData.type === 'group'){
|
|
5729
5739
|
convertData.body[0] = Object.assign({}, baseData, convertData.body[0], { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});
|
|
5730
5740
|
return convertData
|
|
@@ -5739,8 +5749,9 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
5739
5749
|
}
|
|
5740
5750
|
|
|
5741
5751
|
async function getFieldSearchable(perField, permissionFields, ctx){
|
|
5742
|
-
|
|
5743
|
-
|
|
5752
|
+
if(!ctx){
|
|
5753
|
+
ctx = {};
|
|
5754
|
+
}
|
|
5744
5755
|
let field = perField;
|
|
5745
5756
|
if(field.type === 'grid'){
|
|
5746
5757
|
field = await getGridFieldSubFields(perField, permissionFields);
|
|
@@ -5801,14 +5812,17 @@ async function getFieldSearchable(perField, permissionFields, ctx){
|
|
|
5801
5812
|
_field.multiple = true;
|
|
5802
5813
|
_field.is_wide = false;
|
|
5803
5814
|
_field.defaultValue = undefined;
|
|
5804
|
-
|
|
5805
|
-
const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, filterVisible: filterLoopCount < maxFilterLoopCount}));
|
|
5815
|
+
const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true}));
|
|
5806
5816
|
if(amisField){
|
|
5807
5817
|
return amisField;
|
|
5808
5818
|
}
|
|
5809
5819
|
}
|
|
5810
5820
|
}
|
|
5811
5821
|
|
|
5822
|
+
if(typeof window != 'undefined'){
|
|
5823
|
+
window.getFieldSearchable = getFieldSearchable;
|
|
5824
|
+
}
|
|
5825
|
+
|
|
5812
5826
|
var index = /*#__PURE__*/Object.freeze({
|
|
5813
5827
|
__proto__: null,
|
|
5814
5828
|
OMIT_FIELDS: OMIT_FIELDS,
|
|
@@ -6069,12 +6083,12 @@ async function getEditFormInitApi(object, recordId, fields, options){
|
|
|
6069
6083
|
if(uiSchema.form){
|
|
6070
6084
|
try{
|
|
6071
6085
|
var objectFormConfig = JSON.parse(uiSchema.form);
|
|
6072
|
-
|
|
6073
|
-
if(
|
|
6074
|
-
|
|
6086
|
+
var formInitialValuesFun = objectFormConfig.initialValues;
|
|
6087
|
+
if(formInitialValuesFun){
|
|
6088
|
+
formInitialValuesFun = new Function("return " + formInitialValuesFun)();
|
|
6075
6089
|
}
|
|
6076
|
-
if(typeof
|
|
6077
|
-
initialValues =
|
|
6090
|
+
if(typeof formInitialValuesFun === "function"){
|
|
6091
|
+
initialValues = formInitialValuesFun.apply({doc: defaultValues || {} , global: api.body.global})
|
|
6078
6092
|
}
|
|
6079
6093
|
}
|
|
6080
6094
|
catch(ex){
|
|
@@ -6091,12 +6105,15 @@ async function getEditFormInitApi(object, recordId, fields, options){
|
|
|
6091
6105
|
}
|
|
6092
6106
|
// data下的变量需要在保存接口(getSaveApi)中被删除。
|
|
6093
6107
|
payload.data = {
|
|
6094
|
-
initialValues
|
|
6095
|
-
editFormInited: true
|
|
6108
|
+
...initialValues
|
|
6096
6109
|
}
|
|
6097
6110
|
${options.initApiAdaptor || ''}
|
|
6098
6111
|
return payload;
|
|
6099
6112
|
`,
|
|
6113
|
+
responseData: {
|
|
6114
|
+
initialValues: "$$",
|
|
6115
|
+
editFormInited: true
|
|
6116
|
+
},
|
|
6100
6117
|
data: data,
|
|
6101
6118
|
headers: {
|
|
6102
6119
|
Authorization: "Bearer ${context.tenantId},${context.authToken}"
|
|
@@ -6503,6 +6520,8 @@ async function getObjectForm(objectSchema, ctx){
|
|
|
6503
6520
|
},
|
|
6504
6521
|
labelAlign,
|
|
6505
6522
|
persistData: false,
|
|
6523
|
+
resetAfterSubmit: true,
|
|
6524
|
+
preventEnterSubmit: true,
|
|
6506
6525
|
promptPageLeave: true,
|
|
6507
6526
|
canAccessSuperData: false,
|
|
6508
6527
|
name: `form_edit_${recordId}`,
|
|
@@ -6540,10 +6559,14 @@ async function getObjectForm(objectSchema, ctx){
|
|
|
6540
6559
|
},
|
|
6541
6560
|
"expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
|
|
6542
6561
|
},
|
|
6543
|
-
{
|
|
6544
|
-
|
|
6545
|
-
|
|
6546
|
-
}
|
|
6562
|
+
// {
|
|
6563
|
+
// "actionType": "custom",
|
|
6564
|
+
// "script": "debugger;"
|
|
6565
|
+
// },
|
|
6566
|
+
// {
|
|
6567
|
+
// "args": {},
|
|
6568
|
+
// "actionType": "closeDialog"
|
|
6569
|
+
// }
|
|
6547
6570
|
]
|
|
6548
6571
|
}
|
|
6549
6572
|
}
|
|
@@ -7061,13 +7084,17 @@ async function getTableApi(mainObject, fields, options){
|
|
|
7061
7084
|
}
|
|
7062
7085
|
|
|
7063
7086
|
api.data.$term = "$term";
|
|
7087
|
+
api.data.term = "$term";
|
|
7064
7088
|
api.data.$self = "$$";
|
|
7089
|
+
api.data.self = "$$";
|
|
7065
7090
|
api.data.filter = "$filter";
|
|
7066
7091
|
api.data.loaded = "${loaded}";
|
|
7067
7092
|
api.data.listViewId = "${listViewId}";
|
|
7068
7093
|
api.requestAdaptor = `
|
|
7069
7094
|
// selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.
|
|
7070
7095
|
let selfData = JSON.parse(JSON.stringify(api.data.$self));
|
|
7096
|
+
// 保留一份初始data,以供自定义发送适配器中获取原始数据。
|
|
7097
|
+
const data = _.cloneDeep(api.data);
|
|
7071
7098
|
try{
|
|
7072
7099
|
// TODO: 不应该直接在这里取localStorage,应该从外面传入
|
|
7073
7100
|
const listViewId = api.data.listViewId;
|
|
@@ -7251,29 +7278,9 @@ async function getTableApi(mainObject, fields, options){
|
|
|
7251
7278
|
})
|
|
7252
7279
|
|
|
7253
7280
|
if(enable_tree){
|
|
7254
|
-
const records = payload.data.rows;
|
|
7255
|
-
const
|
|
7256
|
-
|
|
7257
|
-
if(!childrenIds){
|
|
7258
|
-
return;
|
|
7259
|
-
}
|
|
7260
|
-
const children = _.filter(records, (record)=>{
|
|
7261
|
-
return _.includes(childrenIds, record._id)
|
|
7262
|
-
});
|
|
7263
|
-
_.each(children, (item)=>{
|
|
7264
|
-
if(item.children){
|
|
7265
|
-
item.children = getChildren(records, item.children)
|
|
7266
|
-
}
|
|
7267
|
-
})
|
|
7268
|
-
return children;
|
|
7269
|
-
}
|
|
7270
|
-
|
|
7271
|
-
_.each(records, (record)=>{
|
|
7272
|
-
if(!record.parent){
|
|
7273
|
-
treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));
|
|
7274
|
-
}
|
|
7275
|
-
});
|
|
7276
|
-
payload.data.rows = treeRecords;
|
|
7281
|
+
const records = payload.data.rows || [];
|
|
7282
|
+
const getTreeOptions = SteedosUI.getTreeOptions
|
|
7283
|
+
payload.data.rows = getTreeOptions(records,{"valueField":"_id"});
|
|
7277
7284
|
}
|
|
7278
7285
|
|
|
7279
7286
|
|
|
@@ -7966,7 +7973,7 @@ const getRecordPermissions = async (objectName, recordId)=>{
|
|
|
7966
7973
|
* @Author: baozhoutao@steedos.com
|
|
7967
7974
|
* @Date: 2022-07-05 15:55:39
|
|
7968
7975
|
* @LastEditors: Please set LastEditors
|
|
7969
|
-
* @LastEditTime: 2023-04-11
|
|
7976
|
+
* @LastEditTime: 2023-04-20 11:43:14
|
|
7970
7977
|
* @Description:
|
|
7971
7978
|
*/
|
|
7972
7979
|
|
|
@@ -8063,10 +8070,12 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
|
|
|
8063
8070
|
mainRelated[arr[0]] = arr[1];
|
|
8064
8071
|
}
|
|
8065
8072
|
}else {
|
|
8066
|
-
const details = mainObjectUiSchema.details || [];
|
|
8073
|
+
const details = union(mainObjectUiSchema.details,mainObjectUiSchema.lookup_details) || [];
|
|
8067
8074
|
for (const detail of details) {
|
|
8068
8075
|
const arr = detail.split(".");
|
|
8069
|
-
mainRelated
|
|
8076
|
+
if(!has(mainRelated,arr[0])){
|
|
8077
|
+
mainRelated[arr[0]] = arr[1];
|
|
8078
|
+
}
|
|
8070
8079
|
}
|
|
8071
8080
|
}
|
|
8072
8081
|
}
|
|
@@ -8271,13 +8280,17 @@ async function getRelatedListSchema(
|
|
|
8271
8280
|
delete ctx.globalFilter;
|
|
8272
8281
|
|
|
8273
8282
|
const adaptor = `
|
|
8274
|
-
|
|
8275
|
-
if(
|
|
8276
|
-
|
|
8277
|
-
|
|
8278
|
-
|
|
8279
|
-
|
|
8280
|
-
|
|
8283
|
+
try{
|
|
8284
|
+
if(setDataToComponentId){
|
|
8285
|
+
if(payload.data.count){
|
|
8286
|
+
setTimeout(function(){
|
|
8287
|
+
window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
|
|
8288
|
+
}, 10);
|
|
8289
|
+
}
|
|
8290
|
+
};
|
|
8291
|
+
}catch(e){
|
|
8292
|
+
console.log(e);
|
|
8293
|
+
}
|
|
8281
8294
|
`;
|
|
8282
8295
|
const amisSchema = {
|
|
8283
8296
|
"type": "steedos-object-table",
|
|
@@ -8288,7 +8301,8 @@ async function getRelatedListSchema(
|
|
|
8288
8301
|
"filtersFunction": filtersFunction,
|
|
8289
8302
|
"sort": listViewSort,
|
|
8290
8303
|
"filterVisible": false,
|
|
8291
|
-
|
|
8304
|
+
"requestAdaptor": ctx.requestAdaptor,
|
|
8305
|
+
"adaptor": adaptor + ctx.adaptor || '',
|
|
8292
8306
|
"ctx": ctx
|
|
8293
8307
|
};
|
|
8294
8308
|
// console.log(`getRelatedListSchema amisSchema`, amisSchema);
|