@steedos-widgets/amis-object 1.3.17-beta.1 → 1.3.17
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/amis-object.cjs.css +4 -0
- package/dist/amis-object.cjs.js +118 -78
- package/dist/amis-object.cjs.js.map +1 -1
- package/dist/amis-object.esm.css +4 -0
- package/dist/amis-object.esm.js +118 -78
- package/dist/amis-object.esm.js.map +1 -1
- package/dist/amis-object.umd.css +4 -0
- package/dist/amis-object.umd.js +20 -14
- package/dist/amis-object.umd.js.map +1 -1
- package/dist/assets.json +21 -21
- package/package.json +3 -3
package/dist/amis-object.cjs.css
CHANGED
|
@@ -1039,6 +1039,10 @@ fieldset.antd-Collapse > legend{
|
|
|
1039
1039
|
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
|
|
1040
1040
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
|
|
1041
1041
|
}
|
|
1042
|
+
.blur {
|
|
1043
|
+
--tw-blur: blur(8px);
|
|
1044
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
|
|
1045
|
+
}
|
|
1042
1046
|
.filter {
|
|
1043
1047
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
|
|
1044
1048
|
}
|
package/dist/amis-object.cjs.js
CHANGED
|
@@ -5784,19 +5784,25 @@ async function getTableApi(mainObject, fields, options){
|
|
|
5784
5784
|
if(options.isRelated){
|
|
5785
5785
|
api.url += "&recordId=${_master.recordId}";
|
|
5786
5786
|
}
|
|
5787
|
-
api.cache = 3000;
|
|
5788
|
-
|
|
5787
|
+
api.cache = 3000;
|
|
5789
5788
|
api.data.$term = "$term";
|
|
5790
5789
|
api.data.term = "$term";
|
|
5791
5790
|
api.data.$self = "$$";
|
|
5792
5791
|
api.data.self = "$$";
|
|
5793
5792
|
api.data.filter = "$filter";
|
|
5794
|
-
api.data.__filterFormValues = "${__filterFormValues}";
|
|
5795
|
-
api.data.__serachBoxValues = "${__serachBoxValues}";
|
|
5796
5793
|
api.data.loaded = "${loaded}";
|
|
5797
5794
|
api.data.listViewId = "${listViewId}";
|
|
5798
5795
|
api.data.listName = "${listName}";
|
|
5799
5796
|
api.requestAdaptor = `
|
|
5797
|
+
let __changedFilterFormValues = api.data.$self.__changedFilterFormValues || {};
|
|
5798
|
+
let __changedSearchBoxValues = api.data.$self.__changedSearchBoxValues || {};
|
|
5799
|
+
// 把表单搜索和快速搜索中的change事件中记录的过滤条件也拼到$self中,是为解决触发搜索请求时,两边输入的过滤条件都带上,即:
|
|
5800
|
+
// 有时在搜索表单中输入过滤条件事,忘记点击回车键或搜索按钮,而是进一步修改快速搜索框中的关键字点击其中回车键触发搜索
|
|
5801
|
+
// 这种情况下,触发的搜索请求中没有带上搜索表单中输入的过滤条件。
|
|
5802
|
+
// 反过来先在快速搜索框中输入过滤条件却不点击其中回车键触发搜索,而是到搜索表单中触发搜索请求也是一样的。
|
|
5803
|
+
// 这里直接合并到api.data.$self,而不是后面定义的selfData变量,是因为可以省去在接收适配器中写一样的合并逻辑
|
|
5804
|
+
// 如果有问题可以改为合并到selfData变量中,但是要在接收适配器中写上一样的合并逻辑,否则里面的过滤条件不会存入本地存储中
|
|
5805
|
+
Object.assign(api.data.$self, __changedSearchBoxValues, __changedFilterFormValues);
|
|
5800
5806
|
// selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.
|
|
5801
5807
|
let selfData = JSON.parse(JSON.stringify(api.data.$self));
|
|
5802
5808
|
// 保留一份初始data,以供自定义发送适配器中获取原始数据。
|
|
@@ -5866,11 +5872,7 @@ async function getTableApi(mainObject, fields, options){
|
|
|
5866
5872
|
userFilters = [["${valueField.name}", "=", selfData.value]];
|
|
5867
5873
|
}
|
|
5868
5874
|
|
|
5869
|
-
|
|
5870
|
-
const __serachBoxValues = api.data.__serachBoxValues;
|
|
5871
|
-
// 筛选按钮
|
|
5872
|
-
const filterSelfData = __filterFormValues ? __filterFormValues : selfData;
|
|
5873
|
-
var searchableFilter = SteedosUI.getSearchFilter(filterSelfData) || [];
|
|
5875
|
+
var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];
|
|
5874
5876
|
if(searchableFilter.length > 0){
|
|
5875
5877
|
if(userFilters.length > 0 ){
|
|
5876
5878
|
userFilters = [userFilters, 'and', searchableFilter];
|
|
@@ -5891,8 +5893,7 @@ async function getTableApi(mainObject, fields, options){
|
|
|
5891
5893
|
})
|
|
5892
5894
|
}
|
|
5893
5895
|
|
|
5894
|
-
|
|
5895
|
-
var keywordsFilters = SteedosUI.getKeywordsSearchFilter(keyWords, allowSearchFields);
|
|
5896
|
+
var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);
|
|
5896
5897
|
if(keywordsFilters && keywordsFilters.length > 0){
|
|
5897
5898
|
userFilters.push(keywordsFilters);
|
|
5898
5899
|
}
|
|
@@ -6045,6 +6046,7 @@ async function getTableApi(mainObject, fields, options){
|
|
|
6045
6046
|
selfData.page = localListViewProps.page || 1;
|
|
6046
6047
|
}
|
|
6047
6048
|
}
|
|
6049
|
+
|
|
6048
6050
|
delete selfData.context;
|
|
6049
6051
|
delete selfData.global;
|
|
6050
6052
|
sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify(selfData));
|
|
@@ -8818,6 +8820,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8818
8820
|
const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
|
|
8819
8821
|
const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
|
|
8820
8822
|
const onSearchScript = `
|
|
8823
|
+
// console.log("===onSearchScript=form==");
|
|
8821
8824
|
const scope = event.context.scoped;
|
|
8822
8825
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
8823
8826
|
return n.props.type === "form";
|
|
@@ -8874,25 +8877,13 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8874
8877
|
crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter});
|
|
8875
8878
|
`;
|
|
8876
8879
|
const onCancelScript = `
|
|
8877
|
-
|
|
8878
|
-
{
|
|
8879
|
-
"componentId": 'service_${ctx.crudId}',
|
|
8880
|
-
"actionType": "setValue",
|
|
8881
|
-
"args": {
|
|
8882
|
-
"value": {
|
|
8883
|
-
"__filterFormValues": null
|
|
8884
|
-
}
|
|
8885
|
-
}
|
|
8886
|
-
}
|
|
8887
|
-
)
|
|
8880
|
+
// console.log("===onCancelScript=form==");
|
|
8888
8881
|
const scope = event.context.scoped;
|
|
8889
8882
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
8890
8883
|
return n.props.type === "form";
|
|
8891
8884
|
});
|
|
8892
8885
|
var filterFormValues = filterForm.getValues();
|
|
8893
|
-
|
|
8894
|
-
return n.props.type === "crud";
|
|
8895
|
-
});
|
|
8886
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
8896
8887
|
const removedValues = {};
|
|
8897
8888
|
for(var k in filterFormValues){
|
|
8898
8889
|
if(/^__searchable__/.test(k)){
|
|
@@ -8907,7 +8898,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8907
8898
|
if(localListViewProps){
|
|
8908
8899
|
localListViewProps = JSON.parse(localListViewProps);
|
|
8909
8900
|
for(var k in localListViewProps){
|
|
8910
|
-
if(k
|
|
8901
|
+
if(/^__searchable__/.test(k)){
|
|
8911
8902
|
removedValues[k] = null;
|
|
8912
8903
|
}
|
|
8913
8904
|
}
|
|
@@ -8918,20 +8909,35 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8918
8909
|
//lookup字段保留快速搜索条件
|
|
8919
8910
|
removedValues[keywordsSearchBoxName] = filterFormValues[keywordsSearchBoxName];
|
|
8920
8911
|
}
|
|
8921
|
-
filterForm.
|
|
8922
|
-
|
|
8923
|
-
|
|
8924
|
-
|
|
8925
|
-
|
|
8926
|
-
|
|
8927
|
-
|
|
8928
|
-
|
|
8912
|
+
filterForm.setValues(removedValues);//会把表单提交到toolbar的快速搜索区域,造成在快速搜索框中触发搜索时再次把搜索表单中的字段值清除掉的bug,已单独在快速搜索框那边添加搜索事件代码处理过了
|
|
8913
|
+
// 以下方法都无法实现清除表单值
|
|
8914
|
+
// filterForm.setValues({}, true)
|
|
8915
|
+
// filterForm.reset();
|
|
8916
|
+
// filterForm.handleAction({},{
|
|
8917
|
+
// "actionType": "setValue",
|
|
8918
|
+
// "args": {
|
|
8919
|
+
// "value": removedValues
|
|
8920
|
+
// }
|
|
8921
|
+
// });
|
|
8922
|
+
// 下面触发clear动作可以清除表单值,且不会把表单提交到toolbar的快速搜索区域,但是会把金额等范围字段清空成非范围字段
|
|
8923
|
+
// filterForm.handleAction({},{
|
|
8924
|
+
// "actionType": "clear"
|
|
8925
|
+
// });
|
|
8926
|
+
|
|
8927
|
+
// 清除__changedFilterFormValues中的值
|
|
8928
|
+
crud && crud.setData({__changedFilterFormValues: {}});
|
|
8929
|
+
filterForm.handleFormSubmit(event);
|
|
8930
|
+
// crud.handleFilterSubmit(removedValues);
|
|
8931
|
+
|
|
8932
|
+
let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
|
|
8933
|
+
filterFormService.setData({showFieldsFilter: !!!filterFormService.props.data.showFieldsFilter});
|
|
8929
8934
|
//触发amis crud 高度重算
|
|
8930
8935
|
setTimeout(()=>{
|
|
8931
8936
|
window.dispatchEvent(new Event("resize"))
|
|
8932
8937
|
}, 100);
|
|
8933
8938
|
// 移除搜索按钮上的红点
|
|
8934
|
-
let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
|
|
8939
|
+
// let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
|
|
8940
|
+
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
8935
8941
|
crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
|
|
8936
8942
|
`;
|
|
8937
8943
|
const dataProviderInited = `
|
|
@@ -10797,7 +10803,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
10797
10803
|
// }
|
|
10798
10804
|
`;
|
|
10799
10805
|
|
|
10800
|
-
function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords", crudId } = {}){
|
|
10806
|
+
// function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords", crudId } = {}){
|
|
10807
|
+
function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords" } = {}){
|
|
10801
10808
|
const searchableFieldsLabel = [];
|
|
10802
10809
|
_.each(mainObject.fields, function (field) {
|
|
10803
10810
|
if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
|
|
@@ -10813,6 +10820,33 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10813
10820
|
crudKeywords = (localListViewProps && localListViewProps.__keywords) || "";
|
|
10814
10821
|
}
|
|
10815
10822
|
|
|
10823
|
+
const onChangeScript = `
|
|
10824
|
+
const scope = event.context.scoped;
|
|
10825
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
10826
|
+
// let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
10827
|
+
let __changedSearchBoxValues = {};
|
|
10828
|
+
__changedSearchBoxValues["${keywordsSearchBoxName}"] = event.data["${keywordsSearchBoxName}"];
|
|
10829
|
+
// crudService && crudService.setData({__changedSearchBoxValues: __changedSearchBoxValues});
|
|
10830
|
+
// 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中
|
|
10831
|
+
crud && crud.setData({__changedSearchBoxValues: __changedSearchBoxValues});
|
|
10832
|
+
`;
|
|
10833
|
+
|
|
10834
|
+
// onSearchScript中加上了onChangeScript中的脚本,是因为amis 3.2不能用change事件执行onChangeScript
|
|
10835
|
+
// 而点击回车按键又不会触发blur事件,所以只能每次回车事件中额外再执行一次onChangeScript
|
|
10836
|
+
// 等升级到amis 3.4+,blur事件换成change事件执行onChangeScript,就可以不用在onSearchScript中执行onChangeScript了
|
|
10837
|
+
const onSearchScript = `
|
|
10838
|
+
${onChangeScript}
|
|
10839
|
+
|
|
10840
|
+
// 下面的脚本只为解决点击搜索表单取消按钮,再重新在其中输入过滤条件但是不点击搜索按钮或回车按键触发搜索,此时在快速搜索框输入过滤条件按回车按键会把搜索表单中的过滤条件清空的问题
|
|
10841
|
+
// const scope = event.context.scoped;
|
|
10842
|
+
// 如果点击过顶部搜索栏表单的取消按钮,会把此处event.data.__super.__super.__super中的搜索表单项的所有字段设置为null
|
|
10843
|
+
// 点击取消按钮后继续在表单项中输入过滤条件且最后没有点击回车按键或点击表单项搜索按钮的话,在快速搜索中点击回车按钮提交搜索会所顶部搜索表单中的字段值清空
|
|
10844
|
+
let filterForm = SteedosUI.getClosestAmisComponentByType(scope, "form");
|
|
10845
|
+
setTimeout(function(){
|
|
10846
|
+
filterForm.setValues(event.data.__changedFilterFormValues);
|
|
10847
|
+
}, 500);
|
|
10848
|
+
`;
|
|
10849
|
+
|
|
10816
10850
|
return {
|
|
10817
10851
|
"type": "tooltip-wrapper",
|
|
10818
10852
|
"id": "steedos_crud_toolbar_quick_search",
|
|
@@ -10831,28 +10865,24 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10831
10865
|
"placeholder": "搜索此列表",
|
|
10832
10866
|
"value": crudKeywords,
|
|
10833
10867
|
"clearable": true,
|
|
10834
|
-
"clearAndSubmit": true
|
|
10868
|
+
// "clearAndSubmit": true,//因为清除并不会触发失去焦点事件,只有禁用,但是它会触发change事件,所以等升级到amis 3.4+后可以重新放开
|
|
10835
10869
|
"searchImediately": false,
|
|
10836
10870
|
"onEvent": {
|
|
10837
|
-
"
|
|
10871
|
+
"search": {
|
|
10838
10872
|
"actions": [
|
|
10839
10873
|
{
|
|
10840
10874
|
"actionType": "custom",
|
|
10841
|
-
"script":
|
|
10842
|
-
doAction(
|
|
10843
|
-
{
|
|
10844
|
-
"componentId": 'service_${crudId}',
|
|
10845
|
-
"actionType": "setValue",
|
|
10846
|
-
"args": {
|
|
10847
|
-
"value": {
|
|
10848
|
-
"__serachBoxValues": event.data
|
|
10849
|
-
}
|
|
10850
|
-
}
|
|
10851
|
-
}
|
|
10852
|
-
)
|
|
10853
|
-
`
|
|
10875
|
+
"script": onSearchScript
|
|
10854
10876
|
}
|
|
10855
10877
|
]
|
|
10878
|
+
},
|
|
10879
|
+
"blur": { //这里把change事件换成blur是因为amis 3.2change事件中setData会卡,升级到3.4+后就可以换回change事件
|
|
10880
|
+
"actions": [
|
|
10881
|
+
{
|
|
10882
|
+
"actionType": "custom",
|
|
10883
|
+
"script": onChangeScript
|
|
10884
|
+
},
|
|
10885
|
+
]
|
|
10856
10886
|
}
|
|
10857
10887
|
}
|
|
10858
10888
|
}
|
|
@@ -10861,7 +10891,7 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10861
10891
|
}
|
|
10862
10892
|
|
|
10863
10893
|
function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
10864
|
-
showDisplayAs = false, hiddenCount = false, headerToolbarItems,
|
|
10894
|
+
showDisplayAs = false, hiddenCount = false, headerToolbarItems,
|
|
10865
10895
|
filterVisible = true, isLookup = false, keywordsSearchBoxName } = {}){
|
|
10866
10896
|
// console.log(`getObjectHeaderToolbar====>`, filterVisible)
|
|
10867
10897
|
// console.log(`getObjectHeaderToolbar`, mainObject)
|
|
@@ -10965,7 +10995,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
|
10965
10995
|
};
|
|
10966
10996
|
}
|
|
10967
10997
|
let toolbarDisplayAsButton = getDisplayAsButton(mainObject?.name);
|
|
10968
|
-
let toolbarDQuickSearchBox = getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName
|
|
10998
|
+
let toolbarDQuickSearchBox = getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName });
|
|
10969
10999
|
|
|
10970
11000
|
// toolbars返回的数组元素不可以是空对象{},比如hiddenCount ? {} : {"type": "tpl",...},因为空对象最终还是会生成一个空的.antd-Crud-toolbar-item dom
|
|
10971
11001
|
// 当出现空的.antd-Crud-toolbar-item dom时会影响toolbar元素的maring-right css样式计算,如果有动态需要应该加到动态数组变量toolbars中
|
|
@@ -11113,6 +11143,20 @@ async function getObjectFilter(objectSchema, fields, options) {
|
|
|
11113
11143
|
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
11114
11144
|
crudService && crudService.setData({isFieldsFilterEmpty});
|
|
11115
11145
|
`;
|
|
11146
|
+
let onChangeScript = `
|
|
11147
|
+
const scope = event.context.scoped;
|
|
11148
|
+
// let filterFormValues = event.data;
|
|
11149
|
+
let filterForm = SteedosUI.getClosestAmisComponentByType(scope, "form");
|
|
11150
|
+
let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
|
|
11151
|
+
// 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。
|
|
11152
|
+
let filterFormValues = filterFormService.getData();
|
|
11153
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
11154
|
+
const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});;
|
|
11155
|
+
// let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
11156
|
+
// crudService && crudService.setData({__changedFilterFormValues: changedFilterFormValues});
|
|
11157
|
+
// 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中
|
|
11158
|
+
crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});
|
|
11159
|
+
`;
|
|
11116
11160
|
return {
|
|
11117
11161
|
"title": "",
|
|
11118
11162
|
"submitText": "",
|
|
@@ -11136,19 +11180,7 @@ async function getObjectFilter(objectSchema, fields, options) {
|
|
|
11136
11180
|
"actions": [
|
|
11137
11181
|
{
|
|
11138
11182
|
"actionType": "custom",
|
|
11139
|
-
"script":
|
|
11140
|
-
doAction(
|
|
11141
|
-
{
|
|
11142
|
-
"componentId": 'service_${options.crudId}',
|
|
11143
|
-
"actionType": "setValue",
|
|
11144
|
-
"args": {
|
|
11145
|
-
"value": {
|
|
11146
|
-
"__filterFormValues": event.data
|
|
11147
|
-
}
|
|
11148
|
-
}
|
|
11149
|
-
}
|
|
11150
|
-
)
|
|
11151
|
-
`
|
|
11183
|
+
"script": onChangeScript
|
|
11152
11184
|
}
|
|
11153
11185
|
]
|
|
11154
11186
|
}
|
|
@@ -11223,7 +11255,6 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11223
11255
|
const bulkActions = getBulkActions(objectSchema);
|
|
11224
11256
|
const defaults = options.defaults;
|
|
11225
11257
|
const listSchema = (defaults && defaults.listSchema) || {};
|
|
11226
|
-
const id = `listview_${objectSchema.name}`;
|
|
11227
11258
|
|
|
11228
11259
|
const bodyProps = {
|
|
11229
11260
|
// toolbar: getToolbar(),
|
|
@@ -11233,7 +11264,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11233
11264
|
...options,
|
|
11234
11265
|
disableStatistics: options.queryCount === false
|
|
11235
11266
|
}),
|
|
11236
|
-
filter: options.filterVisible !== false && await getObjectFilter(objectSchema, fields,
|
|
11267
|
+
filter: options.filterVisible !== false && await getObjectFilter(objectSchema, fields, options),
|
|
11237
11268
|
};
|
|
11238
11269
|
if(options.formFactor !== 'SMALL' || ["split"].indexOf(options.displayAs) == -1){
|
|
11239
11270
|
if(listSchema.mode !== "cards"){
|
|
@@ -11262,8 +11293,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11262
11293
|
showDisplayAs,
|
|
11263
11294
|
hiddenCount: options.queryCount === false,
|
|
11264
11295
|
headerToolbarItems: options.headerToolbarItems,
|
|
11265
|
-
filterVisible: options.filterVisible
|
|
11266
|
-
crudId: id
|
|
11296
|
+
filterVisible: options.filterVisible
|
|
11267
11297
|
});
|
|
11268
11298
|
|
|
11269
11299
|
options.amisData = createObject(options.amisData, {
|
|
@@ -11276,6 +11306,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11276
11306
|
|
|
11277
11307
|
|
|
11278
11308
|
let body = null;
|
|
11309
|
+
const id = `listview_${objectSchema.name}`;
|
|
11279
11310
|
if(options.formFactor === 'SMALL' && false){
|
|
11280
11311
|
delete bodyProps.bulkActions;
|
|
11281
11312
|
delete bodyProps.headerToolbar;
|
|
@@ -13507,6 +13538,13 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
13507
13538
|
source.data.$self = "$$";
|
|
13508
13539
|
|
|
13509
13540
|
source.requestAdaptor = `
|
|
13541
|
+
let __changedFilterFormValues = api.data.$self.__changedFilterFormValues || {};
|
|
13542
|
+
let __changedSearchBoxValues = api.data.$self.__changedSearchBoxValues || {};
|
|
13543
|
+
// 把表单搜索和快速搜索中的change事件中记录的过滤条件也拼到$self中,是为解决触发搜索请求时,两边输入的过滤条件都带上,即:
|
|
13544
|
+
// 有时在搜索表单中输入过滤条件事,忘记点击回车键或搜索按钮,而是进一步修改快速搜索框中的关键字点击其中回车键触发搜索
|
|
13545
|
+
// 这种情况下,触发的搜索请求中没有带上搜索表单中输入的过滤条件。
|
|
13546
|
+
// 反过来先在快速搜索框中输入过滤条件却不点击其中回车键触发搜索,而是到搜索表单中触发搜索请求也是一样的。
|
|
13547
|
+
Object.assign(api.data.$self, __changedSearchBoxValues, __changedFilterFormValues);
|
|
13510
13548
|
const selfData = JSON.parse(JSON.stringify(api.data.$self));
|
|
13511
13549
|
var filters = [];
|
|
13512
13550
|
var pageSize = api.data.pageSize || 10;
|
|
@@ -13573,7 +13611,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
13573
13611
|
const filtersFunction = ${field.filtersFunction || field._filtersFunction};
|
|
13574
13612
|
|
|
13575
13613
|
if(filtersFunction && !inFilterForm){
|
|
13576
|
-
const _filters = filtersFunction(filters, api.data.$self.__super
|
|
13614
|
+
const _filters = filtersFunction(filters, api.data.$self.__super);
|
|
13577
13615
|
if(_filters && _filters.length > 0){
|
|
13578
13616
|
filters.push(_filters);
|
|
13579
13617
|
}
|
|
@@ -15150,9 +15188,7 @@ async function getFieldSearchable(perField, permissionFields, ctx){
|
|
|
15150
15188
|
|
|
15151
15189
|
const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, inFilterForm: true}));
|
|
15152
15190
|
if(amisField){
|
|
15153
|
-
return
|
|
15154
|
-
submitOnChange: false
|
|
15155
|
-
});
|
|
15191
|
+
return amisField;
|
|
15156
15192
|
}
|
|
15157
15193
|
}
|
|
15158
15194
|
}
|
|
@@ -15545,12 +15581,16 @@ async function getForm(props, mode = "edit") {
|
|
|
15545
15581
|
}
|
|
15546
15582
|
else if (mode === "new") {
|
|
15547
15583
|
let onNewItemSubmitScript = `
|
|
15548
|
-
event.data["${props.name}"]
|
|
15584
|
+
let fieldValue = _.cloneDeep(event.data["${props.name}"]);
|
|
15585
|
+
if(!fieldValue){
|
|
15586
|
+
fieldValue = [];
|
|
15587
|
+
}
|
|
15588
|
+
fieldValue.push(JSON.parse(JSON.stringify(event.data)));
|
|
15549
15589
|
doAction({
|
|
15550
15590
|
"componentId": "${props.id}",
|
|
15551
15591
|
"actionType": "setValue",
|
|
15552
15592
|
"args": {
|
|
15553
|
-
"value":
|
|
15593
|
+
"value": fieldValue
|
|
15554
15594
|
}
|
|
15555
15595
|
});
|
|
15556
15596
|
`;
|
|
@@ -15753,7 +15793,7 @@ const getAmisInputTableSchema = async (props, readonly) => {
|
|
|
15753
15793
|
"className": props.className
|
|
15754
15794
|
};
|
|
15755
15795
|
if (props.addable) {
|
|
15756
|
-
let buttonNewSchema = getButtonNew(props);
|
|
15796
|
+
let buttonNewSchema = await getButtonNew(props);
|
|
15757
15797
|
schema.body.push(buttonNewSchema);
|
|
15758
15798
|
}
|
|
15759
15799
|
if (props.amis) {
|
|
@@ -20772,7 +20812,7 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
|
|
|
20772
20812
|
source: {
|
|
20773
20813
|
"method": "post",
|
|
20774
20814
|
"url": "${context.rootUrl}/graphql",
|
|
20775
|
-
"requestAdaptor": "\n var steedosField = ".concat(JSON.stringify(steedosField), ";\n var objectName, filters, valueFieldKey, labelFieldKey;\n if(_.isString(steedosField.reference_to)){\n const referenceTo = getReferenceToSync(steedosField);\n const referenceToField = steedosField.reference_to_field || '_id';\n\n objectName = referenceTo.objectName\n valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n let value = api.data[steedosField.name];\n if(_.isString(value)){\n value = [value]\n }\n filters = [referenceToField, \"in\", value || []];\n }else{\n const _steedosField = {\n ...steedosField,\n reference_to: api.data[steedosField.name].o\n }\n const referenceTo = getReferenceToSync(_steedosField);\n const referenceToField = _steedosField.reference_to_field || '_id';\n\n objectName = referenceTo.objectName\n valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n let value = api.data[_steedosField.name] && api.data[_steedosField.name].ids;\n filters = [referenceToField, \"in\", value || []];\n }\n api.data = {\n query: '{options:' + objectName + '(filters: ' + JSON.stringify(filters) + '){label: ' + labelFieldKey + ',value: ' + valueFieldKey + '}}'\n }\n return api;\n "),
|
|
20815
|
+
"requestAdaptor": "\n var steedosField = ".concat(JSON.stringify(steedosField), ";\n var objectName, filters, valueFieldKey, labelFieldKey;\n if(_.isString(steedosField.reference_to)){\n const referenceTo = getReferenceToSync(steedosField);\n const referenceToField = steedosField.reference_to_field || '_id';\n\n objectName = referenceTo.objectName\n valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n let value = api.data[steedosField.name];\n if(_.isString(value)){\n value = [value]\n }\n filters = [referenceToField, \"in\", value || []];\n if(objectName == \"object_fields\"){\n //\u5BF9\u8C61\u4E3Aobject_fields\u65F6\uFF0C\u5FC5\u987B\u52A0\u4E0Aobject\u7684\u8FC7\u6EE4\u6761\u4EF6\n const filtersFunction = ").concat(steedosField.filtersFunction || steedosField._filtersFunction, ";\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data);\n if(_filters && _filters.length > 0){\n filters = [filters,_filters]\n }\n }\n }\n }else{\n const _steedosField = {\n ...steedosField,\n reference_to: api.data[steedosField.name].o\n }\n const referenceTo = getReferenceToSync(_steedosField);\n const referenceToField = _steedosField.reference_to_field || '_id';\n\n objectName = referenceTo.objectName\n valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n let value = api.data[_steedosField.name] && api.data[_steedosField.name].ids;\n filters = [referenceToField, \"in\", value || []];\n }\n api.data = {\n query: '{options:' + objectName + '(filters: ' + JSON.stringify(filters) + '){label: ' + labelFieldKey + ',value: ' + valueFieldKey + '}}'\n }\n return api;\n "),
|
|
20776
20816
|
"trackExpression": "${" + steedosField.name + "}",
|
|
20777
20817
|
"cache": 3000
|
|
20778
20818
|
},
|