@steedos/service-plugin-amis 2.2.52-beta.18 → 2.2.52-beta.21
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.
|
@@ -5,6 +5,7 @@ const Lookup = require('./lookup');
|
|
|
5
5
|
const AmisFormInputs = [
|
|
6
6
|
'text',
|
|
7
7
|
'date',
|
|
8
|
+
'image',
|
|
8
9
|
'datetime',
|
|
9
10
|
'time',
|
|
10
11
|
'number',
|
|
@@ -205,6 +206,7 @@ function convertSFieldToAmisField(field, readonly) {
|
|
|
205
206
|
joinValues: false,
|
|
206
207
|
options: getSelectFieldOptions(field),
|
|
207
208
|
extractValue: true,
|
|
209
|
+
clearable: true,
|
|
208
210
|
labelField: 'label',
|
|
209
211
|
valueField: 'value',
|
|
210
212
|
tpl: readonly ? Tpl.getSelectTpl(field) : null
|
|
@@ -313,7 +315,35 @@ function convertSFieldToAmisField(field, readonly) {
|
|
|
313
315
|
}
|
|
314
316
|
break;
|
|
315
317
|
case 'image':
|
|
316
|
-
|
|
318
|
+
rootUrl = Meteor.absoluteUrl('/api/files/images/');
|
|
319
|
+
convertData = {
|
|
320
|
+
type: getAmisStaticFieldType('image', readonly),
|
|
321
|
+
receiver: {
|
|
322
|
+
method: "post",
|
|
323
|
+
url: "${context.rootUrl}/s3/images",
|
|
324
|
+
adaptor: `
|
|
325
|
+
var rootUrl = ${JSON.stringify(rootUrl)};
|
|
326
|
+
payload = {
|
|
327
|
+
status: response.status == 200 ? 0 : response.status,
|
|
328
|
+
msg: response.statusText,
|
|
329
|
+
data: {
|
|
330
|
+
value: payload._id,
|
|
331
|
+
filename: payload.original.name,
|
|
332
|
+
url: rootUrl + payload._id,
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return payload;
|
|
336
|
+
`,
|
|
337
|
+
headers: {
|
|
338
|
+
Authorization: "Bearer ${context.tenantId},${context.authToken}"
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if(field.multiple){
|
|
343
|
+
convertData.multiple = true;
|
|
344
|
+
convertData.joinValues = false;
|
|
345
|
+
convertData.extractValue = true;
|
|
346
|
+
}
|
|
317
347
|
break;
|
|
318
348
|
case 'formula':
|
|
319
349
|
//TODO
|
|
@@ -67,16 +67,63 @@ function getSaveQuery(object, recordId, fields, options){
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
/*
|
|
71
|
+
img字段值移除URL前缀使其保存时正常保存id,而不是url。
|
|
72
|
+
*/
|
|
73
|
+
function getScriptForRemoveUrlPrefixForImgFields(fields){
|
|
74
|
+
let imgFieldsKeys = [];
|
|
75
|
+
let imgFields = {};
|
|
76
|
+
fields.forEach((item)=>{
|
|
77
|
+
if(item.type === 'image'){
|
|
78
|
+
imgFieldsKeys.push(item.name);
|
|
79
|
+
imgFields[item.name] = {
|
|
80
|
+
name: item.name,
|
|
81
|
+
multiple: item.multiple
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
if(!imgFieldsKeys.length){
|
|
86
|
+
return '';
|
|
87
|
+
}
|
|
88
|
+
return `
|
|
89
|
+
let imgFieldsKeys = ${JSON.stringify(imgFieldsKeys)};
|
|
90
|
+
let imgFields = ${JSON.stringify(imgFields)};
|
|
91
|
+
imgFieldsKeys.forEach((item)=>{
|
|
92
|
+
let imgFieldValue = formData[item];
|
|
93
|
+
if(imgFieldValue && imgFieldValue.length){
|
|
94
|
+
// 因为表单初始化接口的接收适配器中为image字段值添加了url前缀(为了字段编辑时正常显示图片),所以保存时移除(为了字段值保存时正常保存id,而不是url)。
|
|
95
|
+
if(imgFields[item].multiple){
|
|
96
|
+
if(imgFieldValue instanceof Array){
|
|
97
|
+
formData[item] = imgFieldValue.map((value)=>{
|
|
98
|
+
let itemValue = value?.split('/');
|
|
99
|
+
return itemValue[itemValue.length - 1];
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}else{
|
|
103
|
+
let imgValue = imgFieldValue.split('/');
|
|
104
|
+
formData[item] = imgValue[imgValue.length - 1];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
`
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function getSaveDataTpl(fields){
|
|
71
112
|
return `
|
|
72
113
|
const formData = api.data.$;
|
|
114
|
+
for (key in formData){
|
|
115
|
+
// image、select等字段清空值后保存的空字符串转换为null。
|
|
116
|
+
if(formData[key] === ''){
|
|
117
|
+
formData[key] = null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
73
120
|
const objectName = api.data.objectName;
|
|
74
121
|
const fieldsName = Object.keys(formData);
|
|
75
122
|
delete formData.created;
|
|
76
123
|
delete formData.created_by;
|
|
77
124
|
delete formData.modified;
|
|
78
125
|
delete formData.modified_by;
|
|
79
|
-
|
|
126
|
+
${getScriptForRemoveUrlPrefixForImgFields(fields)}
|
|
80
127
|
let query = \`mutation{record: \${objectName}__insert(doc: {__saveData}){_id}}\`;
|
|
81
128
|
if(formData.recordId){
|
|
82
129
|
query = \`mutation{record: \${objectName}__update(id: "\${formData.recordId}", doc: {__saveData}){_id}}\`;
|
|
@@ -86,9 +133,9 @@ function getSaveDataTpl(){
|
|
|
86
133
|
`
|
|
87
134
|
}
|
|
88
135
|
|
|
89
|
-
function getSaveRequestAdaptor(){
|
|
136
|
+
function getSaveRequestAdaptor(fields){
|
|
90
137
|
return `
|
|
91
|
-
${getSaveDataTpl()}
|
|
138
|
+
${getSaveDataTpl(fields)}
|
|
92
139
|
api.data = {query: query.replace('{__saveData}', __saveData)};
|
|
93
140
|
return api;
|
|
94
141
|
`
|
|
@@ -79,6 +79,45 @@ function getConvertDataScriptStr(fields){
|
|
|
79
79
|
return scriptStr;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
+
/*
|
|
83
|
+
img字段值添加URL前缀使其在amis中正常显示图片。
|
|
84
|
+
*/
|
|
85
|
+
function getScriptForAddUrlPrefixForImgFields(fields){
|
|
86
|
+
let imgFieldsKeys = [];
|
|
87
|
+
let imgFields = {};
|
|
88
|
+
let rootUrl = Meteor.absoluteUrl('/api/files/images/');
|
|
89
|
+
fields.forEach((item)=>{
|
|
90
|
+
if(item.type === 'image'){
|
|
91
|
+
imgFieldsKeys.push(item.name);
|
|
92
|
+
imgFields[item.name] = {
|
|
93
|
+
name: item.name,
|
|
94
|
+
multiple: item.multiple
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
})
|
|
98
|
+
if(!imgFieldsKeys.length){
|
|
99
|
+
return '';
|
|
100
|
+
}
|
|
101
|
+
return `
|
|
102
|
+
// image字段值添加URL前缀
|
|
103
|
+
let imgFieldsKeys = ${JSON.stringify(imgFieldsKeys)};
|
|
104
|
+
let imgFields = ${JSON.stringify(imgFields)};
|
|
105
|
+
let rootUrl = ${JSON.stringify(rootUrl)};
|
|
106
|
+
imgFieldsKeys.forEach((item)=>{
|
|
107
|
+
let imgFieldValue = data[item];
|
|
108
|
+
if(imgFieldValue && imgFieldValue.length){
|
|
109
|
+
if(imgFields[item].multiple){
|
|
110
|
+
if(imgFieldValue instanceof Array){
|
|
111
|
+
data[item] = imgFieldValue.map((value)=>{ return rootUrl + value});
|
|
112
|
+
}
|
|
113
|
+
}else{
|
|
114
|
+
data[item] = rootUrl + imgFieldValue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
`
|
|
119
|
+
}
|
|
120
|
+
|
|
82
121
|
function getEditFormInitApi(object, recordId, fields){
|
|
83
122
|
return {
|
|
84
123
|
method: "post",
|
|
@@ -89,6 +128,13 @@ function getEditFormInitApi(object, recordId, fields){
|
|
|
89
128
|
var data = payload.data.data[0];
|
|
90
129
|
if(data){
|
|
91
130
|
${getConvertDataScriptStr(fields)}
|
|
131
|
+
${getScriptForAddUrlPrefixForImgFields(fields)}
|
|
132
|
+
//初始化接口返回的字段移除字段值为null的字段
|
|
133
|
+
for (key in data){
|
|
134
|
+
if(data[key] === null){
|
|
135
|
+
delete data[key];
|
|
136
|
+
}
|
|
137
|
+
}
|
|
92
138
|
};
|
|
93
139
|
payload.data = data;
|
|
94
140
|
delete payload.extensions;
|
|
@@ -103,7 +149,7 @@ function getSaveApi(object, recordId, fields, options){
|
|
|
103
149
|
method: 'post',
|
|
104
150
|
url: graphql.getApi(),
|
|
105
151
|
data: graphql.getSaveQuery(object, recordId, fields, options),
|
|
106
|
-
requestAdaptor: graphql.getSaveRequestAdaptor(),
|
|
152
|
+
requestAdaptor: graphql.getSaveRequestAdaptor(fields),
|
|
107
153
|
responseData: {
|
|
108
154
|
"recordId": "${record._id}"
|
|
109
155
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-plugin-amis",
|
|
3
|
-
"version": "2.2.52-beta.
|
|
3
|
+
"version": "2.2.52-beta.21",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"scripts": {},
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
"publishConfig": {
|
|
9
9
|
"access": "public"
|
|
10
10
|
},
|
|
11
|
-
"gitHead": "
|
|
11
|
+
"gitHead": "b31ea478616a5ab135da0e9582ed370be20fb167"
|
|
12
12
|
}
|