@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.21",
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": "b31ea478616a5ab135da0e9582ed370be20fb167"
11
+ "gitHead": "52619e601e001d519b3690c0d9dc36737bc20ae0"
12
12
  }