@steedos-widgets/amis-object 1.3.17-beta.2 → 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 +116 -90
- package/dist/amis-object.cjs.js.map +1 -1
- package/dist/amis-object.esm.css +4 -0
- package/dist/amis-object.esm.js +116 -90
- package/dist/amis-object.esm.js.map +1 -1
- package/dist/amis-object.umd.css +4 -0
- package/dist/amis-object.umd.js +20 -15
- 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
|
-
|
|
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,19 +6046,6 @@ async function getTableApi(mainObject, fields, options){
|
|
|
6045
6046
|
selfData.page = localListViewProps.page || 1;
|
|
6046
6047
|
}
|
|
6047
6048
|
}
|
|
6048
|
-
|
|
6049
|
-
// 列表视图(对象表格)筛选按钮表单输入框输入内容后,如果不按回车键或者搜索按钮,selfData中该输入框是没有最新值的。
|
|
6050
|
-
const __filterFormValues = api.body.__filterFormValues;
|
|
6051
|
-
if(__filterFormValues){
|
|
6052
|
-
let filterFormValues = JSON.parse(JSON.stringify(__filterFormValues)) || {};
|
|
6053
|
-
selfData = Object.assign({}, selfData, filterFormValues);
|
|
6054
|
-
}
|
|
6055
|
-
// “搜索此列表”搜索框同理。
|
|
6056
|
-
const __serachBoxValues = api.body.__serachBoxValues;
|
|
6057
|
-
if(__serachBoxValues){
|
|
6058
|
-
let serachBoxValues = JSON.parse(JSON.stringify(__serachBoxValues)) || {};
|
|
6059
|
-
selfData = Object.assign({}, selfData, serachBoxValues);
|
|
6060
|
-
}
|
|
6061
6049
|
|
|
6062
6050
|
delete selfData.context;
|
|
6063
6051
|
delete selfData.global;
|
|
@@ -8832,6 +8820,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8832
8820
|
const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
|
|
8833
8821
|
const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
|
|
8834
8822
|
const onSearchScript = `
|
|
8823
|
+
// console.log("===onSearchScript=form==");
|
|
8835
8824
|
const scope = event.context.scoped;
|
|
8836
8825
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
8837
8826
|
return n.props.type === "form";
|
|
@@ -8888,25 +8877,13 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8888
8877
|
crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter});
|
|
8889
8878
|
`;
|
|
8890
8879
|
const onCancelScript = `
|
|
8891
|
-
|
|
8892
|
-
{
|
|
8893
|
-
"componentId": 'service_${ctx.crudId}',
|
|
8894
|
-
"actionType": "setValue",
|
|
8895
|
-
"args": {
|
|
8896
|
-
"value": {
|
|
8897
|
-
"__filterFormValues": null
|
|
8898
|
-
}
|
|
8899
|
-
}
|
|
8900
|
-
}
|
|
8901
|
-
)
|
|
8880
|
+
// console.log("===onCancelScript=form==");
|
|
8902
8881
|
const scope = event.context.scoped;
|
|
8903
8882
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
8904
8883
|
return n.props.type === "form";
|
|
8905
8884
|
});
|
|
8906
8885
|
var filterFormValues = filterForm.getValues();
|
|
8907
|
-
|
|
8908
|
-
return n.props.type === "crud";
|
|
8909
|
-
});
|
|
8886
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
8910
8887
|
const removedValues = {};
|
|
8911
8888
|
for(var k in filterFormValues){
|
|
8912
8889
|
if(/^__searchable__/.test(k)){
|
|
@@ -8921,7 +8898,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8921
8898
|
if(localListViewProps){
|
|
8922
8899
|
localListViewProps = JSON.parse(localListViewProps);
|
|
8923
8900
|
for(var k in localListViewProps){
|
|
8924
|
-
if(k
|
|
8901
|
+
if(/^__searchable__/.test(k)){
|
|
8925
8902
|
removedValues[k] = null;
|
|
8926
8903
|
}
|
|
8927
8904
|
}
|
|
@@ -8932,20 +8909,35 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8932
8909
|
//lookup字段保留快速搜索条件
|
|
8933
8910
|
removedValues[keywordsSearchBoxName] = filterFormValues[keywordsSearchBoxName];
|
|
8934
8911
|
}
|
|
8935
|
-
filterForm.
|
|
8936
|
-
|
|
8937
|
-
|
|
8938
|
-
|
|
8939
|
-
|
|
8940
|
-
|
|
8941
|
-
|
|
8942
|
-
|
|
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});
|
|
8943
8934
|
//触发amis crud 高度重算
|
|
8944
8935
|
setTimeout(()=>{
|
|
8945
8936
|
window.dispatchEvent(new Event("resize"))
|
|
8946
8937
|
}, 100);
|
|
8947
8938
|
// 移除搜索按钮上的红点
|
|
8948
|
-
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");
|
|
8949
8941
|
crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
|
|
8950
8942
|
`;
|
|
8951
8943
|
const dataProviderInited = `
|
|
@@ -10811,7 +10803,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
10811
10803
|
// }
|
|
10812
10804
|
`;
|
|
10813
10805
|
|
|
10814
|
-
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" } = {}){
|
|
10815
10808
|
const searchableFieldsLabel = [];
|
|
10816
10809
|
_.each(mainObject.fields, function (field) {
|
|
10817
10810
|
if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
|
|
@@ -10827,6 +10820,33 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10827
10820
|
crudKeywords = (localListViewProps && localListViewProps.__keywords) || "";
|
|
10828
10821
|
}
|
|
10829
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
|
+
|
|
10830
10850
|
return {
|
|
10831
10851
|
"type": "tooltip-wrapper",
|
|
10832
10852
|
"id": "steedos_crud_toolbar_quick_search",
|
|
@@ -10845,28 +10865,24 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10845
10865
|
"placeholder": "搜索此列表",
|
|
10846
10866
|
"value": crudKeywords,
|
|
10847
10867
|
"clearable": true,
|
|
10848
|
-
"clearAndSubmit": true
|
|
10868
|
+
// "clearAndSubmit": true,//因为清除并不会触发失去焦点事件,只有禁用,但是它会触发change事件,所以等升级到amis 3.4+后可以重新放开
|
|
10849
10869
|
"searchImediately": false,
|
|
10850
10870
|
"onEvent": {
|
|
10851
|
-
"
|
|
10871
|
+
"search": {
|
|
10852
10872
|
"actions": [
|
|
10853
10873
|
{
|
|
10854
10874
|
"actionType": "custom",
|
|
10855
|
-
"script":
|
|
10856
|
-
doAction(
|
|
10857
|
-
{
|
|
10858
|
-
"componentId": 'service_${crudId}',
|
|
10859
|
-
"actionType": "setValue",
|
|
10860
|
-
"args": {
|
|
10861
|
-
"value": {
|
|
10862
|
-
"__serachBoxValues": event.data
|
|
10863
|
-
}
|
|
10864
|
-
}
|
|
10865
|
-
}
|
|
10866
|
-
)
|
|
10867
|
-
`
|
|
10875
|
+
"script": onSearchScript
|
|
10868
10876
|
}
|
|
10869
10877
|
]
|
|
10878
|
+
},
|
|
10879
|
+
"blur": { //这里把change事件换成blur是因为amis 3.2change事件中setData会卡,升级到3.4+后就可以换回change事件
|
|
10880
|
+
"actions": [
|
|
10881
|
+
{
|
|
10882
|
+
"actionType": "custom",
|
|
10883
|
+
"script": onChangeScript
|
|
10884
|
+
},
|
|
10885
|
+
]
|
|
10870
10886
|
}
|
|
10871
10887
|
}
|
|
10872
10888
|
}
|
|
@@ -10875,7 +10891,7 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10875
10891
|
}
|
|
10876
10892
|
|
|
10877
10893
|
function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
10878
|
-
showDisplayAs = false, hiddenCount = false, headerToolbarItems,
|
|
10894
|
+
showDisplayAs = false, hiddenCount = false, headerToolbarItems,
|
|
10879
10895
|
filterVisible = true, isLookup = false, keywordsSearchBoxName } = {}){
|
|
10880
10896
|
// console.log(`getObjectHeaderToolbar====>`, filterVisible)
|
|
10881
10897
|
// console.log(`getObjectHeaderToolbar`, mainObject)
|
|
@@ -10979,7 +10995,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
|
10979
10995
|
};
|
|
10980
10996
|
}
|
|
10981
10997
|
let toolbarDisplayAsButton = getDisplayAsButton(mainObject?.name);
|
|
10982
|
-
let toolbarDQuickSearchBox = getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName
|
|
10998
|
+
let toolbarDQuickSearchBox = getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName });
|
|
10983
10999
|
|
|
10984
11000
|
// toolbars返回的数组元素不可以是空对象{},比如hiddenCount ? {} : {"type": "tpl",...},因为空对象最终还是会生成一个空的.antd-Crud-toolbar-item dom
|
|
10985
11001
|
// 当出现空的.antd-Crud-toolbar-item dom时会影响toolbar元素的maring-right css样式计算,如果有动态需要应该加到动态数组变量toolbars中
|
|
@@ -11127,6 +11143,20 @@ async function getObjectFilter(objectSchema, fields, options) {
|
|
|
11127
11143
|
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
11128
11144
|
crudService && crudService.setData({isFieldsFilterEmpty});
|
|
11129
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
|
+
`;
|
|
11130
11160
|
return {
|
|
11131
11161
|
"title": "",
|
|
11132
11162
|
"submitText": "",
|
|
@@ -11150,19 +11180,7 @@ async function getObjectFilter(objectSchema, fields, options) {
|
|
|
11150
11180
|
"actions": [
|
|
11151
11181
|
{
|
|
11152
11182
|
"actionType": "custom",
|
|
11153
|
-
"script":
|
|
11154
|
-
doAction(
|
|
11155
|
-
{
|
|
11156
|
-
"componentId": 'service_${options.crudId}',
|
|
11157
|
-
"actionType": "setValue",
|
|
11158
|
-
"args": {
|
|
11159
|
-
"value": {
|
|
11160
|
-
"__filterFormValues": event.data
|
|
11161
|
-
}
|
|
11162
|
-
}
|
|
11163
|
-
}
|
|
11164
|
-
)
|
|
11165
|
-
`
|
|
11183
|
+
"script": onChangeScript
|
|
11166
11184
|
}
|
|
11167
11185
|
]
|
|
11168
11186
|
}
|
|
@@ -11237,7 +11255,6 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11237
11255
|
const bulkActions = getBulkActions(objectSchema);
|
|
11238
11256
|
const defaults = options.defaults;
|
|
11239
11257
|
const listSchema = (defaults && defaults.listSchema) || {};
|
|
11240
|
-
const id = `listview_${objectSchema.name}`;
|
|
11241
11258
|
|
|
11242
11259
|
const bodyProps = {
|
|
11243
11260
|
// toolbar: getToolbar(),
|
|
@@ -11247,7 +11264,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11247
11264
|
...options,
|
|
11248
11265
|
disableStatistics: options.queryCount === false
|
|
11249
11266
|
}),
|
|
11250
|
-
filter: options.filterVisible !== false && await getObjectFilter(objectSchema, fields,
|
|
11267
|
+
filter: options.filterVisible !== false && await getObjectFilter(objectSchema, fields, options),
|
|
11251
11268
|
};
|
|
11252
11269
|
if(options.formFactor !== 'SMALL' || ["split"].indexOf(options.displayAs) == -1){
|
|
11253
11270
|
if(listSchema.mode !== "cards"){
|
|
@@ -11276,8 +11293,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11276
11293
|
showDisplayAs,
|
|
11277
11294
|
hiddenCount: options.queryCount === false,
|
|
11278
11295
|
headerToolbarItems: options.headerToolbarItems,
|
|
11279
|
-
filterVisible: options.filterVisible
|
|
11280
|
-
crudId: id
|
|
11296
|
+
filterVisible: options.filterVisible
|
|
11281
11297
|
});
|
|
11282
11298
|
|
|
11283
11299
|
options.amisData = createObject(options.amisData, {
|
|
@@ -11290,6 +11306,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11290
11306
|
|
|
11291
11307
|
|
|
11292
11308
|
let body = null;
|
|
11309
|
+
const id = `listview_${objectSchema.name}`;
|
|
11293
11310
|
if(options.formFactor === 'SMALL' && false){
|
|
11294
11311
|
delete bodyProps.bulkActions;
|
|
11295
11312
|
delete bodyProps.headerToolbar;
|
|
@@ -13521,6 +13538,13 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
13521
13538
|
source.data.$self = "$$";
|
|
13522
13539
|
|
|
13523
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);
|
|
13524
13548
|
const selfData = JSON.parse(JSON.stringify(api.data.$self));
|
|
13525
13549
|
var filters = [];
|
|
13526
13550
|
var pageSize = api.data.pageSize || 10;
|
|
@@ -15164,9 +15188,7 @@ async function getFieldSearchable(perField, permissionFields, ctx){
|
|
|
15164
15188
|
|
|
15165
15189
|
const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, inFilterForm: true}));
|
|
15166
15190
|
if(amisField){
|
|
15167
|
-
return
|
|
15168
|
-
submitOnChange: false
|
|
15169
|
-
});
|
|
15191
|
+
return amisField;
|
|
15170
15192
|
}
|
|
15171
15193
|
}
|
|
15172
15194
|
}
|
|
@@ -15559,12 +15581,16 @@ async function getForm(props, mode = "edit") {
|
|
|
15559
15581
|
}
|
|
15560
15582
|
else if (mode === "new") {
|
|
15561
15583
|
let onNewItemSubmitScript = `
|
|
15562
|
-
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)));
|
|
15563
15589
|
doAction({
|
|
15564
15590
|
"componentId": "${props.id}",
|
|
15565
15591
|
"actionType": "setValue",
|
|
15566
15592
|
"args": {
|
|
15567
|
-
"value":
|
|
15593
|
+
"value": fieldValue
|
|
15568
15594
|
}
|
|
15569
15595
|
});
|
|
15570
15596
|
`;
|
|
@@ -15767,7 +15793,7 @@ const getAmisInputTableSchema = async (props, readonly) => {
|
|
|
15767
15793
|
"className": props.className
|
|
15768
15794
|
};
|
|
15769
15795
|
if (props.addable) {
|
|
15770
|
-
let buttonNewSchema = getButtonNew(props);
|
|
15796
|
+
let buttonNewSchema = await getButtonNew(props);
|
|
15771
15797
|
schema.body.push(buttonNewSchema);
|
|
15772
15798
|
}
|
|
15773
15799
|
if (props.amis) {
|
|
@@ -20786,7 +20812,7 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
|
|
|
20786
20812
|
source: {
|
|
20787
20813
|
"method": "post",
|
|
20788
20814
|
"url": "${context.rootUrl}/graphql",
|
|
20789
|
-
"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 "),
|
|
20790
20816
|
"trackExpression": "${" + steedosField.name + "}",
|
|
20791
20817
|
"cache": 3000
|
|
20792
20818
|
},
|