@steedos-widgets/sortable 1.3.4-beta.9 → 1.3.6
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/assets.json +5 -5
- package/dist/sortable.cjs.js +526 -144
- package/dist/sortable.cjs.js.map +1 -1
- package/dist/sortable.esm.js +526 -144
- package/dist/sortable.esm.js.map +1 -1
- package/dist/sortable.umd.js +526 -144
- package/package.json +3 -3
- package/src/components/MultipleContainers.tsx +59 -23
package/dist/sortable.umd.js
CHANGED
|
@@ -20381,7 +20381,7 @@
|
|
|
20381
20381
|
if(optionColor){
|
|
20382
20382
|
const background = optionColor.charAt(0) === '#' ? optionColor : '#'+optionColor;
|
|
20383
20383
|
const color = getContrastColor(background);
|
|
20384
|
-
const optionColorStyle = 'background:'+background+';color:'+color;
|
|
20384
|
+
const optionColorStyle = 'background:'+background+';color:'+color+';line-height:1.5rem';
|
|
20385
20385
|
map[optionValue] = `<span class="rounded-xl px-2 py-1" style='${optionColorStyle}'>${option.label}</span>`;
|
|
20386
20386
|
}else {
|
|
20387
20387
|
map[optionValue] = option.label;
|
|
@@ -20642,17 +20642,17 @@
|
|
|
20642
20642
|
}
|
|
20643
20643
|
|
|
20644
20644
|
const countQuery = options.count === false ? "" : `,count:${object.name}__count(filters:{__filters})`;
|
|
20645
|
-
const moreQuerie = options.moreQueries?.length ? ("," + options.moreQueries.map(function(item){
|
|
20646
|
-
|
|
20647
|
-
|
|
20648
|
-
}).join(",")) : "";
|
|
20645
|
+
// const moreQuerie = options.moreQueries?.length ? ("," + options.moreQueries.map(function(item){
|
|
20646
|
+
// // 把最外层的{}去除
|
|
20647
|
+
// return item.replace(/^{/,"").replace(/}$/,"");
|
|
20648
|
+
// }).join(",")) : "";
|
|
20649
20649
|
|
|
20650
20650
|
return {
|
|
20651
20651
|
orderBy: "${orderBy}",
|
|
20652
20652
|
orderDir: "${orderDir}",
|
|
20653
20653
|
pageNo: "${page}",
|
|
20654
20654
|
pageSize: "${perPage}",
|
|
20655
|
-
query: `{${alias}:${object.name}${queryOptions}{${await getFieldsTemplate(fields, options.expand)}${treeFields}${cfsFields}}${countQuery}
|
|
20655
|
+
query: `{${alias}:${object.name}${queryOptions}{${await getFieldsTemplate(fields, options.expand)}${treeFields}${cfsFields}}${countQuery}}`
|
|
20656
20656
|
}
|
|
20657
20657
|
}
|
|
20658
20658
|
|
|
@@ -21454,7 +21454,7 @@
|
|
|
21454
21454
|
showFieldsFilter = true;
|
|
21455
21455
|
}
|
|
21456
21456
|
filterService.setData({showFieldsFilter});
|
|
21457
|
-
resizeWindow()
|
|
21457
|
+
// resizeWindow();//已迁移到搜索栏表单提交事件中执行,因为表单项change后也会触发表单提交了
|
|
21458
21458
|
// 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。
|
|
21459
21459
|
let filterFormValues = event.data;
|
|
21460
21460
|
let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
|
|
@@ -21518,7 +21518,8 @@
|
|
|
21518
21518
|
if(isLookup){
|
|
21519
21519
|
searchableFieldsStoreKey += "/lookup/" + objectName;
|
|
21520
21520
|
}
|
|
21521
|
-
|
|
21521
|
+
searchableFieldsStoreKey = searchableFieldsStoreKey + "/" + (data.context && data.context.userId);
|
|
21522
|
+
let defaultSearchableFields = localStorage.getItem(searchableFieldsStoreKey);
|
|
21522
21523
|
if(defaultSearchableFields){
|
|
21523
21524
|
defaultSearchableFields = defaultSearchableFields.split(",");
|
|
21524
21525
|
}
|
|
@@ -21587,7 +21588,8 @@
|
|
|
21587
21588
|
if(isLookup){
|
|
21588
21589
|
searchableFieldsStoreKey += "/lookup/" + objectName;
|
|
21589
21590
|
}
|
|
21590
|
-
|
|
21591
|
+
searchableFieldsStoreKey = searchableFieldsStoreKey + "/" + (data.context && data.context.userId);
|
|
21592
|
+
localStorage.setItem(searchableFieldsStoreKey, value);
|
|
21591
21593
|
|
|
21592
21594
|
// ===START===:当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。
|
|
21593
21595
|
const searchableFields = data.fields;
|
|
@@ -22093,7 +22095,8 @@
|
|
|
22093
22095
|
"&": "${list_view}",
|
|
22094
22096
|
"name":"",
|
|
22095
22097
|
"label": instance.t('frontend_listview_control_clone_defaultData_label_start') + " ${list_view.label} " + instance.t('frontend_listview_control_clone_defaultData_label_end'),
|
|
22096
|
-
"shared":false
|
|
22098
|
+
"shared":false,
|
|
22099
|
+
"object_name": "${targetObjectName}",
|
|
22097
22100
|
},
|
|
22098
22101
|
"fieldsExtend": fieldsExtend$3(),
|
|
22099
22102
|
"fields": fields(),
|
|
@@ -22881,7 +22884,7 @@ let resizeWindow = function(){
|
|
|
22881
22884
|
//触发amis crud 高度重算
|
|
22882
22885
|
setTimeout(()=>{
|
|
22883
22886
|
window.dispatchEvent(new Event("resize"))
|
|
22884
|
-
},
|
|
22887
|
+
}, 1000);
|
|
22885
22888
|
}
|
|
22886
22889
|
resizeWindow();
|
|
22887
22890
|
// 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题
|
|
@@ -22943,7 +22946,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
22943
22946
|
"placeholder": "搜索此列表",
|
|
22944
22947
|
"value": crudKeywords,
|
|
22945
22948
|
"clearable": true,
|
|
22946
|
-
"clearAndSubmit": true
|
|
22949
|
+
"clearAndSubmit": true,
|
|
22950
|
+
"searchImediately": true
|
|
22947
22951
|
}
|
|
22948
22952
|
]
|
|
22949
22953
|
}
|
|
@@ -23118,6 +23122,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
23118
23122
|
}
|
|
23119
23123
|
|
|
23120
23124
|
function getObjectFooterToolbar(mainObject, formFactor, options) {
|
|
23125
|
+
// crud card模式与table模式两种情况下showPageInput默认值不一样,所以需要显式设置为false
|
|
23121
23126
|
if (formFactor === 'SMALL') {
|
|
23122
23127
|
// return [
|
|
23123
23128
|
// "load-more",
|
|
@@ -23127,14 +23132,17 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
23127
23132
|
"switch-per-page",
|
|
23128
23133
|
{
|
|
23129
23134
|
"type": "pagination",
|
|
23130
|
-
"maxButtons": 5
|
|
23135
|
+
"maxButtons": 5,
|
|
23136
|
+
"showPageInput": false
|
|
23131
23137
|
}
|
|
23132
23138
|
]
|
|
23133
23139
|
}else {
|
|
23134
23140
|
return [
|
|
23141
|
+
// "statistics",
|
|
23135
23142
|
{
|
|
23136
23143
|
"type": "pagination",
|
|
23137
|
-
"maxButtons": 5
|
|
23144
|
+
"maxButtons": 5,
|
|
23145
|
+
"showPageInput": false
|
|
23138
23146
|
}
|
|
23139
23147
|
]
|
|
23140
23148
|
}
|
|
@@ -23143,32 +23151,81 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
23143
23151
|
if(options && options.isRelated){
|
|
23144
23152
|
return [
|
|
23145
23153
|
"statistics",
|
|
23146
|
-
|
|
23154
|
+
{
|
|
23155
|
+
"type": "pagination",
|
|
23156
|
+
"maxButtons": 10,
|
|
23157
|
+
"showPageInput": false
|
|
23158
|
+
}
|
|
23147
23159
|
]
|
|
23148
23160
|
|
|
23149
23161
|
}
|
|
23150
23162
|
else {
|
|
23151
|
-
|
|
23152
|
-
|
|
23163
|
+
const no_pagination = mainObject.paging && (mainObject.paging.enabled === false);
|
|
23164
|
+
const is_lookup = options.isLookup;
|
|
23165
|
+
const commonConfig = [
|
|
23153
23166
|
"statistics",
|
|
23154
|
-
|
|
23155
|
-
|
|
23167
|
+
{
|
|
23168
|
+
"type": "pagination",
|
|
23169
|
+
"maxButtons": 10,
|
|
23170
|
+
"showPageInput": false
|
|
23171
|
+
}
|
|
23172
|
+
];
|
|
23173
|
+
|
|
23174
|
+
if (no_pagination && is_lookup) {
|
|
23175
|
+
return commonConfig;
|
|
23176
|
+
} else {
|
|
23177
|
+
return ["switch-per-page", ...commonConfig];
|
|
23178
|
+
}
|
|
23156
23179
|
}
|
|
23157
23180
|
}
|
|
23158
23181
|
}
|
|
23159
23182
|
|
|
23160
23183
|
async function getObjectFilter(objectSchema, fields, options) {
|
|
23161
23184
|
const fieldsFilterBarSchema = await getObjectListHeaderFieldsFilterBar(objectSchema, null, options);
|
|
23185
|
+
let onSubmitSuccScript = `
|
|
23186
|
+
let isLookup = event.data.isLookup;
|
|
23187
|
+
if(isLookup){
|
|
23188
|
+
return;
|
|
23189
|
+
}
|
|
23190
|
+
// 列表搜索栏字段值变更后立刻触发提交表单执行crud搜索,所以这里需要额外重算crud高度及筛选按钮红色星号图标显示隐藏
|
|
23191
|
+
let resizeWindow = function(){
|
|
23192
|
+
//触发amis crud 高度重算
|
|
23193
|
+
setTimeout(()=>{
|
|
23194
|
+
window.dispatchEvent(new Event("resize"))
|
|
23195
|
+
}, 1000);
|
|
23196
|
+
}
|
|
23197
|
+
resizeWindow();
|
|
23198
|
+
const scope = event.context.scoped;
|
|
23199
|
+
// let filterFormValues = event.data;
|
|
23200
|
+
let filterForm = SteedosUI.getClosestAmisComponentByType(scope, "form");
|
|
23201
|
+
let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
|
|
23202
|
+
// 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。
|
|
23203
|
+
let filterFormValues = filterFormService.getData()
|
|
23204
|
+
let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
|
|
23205
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
23206
|
+
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
23207
|
+
crudService && crudService.setData({isFieldsFilterEmpty});
|
|
23208
|
+
`;
|
|
23162
23209
|
return {
|
|
23163
23210
|
"title": "",
|
|
23164
23211
|
"submitText": "",
|
|
23165
23212
|
"className": "",
|
|
23166
|
-
|
|
23213
|
+
"debug": true,
|
|
23167
23214
|
"mode": "normal",
|
|
23168
23215
|
"wrapWithPanel": false,
|
|
23169
23216
|
"body": [
|
|
23170
23217
|
fieldsFilterBarSchema
|
|
23171
|
-
]
|
|
23218
|
+
],
|
|
23219
|
+
"onEvent": {
|
|
23220
|
+
"submitSucc": {
|
|
23221
|
+
"actions": [
|
|
23222
|
+
{
|
|
23223
|
+
"actionType": "custom",
|
|
23224
|
+
"script": onSubmitSuccScript
|
|
23225
|
+
}
|
|
23226
|
+
]
|
|
23227
|
+
}
|
|
23228
|
+
}
|
|
23172
23229
|
}
|
|
23173
23230
|
}
|
|
23174
23231
|
|
|
@@ -23789,13 +23846,15 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
23789
23846
|
pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
|
|
23790
23847
|
const isAllowCreate = refObjectConfig.permissions.allowCreate;
|
|
23791
23848
|
const isCreate = lodash.exports.isBoolean(field.create) ? field.create : true;
|
|
23792
|
-
|
|
23849
|
+
// lookup字段配置过滤条件就强制不显示新建按钮
|
|
23850
|
+
let isHasFilters = (field.filters || field._filtersFunction) ? true : false;
|
|
23851
|
+
if (isAllowCreate && isCreate && !isHasFilters) {
|
|
23793
23852
|
const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
|
|
23794
23853
|
new_button.align = "right";
|
|
23795
23854
|
// 保持快速搜索放在最左侧,新建按钮往里插,而不是push到最后
|
|
23796
23855
|
pickerSchema.headerToolbar.splice(pickerSchema.headerToolbar.length - 1, 0, new_button);
|
|
23797
23856
|
}
|
|
23798
|
-
pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar();
|
|
23857
|
+
pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar(refObjectConfig,ctx.formFactor,{isLookup: true});
|
|
23799
23858
|
if (ctx.filterVisible !== false) {
|
|
23800
23859
|
pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
|
|
23801
23860
|
...ctx,
|
|
@@ -23923,10 +23982,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
23923
23982
|
// const labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';
|
|
23924
23983
|
|
|
23925
23984
|
let apiInfo;
|
|
23926
|
-
|
|
23985
|
+
let defaultValueOptionsQueryData;
|
|
23927
23986
|
if(referenceTo){
|
|
23928
23987
|
// 字段值单独走一个请求合并到source的同一个GraphQL接口中
|
|
23929
|
-
|
|
23988
|
+
defaultValueOptionsQueryData = await getFindQuery({ name: referenceTo.objectName }, null, [
|
|
23930
23989
|
Object.assign({}, referenceTo.labelField, {alias: 'label'}),
|
|
23931
23990
|
Object.assign({}, referenceTo.valueField, {alias: 'value'})
|
|
23932
23991
|
], {
|
|
@@ -23939,7 +23998,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
23939
23998
|
}, null, [
|
|
23940
23999
|
Object.assign({}, referenceTo.labelField, {alias: 'label'}),
|
|
23941
24000
|
Object.assign({}, referenceTo.valueField, {alias: 'value'})
|
|
23942
|
-
], {expand: false, alias: 'options', queryOptions: `filters: {__filters}, top: {__top}, sort: "{__sort}"
|
|
24001
|
+
], {expand: false, alias: 'options', queryOptions: `filters: {__filters}, top: {__top}, sort: "{__sort}"`});
|
|
23943
24002
|
|
|
23944
24003
|
apiInfo.adaptor = `
|
|
23945
24004
|
const data = payload.data;
|
|
@@ -24033,11 +24092,16 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24033
24092
|
var optionsFiltersOp = "${field.multiple ? "in" : "="}";
|
|
24034
24093
|
var optionsFilters = [["${valueFieldKey}", optionsFiltersOp, []]];
|
|
24035
24094
|
if (defaultValue && !api.data.$term) {
|
|
24095
|
+
const defaultValueOptionsQueryData = ${JSON.stringify(defaultValueOptionsQueryData)};
|
|
24096
|
+
const defaultValueOptionsQuery = defaultValueOptionsQueryData?.query?.replace(/^{/,"").replace(/}$/,"");
|
|
24036
24097
|
// 字段值单独请求,没值的时候在请求中返回空
|
|
24037
24098
|
optionsFilters = [["${valueFieldKey}", optionsFiltersOp, defaultValue]];
|
|
24038
24099
|
if(filters.length > 0){
|
|
24039
24100
|
optionsFilters = [filters, optionsFilters];
|
|
24040
24101
|
}
|
|
24102
|
+
if(defaultValueOptionsQuery){
|
|
24103
|
+
api.data.query = "{"+api.data.query.replace(/^{/,"").replace(/}$/,"")+","+defaultValueOptionsQuery+"}";
|
|
24104
|
+
}
|
|
24041
24105
|
}
|
|
24042
24106
|
api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));
|
|
24043
24107
|
return api;
|
|
@@ -24079,7 +24143,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24079
24143
|
disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || ((this.relatedKey ==='${field.name}') && (${field.multiple} != true)) )`,
|
|
24080
24144
|
// labelField: labelField,
|
|
24081
24145
|
// valueField: valueField,
|
|
24082
|
-
source: apiInfo,
|
|
24146
|
+
// source: apiInfo,
|
|
24083
24147
|
autoComplete: apiInfo,
|
|
24084
24148
|
searchable: true,
|
|
24085
24149
|
};
|
|
@@ -24158,10 +24222,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24158
24222
|
|
|
24159
24223
|
const refObject = await getUISchema(referenceTo.objectName);
|
|
24160
24224
|
|
|
24161
|
-
//
|
|
24162
|
-
|
|
24163
|
-
//
|
|
24164
|
-
if(
|
|
24225
|
+
// 优先取字段中配置的enable_enhanced_lookup,字段上没配置时,才从对象上取enable_enhanced_lookup属性
|
|
24226
|
+
let enableEnhancedLookup = lodash.exports.isBoolean(field.enable_enhanced_lookup) ? field.enable_enhanced_lookup : refObject.enable_enhanced_lookup;
|
|
24227
|
+
// 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式
|
|
24228
|
+
if(enableEnhancedLookup == true){
|
|
24165
24229
|
return await lookupToAmisPicker(field, readonly, ctx);
|
|
24166
24230
|
}else if(refObject.enable_tree) {
|
|
24167
24231
|
return await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {
|
|
@@ -24474,8 +24538,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24474
24538
|
/*
|
|
24475
24539
|
* @Author: baozhoutao@steedos.com
|
|
24476
24540
|
* @Date: 2022-10-28 14:15:09
|
|
24477
|
-
* @LastEditors:
|
|
24478
|
-
* @LastEditTime:
|
|
24541
|
+
* @LastEditors: liaodaxue
|
|
24542
|
+
* @LastEditTime: 2023-10-30 17:51:54
|
|
24479
24543
|
* @Description:
|
|
24480
24544
|
*/
|
|
24481
24545
|
|
|
@@ -24526,11 +24590,26 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24526
24590
|
useChunk: false, // 关闭分块上传
|
|
24527
24591
|
receiver: {
|
|
24528
24592
|
method: "post",
|
|
24593
|
+
dataType: "form-data",
|
|
24529
24594
|
url: `\${context.rootUrl}/s3/${tableName}`,
|
|
24530
|
-
|
|
24531
|
-
|
|
24532
|
-
|
|
24533
|
-
}
|
|
24595
|
+
requestAdaptor: `
|
|
24596
|
+
const { _master, global,context } = api.body;
|
|
24597
|
+
// const { recordId, objectName } = _master;
|
|
24598
|
+
const { spaceId, userId, user } = global;
|
|
24599
|
+
/*
|
|
24600
|
+
record_id: recordId,
|
|
24601
|
+
parent: recordId,
|
|
24602
|
+
object_name: objectName,
|
|
24603
|
+
owner_name: user.name,
|
|
24604
|
+
space: spaceId,
|
|
24605
|
+
owner: userId
|
|
24606
|
+
*/
|
|
24607
|
+
// 参考platform 2.2版本,附件字段保存时cfs.files.filerecord、cfs.images.filerecord表中的metadata下只保存space、owner两个属性值。
|
|
24608
|
+
api.data.append('space', spaceId);
|
|
24609
|
+
api.data.append('owner', userId);
|
|
24610
|
+
|
|
24611
|
+
return api;
|
|
24612
|
+
`,
|
|
24534
24613
|
adaptor: `
|
|
24535
24614
|
const { context } = api.body;
|
|
24536
24615
|
var rootUrl = context.rootUrl + "/api/files/${tableName}/";
|
|
@@ -24611,8 +24690,6 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24611
24690
|
}
|
|
24612
24691
|
|
|
24613
24692
|
async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
24614
|
-
// console.log('convertSFieldToAmisField====>', field, readonly, ctx)
|
|
24615
|
-
const isMobile = window.innerWidth <= 768;
|
|
24616
24693
|
// 创建人和修改人、创建时间和修改时间不显示
|
|
24617
24694
|
if(lodash.exports.includes(OMIT_FIELDS, field.name) && ctx.showSystemFields != true){
|
|
24618
24695
|
return;
|
|
@@ -24701,26 +24778,33 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24701
24778
|
};
|
|
24702
24779
|
break;
|
|
24703
24780
|
case 'date':
|
|
24704
|
-
convertData = isMobile && !readonly ? {
|
|
24705
|
-
|
|
24706
|
-
|
|
24707
|
-
|
|
24708
|
-
|
|
24709
|
-
|
|
24710
|
-
|
|
24711
|
-
|
|
24712
|
-
|
|
24713
|
-
|
|
24714
|
-
|
|
24715
|
-
|
|
24716
|
-
|
|
24717
|
-
|
|
24718
|
-
|
|
24719
|
-
|
|
24720
|
-
|
|
24721
|
-
|
|
24722
|
-
|
|
24723
|
-
} : {
|
|
24781
|
+
// convertData = isMobile && !readonly ? {
|
|
24782
|
+
// type: "native-date",
|
|
24783
|
+
// pipeIn: (value, data) => {
|
|
24784
|
+
// if (value) {
|
|
24785
|
+
// value = moment(value).utc().format('YYYY-MM-DD');
|
|
24786
|
+
// return value;
|
|
24787
|
+
// } else {
|
|
24788
|
+
// return "";
|
|
24789
|
+
// }
|
|
24790
|
+
|
|
24791
|
+
// },
|
|
24792
|
+
// pipeOut: (value, oldValue, data) => {
|
|
24793
|
+
// if (value) {
|
|
24794
|
+
// value = moment(value).format('YYYY-MM-DDT00:00:00.000[Z]');
|
|
24795
|
+
// return value;
|
|
24796
|
+
// } else {
|
|
24797
|
+
// return "";
|
|
24798
|
+
// }
|
|
24799
|
+
// }
|
|
24800
|
+
// } : {
|
|
24801
|
+
// type: getAmisStaticFieldType('date', readonly),
|
|
24802
|
+
// inputFormat: "YYYY-MM-DD",
|
|
24803
|
+
// format:'YYYY-MM-DDT00:00:00.000[Z]',
|
|
24804
|
+
// tpl: readonly ? Tpl.getDateTpl(field) : null,
|
|
24805
|
+
// // utc: true
|
|
24806
|
+
// }
|
|
24807
|
+
convertData = {
|
|
24724
24808
|
type: getAmisStaticFieldType('date', readonly),
|
|
24725
24809
|
inputFormat: "YYYY-MM-DD",
|
|
24726
24810
|
format:'YYYY-MM-DDT00:00:00.000[Z]',
|
|
@@ -24739,43 +24823,51 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24739
24823
|
};
|
|
24740
24824
|
break;
|
|
24741
24825
|
case 'datetime':
|
|
24742
|
-
convertData = isMobile && !readonly ? {
|
|
24743
|
-
|
|
24744
|
-
|
|
24745
|
-
|
|
24746
|
-
|
|
24747
|
-
|
|
24748
|
-
|
|
24749
|
-
|
|
24750
|
-
|
|
24751
|
-
|
|
24752
|
-
|
|
24753
|
-
|
|
24754
|
-
|
|
24755
|
-
|
|
24756
|
-
|
|
24757
|
-
|
|
24758
|
-
|
|
24759
|
-
|
|
24760
|
-
|
|
24761
|
-
|
|
24762
|
-
|
|
24763
|
-
|
|
24764
|
-
|
|
24765
|
-
|
|
24766
|
-
|
|
24767
|
-
|
|
24768
|
-
|
|
24769
|
-
|
|
24770
|
-
|
|
24771
|
-
|
|
24772
|
-
|
|
24773
|
-
|
|
24774
|
-
|
|
24775
|
-
|
|
24776
|
-
|
|
24777
|
-
|
|
24778
|
-
} : {
|
|
24826
|
+
// convertData = isMobile && !readonly ? {
|
|
24827
|
+
// type: "combo",
|
|
24828
|
+
// pipeIn: (value, data) => {
|
|
24829
|
+
// let revalue = {};
|
|
24830
|
+
// if (value && value != "Invalid date") {
|
|
24831
|
+
// value = moment(value).format('YYYY-MM-DD HH:mm:ss');
|
|
24832
|
+
// revalue[field.name + "-native-date"] = value.split(' ')[0];
|
|
24833
|
+
// revalue[field.name + "-native-time"] = value.split(' ')[1];
|
|
24834
|
+
// } else {
|
|
24835
|
+
// revalue[field.name + "-native-date"] = "";
|
|
24836
|
+
// revalue[field.name + "-native-time"] = "";
|
|
24837
|
+
// }
|
|
24838
|
+
// return revalue;
|
|
24839
|
+
// },
|
|
24840
|
+
// pipeOut: (value, oldValue, data) => {
|
|
24841
|
+
// let revalue = "";
|
|
24842
|
+
// if (value[field.name + "-native-date"] && value[field.name + "-native-time"]) {
|
|
24843
|
+
// revalue = value[field.name + "-native-date"] + " " + value[field.name + "-native-time"];
|
|
24844
|
+
// revalue = moment(revalue).utc().format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');
|
|
24845
|
+
// }
|
|
24846
|
+
// return revalue;
|
|
24847
|
+
// },
|
|
24848
|
+
// items: [
|
|
24849
|
+
// {
|
|
24850
|
+
// type: "native-date",
|
|
24851
|
+
// name: field.name + "-native-date",
|
|
24852
|
+
// className: "steedos-native-date",
|
|
24853
|
+
// value: ""
|
|
24854
|
+
// },
|
|
24855
|
+
// {
|
|
24856
|
+
// type: "native-time",
|
|
24857
|
+
// name: field.name + "-native-time",
|
|
24858
|
+
// className: "steedos-native-time",
|
|
24859
|
+
// value: ""
|
|
24860
|
+
// }
|
|
24861
|
+
// ]
|
|
24862
|
+
// } : {
|
|
24863
|
+
// type: getAmisStaticFieldType('datetime', readonly),
|
|
24864
|
+
// inputFormat: 'YYYY-MM-DD HH:mm',
|
|
24865
|
+
// format: 'YYYY-MM-DDTHH:mm:ss.SSSZ',
|
|
24866
|
+
// tpl: readonly ? Tpl.getDateTimeTpl(field) : null,
|
|
24867
|
+
// utc: true,
|
|
24868
|
+
// }
|
|
24869
|
+
|
|
24870
|
+
convertData = {
|
|
24779
24871
|
type: getAmisStaticFieldType('datetime', readonly),
|
|
24780
24872
|
inputFormat: 'YYYY-MM-DD HH:mm',
|
|
24781
24873
|
format: 'YYYY-MM-DDTHH:mm:ss.SSSZ',
|
|
@@ -24795,26 +24887,34 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24795
24887
|
};
|
|
24796
24888
|
break;
|
|
24797
24889
|
case 'time':
|
|
24798
|
-
convertData = isMobile && !readonly ? {
|
|
24799
|
-
|
|
24800
|
-
|
|
24801
|
-
|
|
24802
|
-
|
|
24803
|
-
|
|
24804
|
-
|
|
24805
|
-
|
|
24806
|
-
|
|
24807
|
-
|
|
24808
|
-
|
|
24809
|
-
|
|
24810
|
-
|
|
24811
|
-
|
|
24812
|
-
|
|
24813
|
-
|
|
24814
|
-
|
|
24815
|
-
|
|
24816
|
-
|
|
24817
|
-
} : {
|
|
24890
|
+
// convertData = isMobile && !readonly ? {
|
|
24891
|
+
// type: "native-time",
|
|
24892
|
+
// pipeIn: (value, data) => {
|
|
24893
|
+
// if (value) {
|
|
24894
|
+
// value = moment(value).utc().format('HH:mm');
|
|
24895
|
+
// return value;
|
|
24896
|
+
// } else {
|
|
24897
|
+
// return "";
|
|
24898
|
+
// }
|
|
24899
|
+
|
|
24900
|
+
// },
|
|
24901
|
+
// pipeOut: (value, oldValue, data) => {
|
|
24902
|
+
// if (value) {
|
|
24903
|
+
// value = moment('1970-01-01 ' + value).format('1970-01-01THH:mm:00.000[Z]');
|
|
24904
|
+
// return value;
|
|
24905
|
+
// } else {
|
|
24906
|
+
// return "";
|
|
24907
|
+
// }
|
|
24908
|
+
// }
|
|
24909
|
+
// } : {
|
|
24910
|
+
// type: getAmisStaticFieldType('time', readonly),
|
|
24911
|
+
// inputFormat: 'HH:mm',
|
|
24912
|
+
// timeFormat:'HH:mm',
|
|
24913
|
+
// format:'1970-01-01THH:mm:00.000[Z]',
|
|
24914
|
+
// tpl: readonly ? Tpl.getDateTimeTpl(field) : null,
|
|
24915
|
+
// // utc: true
|
|
24916
|
+
// }
|
|
24917
|
+
convertData = {
|
|
24818
24918
|
type: getAmisStaticFieldType('time', readonly),
|
|
24819
24919
|
inputFormat: 'HH:mm',
|
|
24820
24920
|
timeFormat:'HH:mm',
|
|
@@ -24864,7 +24964,20 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24864
24964
|
type: getAmisStaticFieldType('number', readonly),
|
|
24865
24965
|
min: field.min,
|
|
24866
24966
|
max: field.max,
|
|
24867
|
-
precision: field.scale
|
|
24967
|
+
precision: field.scale,
|
|
24968
|
+
suffix: "%",
|
|
24969
|
+
pipeIn: (value, data) => {
|
|
24970
|
+
if(value){
|
|
24971
|
+
return value*100;
|
|
24972
|
+
}
|
|
24973
|
+
return value;
|
|
24974
|
+
},
|
|
24975
|
+
pipeOut: (value, oldValue, data) => {
|
|
24976
|
+
if(value){
|
|
24977
|
+
return value/100;
|
|
24978
|
+
}
|
|
24979
|
+
return value;
|
|
24980
|
+
},
|
|
24868
24981
|
};
|
|
24869
24982
|
}
|
|
24870
24983
|
break;
|
|
@@ -25198,7 +25311,9 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25198
25311
|
|
|
25199
25312
|
const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, inFilterForm: true}));
|
|
25200
25313
|
if(amisField){
|
|
25201
|
-
return amisField
|
|
25314
|
+
return Object.assign({}, amisField,{
|
|
25315
|
+
submitOnChange: true
|
|
25316
|
+
});
|
|
25202
25317
|
}
|
|
25203
25318
|
}
|
|
25204
25319
|
}
|
|
@@ -25259,8 +25374,46 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25259
25374
|
};
|
|
25260
25375
|
|
|
25261
25376
|
async function getQuickEditSchema(field, options){
|
|
25262
|
-
|
|
25377
|
+
//判断在amis3.2以上环境下,放开批量编辑
|
|
25378
|
+
let isAmisVersionforBatchEdit = false;
|
|
25379
|
+
if(window.amisRequire && window.amisRequire('amis')){
|
|
25380
|
+
isAmisVersionforBatchEdit = window.amisRequire('amis').version[0] >= 3 && window.amisRequire('amis').version[2] >= 2;
|
|
25381
|
+
}else if(window.Amis){
|
|
25382
|
+
isAmisVersionforBatchEdit = window.Amis.version[0] >= 3 && window.Amis.version[2] >= 2;
|
|
25383
|
+
}
|
|
25384
|
+
const quickEditId = options.objectName + "_" + field.name + "_quickEdit";//定义快速编辑的表单id,用于setvalue传值
|
|
25263
25385
|
var quickEditSchema = { body: [], id: quickEditId };
|
|
25386
|
+
//select,avatar,image,file等组件无法行记录字段赋值,暂不支持批量编辑;
|
|
25387
|
+
if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){
|
|
25388
|
+
const submitEvent = {
|
|
25389
|
+
submit: {
|
|
25390
|
+
actions: [
|
|
25391
|
+
{
|
|
25392
|
+
actionType: "custom",
|
|
25393
|
+
script: `
|
|
25394
|
+
let items = _.cloneDeep(event.data.items);
|
|
25395
|
+
let selectedItems = _.cloneDeep(event.data.selectedItems);
|
|
25396
|
+
if(event.data.isBatchEdit){
|
|
25397
|
+
selectedItems.forEach(function(selectedItem){
|
|
25398
|
+
selectedItem._display.${field.name} = event.data._display.${field.name};
|
|
25399
|
+
doAction({actionType: 'setValue', "args": {"value": selectedItem._display},componentId: "_display_" + selectedItem._index});
|
|
25400
|
+
doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + selectedItem._index});
|
|
25401
|
+
})
|
|
25402
|
+
}else{
|
|
25403
|
+
doAction({actionType: 'setValue', "args": {"value": event.data._display},componentId: "_display_" + event.data._index});
|
|
25404
|
+
doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + event.data._index});
|
|
25405
|
+
}
|
|
25406
|
+
`
|
|
25407
|
+
},
|
|
25408
|
+
{
|
|
25409
|
+
"actionType": "closeDialog"
|
|
25410
|
+
}
|
|
25411
|
+
]
|
|
25412
|
+
}
|
|
25413
|
+
};
|
|
25414
|
+
quickEditSchema.onEvent = submitEvent;
|
|
25415
|
+
}
|
|
25416
|
+
|
|
25264
25417
|
if (field.disabled) {
|
|
25265
25418
|
quickEditSchema = false;
|
|
25266
25419
|
} else {
|
|
@@ -25277,7 +25430,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25277
25430
|
{
|
|
25278
25431
|
"actionType": "custom",
|
|
25279
25432
|
"script": `
|
|
25280
|
-
var _display = event.data._display;
|
|
25433
|
+
var _display = _.cloneDeep(event.data._display);
|
|
25281
25434
|
${displayField}
|
|
25282
25435
|
doAction({actionType: 'setValue', "args": {"value": {_display}},componentId: "${quickEditId}"});
|
|
25283
25436
|
`
|
|
@@ -25299,7 +25452,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25299
25452
|
第二种是增加选项时,按照value的值,找到对应选项,并按照_display的规则为其赋值
|
|
25300
25453
|
*/
|
|
25301
25454
|
TempDisplayField = `
|
|
25302
|
-
const preData = event.data.__super.${field.name};
|
|
25455
|
+
const preData = _.cloneDeep(event.data.__super.${field.name});
|
|
25303
25456
|
if(preData && event.data.${field.name}.length < preData.length){
|
|
25304
25457
|
let deletedIndex;
|
|
25305
25458
|
preData.forEach(function(item,index){
|
|
@@ -25343,7 +25496,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25343
25496
|
break;
|
|
25344
25497
|
case "percent":
|
|
25345
25498
|
TempDisplayField = `
|
|
25346
|
-
_display["${field.name}"] =
|
|
25499
|
+
_display["${field.name}"] = event.data.value.toFixed(${field.scale}) + '%';
|
|
25347
25500
|
`;
|
|
25348
25501
|
quickEditSchema.body[0].onEvent["change"] = quickEditOnEvent(TempDisplayField);
|
|
25349
25502
|
break;
|
|
@@ -25494,6 +25647,131 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25494
25647
|
}
|
|
25495
25648
|
|
|
25496
25649
|
});
|
|
25650
|
+
if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){
|
|
25651
|
+
quickEditSchema.body.push({
|
|
25652
|
+
"name": "isBatchEdit",
|
|
25653
|
+
"type": "checkbox",
|
|
25654
|
+
"option": [
|
|
25655
|
+
{
|
|
25656
|
+
"type": "tpl",
|
|
25657
|
+
"tpl": "更新${COUNT(selectedItems)}个选定记录"
|
|
25658
|
+
},
|
|
25659
|
+
{
|
|
25660
|
+
"type": "spinner",
|
|
25661
|
+
"showOn": "${batchPermissionLoading}",
|
|
25662
|
+
"size": "sm",
|
|
25663
|
+
"className": "mr-4"
|
|
25664
|
+
}
|
|
25665
|
+
],
|
|
25666
|
+
"visibleOn": "${ARRAYSOME(selectedItems, item => item._id === _id) && COUNT(selectedItems)>1 && quickedit_record_permissions.allowEdit && quickedit_record_permissions_loading == false}",
|
|
25667
|
+
"disabledOn": "${batchPermissionLoading}",
|
|
25668
|
+
"onEvent":{
|
|
25669
|
+
"change":{
|
|
25670
|
+
"actions":[
|
|
25671
|
+
{
|
|
25672
|
+
"actionType": "setValue",
|
|
25673
|
+
"componentId": quickEditId,
|
|
25674
|
+
"args": {
|
|
25675
|
+
"value":{
|
|
25676
|
+
"batchPermissionLoading": true
|
|
25677
|
+
}
|
|
25678
|
+
},
|
|
25679
|
+
"expression":"${event.data.value}"
|
|
25680
|
+
},
|
|
25681
|
+
{
|
|
25682
|
+
"actionType": "ajax",
|
|
25683
|
+
"args": {
|
|
25684
|
+
"api": {
|
|
25685
|
+
"url": "${context.rootUrl}/graphql",
|
|
25686
|
+
"method": "post",
|
|
25687
|
+
"headers": {
|
|
25688
|
+
"Authorization": "Bearer ${context.tenantId},${context.authToken}"
|
|
25689
|
+
},
|
|
25690
|
+
"data": {
|
|
25691
|
+
"query": "{rows:${objectName}(filters:[\"_id\",\"in\",${selectedItems | pick:_id | split | json}]){_id,_permissions{allowEdit}}}"
|
|
25692
|
+
},
|
|
25693
|
+
"adaptor": `
|
|
25694
|
+
const noPermission = [];
|
|
25695
|
+
payload.data.rows.forEach(function (row) {
|
|
25696
|
+
if(!row._permissions.allowEdit){
|
|
25697
|
+
noPermission.push(row._id);
|
|
25698
|
+
}
|
|
25699
|
+
})
|
|
25700
|
+
payload.data.noPermission = noPermission;
|
|
25701
|
+
return payload;
|
|
25702
|
+
`
|
|
25703
|
+
}
|
|
25704
|
+
},
|
|
25705
|
+
"expression":"${event.data.value}"
|
|
25706
|
+
},
|
|
25707
|
+
{
|
|
25708
|
+
"actionType": "setValue",
|
|
25709
|
+
"componentId": quickEditId,
|
|
25710
|
+
"args": {
|
|
25711
|
+
"value":{
|
|
25712
|
+
"batchPermissionLoading": false
|
|
25713
|
+
}
|
|
25714
|
+
},
|
|
25715
|
+
"expression":"${event.data.value}"
|
|
25716
|
+
},
|
|
25717
|
+
{
|
|
25718
|
+
"actionType": "dialog",
|
|
25719
|
+
"dialog":{
|
|
25720
|
+
"title": "记录权限",
|
|
25721
|
+
"showCloseButton": false,
|
|
25722
|
+
"body":[
|
|
25723
|
+
{
|
|
25724
|
+
"type": "tpl",
|
|
25725
|
+
"tpl": "当前选中记录中,有${COUNT(noPermission)}条记录无编辑权限,是否需要批量编辑其他记录?"
|
|
25726
|
+
}
|
|
25727
|
+
],
|
|
25728
|
+
"onEvent":{
|
|
25729
|
+
"confirm":{
|
|
25730
|
+
"actions":[
|
|
25731
|
+
{
|
|
25732
|
+
"actionType": "custom",
|
|
25733
|
+
"script": `
|
|
25734
|
+
const noPermission = event.data.noPermission;
|
|
25735
|
+
const crudComponent = event.context.scoped.getComponentById("${options.crudId}");
|
|
25736
|
+
const selectedItems = crudComponent && crudComponent.props.store.selectedItems.concat();
|
|
25737
|
+
noPermission.forEach(function (item) {
|
|
25738
|
+
crudComponent && crudComponent.unSelectItem(_.find(selectedItems,{_id:item}));
|
|
25739
|
+
})
|
|
25740
|
+
`
|
|
25741
|
+
},
|
|
25742
|
+
{
|
|
25743
|
+
"actionType": "setValue",
|
|
25744
|
+
"componentId": quickEditId,
|
|
25745
|
+
"args": {
|
|
25746
|
+
"value":{
|
|
25747
|
+
"isBatchEdit": true
|
|
25748
|
+
}
|
|
25749
|
+
},
|
|
25750
|
+
}
|
|
25751
|
+
]
|
|
25752
|
+
},
|
|
25753
|
+
"cancel":{
|
|
25754
|
+
"actions":[
|
|
25755
|
+
{
|
|
25756
|
+
"actionType": "setValue",
|
|
25757
|
+
"componentId": quickEditId,
|
|
25758
|
+
"args": {
|
|
25759
|
+
"value":{
|
|
25760
|
+
"isBatchEdit": false
|
|
25761
|
+
}
|
|
25762
|
+
},
|
|
25763
|
+
}
|
|
25764
|
+
]
|
|
25765
|
+
}
|
|
25766
|
+
}
|
|
25767
|
+
},
|
|
25768
|
+
"expression":"${COUNT(event.data.noPermission)>0}"
|
|
25769
|
+
}
|
|
25770
|
+
]
|
|
25771
|
+
}
|
|
25772
|
+
}
|
|
25773
|
+
});
|
|
25774
|
+
}
|
|
25497
25775
|
} else {
|
|
25498
25776
|
quickEditSchema = false;
|
|
25499
25777
|
}
|
|
@@ -25528,6 +25806,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25528
25806
|
const columns = [];
|
|
25529
25807
|
if(!options.isLookup){
|
|
25530
25808
|
columns.push({name: '_index',type: 'text', width: 32, placeholder: ""});
|
|
25809
|
+
//将_display放入crud的columns中,可以通过setvalue修改行内数据域的_display,而不影响上层items的_display,用于批量编辑
|
|
25810
|
+
columns.push({name: '_display',type: 'static', width: 32, placeholder: "",id: "_display_${_index}", className: "hidden"});
|
|
25531
25811
|
}
|
|
25532
25812
|
const allowEdit = options.permissions?.allowEdit && !options.isLookup && options.enable_inline_edit != false;
|
|
25533
25813
|
|
|
@@ -25559,7 +25839,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25559
25839
|
{
|
|
25560
25840
|
"args": {
|
|
25561
25841
|
"api": {
|
|
25562
|
-
"url": "${context.rootUrl
|
|
25842
|
+
"url": "${(versions[0] && versions[0].url) ? versions[0].url+'?download=true' : context.rootUrl+'/api/files/files/'+versions[0]+'?download=true'}",
|
|
25563
25843
|
"method": "get",
|
|
25564
25844
|
"headers": {
|
|
25565
25845
|
"Authorization": "Bearer ${context.tenantId},${context.authToken}"
|
|
@@ -25606,7 +25886,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25606
25886
|
else if(field.type === 'select'){
|
|
25607
25887
|
const map = getSelectMap(field.options);
|
|
25608
25888
|
columnItem = Object.assign({}, {
|
|
25609
|
-
type: "mapping",
|
|
25889
|
+
type: "static-mapping",
|
|
25610
25890
|
name: field.name,
|
|
25611
25891
|
label: field.label,
|
|
25612
25892
|
map: map,
|
|
@@ -25621,7 +25901,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25621
25901
|
const tpl = await getFieldTpl(field, options);
|
|
25622
25902
|
let type = 'text';
|
|
25623
25903
|
if(tpl){
|
|
25624
|
-
type = '
|
|
25904
|
+
type = 'static';
|
|
25625
25905
|
}else if(field.type === 'html'){
|
|
25626
25906
|
type = 'markdown';
|
|
25627
25907
|
}else if(field.type === 'url'){
|
|
@@ -25662,6 +25942,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25662
25942
|
columnItem.quickEdit = quickEditSchema;
|
|
25663
25943
|
columnItem.quickEditEnabledOn = "${is_system !== true}";
|
|
25664
25944
|
}
|
|
25945
|
+
columnItem.id = `${options.objectName}_${field.name}_\${_index}`;
|
|
25665
25946
|
columns.push(columnItem);
|
|
25666
25947
|
}
|
|
25667
25948
|
}
|
|
@@ -25940,7 +26221,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25940
26221
|
}
|
|
25941
26222
|
return {
|
|
25942
26223
|
type: 'operation',
|
|
25943
|
-
label:
|
|
26224
|
+
label: "",
|
|
25944
26225
|
fixed: 'right',
|
|
25945
26226
|
labelClassName: 'text-center',
|
|
25946
26227
|
className: 'text-center steedos-listview-operation w-10',
|
|
@@ -25974,23 +26255,87 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25974
26255
|
}
|
|
25975
26256
|
}
|
|
25976
26257
|
|
|
26258
|
+
async function getDefaultCrudCard(columns, options) {
|
|
26259
|
+
let labelFieldName = options?.labelFieldName || "name";
|
|
26260
|
+
let titleColumn, bodyColumns = [];
|
|
26261
|
+
columns.forEach(function (item) {
|
|
26262
|
+
delete item.quickEdit;
|
|
26263
|
+
delete item.width;
|
|
26264
|
+
if (item.name === labelFieldName) {
|
|
26265
|
+
titleColumn = item;
|
|
26266
|
+
}
|
|
26267
|
+
else {
|
|
26268
|
+
if (item.name !== "_index") {
|
|
26269
|
+
bodyColumns.push(item);
|
|
26270
|
+
}
|
|
26271
|
+
}
|
|
26272
|
+
});
|
|
26273
|
+
let card = {
|
|
26274
|
+
"header": {
|
|
26275
|
+
"title": titleColumn.tpl
|
|
26276
|
+
},
|
|
26277
|
+
body: bodyColumns,
|
|
26278
|
+
// useCardLabel: false,
|
|
26279
|
+
toolbar: []
|
|
26280
|
+
};
|
|
26281
|
+
let hideToolbarOperation = options.formFactor === 'SMALL' || ["split"].indexOf(options.displayAs) > -1;
|
|
26282
|
+
if(!hideToolbarOperation){
|
|
26283
|
+
let toolbarOperation = await getTableOperation(options);
|
|
26284
|
+
if (toolbarOperation) {
|
|
26285
|
+
toolbarOperation.className += " inline-block w-auto";
|
|
26286
|
+
}
|
|
26287
|
+
card.toolbar.push(toolbarOperation);
|
|
26288
|
+
}
|
|
26289
|
+
return card;
|
|
26290
|
+
}
|
|
26291
|
+
|
|
25977
26292
|
async function getTableSchema$1(fields, options){
|
|
25978
26293
|
if(!options){
|
|
25979
26294
|
options = {};
|
|
25980
26295
|
}
|
|
25981
26296
|
let { isLookup, hiddenColumnOperation } = options;
|
|
26297
|
+
const defaults = options.defaults;
|
|
26298
|
+
const listSchema = (defaults && defaults.listSchema) || {};
|
|
26299
|
+
|
|
25982
26300
|
let columns = [];
|
|
25983
26301
|
let useMobileColumns = options.formFactor === 'SMALL' || ["split"].indexOf(options.displayAs) > -1;
|
|
25984
26302
|
if(isLookup){
|
|
25985
26303
|
// 在lookup手机端列表模式调式好之前不使用getMobileTableColumns
|
|
25986
26304
|
useMobileColumns = false;
|
|
25987
26305
|
}
|
|
26306
|
+
if(listSchema.mode && listSchema.mode !== "table"){
|
|
26307
|
+
// 如果指定的mode,则不走我们内置的手机端列表效果,使用steedos组件内部开发的默认card/list效果,或者由用户自己实现card/list模式的crud列表
|
|
26308
|
+
useMobileColumns = false;
|
|
26309
|
+
}
|
|
25988
26310
|
if(useMobileColumns){
|
|
25989
26311
|
columns = await getMobileTableColumns(fields, options);
|
|
25990
26312
|
}
|
|
25991
26313
|
else {
|
|
25992
26314
|
columns = await getTableColumns(fields, options);
|
|
25993
26315
|
|
|
26316
|
+
if(listSchema.mode === "cards"){
|
|
26317
|
+
let card = listSchema.card;
|
|
26318
|
+
if(!card){
|
|
26319
|
+
card = await getDefaultCrudCard(columns, options);
|
|
26320
|
+
}
|
|
26321
|
+
return {
|
|
26322
|
+
mode: "cards",
|
|
26323
|
+
perPageAvailable: [5, 10, 20, 50, 100, 500],
|
|
26324
|
+
name: "thelist",
|
|
26325
|
+
headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
|
|
26326
|
+
className: "",
|
|
26327
|
+
draggable: false,
|
|
26328
|
+
defaultParams: getDefaultParams(options),
|
|
26329
|
+
card: card,
|
|
26330
|
+
syncLocation: false,
|
|
26331
|
+
keepItemSelectionOnPageChange: true,
|
|
26332
|
+
checkOnItemClick: isLookup ? true : false,
|
|
26333
|
+
labelTpl: `\${${options.labelFieldName}}`,
|
|
26334
|
+
autoFillHeight: false, // 自动高度效果不理想,先关闭
|
|
26335
|
+
columnsTogglable: false
|
|
26336
|
+
}
|
|
26337
|
+
}
|
|
26338
|
+
|
|
25994
26339
|
if(!isLookup && !hiddenColumnOperation){
|
|
25995
26340
|
columns.push(await getTableOperation(options));
|
|
25996
26341
|
}
|
|
@@ -25998,6 +26343,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25998
26343
|
|
|
25999
26344
|
return {
|
|
26000
26345
|
mode: "table",
|
|
26346
|
+
perPageAvailable: [5, 10, 20, 50, 100, 500],
|
|
26001
26347
|
name: "thelist",
|
|
26002
26348
|
headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
|
|
26003
26349
|
className: "",
|
|
@@ -26085,8 +26431,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
26085
26431
|
/*
|
|
26086
26432
|
* @Author: baozhoutao@steedos.com
|
|
26087
26433
|
* @Date: 2022-07-05 15:55:39
|
|
26088
|
-
* @LastEditors:
|
|
26089
|
-
* @LastEditTime: 2023-
|
|
26434
|
+
* @LastEditors: liaodaxue
|
|
26435
|
+
* @LastEditTime: 2023-10-20 11:38:25
|
|
26090
26436
|
* @Description:
|
|
26091
26437
|
*/
|
|
26092
26438
|
|
|
@@ -26383,8 +26729,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
26383
26729
|
"filtersFunction": listview_filters,
|
|
26384
26730
|
"sort": sort,
|
|
26385
26731
|
"ctx": ctx,
|
|
26386
|
-
"requestAdaptor": listView.requestAdaptor,
|
|
26387
|
-
"adaptor": listView.adaptor,
|
|
26732
|
+
"requestAdaptor": listView.requestAdaptor || ctx.requestAdaptor,
|
|
26733
|
+
"adaptor": listView.adaptor || ctx.adaptor,
|
|
26388
26734
|
"headerToolbarItems": ctx.headerToolbarItems,
|
|
26389
26735
|
"filterVisible": ctx.filterVisible,
|
|
26390
26736
|
"rowClassNameExpr": ctx.rowClassNameExpr,
|
|
@@ -31518,7 +31864,13 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31518
31864
|
var empty = [];
|
|
31519
31865
|
function MultipleContainers(props) {
|
|
31520
31866
|
var _this = this;
|
|
31521
|
-
var _a = props.adjustScale, adjustScale = _a === void 0 ? false : _a; props.itemCount; var cancelDrop = props.cancelDrop, _c = props.columns, columns = _c === void 0 ? 1 : _c, _d = props.handle, handle = _d === void 0 ? true : _d, containerStyle = props.containerStyle, _e = props.coordinateGetter, coordinateGetter$1 = _e === void 0 ? coordinateGetter : _e, _f = props.getItemStyles, getItemStyles = _f === void 0 ? function () { return ({}); } : _f, _g = props.wrapperStyle, wrapperStyle = _g === void 0 ? function () { return ({}); } : _g, _h = props.minimal, minimal = _h === void 0 ? false : _h, modifiers = props.modifiers, renderItem = props.renderItem,
|
|
31867
|
+
var _a = props.adjustScale, adjustScale = _a === void 0 ? false : _a; props.itemCount; var cancelDrop = props.cancelDrop, _c = props.columns, columns = _c === void 0 ? 1 : _c, _d = props.handle, handle = _d === void 0 ? true : _d, containerStyle = props.containerStyle, _e = props.coordinateGetter, coordinateGetter$1 = _e === void 0 ? coordinateGetter : _e, _f = props.getItemStyles, getItemStyles = _f === void 0 ? function () { return ({}); } : _f, _g = props.wrapperStyle, wrapperStyle = _g === void 0 ? function () { return ({}); } : _g, _h = props.minimal, minimal = _h === void 0 ? false : _h, modifiers = props.modifiers, renderItem = props.renderItem,
|
|
31868
|
+
// strategy = verticalListSortingStrategy,
|
|
31869
|
+
_j = props.strategy,
|
|
31870
|
+
// strategy = verticalListSortingStrategy,
|
|
31871
|
+
strategy = _j === void 0 ? rectSortingStrategy : _j, //这里默认值不用rectSortingStrategy的话,会出现字段在左右两边拖动变更顺序时拖动过程中dragOverlay丢失问题
|
|
31872
|
+
_k = props.addable, //这里默认值不用rectSortingStrategy的话,会出现字段在左右两边拖动变更顺序时拖动过程中dragOverlay丢失问题
|
|
31873
|
+
addable = _k === void 0 ? false : _k, _l = props.trashable, trashable = _l === void 0 ? false : _l, _m = props.vertical, vertical = _m === void 0 ? false : _m, scrollable = props.scrollable, _o = props.boardSource, boardSource = _o === void 0 ? [] : _o, _p = props.cardSource, cardSource = _p === void 0 ? [] : _p, value = props.value, amisOnChange = props.onChange, amisData = props.data, amisDispatchEvent = props.dispatchEvent, amisRender = props.render, _q = props.cardSchema, cardSchema = _q === void 0 ? [{
|
|
31522
31874
|
"type": "tpl",
|
|
31523
31875
|
"tpl": "${label}",
|
|
31524
31876
|
"inline": false,
|
|
@@ -31526,24 +31878,28 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31526
31878
|
"type": "tpl",
|
|
31527
31879
|
"tpl": "${label}",
|
|
31528
31880
|
}] : _r, _s = props.boardFooter, boardFooter = _s === void 0 ? [] : _s, _t = props.wrapperClassName, wrapperClassName = _t === void 0 ? "gap-2" : _t, _u = props.boardClassName, boardClassName = _u === void 0 ? "border rounded" : _u, _v = props.cardClassName, cardClassName = _v === void 0 ? "" : _v;
|
|
31529
|
-
|
|
31881
|
+
value && delete (value.$$id);
|
|
31530
31882
|
var _w = __read(React.useState(function () {
|
|
31531
31883
|
var _a;
|
|
31532
|
-
return (_a =
|
|
31884
|
+
return (_a = value) !== null && _a !== void 0 ? _a : {
|
|
31533
31885
|
A: ['A1', 'A2'],
|
|
31534
31886
|
B: ['B1', 'B2'],
|
|
31535
31887
|
C: ['C1', 'C2'],
|
|
31536
31888
|
};
|
|
31537
31889
|
}), 2), items = _w[0], setItems = _w[1];
|
|
31538
31890
|
var _x = __read(React.useState(Object.keys(items)), 2), containers = _x[0], setContainers = _x[1];
|
|
31539
|
-
|
|
31891
|
+
React.useEffect(function () {
|
|
31892
|
+
setItems(value);
|
|
31893
|
+
setContainers(Object.keys(value));
|
|
31894
|
+
}, [value]);
|
|
31895
|
+
var handleChange = function (newItems) { return __awaiter(_this, void 0, void 0, function () {
|
|
31540
31896
|
var value, rendererEvent;
|
|
31541
31897
|
return __generator(this, function (_a) {
|
|
31542
31898
|
switch (_a.label) {
|
|
31543
31899
|
case 0:
|
|
31544
31900
|
if (!amisDispatchEvent || !amisOnChange)
|
|
31545
31901
|
return [2 /*return*/];
|
|
31546
|
-
value = items;
|
|
31902
|
+
value = newItems || items;
|
|
31547
31903
|
return [4 /*yield*/, amisDispatchEvent('change', createObject(amisData, {
|
|
31548
31904
|
value: value
|
|
31549
31905
|
}))];
|
|
@@ -31552,7 +31908,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31552
31908
|
if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
|
|
31553
31909
|
return [2 /*return*/];
|
|
31554
31910
|
}
|
|
31555
|
-
setTimeout(function () { return amisOnChange(value); },
|
|
31911
|
+
setTimeout(function () { return amisOnChange(value); }, 500);
|
|
31556
31912
|
return [2 /*return*/];
|
|
31557
31913
|
}
|
|
31558
31914
|
});
|
|
@@ -31655,6 +32011,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31655
32011
|
var active = _a.active, over = _a.over;
|
|
31656
32012
|
var overId = over === null || over === void 0 ? void 0 : over.id;
|
|
31657
32013
|
if (overId == null || overId === TRASH_ID || active.id in items) {
|
|
32014
|
+
// 拖动的是分组则跳过后面的逻辑
|
|
31658
32015
|
return;
|
|
31659
32016
|
}
|
|
31660
32017
|
var overContainer = findContainer(overId);
|
|
@@ -31730,19 +32087,44 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31730
32087
|
return;
|
|
31731
32088
|
}
|
|
31732
32089
|
var overContainer = findContainer(overId);
|
|
32090
|
+
var newItems = items;
|
|
31733
32091
|
if (overContainer) {
|
|
31734
|
-
|
|
31735
|
-
|
|
31736
|
-
|
|
31737
|
-
|
|
31738
|
-
|
|
31739
|
-
|
|
31740
|
-
|
|
32092
|
+
if (activeContainer !== overContainer) {
|
|
32093
|
+
// 拖动变更分组之间的顺序时,activeContainer 与 overContainer 值不相等
|
|
32094
|
+
setTimeout(function () {
|
|
32095
|
+
var sortedGroups = over.data.current.sortable.items; //不加setTimeout的话,这里拿到的会是变更前的数据
|
|
32096
|
+
newItems = {};
|
|
32097
|
+
sortedGroups.forEach(function (groupKey) {
|
|
32098
|
+
newItems[groupKey] = items[groupKey];
|
|
32099
|
+
});
|
|
32100
|
+
delete newItems[TRASH_ID];
|
|
32101
|
+
delete newItems[PLACEHOLDER_ID];
|
|
32102
|
+
if (lodash.exports.keys(items).join(",") !== lodash.exports.keys(newItems).join(",")) {
|
|
32103
|
+
// 只有顺序发生变化时才触发change事件
|
|
32104
|
+
setItems(newItems);
|
|
32105
|
+
// console.log('拖动结束2,更新form value')
|
|
32106
|
+
handleChange(newItems);
|
|
32107
|
+
}
|
|
32108
|
+
setActiveId(null);
|
|
32109
|
+
}, 500);
|
|
32110
|
+
return;
|
|
32111
|
+
}
|
|
32112
|
+
else {
|
|
32113
|
+
// 同一个分组中字段顺序变更以及把一个字段从某个分组拖动到另一个分组内时,activeContainer 与 overContainer 值相等
|
|
32114
|
+
var activeIndex_1 = items[activeContainer].indexOf(active.id);
|
|
32115
|
+
var overIndex_1 = items[overContainer].indexOf(overId);
|
|
32116
|
+
if (activeIndex_1 !== overIndex_1) {
|
|
32117
|
+
setItems(function (items) {
|
|
32118
|
+
var _a;
|
|
32119
|
+
newItems = __assign$1(__assign$1({}, items), (_a = {}, _a[overContainer] = arrayMove(items[overContainer], activeIndex_1, overIndex_1), _a));
|
|
32120
|
+
return newItems;
|
|
32121
|
+
});
|
|
32122
|
+
}
|
|
31741
32123
|
}
|
|
31742
32124
|
}
|
|
31743
32125
|
setActiveId(null);
|
|
31744
32126
|
// console.log('拖动结束2,更新form value')
|
|
31745
|
-
handleChange();
|
|
32127
|
+
handleChange(newItems);
|
|
31746
32128
|
}, cancelDrop: cancelDrop, onDragCancel: onDragCancel, modifiers: modifiers },
|
|
31747
32129
|
React__default["default"].createElement("div", { style: {
|
|
31748
32130
|
display: 'inline-grid',
|