@steedos/service-plugin-amis 2.2.36 → 2.2.39

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.
@@ -0,0 +1,339 @@
1
+ {
2
+ "type": "page",
3
+ "body": [
4
+ {
5
+ "type": "form",
6
+ "mode": "normal",
7
+ "persistData": false,
8
+ "promptPageLeave": true,
9
+ "name": "form_edit_${recordId}",
10
+ "debug": false,
11
+ "title": "",
12
+ "api": {
13
+ "method": "post",
14
+ "url": "/graphql",
15
+ "data": {
16
+ "objectName": "${objectName}",
17
+ "$": "$$",
18
+ "recordId": "${recordId}",
19
+ "modalName": "${modalName}"
20
+ },
21
+ "requestAdaptor": "const formData = api.data.$;\nconst objectName = api.data.objectName;\nconst fieldsName = Object.keys(formData);\ndelete formData.created;\ndelete formData.created_by;\ndelete formData.modified;\ndelete formData.modified_by;\ndelete formData._display;\n\n//数据格式转换\nformData.columns = lodash.map(formData.columns, (item) => {\n return { field: item };\n});\n\nformData.sort = lodash.map(formData.sort, (item) => {\n const arr = item.split(':');\n return { field_name: arr[0], order: arr[1]};\n});\n\nformData.mobile_columns = lodash.map(formData.mobile_columns, (item) => {\n return { field: item };\n});\n\n\nif (formData._filters_type_controller === 'conditions' && formData._filters_conditions) {\n formData.filters = window.amisConvert.conditionsToFilters(formData._filters_conditions);\n // formData.filters = JSON.stringify(window.amisConvert.conditionsToFilters(formData._filters_conditions), null, 4);\n} else {\n formData.filters = formData._filters_function || null;\n}\n\ndelete formData._filters_type_controller;\ndelete formData._filters_conditions;\ndelete formData._filters_function;\n\nlet query = `mutation{record: ${objectName}__insert(doc: {__saveData}){_id}}`;\nif (formData.recordId) {\n query = `mutation{record: ${objectName}__update(id: \"${formData.recordId}\", doc: {__saveData}){_id}}`;\n};\ndelete formData._id;\nlet __saveData = JSON.stringify(JSON.stringify(formData));\n\napi.data = { query: query.replace('{__saveData}', __saveData) };\nreturn api;",
22
+ "responseData": {
23
+ "recordId": "${record._id}"
24
+ },
25
+ "adaptor": "\nSteedosUI.getRef(api.body.modalName).close();\nvar object_name = Session.get(\"object_name\");\nif (window.FlowRouter && window.FlowRouter.current().route.pathDef === '/app/:app_id/:object_name/grid/:list_view_id' && object_name != 'object_listviews') {\n var app_id = Session.get(\"app_id\");\n var list_view_id = payload.data.record._id;\n var url = \"/app/\" + app_id + \"/\" + object_name + \"/grid/\" + list_view_id;\n SteedosUI.router.go({ objectName: api.body.objectName, recordId: payload.data.record._id, type: api.body.recordId ? 'edit' : 'new' }, url);\n} else { \n SteedosUI.router.go({objectName: api.body.objectName, recordId: payload.data.record._id, type: api.body.recordId ? 'edit': 'new'});\n}\n\nreturn payload;\n "
26
+ },
27
+ "initApi": {
28
+ "method": "post",
29
+ "url": "/graphql?rf=1653731141728",
30
+ "cache": 100,
31
+ "adaptor": "var data = payload.data.data[0] || { _filters_type_controller: 'conditions' };\n//数据格式转换\nif (data) {\n data.columns = lodash.map(data.columns, 'field');\n data.sort = lodash.map(data.sort, (item) => {\n return `${item.field_name}:${item.order || 'asc'}`\n });\n data.mobile_columns = lodash.map(data.mobile_columns, 'field');\n\n if (data.filters && lodash.isString(data.filters)) {\n try {\n data.filters = JSON.parse(data.filters);\n }catch(e){}\n }\n\n if (data.filters && lodash.isString(data.filters)) {\n data._filters_type_controller = 'function';\n } else {\n data._filters_type_controller = 'conditions'\n }\n\n if (data._filters_type_controller === 'conditions') {\n data._filters_conditions = window.amisConvert.filtersToConditions(data.filters || []);\n } else {\n data._filters_function = data.filters;\n }\n}\npayload.data = data;\ndelete payload.extensions;\nreturn payload;",
32
+ "data": {
33
+ "query": "{data:object_listviews(filters:[\"_id\", \"=\", \"${recordId}\"]){_id,label,name,object_name,filter_scope,shared,show_count,columns,filter_fields,sort,filters,filter_logic,mobile_columns,sort_no,created,created_by:created_by__expand{_id,name},modified,modified_by:modified_by__expand{_id,name},_display{shared,show_count,created,modified}}}"
34
+ },
35
+ "sendOn": "!!this.recordId",
36
+ "replaceData": false,
37
+ "responseData": {
38
+ "&": "$$"
39
+ }
40
+ },
41
+ "initFetch": true,
42
+ "body": [
43
+ {
44
+ "type": "fieldSet",
45
+ "title": "通用",
46
+ "collapsable": true,
47
+ "body": [
48
+ {
49
+ "name": "label",
50
+ "label": "显示名称",
51
+ "required": true,
52
+ "type": "input-text",
53
+ "className": "m-0",
54
+ "labelClassName": "text-left"
55
+ },
56
+ {
57
+ "name": "name",
58
+ "label": "API 名称",
59
+ "labelRemark": "API 名称只能包含小写字母、数字,必须以字母开头,不能以下划线字符结尾或包含两个连续的下划线字符",
60
+ "required": true,
61
+ "type": "input-text",
62
+ "className": "m-0",
63
+ "labelClassName": "text-left"
64
+ },
65
+ {
66
+ "name": "object_name",
67
+ "label": "对象",
68
+ "required": true,
69
+ "type": "select",
70
+ "joinValues": false,
71
+ "extractValue": true,
72
+ "labelField": "label",
73
+ "valueField": "value",
74
+ "autoComplete": "get:/service/api/amis-metadata-objects/objects/options",
75
+ "className": "m-0",
76
+ "labelClassName": "text-left",
77
+ "checkAll": false,
78
+ "searchable": true,
79
+ "source": {
80
+ "method": "get",
81
+ "url": "/service/api/amis-metadata-objects/objects/options"
82
+ }
83
+ },
84
+ {
85
+ "name": "filter_scope",
86
+ "label": "过滤范围",
87
+ "required": true,
88
+ "type": "select",
89
+ "joinValues": false,
90
+ "extractValue": true,
91
+ "labelField": "label",
92
+ "valueField": "value",
93
+ "autoComplete": {
94
+ "method": "post",
95
+ "url": "/graphql",
96
+ "data": {
97
+ "query": "{objects(filters: [\"_id\", \"=\", \"-1\"]){_id}}",
98
+ "$": "$$",
99
+ "$term": "$term",
100
+ "$value": "$filter_scope._id",
101
+ "rfield": "${object_name}"
102
+ },
103
+ "requestAdaptor": "\n var filters = '[]';\n var top = 10;\n if(api.data.$term){\n filters = '[\"name\", \"contains\", \"'+ api.data.$term +'\"]';\n }else if(api.data.$value){\n filters = '[\"_id\", \"=\", \"'+ api.data.$value +'\"]';\n }\n api.data.query = api.data.query.replaceAll('{__filters}', filters).replace('{__top}', top);\n return api;\n ",
104
+ "adaptor": "\n payload.data.options = eval(function anonymous(\n) {\n\n var _options;\n\n _options = [{\n label: \"我的\",\n value: \"mine\",\n icon: \"user\"\n }, {\n label: \"工作区\",\n value: \"space\",\n icon: \"groups\"\n }];\n return _options;\n \n})(api.data);\n return payload;\n "
105
+ },
106
+ "value": "space",
107
+ "className": "m-0",
108
+ "labelClassName": "text-left"
109
+ },
110
+ {
111
+ "name": "shared",
112
+ "type": "checkbox",
113
+ "tpl": null,
114
+ "className": "m-0",
115
+ "labelClassName": "text-left",
116
+ "option": "共享视图到工作区"
117
+ },
118
+ {
119
+ "name": "show_count",
120
+ "type": "checkbox",
121
+ "tpl": null,
122
+ "className": "m-0",
123
+ "labelClassName": "text-left",
124
+ "option": "显示条目数"
125
+ },
126
+ {
127
+ "label": "显示的列",
128
+ "type": "transfer",
129
+ "name": "columns",
130
+ "options": [],
131
+ "id": "u:92c0b3cccca0",
132
+ "required": true,
133
+ "placeholder": "-",
134
+ "source": {
135
+ "method": "get",
136
+ "url": "/service/api/amis-metadata-objects/objects/${object_name}/fields/options",
137
+ "data": null,
138
+ "requestAdaptor": "",
139
+ "adaptor": "",
140
+ "sendOn": "!!this.object_name"
141
+ },
142
+ "className": "col-span-2 m-0",
143
+ "visibleOn": "!!this.object_name",
144
+ "checkAll": false,
145
+ "searchable": true,
146
+ "sortable": true,
147
+ "joinValues": false,
148
+ "extractValue": true
149
+ },
150
+ {
151
+ "name": "sort_no",
152
+ "label": "排序号",
153
+ "type": "input-number",
154
+ "precision": 0,
155
+ "className": "m-0",
156
+ "labelClassName": "text-left"
157
+ }
158
+ ]
159
+ },
160
+ {
161
+ "type": "fieldSet",
162
+ "title": "过滤",
163
+ "collapsable": true,
164
+ "body": [
165
+ {
166
+ "label": "默认过滤字段",
167
+ "type": "transfer",
168
+ "name": "filter_fields",
169
+ "options": [],
170
+ "id": "u:ea994ad5816d",
171
+ "source": {
172
+ "method": "get",
173
+ "url": "/service/api/amis-metadata-objects/objects/${object_name}/fields/options",
174
+ "data": null,
175
+ "requestAdaptor": "",
176
+ "adaptor": "",
177
+ "sendOn": "!!this.object_name"
178
+ },
179
+ "visibleOn": "false && !!this.object_name",
180
+ "className": "col-span-2 m-0",
181
+ "searchable": true,
182
+ "sortable": true,
183
+ "joinValues": false,
184
+ "extractValue": true
185
+ },
186
+ {
187
+ "type": "radios",
188
+ "label": "过滤器配置方式",
189
+ "name": "_filters_type_controller",
190
+ "options": [
191
+ {
192
+ "label": "条件组合",
193
+ "value": "conditions"
194
+ },
195
+ {
196
+ "label": "js脚本",
197
+ "value": "function"
198
+ }
199
+ ],
200
+ "id": "u:318671bc196c",
201
+ "joinValues": true,
202
+ "className": "col-span-2 m-0",
203
+ "language": "javascript",
204
+ "visibleOn": "false"
205
+ },
206
+ {
207
+ "type": "condition-builder",
208
+ "label": "条件组件",
209
+ "name": "_filters_conditions",
210
+ "description": "",
211
+ "id": "u:a9f2232e30d7",
212
+ "source": {
213
+ "method": "get",
214
+ "url": "${context.rootUrl}/service/api/amis-metadata-listviews/getFilterFields?objectName=${object_name}",
215
+ "dataType": "json"
216
+ },
217
+ "disabled": false,
218
+ "className": "col-span-2 m-0",
219
+ "visibleOn": "!!this.object_name",
220
+ "labelClassName": ""
221
+ },
222
+ {
223
+ "type": "editor",
224
+ "label": "js脚本",
225
+ "name": "_filters_function",
226
+ "id": "u:84714ec9abba",
227
+ "visibleOn": "!!this.object_name && _filters_type_controller == 'function'",
228
+ "className": "col-span-2 m-0",
229
+ "labelClassName": "hidden"
230
+ }
231
+ ],
232
+ "visibleOn": "!!this.object_name",
233
+ "collapsed": true
234
+ },
235
+ {
236
+ "type": "fieldSet",
237
+ "title": "排序",
238
+ "collapsable": true,
239
+ "body": [
240
+ {
241
+ "label": "默认排序规则",
242
+ "type": "tabs-transfer",
243
+ "name": "sort",
244
+ "options": [],
245
+ "id": "u:32f3e4e73115",
246
+ "strictMode": true,
247
+ "source": {
248
+ "method": "get",
249
+ "url": "/service/api/amis-metadata-objects/objects/${object_name}/sortFields/options",
250
+ "data": null,
251
+ "requestAdaptor": "",
252
+ "adaptor": "",
253
+ "sendOn": "!!this.object_name"
254
+ },
255
+ "visibleOn": "!!this.object_name",
256
+ "sortable": true,
257
+ "className": "col-span-2 m-0",
258
+ "searchable": true,
259
+ "checkAll": false,
260
+ "clearValueOnHidden": false,
261
+ "joinValues": false,
262
+ "extractValue": true
263
+ }
264
+ ],
265
+ "visibleOn": "!!this.object_name",
266
+ "collapsed": true
267
+ },
268
+ {
269
+ "type": "fieldSet",
270
+ "title": "手机端",
271
+ "collapsable": true,
272
+ "body": [
273
+ {
274
+ "label": "手机端显示的列",
275
+ "type": "transfer",
276
+ "name": "mobile_columns",
277
+ "options": [],
278
+ "id": "u:e80d9f58dfd0",
279
+ "selectMode": "list",
280
+ "searchable": true,
281
+ "searchApi": "",
282
+ "sortable": true,
283
+ "mode": "normal",
284
+ "searchResultMode": "list",
285
+ "joinValues": false,
286
+ "extractValue": true,
287
+ "source": {
288
+ "method": "get",
289
+ "url": "/service/api/amis-metadata-objects/objects/${object_name}/fields/options",
290
+ "data": null,
291
+ "requestAdaptor": "",
292
+ "adaptor": "",
293
+ "sendOn": "!!this.object_name"
294
+ },
295
+ "visibleOn": "!!this.object_name",
296
+ "className": "col-span-2 m-0"
297
+ }
298
+ ],
299
+ "collapsed": true,
300
+ "visibleOn": "!!this.object_name"
301
+ }
302
+ ],
303
+ "panelClassName": "m-0",
304
+ "bodyClassName": "p-4",
305
+ "actions": [
306
+ {
307
+ "type": "button",
308
+ "label": "取消",
309
+ "actionType": "",
310
+ "level": "default",
311
+ "block": false,
312
+ "onClick": "SteedosUI.getRef(props.data.__super.modalName).close();"
313
+ },
314
+ {
315
+ "type": "button",
316
+ "label": "保存",
317
+ "actionType": "submit",
318
+ "level": "info"
319
+ }
320
+ ],
321
+ "actionsClassName": "p-sm b-t b-light text-center",
322
+ "className": "steedos-amis-form",
323
+ "language": "javascript"
324
+ }
325
+ ],
326
+ "regions": [
327
+ "body"
328
+ ],
329
+ "data": {
330
+ "objectName": "object_listviews",
331
+ "context": {
332
+ "rootUrl": "http://127.0.0.1:5000"
333
+ }
334
+ },
335
+ "bodyClassName": "p-0",
336
+ "name": "page_edit_${recordId}",
337
+ "initApi": null,
338
+ "initFetch": null
339
+ }
@@ -0,0 +1,12 @@
1
+ name: listview_form
2
+ is_active: true
3
+ label: 列表视图表单
4
+ object_name: object_listviews
5
+ pageAssignments:
6
+ - desktop: true
7
+ mobile: true
8
+ page: listview
9
+ type: orgDefault
10
+ render_engine: amis
11
+ type: form
12
+ widgets: []
@@ -1,3 +1,12 @@
1
+ /*
2
+ * @Author: baozhoutao@steedos.com
3
+ * @Date: 2022-05-19 11:38:30
4
+ * @LastEditors: baozhoutao@steedos.com
5
+ * @LastEditTime: 2022-05-23 10:01:02
6
+ * @Description:
7
+ */
8
+ const AmisSchema = require('./utils/amis-schema');
9
+
1
10
  module.exports = {
2
11
  name: "amis",
3
12
  mixins: [],
@@ -21,7 +30,14 @@ module.exports = {
21
30
  async handler(ctx) {
22
31
  const userSession = ctx.meta.user;
23
32
  const { type, app, objectApiName, recordId, formFactor } = ctx.params;
24
- return this.getDefaultSchema(type, app, objectApiName, recordId, formFactor, userSession );
33
+ return this.getDefaultSchema({type, app, objectApiName, recordId, formFactor, userSession});
34
+ }
35
+ },
36
+ getInitSchema: {
37
+ async handler(ctx) {
38
+ const userSession = ctx.meta.user;
39
+ const { type, objectApiName, formFactor } = ctx.params;
40
+ return this.getInitSchema({type, objectApiName, formFactor, userSession} );
25
41
  }
26
42
  }
27
43
  },
@@ -38,7 +54,7 @@ module.exports = {
38
54
  */
39
55
  methods: {
40
56
  getDefaultSchema: {
41
- handler(type, app, objectApiName, recordId, formFactor, userSession) {
57
+ handler({type, app, objectApiName, recordId, formFactor, userSession}) {
42
58
  // if(type === 'list'){
43
59
  // return {
44
60
  // type: 'page',
@@ -70,6 +86,13 @@ module.exports = {
70
86
  // }
71
87
  // }
72
88
  }
89
+ },
90
+ getInitSchema: {
91
+ handler({type, objectApiName, formFactor, userSession}) {
92
+ if(type === 'form' && objectApiName){
93
+ return AmisSchema.getRecordSchema(objectApiName, '${recordId}', false, userSession);
94
+ }
95
+ }
73
96
  }
74
97
  },
75
98