@steedos/service-plugin-amis 2.2.52-beta.21 → 2.2.52-beta.22
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
|
+
'file',
|
|
8
9
|
'image',
|
|
9
10
|
'datetime',
|
|
10
11
|
'time',
|
|
@@ -332,6 +333,37 @@ payload = {
|
|
|
332
333
|
url: rootUrl + payload._id,
|
|
333
334
|
}
|
|
334
335
|
}
|
|
336
|
+
return payload;
|
|
337
|
+
`,
|
|
338
|
+
headers: {
|
|
339
|
+
Authorization: "Bearer ${context.tenantId},${context.authToken}"
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if(field.multiple){
|
|
344
|
+
convertData.multiple = true;
|
|
345
|
+
convertData.joinValues = false;
|
|
346
|
+
convertData.extractValue = true;
|
|
347
|
+
}
|
|
348
|
+
break;
|
|
349
|
+
case 'file':
|
|
350
|
+
rootUrl = Meteor.absoluteUrl('/api/files/files/');
|
|
351
|
+
convertData = {
|
|
352
|
+
type: getAmisStaticFieldType('file', readonly),
|
|
353
|
+
receiver: {
|
|
354
|
+
method: "post",
|
|
355
|
+
url: "${context.rootUrl}/s3/files",
|
|
356
|
+
adaptor: `
|
|
357
|
+
var rootUrl = ${JSON.stringify(rootUrl)};
|
|
358
|
+
payload = {
|
|
359
|
+
status: response.status == 200 ? 0 : response.status,
|
|
360
|
+
msg: response.statusText,
|
|
361
|
+
data: {
|
|
362
|
+
value: payload._id,
|
|
363
|
+
name: payload.original.name,
|
|
364
|
+
url: rootUrl + payload._id,
|
|
365
|
+
}
|
|
366
|
+
}
|
|
335
367
|
return payload;
|
|
336
368
|
`,
|
|
337
369
|
headers: {
|
|
@@ -20,7 +20,7 @@ function getFieldsTemplate(fields, expand){
|
|
|
20
20
|
fieldsName.push(`${field.name}`)
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
if(field.type === 'date' || field.type == 'datetime' || field.type == 'boolean' || field.type == 'select'){
|
|
23
|
+
if(field.type === 'date' || field.type == 'datetime' || field.type == 'boolean' || field.type == 'select' || field.type == 'file'){
|
|
24
24
|
displayFields.push(`${field.name}`)
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -108,6 +108,49 @@ function getScriptForRemoveUrlPrefixForImgFields(fields){
|
|
|
108
108
|
`
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
+
/*
|
|
112
|
+
file字段值重写使其保存时正常保存id。
|
|
113
|
+
*/
|
|
114
|
+
function getScriptForSimplifiedValueForFileFields(fields){
|
|
115
|
+
let fileFieldsKeys = [];
|
|
116
|
+
let fileFields = {};
|
|
117
|
+
fields.forEach((item)=>{
|
|
118
|
+
if(item.type === 'file'){
|
|
119
|
+
fileFieldsKeys.push(item.name);
|
|
120
|
+
fileFields[item.name] = {
|
|
121
|
+
name: item.name,
|
|
122
|
+
multiple: item.multiple
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
})
|
|
126
|
+
if(!fileFieldsKeys.length){
|
|
127
|
+
return '';
|
|
128
|
+
}
|
|
129
|
+
return `
|
|
130
|
+
let fileFieldsKeys = ${JSON.stringify(fileFieldsKeys)};
|
|
131
|
+
let fileFields = ${JSON.stringify(fileFields)};
|
|
132
|
+
fileFieldsKeys.forEach((item)=>{
|
|
133
|
+
let fileFieldValue = formData[item];
|
|
134
|
+
if(fileFieldValue){
|
|
135
|
+
// 因为表单初始化接口的接收适配器中为file字段值重写了值及格式(为了字段编辑时正常显示附件名、点击附件名正常下载),所以保存时还原(为了字段值保存时正常保存id)。
|
|
136
|
+
if(fileFields[item].multiple){
|
|
137
|
+
if(fileFieldValue instanceof Array && fileFieldValue.length){
|
|
138
|
+
formData[item] = fileFieldValue.map((value)=>{
|
|
139
|
+
if(typeof value === 'object'){
|
|
140
|
+
return value.value;
|
|
141
|
+
}else{
|
|
142
|
+
return value;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}else{
|
|
147
|
+
formData[item] = typeof fileFieldValue === 'object' ? fileFieldValue.value : fileFieldValue;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
`
|
|
152
|
+
}
|
|
153
|
+
|
|
111
154
|
function getSaveDataTpl(fields){
|
|
112
155
|
return `
|
|
113
156
|
const formData = api.data.$;
|
|
@@ -123,7 +166,9 @@ function getSaveDataTpl(fields){
|
|
|
123
166
|
delete formData.created_by;
|
|
124
167
|
delete formData.modified;
|
|
125
168
|
delete formData.modified_by;
|
|
169
|
+
delete formData._display;
|
|
126
170
|
${getScriptForRemoveUrlPrefixForImgFields(fields)}
|
|
171
|
+
${getScriptForSimplifiedValueForFileFields(fields)}
|
|
127
172
|
let query = \`mutation{record: \${objectName}__insert(doc: {__saveData}){_id}}\`;
|
|
128
173
|
if(formData.recordId){
|
|
129
174
|
query = \`mutation{record: \${objectName}__update(id: "\${formData.recordId}", doc: {__saveData}){_id}}\`;
|
|
@@ -118,6 +118,58 @@ function getScriptForAddUrlPrefixForImgFields(fields){
|
|
|
118
118
|
`
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
+
/*
|
|
122
|
+
file字段值重写使其在amis中正常显示附件名、点击附件名下载文件。
|
|
123
|
+
*/
|
|
124
|
+
function getScriptForRewriteValueForFileFields(fields){
|
|
125
|
+
let fileFieldsKeys = [];
|
|
126
|
+
let fileFields = {};
|
|
127
|
+
let fileRootUrl = Meteor.absoluteUrl('/api/files/files/');
|
|
128
|
+
fields.forEach((item)=>{
|
|
129
|
+
if(item.type === 'file'){
|
|
130
|
+
fileFieldsKeys.push(item.name);
|
|
131
|
+
fileFields[item.name] = {
|
|
132
|
+
name: item.name,
|
|
133
|
+
multiple: item.multiple
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
})
|
|
137
|
+
if(!fileFieldsKeys.length){
|
|
138
|
+
return '';
|
|
139
|
+
}
|
|
140
|
+
return `
|
|
141
|
+
// file字段值重写以便编辑时正常显示附件名、点击附件名正常下载附件
|
|
142
|
+
let fileFieldsKeys = ${JSON.stringify(fileFieldsKeys)};
|
|
143
|
+
let fileFields = ${JSON.stringify(fileFields)};
|
|
144
|
+
let fileRootUrl = ${JSON.stringify(fileRootUrl)};
|
|
145
|
+
fileFieldsKeys.forEach((item)=>{
|
|
146
|
+
let fileFieldValue = data[item];
|
|
147
|
+
if(fileFieldValue && fileFieldValue.length){
|
|
148
|
+
const fileFieldNames = data._display[item].split(',');
|
|
149
|
+
if(fileFields[item].multiple){
|
|
150
|
+
if(fileFieldValue instanceof Array){
|
|
151
|
+
data[item] = fileFieldValue.map((value, index)=>{
|
|
152
|
+
return {
|
|
153
|
+
value: value,
|
|
154
|
+
name: fileFieldNames[index],
|
|
155
|
+
url: fileRootUrl + value + "?download=true",
|
|
156
|
+
state: "uploaded"
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}else{
|
|
161
|
+
data[item] = {
|
|
162
|
+
value: fileFieldValue,
|
|
163
|
+
name: fileFieldNames[0],
|
|
164
|
+
url: fileRootUrl + fileFieldValue + "?download=true",
|
|
165
|
+
state: "uploaded"
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
`
|
|
171
|
+
}
|
|
172
|
+
|
|
121
173
|
function getEditFormInitApi(object, recordId, fields){
|
|
122
174
|
return {
|
|
123
175
|
method: "post",
|
|
@@ -129,6 +181,7 @@ function getEditFormInitApi(object, recordId, fields){
|
|
|
129
181
|
if(data){
|
|
130
182
|
${getConvertDataScriptStr(fields)}
|
|
131
183
|
${getScriptForAddUrlPrefixForImgFields(fields)}
|
|
184
|
+
${getScriptForRewriteValueForFileFields(fields)}
|
|
132
185
|
//初始化接口返回的字段移除字段值为null的字段
|
|
133
186
|
for (key in data){
|
|
134
187
|
if(data[key] === null){
|
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.22",
|
|
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": "52619e601e001d519b3690c0d9dc36737bc20ae0"
|
|
12
12
|
}
|