@steedos-widgets/amis-object 1.3.17-beta.2 → 1.3.18
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/AmisObjectTable.d.ts +1 -8
- package/dist/amis-object.cjs.css +16 -0
- package/dist/amis-object.cjs.js +224 -111
- package/dist/amis-object.cjs.js.map +1 -1
- package/dist/amis-object.esm.css +16 -0
- package/dist/amis-object.esm.js +225 -112
- package/dist/amis-object.esm.js.map +1 -1
- package/dist/amis-object.umd.css +16 -0
- package/dist/amis-object.umd.js +64 -52
- package/dist/amis-object.umd.js.map +1 -1
- package/dist/assets.json +21 -21
- package/dist/meta.js +8 -2
- package/package.json +3 -3
package/dist/amis-object.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { createContext, useState, useEffect, createElement } from 'react';
|
|
2
2
|
import * as _$1 from 'lodash';
|
|
3
|
-
import _$1__default, { isEmpty, isArray, each, find, endsWith, cloneDeep, toArray, mergeWith, isString, union, has, map, slice, defaultsDeep as defaultsDeep$1, includes, filter, omitBy, isNil, get as get$1, isObject as isObject$1, forEach, trimEnd, isBoolean, startsWith, isFunction, compact, difference, keys, pick, first, values, pickBy, random, assign } from 'lodash';
|
|
3
|
+
import _$1__default, { isEmpty, isArray, each, find, endsWith, cloneDeep, toArray, mergeWith, isString, union, has, map, slice, defaultsDeep as defaultsDeep$1, includes, clone, filter, omitBy, isNil, get as get$1, isObject as isObject$1, forEach, trimEnd, isBoolean, startsWith, isFunction, compact, difference, keys, pick, first, values, pickBy, random, assign } from 'lodash';
|
|
4
4
|
import { Dropdown, Image, Tabs, Spin, Badge, Skeleton, Modal as Modal$1, message, notification, Button, Space, Drawer as Drawer$1 } from 'antd';
|
|
5
5
|
import ReactDOM, { createRoot } from 'react-dom';
|
|
6
6
|
|
|
@@ -5127,9 +5127,9 @@ function getFieldWidth(width){
|
|
|
5127
5127
|
const defaultWidth = "unset";//用于使table内的td标签下生成div,实现将快速编辑按钮固定在右侧的效果,并不是为了unset效果
|
|
5128
5128
|
if(typeof width == 'string'){
|
|
5129
5129
|
if(isNaN(width)){
|
|
5130
|
-
return width;
|
|
5130
|
+
return width || defaultWidth;
|
|
5131
5131
|
}else {
|
|
5132
|
-
return Number(width);
|
|
5132
|
+
return Number(width) || defaultWidth;
|
|
5133
5133
|
}
|
|
5134
5134
|
}else if(typeof width == 'number'){
|
|
5135
5135
|
return width;
|
|
@@ -5230,6 +5230,7 @@ async function getTableColumns$1(fields, options){
|
|
|
5230
5230
|
width: getFieldWidth(field.width),
|
|
5231
5231
|
toggled: field.toggled,
|
|
5232
5232
|
className,
|
|
5233
|
+
inputClassName: "inline",
|
|
5233
5234
|
static: true,
|
|
5234
5235
|
}, field.amis, {name: field.name});
|
|
5235
5236
|
}
|
|
@@ -5267,6 +5268,7 @@ async function getTableColumns$1(fields, options){
|
|
|
5267
5268
|
tpl: tpl,
|
|
5268
5269
|
toggled: field.toggled,
|
|
5269
5270
|
className,
|
|
5271
|
+
inputClassName: "inline",
|
|
5270
5272
|
static: true,
|
|
5271
5273
|
options: field.type === 'html' ? {html: true} : null
|
|
5272
5274
|
// toggled: true
|
|
@@ -5288,8 +5290,8 @@ async function getTableColumns$1(fields, options){
|
|
|
5288
5290
|
const href = Router$1.getObjectDetailPath({
|
|
5289
5291
|
...options, formFactor: options.formFactor, appId: "${appId}", objectName: options.objectName || "${objectName}", recordId: `\${${options.idFieldName}}`
|
|
5290
5292
|
});
|
|
5291
|
-
columns[
|
|
5292
|
-
columns[
|
|
5293
|
+
columns[1].type = "tpl";
|
|
5294
|
+
columns[1].tpl = `<a href="${href}">\${${columns[1].name}}</a>`;
|
|
5293
5295
|
}
|
|
5294
5296
|
return columns;
|
|
5295
5297
|
}
|
|
@@ -5756,19 +5758,25 @@ async function getTableApi(mainObject, fields, options){
|
|
|
5756
5758
|
if(options.isRelated){
|
|
5757
5759
|
api.url += "&recordId=${_master.recordId}";
|
|
5758
5760
|
}
|
|
5759
|
-
|
|
5760
|
-
|
|
5761
|
+
api.cache = 3000;
|
|
5761
5762
|
api.data.$term = "$term";
|
|
5762
5763
|
api.data.term = "$term";
|
|
5763
5764
|
api.data.$self = "$$";
|
|
5764
5765
|
api.data.self = "$$";
|
|
5765
5766
|
api.data.filter = "$filter";
|
|
5766
|
-
api.data.__filterFormValues = "${__filterFormValues}";
|
|
5767
|
-
api.data.__serachBoxValues = "${__serachBoxValues}";
|
|
5768
5767
|
api.data.loaded = "${loaded}";
|
|
5769
5768
|
api.data.listViewId = "${listViewId}";
|
|
5770
5769
|
api.data.listName = "${listName}";
|
|
5771
5770
|
api.requestAdaptor = `
|
|
5771
|
+
let __changedFilterFormValues = api.data.$self.__changedFilterFormValues || {};
|
|
5772
|
+
let __changedSearchBoxValues = api.data.$self.__changedSearchBoxValues || {};
|
|
5773
|
+
// 把表单搜索和快速搜索中的change事件中记录的过滤条件也拼到$self中,是为解决触发搜索请求时,两边输入的过滤条件都带上,即:
|
|
5774
|
+
// 有时在搜索表单中输入过滤条件事,忘记点击回车键或搜索按钮,而是进一步修改快速搜索框中的关键字点击其中回车键触发搜索
|
|
5775
|
+
// 这种情况下,触发的搜索请求中没有带上搜索表单中输入的过滤条件。
|
|
5776
|
+
// 反过来先在快速搜索框中输入过滤条件却不点击其中回车键触发搜索,而是到搜索表单中触发搜索请求也是一样的。
|
|
5777
|
+
// 这里直接合并到api.data.$self,而不是后面定义的selfData变量,是因为可以省去在接收适配器中写一样的合并逻辑
|
|
5778
|
+
// 如果有问题可以改为合并到selfData变量中,但是要在接收适配器中写上一样的合并逻辑,否则里面的过滤条件不会存入本地存储中
|
|
5779
|
+
Object.assign(api.data.$self, __changedSearchBoxValues, __changedFilterFormValues);
|
|
5772
5780
|
// selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.
|
|
5773
5781
|
let selfData = JSON.parse(JSON.stringify(api.data.$self));
|
|
5774
5782
|
// 保留一份初始data,以供自定义发送适配器中获取原始数据。
|
|
@@ -5838,11 +5846,7 @@ async function getTableApi(mainObject, fields, options){
|
|
|
5838
5846
|
userFilters = [["${valueField.name}", "=", selfData.value]];
|
|
5839
5847
|
}
|
|
5840
5848
|
|
|
5841
|
-
|
|
5842
|
-
const __serachBoxValues = api.data.__serachBoxValues;
|
|
5843
|
-
// 筛选按钮
|
|
5844
|
-
const filterSelfData = __filterFormValues ? __filterFormValues : selfData;
|
|
5845
|
-
var searchableFilter = SteedosUI.getSearchFilter(filterSelfData) || [];
|
|
5849
|
+
var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];
|
|
5846
5850
|
if(searchableFilter.length > 0){
|
|
5847
5851
|
if(userFilters.length > 0 ){
|
|
5848
5852
|
userFilters = [userFilters, 'and', searchableFilter];
|
|
@@ -5863,8 +5867,7 @@ async function getTableApi(mainObject, fields, options){
|
|
|
5863
5867
|
})
|
|
5864
5868
|
}
|
|
5865
5869
|
|
|
5866
|
-
|
|
5867
|
-
var keywordsFilters = SteedosUI.getKeywordsSearchFilter(keyWords, allowSearchFields);
|
|
5870
|
+
var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);
|
|
5868
5871
|
if(keywordsFilters && keywordsFilters.length > 0){
|
|
5869
5872
|
userFilters.push(keywordsFilters);
|
|
5870
5873
|
}
|
|
@@ -5984,7 +5987,25 @@ async function getTableApi(mainObject, fields, options){
|
|
|
5984
5987
|
if(enable_tree){
|
|
5985
5988
|
const records = payload.data.rows || [];
|
|
5986
5989
|
const getTreeOptions = SteedosUI.getTreeOptions
|
|
5987
|
-
|
|
5990
|
+
let isTreeOptionsComputed = false;
|
|
5991
|
+
if(records.length === 1 && records[0].children){
|
|
5992
|
+
isTreeOptionsComputed = true;
|
|
5993
|
+
}
|
|
5994
|
+
if(!isTreeOptionsComputed){
|
|
5995
|
+
// 如果api接口设置在缓存,缓存期间并不会重新请求接口,payload.data.rows是上次计算后的结果
|
|
5996
|
+
payload.data.rows = getTreeOptions(records,{"valueField":"_id"});
|
|
5997
|
+
}
|
|
5998
|
+
try{
|
|
5999
|
+
setTimeout(() => {
|
|
6000
|
+
let expandBtn = $('.steedos-object-listview-content .antd-Table-content .antd-Table-table thead .antd-Table-expandBtn');
|
|
6001
|
+
if(expandBtn && expandBtn.length > 0 && !expandBtn.hasClass("is-active")){
|
|
6002
|
+
expandBtn[0].click();
|
|
6003
|
+
}
|
|
6004
|
+
}, 600);
|
|
6005
|
+
}
|
|
6006
|
+
catch(ex){
|
|
6007
|
+
console.error("tree数据格式展开异常:", ex);
|
|
6008
|
+
}
|
|
5988
6009
|
}
|
|
5989
6010
|
|
|
5990
6011
|
|
|
@@ -6017,19 +6038,6 @@ async function getTableApi(mainObject, fields, options){
|
|
|
6017
6038
|
selfData.page = localListViewProps.page || 1;
|
|
6018
6039
|
}
|
|
6019
6040
|
}
|
|
6020
|
-
|
|
6021
|
-
// 列表视图(对象表格)筛选按钮表单输入框输入内容后,如果不按回车键或者搜索按钮,selfData中该输入框是没有最新值的。
|
|
6022
|
-
const __filterFormValues = api.body.__filterFormValues;
|
|
6023
|
-
if(__filterFormValues){
|
|
6024
|
-
let filterFormValues = JSON.parse(JSON.stringify(__filterFormValues)) || {};
|
|
6025
|
-
selfData = Object.assign({}, selfData, filterFormValues);
|
|
6026
|
-
}
|
|
6027
|
-
// “搜索此列表”搜索框同理。
|
|
6028
|
-
const __serachBoxValues = api.body.__serachBoxValues;
|
|
6029
|
-
if(__serachBoxValues){
|
|
6030
|
-
let serachBoxValues = JSON.parse(JSON.stringify(__serachBoxValues)) || {};
|
|
6031
|
-
selfData = Object.assign({}, selfData, serachBoxValues);
|
|
6032
|
-
}
|
|
6033
6041
|
|
|
6034
6042
|
delete selfData.context;
|
|
6035
6043
|
delete selfData.global;
|
|
@@ -8804,6 +8812,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8804
8812
|
const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
|
|
8805
8813
|
const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
|
|
8806
8814
|
const onSearchScript = `
|
|
8815
|
+
// console.log("===onSearchScript=form==");
|
|
8807
8816
|
const scope = event.context.scoped;
|
|
8808
8817
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
8809
8818
|
return n.props.type === "form";
|
|
@@ -8860,25 +8869,13 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8860
8869
|
crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter});
|
|
8861
8870
|
`;
|
|
8862
8871
|
const onCancelScript = `
|
|
8863
|
-
|
|
8864
|
-
{
|
|
8865
|
-
"componentId": 'service_${ctx.crudId}',
|
|
8866
|
-
"actionType": "setValue",
|
|
8867
|
-
"args": {
|
|
8868
|
-
"value": {
|
|
8869
|
-
"__filterFormValues": null
|
|
8870
|
-
}
|
|
8871
|
-
}
|
|
8872
|
-
}
|
|
8873
|
-
)
|
|
8872
|
+
// console.log("===onCancelScript=form==");
|
|
8874
8873
|
const scope = event.context.scoped;
|
|
8875
8874
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
8876
8875
|
return n.props.type === "form";
|
|
8877
8876
|
});
|
|
8878
8877
|
var filterFormValues = filterForm.getValues();
|
|
8879
|
-
|
|
8880
|
-
return n.props.type === "crud";
|
|
8881
|
-
});
|
|
8878
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
8882
8879
|
const removedValues = {};
|
|
8883
8880
|
for(var k in filterFormValues){
|
|
8884
8881
|
if(/^__searchable__/.test(k)){
|
|
@@ -8893,7 +8890,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8893
8890
|
if(localListViewProps){
|
|
8894
8891
|
localListViewProps = JSON.parse(localListViewProps);
|
|
8895
8892
|
for(var k in localListViewProps){
|
|
8896
|
-
if(k
|
|
8893
|
+
if(/^__searchable__/.test(k)){
|
|
8897
8894
|
removedValues[k] = null;
|
|
8898
8895
|
}
|
|
8899
8896
|
}
|
|
@@ -8904,20 +8901,35 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
8904
8901
|
//lookup字段保留快速搜索条件
|
|
8905
8902
|
removedValues[keywordsSearchBoxName] = filterFormValues[keywordsSearchBoxName];
|
|
8906
8903
|
}
|
|
8907
|
-
filterForm.
|
|
8908
|
-
|
|
8909
|
-
|
|
8910
|
-
|
|
8911
|
-
|
|
8912
|
-
|
|
8913
|
-
|
|
8914
|
-
|
|
8904
|
+
filterForm.setValues(removedValues);//会把表单提交到toolbar的快速搜索区域,造成在快速搜索框中触发搜索时再次把搜索表单中的字段值清除掉的bug,已单独在快速搜索框那边添加搜索事件代码处理过了
|
|
8905
|
+
// 以下方法都无法实现清除表单值
|
|
8906
|
+
// filterForm.setValues({}, true)
|
|
8907
|
+
// filterForm.reset();
|
|
8908
|
+
// filterForm.handleAction({},{
|
|
8909
|
+
// "actionType": "setValue",
|
|
8910
|
+
// "args": {
|
|
8911
|
+
// "value": removedValues
|
|
8912
|
+
// }
|
|
8913
|
+
// });
|
|
8914
|
+
// 下面触发clear动作可以清除表单值,且不会把表单提交到toolbar的快速搜索区域,但是会把金额等范围字段清空成非范围字段
|
|
8915
|
+
// filterForm.handleAction({},{
|
|
8916
|
+
// "actionType": "clear"
|
|
8917
|
+
// });
|
|
8918
|
+
|
|
8919
|
+
// 清除__changedFilterFormValues中的值
|
|
8920
|
+
crud && crud.setData({__changedFilterFormValues: {}});
|
|
8921
|
+
filterForm.handleFormSubmit(event);
|
|
8922
|
+
// crud.handleFilterSubmit(removedValues);
|
|
8923
|
+
|
|
8924
|
+
let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
|
|
8925
|
+
filterFormService.setData({showFieldsFilter: !!!filterFormService.props.data.showFieldsFilter});
|
|
8915
8926
|
//触发amis crud 高度重算
|
|
8916
8927
|
setTimeout(()=>{
|
|
8917
8928
|
window.dispatchEvent(new Event("resize"))
|
|
8918
8929
|
}, 100);
|
|
8919
8930
|
// 移除搜索按钮上的红点
|
|
8920
|
-
let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
|
|
8931
|
+
// let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
|
|
8932
|
+
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
8921
8933
|
crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
|
|
8922
8934
|
`;
|
|
8923
8935
|
const dataProviderInited = `
|
|
@@ -9857,78 +9869,97 @@ function fields$1(){
|
|
|
9857
9869
|
|
|
9858
9870
|
function fieldsExtend$4(){
|
|
9859
9871
|
return {
|
|
9872
|
+
"group": "",
|
|
9860
9873
|
"label": {
|
|
9861
9874
|
"is_wide": true
|
|
9862
9875
|
},
|
|
9863
9876
|
"name": {
|
|
9877
|
+
"group": "",
|
|
9864
9878
|
"amis": {
|
|
9865
9879
|
"hidden": true,
|
|
9866
9880
|
"required": false
|
|
9867
9881
|
}
|
|
9868
9882
|
},
|
|
9869
9883
|
"object_name": {
|
|
9884
|
+
"group": "",
|
|
9870
9885
|
"amis": {
|
|
9871
9886
|
"hidden": true
|
|
9872
9887
|
}
|
|
9873
9888
|
},
|
|
9874
9889
|
"filter_scope": {
|
|
9890
|
+
"group": "",
|
|
9875
9891
|
"amis": {
|
|
9876
9892
|
"hidden": true,
|
|
9877
9893
|
"required": false
|
|
9878
9894
|
}
|
|
9879
9895
|
},
|
|
9880
9896
|
"columns": {
|
|
9897
|
+
"group": "",
|
|
9881
9898
|
"amis": {
|
|
9882
9899
|
"hidden": true,
|
|
9883
9900
|
"required": false
|
|
9884
9901
|
}
|
|
9885
9902
|
},
|
|
9886
9903
|
"mobile_columns":{
|
|
9904
|
+
"group": "",
|
|
9887
9905
|
"amis": {
|
|
9888
9906
|
"hidden": true,
|
|
9889
9907
|
"required": false
|
|
9890
9908
|
}
|
|
9891
9909
|
},
|
|
9892
9910
|
"searchable_fields":{
|
|
9911
|
+
"group": "",
|
|
9893
9912
|
"amis": {
|
|
9894
9913
|
"hidden": true,
|
|
9895
9914
|
"required": false
|
|
9896
9915
|
}
|
|
9897
9916
|
},
|
|
9898
9917
|
"filter_fields": {
|
|
9918
|
+
"group": "",
|
|
9899
9919
|
"amis": {
|
|
9900
9920
|
"hidden": true,
|
|
9901
9921
|
"required": false
|
|
9902
9922
|
}
|
|
9903
9923
|
},
|
|
9904
9924
|
"scrolling_mode": {
|
|
9925
|
+
"group": "",
|
|
9905
9926
|
"amis": {
|
|
9906
9927
|
"hidden": true,
|
|
9907
9928
|
"required": false
|
|
9908
9929
|
}
|
|
9909
9930
|
},
|
|
9910
9931
|
"sort": {
|
|
9932
|
+
"group": "",
|
|
9911
9933
|
"amis": {
|
|
9912
9934
|
"hidden": true,
|
|
9913
9935
|
"required": false
|
|
9914
9936
|
}
|
|
9915
9937
|
},
|
|
9916
9938
|
"show_count": {
|
|
9939
|
+
"group": "",
|
|
9917
9940
|
"amis": {
|
|
9918
9941
|
"hidden": true,
|
|
9919
9942
|
"required": false
|
|
9920
9943
|
}
|
|
9921
9944
|
},
|
|
9922
9945
|
"type": {
|
|
9946
|
+
"group": "",
|
|
9923
9947
|
"amis": {
|
|
9924
9948
|
"hidden": true,
|
|
9925
9949
|
"required": false
|
|
9926
9950
|
}
|
|
9927
9951
|
},
|
|
9928
9952
|
"shared": {
|
|
9953
|
+
"group": "",
|
|
9929
9954
|
"amis": {
|
|
9930
9955
|
"visibleOn": "${global.user.is_space_admin}"
|
|
9931
9956
|
}
|
|
9957
|
+
},
|
|
9958
|
+
"filters": {
|
|
9959
|
+
"group": "",
|
|
9960
|
+
"amis": {
|
|
9961
|
+
"hidden": true
|
|
9962
|
+
}
|
|
9932
9963
|
}
|
|
9933
9964
|
}
|
|
9934
9965
|
}
|
|
@@ -10075,6 +10106,12 @@ function fieldsExtend$3(){
|
|
|
10075
10106
|
"amis": {
|
|
10076
10107
|
"visibleOn": "${global.user.is_space_admin}"
|
|
10077
10108
|
}
|
|
10109
|
+
},
|
|
10110
|
+
"filters": {
|
|
10111
|
+
"group": "",
|
|
10112
|
+
"amis": {
|
|
10113
|
+
"hidden": true
|
|
10114
|
+
}
|
|
10078
10115
|
}
|
|
10079
10116
|
}
|
|
10080
10117
|
}
|
|
@@ -10413,7 +10450,6 @@ function fieldsExtend$1(){
|
|
|
10413
10450
|
}
|
|
10414
10451
|
},
|
|
10415
10452
|
"mobile_columns": {
|
|
10416
|
-
"group": instance.t('frontend_listview_control_columns_mobile_group'),
|
|
10417
10453
|
"amis": {
|
|
10418
10454
|
"type": "transfer",
|
|
10419
10455
|
"sortable": true,
|
|
@@ -10783,7 +10819,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
10783
10819
|
// }
|
|
10784
10820
|
`;
|
|
10785
10821
|
|
|
10786
|
-
function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords", crudId } = {}){
|
|
10822
|
+
// function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords", crudId } = {}){
|
|
10823
|
+
function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords" } = {}){
|
|
10787
10824
|
const searchableFieldsLabel = [];
|
|
10788
10825
|
_.each(mainObject.fields, function (field) {
|
|
10789
10826
|
if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
|
|
@@ -10799,6 +10836,33 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10799
10836
|
crudKeywords = (localListViewProps && localListViewProps.__keywords) || "";
|
|
10800
10837
|
}
|
|
10801
10838
|
|
|
10839
|
+
const onChangeScript = `
|
|
10840
|
+
const scope = event.context.scoped;
|
|
10841
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
10842
|
+
// let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
10843
|
+
let __changedSearchBoxValues = {};
|
|
10844
|
+
__changedSearchBoxValues["${keywordsSearchBoxName}"] = event.data["${keywordsSearchBoxName}"];
|
|
10845
|
+
// crudService && crudService.setData({__changedSearchBoxValues: __changedSearchBoxValues});
|
|
10846
|
+
// 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中
|
|
10847
|
+
crud && crud.setData({__changedSearchBoxValues: __changedSearchBoxValues});
|
|
10848
|
+
`;
|
|
10849
|
+
|
|
10850
|
+
// onSearchScript中加上了onChangeScript中的脚本,是因为amis 3.2不能用change事件执行onChangeScript
|
|
10851
|
+
// 而点击回车按键又不会触发blur事件,所以只能每次回车事件中额外再执行一次onChangeScript
|
|
10852
|
+
// 等升级到amis 3.4+,blur事件换成change事件执行onChangeScript,就可以不用在onSearchScript中执行onChangeScript了
|
|
10853
|
+
const onSearchScript = `
|
|
10854
|
+
${onChangeScript}
|
|
10855
|
+
|
|
10856
|
+
// 下面的脚本只为解决点击搜索表单取消按钮,再重新在其中输入过滤条件但是不点击搜索按钮或回车按键触发搜索,此时在快速搜索框输入过滤条件按回车按键会把搜索表单中的过滤条件清空的问题
|
|
10857
|
+
// const scope = event.context.scoped;
|
|
10858
|
+
// 如果点击过顶部搜索栏表单的取消按钮,会把此处event.data.__super.__super.__super中的搜索表单项的所有字段设置为null
|
|
10859
|
+
// 点击取消按钮后继续在表单项中输入过滤条件且最后没有点击回车按键或点击表单项搜索按钮的话,在快速搜索中点击回车按钮提交搜索会所顶部搜索表单中的字段值清空
|
|
10860
|
+
let filterForm = SteedosUI.getClosestAmisComponentByType(scope, "form");
|
|
10861
|
+
setTimeout(function(){
|
|
10862
|
+
filterForm.setValues(event.data.__changedFilterFormValues);
|
|
10863
|
+
}, 500);
|
|
10864
|
+
`;
|
|
10865
|
+
|
|
10802
10866
|
return {
|
|
10803
10867
|
"type": "tooltip-wrapper",
|
|
10804
10868
|
"id": "steedos_crud_toolbar_quick_search",
|
|
@@ -10817,28 +10881,24 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10817
10881
|
"placeholder": "搜索此列表",
|
|
10818
10882
|
"value": crudKeywords,
|
|
10819
10883
|
"clearable": true,
|
|
10820
|
-
"clearAndSubmit": true
|
|
10884
|
+
// "clearAndSubmit": true,//因为清除并不会触发失去焦点事件,只有禁用,但是它会触发change事件,所以等升级到amis 3.4+后可以重新放开
|
|
10821
10885
|
"searchImediately": false,
|
|
10822
10886
|
"onEvent": {
|
|
10823
|
-
"
|
|
10887
|
+
"search": {
|
|
10824
10888
|
"actions": [
|
|
10825
10889
|
{
|
|
10826
10890
|
"actionType": "custom",
|
|
10827
|
-
"script":
|
|
10828
|
-
doAction(
|
|
10829
|
-
{
|
|
10830
|
-
"componentId": 'service_${crudId}',
|
|
10831
|
-
"actionType": "setValue",
|
|
10832
|
-
"args": {
|
|
10833
|
-
"value": {
|
|
10834
|
-
"__serachBoxValues": event.data
|
|
10835
|
-
}
|
|
10836
|
-
}
|
|
10837
|
-
}
|
|
10838
|
-
)
|
|
10839
|
-
`
|
|
10891
|
+
"script": onSearchScript
|
|
10840
10892
|
}
|
|
10841
10893
|
]
|
|
10894
|
+
},
|
|
10895
|
+
"blur": { //这里把change事件换成blur是因为amis 3.2change事件中setData会卡,升级到3.4+后就可以换回change事件
|
|
10896
|
+
"actions": [
|
|
10897
|
+
{
|
|
10898
|
+
"actionType": "custom",
|
|
10899
|
+
"script": onChangeScript
|
|
10900
|
+
},
|
|
10901
|
+
]
|
|
10842
10902
|
}
|
|
10843
10903
|
}
|
|
10844
10904
|
}
|
|
@@ -10847,7 +10907,7 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
10847
10907
|
}
|
|
10848
10908
|
|
|
10849
10909
|
function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
10850
|
-
showDisplayAs = false, hiddenCount = false, headerToolbarItems,
|
|
10910
|
+
showDisplayAs = false, hiddenCount = false, headerToolbarItems,
|
|
10851
10911
|
filterVisible = true, isLookup = false, keywordsSearchBoxName } = {}){
|
|
10852
10912
|
// console.log(`getObjectHeaderToolbar====>`, filterVisible)
|
|
10853
10913
|
// console.log(`getObjectHeaderToolbar`, mainObject)
|
|
@@ -10951,7 +11011,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
|
10951
11011
|
};
|
|
10952
11012
|
}
|
|
10953
11013
|
let toolbarDisplayAsButton = getDisplayAsButton(mainObject?.name);
|
|
10954
|
-
let toolbarDQuickSearchBox = getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName
|
|
11014
|
+
let toolbarDQuickSearchBox = getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName });
|
|
10955
11015
|
|
|
10956
11016
|
// toolbars返回的数组元素不可以是空对象{},比如hiddenCount ? {} : {"type": "tpl",...},因为空对象最终还是会生成一个空的.antd-Crud-toolbar-item dom
|
|
10957
11017
|
// 当出现空的.antd-Crud-toolbar-item dom时会影响toolbar元素的maring-right css样式计算,如果有动态需要应该加到动态数组变量toolbars中
|
|
@@ -11099,6 +11159,20 @@ async function getObjectFilter(objectSchema, fields, options) {
|
|
|
11099
11159
|
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
11100
11160
|
crudService && crudService.setData({isFieldsFilterEmpty});
|
|
11101
11161
|
`;
|
|
11162
|
+
let onChangeScript = `
|
|
11163
|
+
const scope = event.context.scoped;
|
|
11164
|
+
// let filterFormValues = event.data;
|
|
11165
|
+
let filterForm = SteedosUI.getClosestAmisComponentByType(scope, "form");
|
|
11166
|
+
let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
|
|
11167
|
+
// 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。
|
|
11168
|
+
let filterFormValues = filterFormService.getData();
|
|
11169
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
11170
|
+
const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});;
|
|
11171
|
+
// let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
11172
|
+
// crudService && crudService.setData({__changedFilterFormValues: changedFilterFormValues});
|
|
11173
|
+
// 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中
|
|
11174
|
+
crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});
|
|
11175
|
+
`;
|
|
11102
11176
|
return {
|
|
11103
11177
|
"title": "",
|
|
11104
11178
|
"submitText": "",
|
|
@@ -11122,19 +11196,7 @@ async function getObjectFilter(objectSchema, fields, options) {
|
|
|
11122
11196
|
"actions": [
|
|
11123
11197
|
{
|
|
11124
11198
|
"actionType": "custom",
|
|
11125
|
-
"script":
|
|
11126
|
-
doAction(
|
|
11127
|
-
{
|
|
11128
|
-
"componentId": 'service_${options.crudId}',
|
|
11129
|
-
"actionType": "setValue",
|
|
11130
|
-
"args": {
|
|
11131
|
-
"value": {
|
|
11132
|
-
"__filterFormValues": event.data
|
|
11133
|
-
}
|
|
11134
|
-
}
|
|
11135
|
-
}
|
|
11136
|
-
)
|
|
11137
|
-
`
|
|
11199
|
+
"script": onChangeScript
|
|
11138
11200
|
}
|
|
11139
11201
|
]
|
|
11140
11202
|
}
|
|
@@ -11209,7 +11271,6 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11209
11271
|
const bulkActions = getBulkActions(objectSchema);
|
|
11210
11272
|
const defaults = options.defaults;
|
|
11211
11273
|
const listSchema = (defaults && defaults.listSchema) || {};
|
|
11212
|
-
const id = `listview_${objectSchema.name}`;
|
|
11213
11274
|
|
|
11214
11275
|
const bodyProps = {
|
|
11215
11276
|
// toolbar: getToolbar(),
|
|
@@ -11219,7 +11280,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11219
11280
|
...options,
|
|
11220
11281
|
disableStatistics: options.queryCount === false
|
|
11221
11282
|
}),
|
|
11222
|
-
filter: options.filterVisible !== false && await getObjectFilter(objectSchema, fields,
|
|
11283
|
+
filter: options.filterVisible !== false && await getObjectFilter(objectSchema, fields, options),
|
|
11223
11284
|
};
|
|
11224
11285
|
if(options.formFactor !== 'SMALL' || ["split"].indexOf(options.displayAs) == -1){
|
|
11225
11286
|
if(listSchema.mode !== "cards"){
|
|
@@ -11248,8 +11309,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11248
11309
|
showDisplayAs,
|
|
11249
11310
|
hiddenCount: options.queryCount === false,
|
|
11250
11311
|
headerToolbarItems: options.headerToolbarItems,
|
|
11251
|
-
filterVisible: options.filterVisible
|
|
11252
|
-
crudId: id
|
|
11312
|
+
filterVisible: options.filterVisible
|
|
11253
11313
|
});
|
|
11254
11314
|
|
|
11255
11315
|
options.amisData = createObject(options.amisData, {
|
|
@@ -11262,6 +11322,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11262
11322
|
|
|
11263
11323
|
|
|
11264
11324
|
let body = null;
|
|
11325
|
+
const id = `listview_${objectSchema.name}`;
|
|
11265
11326
|
if(options.formFactor === 'SMALL' && false){
|
|
11266
11327
|
delete bodyProps.bulkActions;
|
|
11267
11328
|
delete bodyProps.headerToolbar;
|
|
@@ -11340,7 +11401,12 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
11340
11401
|
hiddenOn: options.tableHiddenOn,
|
|
11341
11402
|
autoFillHeight,
|
|
11342
11403
|
className: `flex-auto ${crudClassName || ""}`,
|
|
11343
|
-
|
|
11404
|
+
// 这里不可以用动态className,因为它会把样式类加到.antd-Crud和.antd-Table.antd-Crud-body这两层div中,而子表列表中crudClassName中有hidden样式类会造成所有子表都不显示的bug
|
|
11405
|
+
// className: {
|
|
11406
|
+
// [`flex-auto ${crudClassName || ""}`]: "true",
|
|
11407
|
+
// "is-steedos-crud-data-empty": "${!items || COUNT(items) == 0}"
|
|
11408
|
+
// },
|
|
11409
|
+
bodyClassName: "bg-white",//上面className写成动态的class变量对象的话,bodyClassName不会生效,会被上面的className值覆盖
|
|
11344
11410
|
crudClassName: crudClassName,
|
|
11345
11411
|
quickSaveApi: {
|
|
11346
11412
|
url: `\${context.rootUrl}/graphql`,
|
|
@@ -13231,8 +13297,6 @@ async function lookupToAmisTreeSelect(field, readonly, ctx) {
|
|
|
13231
13297
|
return amisSchema;
|
|
13232
13298
|
}
|
|
13233
13299
|
|
|
13234
|
-
const keywordsSearchBoxName = `__keywords_lookup`;
|
|
13235
|
-
|
|
13236
13300
|
const getReferenceToFieldSchema = (field, refObjectConfig)=>{
|
|
13237
13301
|
let referenceTo = field.reference_to;
|
|
13238
13302
|
if(!referenceTo){
|
|
@@ -13491,8 +13555,18 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
13491
13555
|
|
|
13492
13556
|
source.data.$term = "$term";
|
|
13493
13557
|
source.data.$self = "$$";
|
|
13494
|
-
|
|
13558
|
+
|
|
13559
|
+
// field.name可能是带点的名称,比如审批王中子表字段'instances.instances_submitter',如果不替换掉点,会造成审批王表单中新建子表行时报错
|
|
13560
|
+
let keywordsSearchBoxName = `__keywords_lookup__${field.name.replace(/\./g, "_")}__to__${refObjectConfig.name}`;
|
|
13561
|
+
|
|
13495
13562
|
source.requestAdaptor = `
|
|
13563
|
+
let __changedFilterFormValues = api.data.$self.__changedFilterFormValues || {};
|
|
13564
|
+
let __changedSearchBoxValues = api.data.$self.__changedSearchBoxValues || {};
|
|
13565
|
+
// 把表单搜索和快速搜索中的change事件中记录的过滤条件也拼到$self中,是为解决触发搜索请求时,两边输入的过滤条件都带上,即:
|
|
13566
|
+
// 有时在搜索表单中输入过滤条件事,忘记点击回车键或搜索按钮,而是进一步修改快速搜索框中的关键字点击其中回车键触发搜索
|
|
13567
|
+
// 这种情况下,触发的搜索请求中没有带上搜索表单中输入的过滤条件。
|
|
13568
|
+
// 反过来先在快速搜索框中输入过滤条件却不点击其中回车键触发搜索,而是到搜索表单中触发搜索请求也是一样的。
|
|
13569
|
+
Object.assign(api.data.$self, __changedSearchBoxValues, __changedFilterFormValues);
|
|
13496
13570
|
const selfData = JSON.parse(JSON.stringify(api.data.$self));
|
|
13497
13571
|
var filters = [];
|
|
13498
13572
|
var pageSize = api.data.pageSize || 10;
|
|
@@ -13627,6 +13701,14 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
13627
13701
|
}
|
|
13628
13702
|
});
|
|
13629
13703
|
payload.data.rows = treeRecords;
|
|
13704
|
+
try{
|
|
13705
|
+
setTimeout(() => {
|
|
13706
|
+
$('.amis-dialog-widget.antd-Modal .antd-Table-content .antd-Table-table thead .antd-Table-expandBtn')[0]?.click();
|
|
13707
|
+
}, 600);
|
|
13708
|
+
}
|
|
13709
|
+
catch(ex){
|
|
13710
|
+
console.error("tree数据格式展开异常:", ex);
|
|
13711
|
+
}
|
|
13630
13712
|
}
|
|
13631
13713
|
return payload;
|
|
13632
13714
|
`;
|
|
@@ -13799,6 +13881,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
13799
13881
|
|
|
13800
13882
|
async function lookupToAmisSelect(field, readonly, ctx){
|
|
13801
13883
|
let referenceTo = await getReferenceTo(field);
|
|
13884
|
+
const isMobile = window.innerWidth <= 768;
|
|
13802
13885
|
const valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;
|
|
13803
13886
|
// const labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';
|
|
13804
13887
|
|
|
@@ -13979,7 +14062,11 @@ async function lookupToAmisSelect(field, readonly, ctx){
|
|
|
13979
14062
|
</span>
|
|
13980
14063
|
<span class='pl-1.5'>\${label}</span>
|
|
13981
14064
|
</span>`;
|
|
13982
|
-
|
|
14065
|
+
const menuTpl = "${icon ? `"+select_menuTpl+"` : label}";
|
|
14066
|
+
// TODO: 待amis修复了此bug, 就可以撤销添加menuTpl的判断。
|
|
14067
|
+
if(!(isMobile && field.multiple)){
|
|
14068
|
+
data.menuTpl = menuTpl;
|
|
14069
|
+
}
|
|
13983
14070
|
if(field.multiple){
|
|
13984
14071
|
data.multiple = true;
|
|
13985
14072
|
data.extractValue = true;
|
|
@@ -14487,6 +14574,8 @@ function getSelectFieldOptions(field){
|
|
|
14487
14574
|
}
|
|
14488
14575
|
|
|
14489
14576
|
async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
14577
|
+
// console.log('convertSFieldToAmisField====>', field, readonly, ctx)
|
|
14578
|
+
const isMobile = window.innerWidth <= 768;
|
|
14490
14579
|
// 创建人和修改人、创建时间和修改时间不显示
|
|
14491
14580
|
if(_$1.includes(OMIT_FIELDS, field.name) && ctx.showSystemFields != true){
|
|
14492
14581
|
return;
|
|
@@ -14549,7 +14638,11 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
14549
14638
|
</span>
|
|
14550
14639
|
<span class='pl-1.5'>\${label}</span>
|
|
14551
14640
|
</span>`;
|
|
14552
|
-
|
|
14641
|
+
const menuTpl = "${icon ? `"+select_menuTpl+"` : label}";
|
|
14642
|
+
// TODO: 待amis修复了此bug, 就可以撤销添加menuTpl的判断。
|
|
14643
|
+
if(!(isMobile && field.multiple)){
|
|
14644
|
+
convertData.menuTpl = menuTpl;
|
|
14645
|
+
}
|
|
14553
14646
|
if(field.multiple){
|
|
14554
14647
|
convertData.multiple = true;
|
|
14555
14648
|
convertData.extractValue = true;
|
|
@@ -15136,9 +15229,7 @@ async function getFieldSearchable(perField, permissionFields, ctx){
|
|
|
15136
15229
|
|
|
15137
15230
|
const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, inFilterForm: true}));
|
|
15138
15231
|
if(amisField){
|
|
15139
|
-
return
|
|
15140
|
-
submitOnChange: false
|
|
15141
|
-
});
|
|
15232
|
+
return amisField;
|
|
15142
15233
|
}
|
|
15143
15234
|
}
|
|
15144
15235
|
}
|
|
@@ -15412,7 +15503,7 @@ async function getFormBody(permissionFields, formFields, ctx){
|
|
|
15412
15503
|
* @Author: 殷亮辉 yinlianghui@hotoa.com
|
|
15413
15504
|
* @Date: 2023-11-15 09:50:22
|
|
15414
15505
|
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
15415
|
-
* @LastEditTime: 2023-
|
|
15506
|
+
* @LastEditTime: 2023-12-04 17:36:50
|
|
15416
15507
|
*/
|
|
15417
15508
|
|
|
15418
15509
|
/**
|
|
@@ -15531,12 +15622,16 @@ async function getForm(props, mode = "edit") {
|
|
|
15531
15622
|
}
|
|
15532
15623
|
else if (mode === "new") {
|
|
15533
15624
|
let onNewItemSubmitScript = `
|
|
15534
|
-
event.data["${props.name}"]
|
|
15625
|
+
let fieldValue = _.cloneDeep(event.data["${props.name}"]);
|
|
15626
|
+
if(!fieldValue){
|
|
15627
|
+
fieldValue = [];
|
|
15628
|
+
}
|
|
15629
|
+
fieldValue.push(JSON.parse(JSON.stringify(event.data)));
|
|
15535
15630
|
doAction({
|
|
15536
15631
|
"componentId": "${props.id}",
|
|
15537
15632
|
"actionType": "setValue",
|
|
15538
15633
|
"args": {
|
|
15539
|
-
"value":
|
|
15634
|
+
"value": fieldValue
|
|
15540
15635
|
}
|
|
15541
15636
|
});
|
|
15542
15637
|
`;
|
|
@@ -15738,11 +15833,20 @@ const getAmisInputTableSchema = async (props, readonly) => {
|
|
|
15738
15833
|
],
|
|
15739
15834
|
"className": props.className
|
|
15740
15835
|
};
|
|
15836
|
+
let footerToolbar = clone(props.footerToolbar || []); //这里不clone的话,会造成死循环,应该是因为props属性变更会让组件重新渲染
|
|
15741
15837
|
if (props.addable) {
|
|
15742
|
-
let buttonNewSchema = getButtonNew(props);
|
|
15743
|
-
|
|
15838
|
+
let buttonNewSchema = await getButtonNew(props);
|
|
15839
|
+
footerToolbar.unshift(buttonNewSchema);
|
|
15840
|
+
}
|
|
15841
|
+
if (footerToolbar.length) {
|
|
15842
|
+
schema.body.push({
|
|
15843
|
+
"type": "wrapper",
|
|
15844
|
+
"size": "none",
|
|
15845
|
+
"body": footerToolbar
|
|
15846
|
+
});
|
|
15744
15847
|
}
|
|
15745
15848
|
if (props.amis) {
|
|
15849
|
+
delete props.amis.id;
|
|
15746
15850
|
Object.assign(schema.body[0], props.amis);
|
|
15747
15851
|
}
|
|
15748
15852
|
return schema;
|
|
@@ -19135,7 +19239,7 @@ var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, voi
|
|
|
19135
19239
|
amisSchemaData = Object.assign({}, data, defaultData);
|
|
19136
19240
|
listViewId = (ctx === null || ctx === void 0 ? void 0 : ctx.listViewId) || amisSchemaData.listViewId;
|
|
19137
19241
|
allData = createObject(data, defaultData);
|
|
19138
|
-
listViewSchemaProps = __assign$2(__assign$2({ top: top, perPage: perPage,
|
|
19242
|
+
listViewSchemaProps = __assign$2(__assign$2({ top: top, perPage: perPage, defaults: defaults }, ctx), { listViewId: listViewId, setDataToComponentId: setDataToComponentId, filterVisible: filterVisible, showDisplayAs: showDisplayAs, displayAs: displayAs, headerToolbarItems: headerToolbarItems, rowClassNameExpr: rowClassNameExpr, hiddenColumnOperation: hiddenColumnOperation, columns: columns, crudDataFilter: crudDataFilter, onCrudDataFilter: onCrudDataFilter, amisData: allData, env: env, requestAdaptor: requestAdaptor, adaptor: adaptor });
|
|
19139
19243
|
if (!headerSchema) {
|
|
19140
19244
|
headerSchema = getObjectListHeader$1(uiSchema, listName, ctx);
|
|
19141
19245
|
}
|
|
@@ -19151,6 +19255,9 @@ var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, voi
|
|
|
19151
19255
|
serviceData.uiSchema = uiSchema;
|
|
19152
19256
|
}
|
|
19153
19257
|
serviceData.defaultListName = listName ? listName : (_h = first(values(uiSchema.list_views))) === null || _h === void 0 ? void 0 : _h.name;
|
|
19258
|
+
if (!showHeader) {
|
|
19259
|
+
headerSchema = {};
|
|
19260
|
+
}
|
|
19154
19261
|
// console.timeEnd('AmisObjectListView')
|
|
19155
19262
|
// console.log('serviceData===>', serviceData)
|
|
19156
19263
|
// console.log('headerSchema===>', headerSchema)
|
|
@@ -19234,7 +19341,7 @@ function getTableColumns(columns, includedFields, fieldsExtend) {
|
|
|
19234
19341
|
return tableColumns;
|
|
19235
19342
|
}
|
|
19236
19343
|
var AmisObjectTable = function (props) { return __awaiter(void 0, void 0, void 0, function () {
|
|
19237
|
-
var $schema, filters, filtersFunction, amisCondition, top, headerSchema, includedFields, fieldsExtend, sort, sortField, sortOrder, extraColumns, data, defaultData, _a, formFactor, _b, className, requestAdaptor, adaptor, _c, filterVisible, headerToolbarItems, crudDataFilter, onCrudDataFilter, env, crudMode, _d, hiddenColumnOperation, ctx, crud, columns, defaults, objectApiName, schemaKeys, listSchema, setDataToComponentId, amisFilters, tableFilters, amisSchemaData, allData, appId, amisSchema;
|
|
19344
|
+
var $schema, filters, filtersFunction, amisCondition, top, headerSchema, includedFields, fieldsExtend, sort, sortField, sortOrder, extraColumns, data, defaultData, _a, formFactor, _b, className, requestAdaptor, adaptor, _c, filterVisible, headerToolbarItems, crudDataFilter, onCrudDataFilter, env, crudMode, _d, hiddenColumnOperation, ctx, crud, columns, defaults, objectApiName, schemaKeys, listSchema, setDataToComponentId, amisFilters, tableFilters, amisSchemaData, allData, appId, tableSchema, amisSchema, uiSchema;
|
|
19238
19345
|
return __generator(this, function (_e) {
|
|
19239
19346
|
switch (_e.label) {
|
|
19240
19347
|
case 0:
|
|
@@ -19288,12 +19395,14 @@ var AmisObjectTable = function (props) { return __awaiter(void 0, void 0, void 0
|
|
|
19288
19395
|
ctx = pickBy(ctx, function (value) { return value !== undefined; });
|
|
19289
19396
|
return [4 /*yield*/, getTableSchema(appId, objectApiName, columns, __assign$2(__assign$2({ filters: tableFilters, filtersFunction: filtersFunction, top: top, sort: sort, sortField: sortField, sortOrder: sortOrder, extraColumns: extraColumns, defaults: defaults }, ctx), { setDataToComponentId: setDataToComponentId, requestAdaptor: requestAdaptor, adaptor: adaptor, filterVisible: filterVisible, headerToolbarItems: headerToolbarItems, crudDataFilter: crudDataFilter, onCrudDataFilter: onCrudDataFilter, amisData: allData, env: env }))];
|
|
19290
19397
|
case 1:
|
|
19291
|
-
|
|
19398
|
+
tableSchema = _e.sent();
|
|
19399
|
+
amisSchema = tableSchema.amisSchema;
|
|
19400
|
+
uiSchema = tableSchema.uiSchema;
|
|
19292
19401
|
amisSchema.data = Object.assign({}, amisSchema.data, amisSchemaData);
|
|
19293
19402
|
if (has(props, 'objectApiName')) {
|
|
19294
19403
|
amisSchema.data.objectName = objectApiName;
|
|
19295
19404
|
}
|
|
19296
|
-
amisSchema.className = "steedos-object-table ".concat(amisSchema.className, " h-full flex flex-col ").concat(className);
|
|
19405
|
+
amisSchema.className = "steedos-object-table ".concat(uiSchema.enable_tree ? "is-steedos-tree-table" : "", " ").concat(amisSchema.className, " h-full flex flex-col ").concat(className);
|
|
19297
19406
|
amisSchema.objectApiName = objectApiName; //设计器中切换对象时画布中显示的列未同步变更
|
|
19298
19407
|
// console.timeEnd('AmisObjectTable')
|
|
19299
19408
|
return [2 /*return*/, amisSchema];
|
|
@@ -19457,12 +19566,12 @@ var AmisRecordService = function (props) { return __awaiter(void 0, void 0, void
|
|
|
19457
19566
|
}); };
|
|
19458
19567
|
|
|
19459
19568
|
var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, void 0, void 0, function () {
|
|
19460
|
-
var $schema, objectApiName, recordId, relatedObjectApiName, data, relatedKey, top, perPage, hiddenEmptyTable, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, requestAdaptor, adaptor, formFactor, formData, schema;
|
|
19569
|
+
var $schema, objectApiName, recordId, relatedObjectApiName, data, relatedKey, top, perPage, hiddenEmptyTable, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, requestAdaptor, adaptor, visibleOn, formFactor, formData, schema;
|
|
19461
19570
|
var _b;
|
|
19462
19571
|
return __generator(this, function (_c) {
|
|
19463
19572
|
switch (_c.label) {
|
|
19464
19573
|
case 0:
|
|
19465
|
-
$schema = props.$schema, objectApiName = props.objectApiName, recordId = props.recordId, relatedObjectApiName = props.relatedObjectApiName, data = props.data, relatedKey = props.relatedKey, top = props.top, perPage = props.perPage, hiddenEmptyTable = props.hiddenEmptyTable, appId = props.appId, relatedLabel = props.relatedLabel, _a = props.className, className = _a === void 0 ? '' : _a, columns = props.columns, sort = props.sort, filters = props.filters, visible_on = props.visible_on, requestAdaptor = props.requestAdaptor, adaptor = props.adaptor;
|
|
19574
|
+
$schema = props.$schema, objectApiName = props.objectApiName, recordId = props.recordId, relatedObjectApiName = props.relatedObjectApiName, data = props.data, relatedKey = props.relatedKey, top = props.top, perPage = props.perPage, hiddenEmptyTable = props.hiddenEmptyTable, appId = props.appId, relatedLabel = props.relatedLabel, _a = props.className, className = _a === void 0 ? '' : _a, columns = props.columns, sort = props.sort, filters = props.filters, visible_on = props.visible_on, requestAdaptor = props.requestAdaptor, adaptor = props.adaptor, visibleOn = props.visibleOn;
|
|
19466
19575
|
formFactor = props.formFactor;
|
|
19467
19576
|
if (!formFactor) {
|
|
19468
19577
|
formFactor = window.innerWidth < 768 ? 'SMALL' : 'LARGE';
|
|
@@ -19497,6 +19606,10 @@ var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, vo
|
|
|
19497
19606
|
}
|
|
19498
19607
|
});
|
|
19499
19608
|
}
|
|
19609
|
+
// 因为 visibleOn 的值格式是字符串,所以这里加个判断条件。
|
|
19610
|
+
if (visibleOn) {
|
|
19611
|
+
schema.visibleOn = visibleOn;
|
|
19612
|
+
}
|
|
19500
19613
|
return [2 /*return*/, schema];
|
|
19501
19614
|
}
|
|
19502
19615
|
});
|
|
@@ -20758,7 +20871,7 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
|
|
|
20758
20871
|
source: {
|
|
20759
20872
|
"method": "post",
|
|
20760
20873
|
"url": "${context.rootUrl}/graphql",
|
|
20761
|
-
"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 "),
|
|
20874
|
+
"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 "),
|
|
20762
20875
|
"trackExpression": "${" + steedosField.name + "}",
|
|
20763
20876
|
"cache": 3000
|
|
20764
20877
|
},
|
|
@@ -21162,7 +21275,7 @@ var AmisInputTable = function (props) { return __awaiter(void 0, void 0, void 0,
|
|
|
21162
21275
|
return __generator(this, function (_a) {
|
|
21163
21276
|
switch (_a.label) {
|
|
21164
21277
|
case 0:
|
|
21165
|
-
props.$schema, props.fields, props.name, props.id, props.data, props.columns, props.amis, props.className, props.tableClassName;
|
|
21278
|
+
props.$schema, props.fields, props.name, props.id, props.data, props.columns, props.amis, props.className, props.tableClassName, props.footerToolbar;
|
|
21166
21279
|
return [4 /*yield*/, getAmisInputTableSchema(props)];
|
|
21167
21280
|
case 1:
|
|
21168
21281
|
amisSchema = _a.sent();
|