@steedos/service-plugin-amis 2.3.0-beta.14 → 2.3.0-beta.15

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.
@@ -2,56 +2,56 @@
2
2
  "type": "page",
3
3
  "body": [
4
4
  {
5
- "type": "service",
6
- "className": "col-span-2 m-0",
7
- "id": "tabs-options-service",
8
- "affixFooter": false,
5
+ "className": "steedos-amis-form",
6
+ "id": "apps-form",
7
+ "type": "form",
8
+ "mode": "normal",
9
+ "persistData": false,
10
+ "promptPageLeave": true,
11
+ "name": "form_edit_${recordId}",
12
+ "title": "",
9
13
  "api": {
10
- "method": "get",
14
+ "method": "post",
11
15
  "url": "${context.rootUrl}/graphql",
12
- "adaptor": "const registerFilter = amisRequire('amis').registerFilter;\nconst tabGroupKey = \"group\";\nconst getTabsSortFun = function(groupNames){\n return function(m,n){\n var tempM = !!m[tabGroupKey] ? 1 : 0;\n var tempN = !!n[tabGroupKey] ? 1 : 0;\n if(!m[tabGroupKey] || !n[tabGroupKey]){\n // 没有配置group属性的字段排在前面\n return tempM - tempN;\n }\n // 字段所属分组不在groupNames时排在前面,其他字段按其所属分组在groupNames中的排序先后顺序排序,所属分组相同的字段排在一起。\n return groupNames.indexOf(m[tabGroupKey]) - groupNames.indexOf(n[tabGroupKey]);\n };\n}\n\n// 把”选择字段“弹出窗口中设置的字段转为主表单tabs字段值格式\nregisterFilter('convertDataForTabs', function (input) {\n debugger;\n let pickedTabs = input.picked_tabs || [];\n const superTabs = _.keyBy(input.__super.tab_items, 'tab_name');\n if(typeof pickedTabs === \"string\"){\n pickedTabs = pickedTabs.split(\",\");\n }\n const tabOptions = lodash.keyBy(this.data.__super.__super.__super.__super.__super.tabs_options, \"value\");\n const convertedTabs = pickedTabs.map(function (tab_name) {\n const superTab = superTabs[tab_name];\n if (superTab) {\n return superTab;\n }\n else {\n const tabOption = tabOptions[tab_name];\n return {\n tab_name: tab_name,\n group: tabOption.group\n }\n }\n });\n console.log(\"===convertDataForTabs===\", convertedTabs);\n const tabGroups = this.data.__super.__super.__super.__super.__super.tab_groups;\n const groupNames = lodash.compact(lodash.map(tabGroups,\"group_name\"));\n // tabs重新按分组排序\n convertedTabs.sort(getTabsSortFun(groupNames));\n return {\n tab_items: convertedTabs\n }\n});\n\n// 字段列表每一列数据变量时立即同步值到表单中\nregisterFilter('quickEidtSaveForTab', function (input, prop_name) {\n const currentPropValue = input.value;\n const rowValue = input.__super;\n const formValue = input.__super.__super.__super;\n const tab_name = rowValue.tab_name;\n rowValue[prop_name] = currentPropValue;\n let newTabs = formValue.tab_items.map(function (item) {\n if (item.tab_name == tab_name) {\n return Object.assign({}, item, rowValue);\n }\n else { \n return item;\n }\n });\n const tabGroups = this.data.__super.__super.tab_groups;\n const groupNames = lodash.compact(lodash.map(tabGroups,\"group_name\"));\n // tabs重新按分组排序\n newTabs.sort(getTabsSortFun(groupNames));\n return {\n tab_items: newTabs\n }\n});\n\n// 清空主表单tabs字段值\nregisterFilter('clearTabs', function (input) {\n return {\n tab_items: []\n }\n});\n\n// 把”设置分组“弹出窗口中设置的分组转为主表单groups字段值格式\n// 同时根据新的groups排序重新设置tabs属性的字段先后次序\n// 因为直接设置tabs值有bug,即新值老值会串,所以需要先执行上面的clearTabs清除原来的值\nregisterFilter('convertDataForGroups', function (input) {\n const settingGroups = input.setting_groups || [];\n const convertedGroups = lodash.uniqBy(settingGroups.map(function (item) {\n return {\n group_name: item.group_name\n }\n }), \"group_name\");\n\n const groupNames = lodash.compact(lodash.map(convertedGroups,\"group_name\"));\n const tab_items = this.data.__super.__super.items;\n // tabs重新按分组排序\n tab_items.sort(getTabsSortFun(groupNames));\n\n return {\n tab_groups: convertedGroups,\n tab_items: tab_items\n }\n});\n\nlet data = payload.data;\ndata.tabs_options = data.options;\ndelete data.options\npayload.data = data;\nreturn payload;\n",
13
16
  "data": {
14
- "query": "{options:tabs{_id label:label value:name,type,object,desktop,mobile}}"
17
+ "$": "$$",
18
+ "recordId": "${recordId}",
19
+ "modalName": "${modalName}",
20
+ "objectName": "${objectName}"
21
+ },
22
+ "requestAdaptor": "\nconst formData = api.data.$;\nfor (key in formData){\n // image、select等字段清空值后保存的空字符串转换为null。\n if(formData[key] === ''){\n formData[key] = null;\n }\n}\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;\ndelete formData.tabs_options;\ndelete formData.tab_groups_options;\n\n// 新加字段tab_items,值同步回传到老字段tabs中兼容老UI界面\nformData.tabs = [];\nif (formData.tab_items && formData.tab_items.length) { \n formData.tabs = formData.tab_items.map(function (item) { return item.tab_name; });\n}\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;\n",
23
+ "responseData": {
24
+ "recordId": "${record._id}"
15
25
  },
16
- "sendOn": ""
26
+ "adaptor": "\n SteedosUI.getRef(api.body.modalName).close();\n SteedosUI.router.go({objectName: api.body.objectName, recordId: payload.data.record._id, type: api.body.recordId ? 'edit': 'new'});\n return payload;\n "
27
+ },
28
+ "initApi": {
29
+ "method": "post",
30
+ "url": "${context.rootUrl}/graphql",
31
+ "sendOn": "!!this.recordId",
32
+ "adaptor": "var data = payload.data.data[0];\nif(data){\n //初始化接口返回的字段移除字段值为null的字段\n for (key in data){\n if(data[key] === null){\n delete data[key];\n }\n }\n};\npayload.data = data;\ndelete payload.extensions;\nreturn payload;\n ",
33
+ "data": {
34
+ "query": "{data:apps(filters:[\"_id\", \"=\", \"${recordId}\"]){_id,name,code,icon_slds,visible,description,tabs,tab_items,tab_groups,objects,mobile_objects,is_creator,mobile,sort,url,is_use_ie,is_use_iframe,is_new_window,on_click,auth_name,secret,is_system,from_code_id,instance_state,created,created_by:created_by__expand{_id,name},modified,modified_by:modified_by__expand{_id,name},_display{visible,is_creator,mobile,is_use_ie,is_use_iframe,is_new_window,is_system,instance_state,created,modified}}}"
35
+ }
17
36
  },
18
- "messages": {},
19
- "placeholder": "-",
37
+ "initFetch": true,
20
38
  "body": [
21
39
  {
22
- "className": "steedos-amis-form",
23
- "id": "apps-form",
24
- "type": "form",
25
- "mode": "normal",
26
- "persistData": false,
27
- "promptPageLeave": true,
28
- "name": "form_edit_${recordId}",
29
- "title": "",
40
+ "type": "service",
41
+ "className": "col-span-2 m-0",
42
+ "id": "tabs-options-service",
43
+ "affixFooter": false,
30
44
  "api": {
31
45
  "method": "post",
32
46
  "url": "${context.rootUrl}/graphql",
47
+ "adaptor": "let data = payload.data;\ndata.tabs_options = data.options;\ndelete data.options\npayload.data = data;\nreturn payload;\n",
33
48
  "data": {
34
- "$": "$$",
35
- "recordId": "${recordId}",
36
- "modalName": "${modalName}",
37
- "objectName": "${objectName}"
38
- },
39
- "requestAdaptor": "\nconst formData = api.data.$;\nfor (key in formData){\n // image、select等字段清空值后保存的空字符串转换为null。\n if(formData[key] === ''){\n formData[key] = null;\n }\n}\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;\ndelete formData.tabs_options;\ndelete formData.tab_groups_options;\n\n// 新加字段tab_items,值同步回传到老字段tabs中兼容老UI界面\nformData.tabs = [];\nif (formData.tab_items && formData.tab_items.length) { \n formData.tabs = formData.tab_items.map(function (item) { return item.tab_name; });\n}\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;\n",
40
- "responseData": {
41
- "recordId": "${record._id}"
49
+ "query": "{options:tabs{_id label:label value:name,type,object,desktop,mobile}}"
42
50
  },
43
- "adaptor": "\n SteedosUI.getRef(api.body.modalName).close();\n SteedosUI.router.go({objectName: api.body.objectName, recordId: payload.data.record._id, type: api.body.recordId ? 'edit': 'new'});\n return payload;\n "
44
- },
45
- "initApi": {
46
- "method": "post",
47
- "url": "${context.rootUrl}/graphql",
48
- "sendOn": "!!this.recordId",
49
- "adaptor": "var data = payload.data.data[0];\nif(data){\n //初始化接口返回的字段移除字段值为null的字段\n for (key in data){\n if(data[key] === null){\n delete data[key];\n }\n }\n // if (!data.tab_items) {\n // debugger;\n // const tabOptions = data.tabs_options || [];\n // const tabItems = [];\n // // 把应用中原来tabs属性值添加到新的tab_items属性的默认值中\n // if (data.tabs && data.tabs.length) { \n // data.tabs.forEach(function (item) {\n // tabItems.push({ tab_name: item });\n // });\n // }\n // const pushObjectsToTabItems = function (objects) {\n // objects.forEach(function (item) {\n // // 已经有绑定到指定对象的选项卡就不添加\n // let existObjectItem = !!tabItems.find(function (tabItem) {\n // return !!tabOptions.find(function (option) {\n // return option.object === item;\n // });\n // });\n // if (existObjectItem) {\n // return;\n // }\n // // 找到指向指定对象的选项卡\n // let tempOption = tabOptions.find(function (option) {\n // return option.type === \"object\" && option.object === item;\n // });\n // if (!tempOption) {\n // return;\n // }\n // // 选项卡名称如果重复了就不添加\n // let existTabItem = !!tabItems.find(function (tabItem) {\n // return tabItem.tab_name === tempOption.value;\n // });\n // if (existTabItem) {\n // return;\n // }\n // if (tempOption) {\n // tabItems.push({ tab_name: tempOption.value });\n // }\n // });\n // }\n // // 把应用中原来objects属性值添加到新的tab_items属性的默认值中\n // if (data.objects && data.objects.length) {\n // pushObjectsToTabItems(data.objects);\n // }\n // // 把应用中原来mobile_objects属性值添加到新的tab_items属性的默认值中\n // if (data.mobile_objects && data.mobile_objects.length) {\n // pushObjectsToTabItems(data.mobile_objects);\n // }\n // console.log(\"===tabItems==\", tabItems);\n // data.tab_items = tabItems;\n // }\n};\npayload.data = data;\ndelete payload.extensions;\nreturn payload;\n ",
50
- "data": {
51
- "query": "{data:apps(filters:[\"_id\", \"=\", \"${recordId}\"]){_id,name,code,icon_slds,visible,description,tabs,tab_items,tab_groups,objects,mobile_objects,is_creator,mobile,sort,url,is_use_ie,is_use_iframe,is_new_window,on_click,auth_name,secret,is_system,from_code_id,instance_state,created,created_by:created_by__expand{_id,name},modified,modified_by:modified_by__expand{_id,name},_display{visible,is_creator,mobile,is_use_ie,is_use_iframe,is_new_window,is_system,instance_state,created,modified}}}"
52
- }
51
+ "sendOn": ""
53
52
  },
54
- "initFetch": true,
53
+ "messages": {},
54
+ "placeholder": "-",
55
55
  "body": [
56
56
  {
57
57
  "type": "tabs",
@@ -216,15 +216,15 @@
216
216
  "name": "index",
217
217
  "label": "序号",
218
218
  "type": "static",
219
- "id": "u:c59784421c37",
220
219
  "value": "${index + 1}",
221
- "className": "w-10"
220
+ "className": "w-10",
221
+ "id": "u:c59784421c37"
222
222
  },
223
223
  {
224
224
  "name": "tab_name_label",
225
225
  "label": "选项卡",
226
- "id": "u:b95c69a1cd84",
227
226
  "type": "tpl",
227
+ "id": "u:b95c69a1cd84",
228
228
  "tpl": "${tabs_options|filter:value:equals:tab_name|pick:label}"
229
229
  },
230
230
  {
@@ -233,23 +233,14 @@
233
233
  "id": "u:e532b1949676",
234
234
  "quickEdit": {
235
235
  "type": "select",
236
+ "name": "group",
236
237
  "className": "m-0",
237
238
  "onEvent": {
238
239
  "change": {
239
240
  "actions": [
240
241
  {
241
- "actionType": "setValue",
242
- "args": {
243
- "value": "${event.data|clearTabs}"
244
- },
245
- "componentId": "apps-form"
246
- },
247
- {
248
- "actionType": "setValue",
249
- "args": {
250
- "value": "${event.data|quickEidtSaveForTab:group}"
251
- },
252
- "componentId": "apps-form"
242
+ "actionType": "custom",
243
+ "script": "const tabGroupKey = \"group\";\nconst getTabsSortFun = function (groupNames) {\n return function (m, n) {\n var tempM = !!m[tabGroupKey] ? 1 : 0;\n var tempN = !!n[tabGroupKey] ? 1 : 0;\n if (!m[tabGroupKey] || !n[tabGroupKey]) {\n // 没有配置group属性的字段排在前面\n return tempM - tempN;\n }\n // 字段所属分组不在groupNames时排在前面,其他字段按其所属分组在groupNames中的排序先后顺序排序,所属分组相同的字段排在一起。\n return groupNames.indexOf(m[tabGroupKey]) - groupNames.indexOf(n[tabGroupKey]);\n };\n}\n\nconst clearTabs = function (input) {\n return {\n tab_items: []\n }\n}\n\n// 字段列表每一列数据变量时立即同步值到表单中\nconst quickEidtSaveForTab = function (input, prop_name) {\n const currentPropValue = input.value;\n const rowValue = input.__super;\n const formValue = input.__super.__super.__super;\n const tab_name = rowValue.tab_name;\n rowValue[prop_name] = currentPropValue;\n delete rowValue.index;\n let newTabs = formValue.tab_items.map(function (item) {\n if (item.tab_name == tab_name) {\n return Object.assign({}, item, rowValue);\n }\n else {\n return item;\n }\n });\n const tabGroups = input.__super.__super.tab_groups;\n const groupNames = lodash.compact(lodash.map(tabGroups, \"group_name\"));\n if (groupNames && groupNames.length) {\n // tabs重新按分组排序\n newTabs.sort(getTabsSortFun(groupNames));\n }\n return {\n tab_items: newTabs\n }\n}\n\nconst eventData = event.data;\ndoAction({\n actionType: 'setValue',\n componentId: \"apps-form\",\n args: {\n value: clearTabs()\n }\n});\n\nconst newTabTtemsProp = quickEidtSaveForTab(eventData, \"group\");\n\nsetTimeout(function () { \n // 不加延时会显示异常\n doAction({\n actionType: 'setValue',\n componentId: \"apps-form\",\n args: {\n value: newTabTtemsProp\n }\n });\n},300);"
253
244
  }
254
245
  ]
255
246
  }
@@ -258,8 +249,12 @@
258
249
  "checkAll": false,
259
250
  "selectFirst": false,
260
251
  "searchable": true,
261
- "clearable": true
262
- }
252
+ "clearable": true,
253
+ "id": "u:8b3d6979e884",
254
+ "multiple": false,
255
+ "mode": "popOver"
256
+ },
257
+ "placeholder": "-"
263
258
  },
264
259
  {
265
260
  "name": "tab_name_desktop",
@@ -290,7 +285,6 @@
290
285
  "label": "生成选项卡",
291
286
  "id": "u:a35a2276145d",
292
287
  "tpl": "内容",
293
- "actionType": "custom",
294
288
  "onEvent": {
295
289
  "click": {
296
290
  "actions": [
@@ -305,8 +299,11 @@
305
299
  },
306
300
  {
307
301
  "type": "button",
302
+ "label": "设置选项卡",
303
+ "id": "u:853b890ab524",
308
304
  "actionType": "dialog",
309
305
  "dialog": {
306
+ "type": "dialog",
310
307
  "title": "设置选项卡",
311
308
  "body": [
312
309
  {
@@ -315,33 +312,26 @@
315
312
  "value": "${tab_items|pick:tab_name}",
316
313
  "sortable": true,
317
314
  "source": "${tabs_options}",
318
- "searchable": true
315
+ "searchable": true,
316
+ "id": "u:f2d36873abd1"
319
317
  }
320
318
  ],
321
319
  "onEvent": {
322
320
  "confirm": {
323
321
  "actions": [
324
322
  {
325
- "actionType": "setValue",
326
- "args": {
327
- "value": "${event.data|clearTabs}"
328
- },
329
- "componentId": "apps-form"
330
- },
331
- {
332
- "actionType": "setValue",
333
- "args": {
334
- "value": "${event.data|convertDataForTabs}"
335
- },
336
- "componentId": "apps-form"
323
+ "actionType": "custom",
324
+ "script": "const tabGroupKey = \"group\";\nconst getTabsSortFun = function (groupNames) {\n return function (m, n) {\n var tempM = !!m[tabGroupKey] ? 1 : 0;\n var tempN = !!n[tabGroupKey] ? 1 : 0;\n if (!m[tabGroupKey] || !n[tabGroupKey]) {\n // 没有配置group属性的字段排在前面\n return tempM - tempN;\n }\n // 字段所属分组不在groupNames时排在前面,其他字段按其所属分组在groupNames中的排序先后顺序排序,所属分组相同的字段排在一起。\n return groupNames.indexOf(m[tabGroupKey]) - groupNames.indexOf(n[tabGroupKey]);\n };\n}\n\nconst clearTabs = function (input) { \n return {\n tab_items: []\n }\n}\n\nconst convertDataForTabs = function (input) { \n let pickedTabs = input.picked_tabs || [];\n const superTabs = _.keyBy(input.__super.tab_items, 'tab_name');\n if (typeof pickedTabs === \"string\") {\n pickedTabs = pickedTabs.split(\",\");\n }\n const tabOptions = lodash.keyBy(input.__super.__super.__super.__super.__super.tabs_options, \"value\");\n const convertedTabs = pickedTabs.map(function (tab_name) {\n const superTab = superTabs[tab_name];\n if (superTab) {\n return superTab;\n }\n else {\n const tabOption = tabOptions[tab_name];\n return {\n tab_name: tab_name,\n group: tabOption.group\n }\n }\n });\n const tabGroups = input.__super.__super.__super.__super.__super.tab_groups;\n const groupNames = lodash.compact(lodash.map(tabGroups, \"group_name\"));\n // tabs重新按分组排序\n if (groupNames && groupNames.length) { \n convertedTabs.sort(getTabsSortFun(groupNames));\n }\n return {\n tab_items: convertedTabs\n }\n}\n\nconst eventData = event.data;\ndoAction({\n actionType: 'setValue',\n componentId: \"apps-form\",\n args: {\n value: clearTabs()\n }\n});\n\ndoAction({\n actionType: 'setValue',\n componentId: \"apps-form\",\n args: {\n value: convertDataForTabs(eventData)\n }\n});\n\n"
337
325
  }
338
326
  ]
339
327
  }
340
328
  },
341
- "size": "lg"
342
- },
343
- "label": "设置选项卡",
344
- "id": "u:853b890ab524"
329
+ "size": "lg",
330
+ "id": "u:9c93896a73cf",
331
+ "closeOnEsc": false,
332
+ "closeOnOutside": false,
333
+ "showCloseButton": true
334
+ }
345
335
  },
346
336
  {
347
337
  "type": "button",
@@ -354,45 +344,41 @@
354
344
  {
355
345
  "type": "input-table",
356
346
  "name": "setting_groups",
347
+ "value": "${tab_groups}",
357
348
  "addable": true,
358
349
  "draggable": true,
359
350
  "editable": true,
360
351
  "columns": [
361
352
  {
362
353
  "name": "group_name",
363
- "label": "名称"
354
+ "label": "名称",
355
+ "id": "u:383c7744b499"
364
356
  }
365
357
  ],
366
- "value": "${tab_groups}",
367
- "removable": true
358
+ "removable": true,
359
+ "id": "u:06bbf5c4dc98"
368
360
  }
369
361
  ],
370
362
  "onEvent": {
371
363
  "confirm": {
372
364
  "actions": [
373
365
  {
374
- "actionType": "setValue",
375
- "args": {
376
- "value": "${event.data|clearTabs}"
377
- },
378
- "componentId": "apps-form"
379
- },
380
- {
381
- "actionType": "setValue",
382
- "args": {
383
- "value": "${event.data|convertDataForGroups}"
384
- },
385
- "componentId": "apps-form"
366
+ "actionType": "custom",
367
+ "script": "const tabGroupKey = \"group\";\nconst getTabsSortFun = function (groupNames) {\n return function (m, n) {\n var tempM = !!m[tabGroupKey] ? 1 : 0;\n var tempN = !!n[tabGroupKey] ? 1 : 0;\n if (!m[tabGroupKey] || !n[tabGroupKey]) {\n // 没有配置group属性的字段排在前面\n return tempM - tempN;\n }\n // 字段所属分组不在groupNames时排在前面,其他字段按其所属分组在groupNames中的排序先后顺序排序,所属分组相同的字段排在一起。\n return groupNames.indexOf(m[tabGroupKey]) - groupNames.indexOf(n[tabGroupKey]);\n };\n}\n\nconst clearTabs = function (input) {\n return {\n tab_items: []\n }\n}\n\n// 把”设置分组“弹出窗口中设置的分组转为主表单groups字段值格式\n// 同时根据新的groups排序重新设置tabs属性的字段先后次序\n// 因为直接设置tabs值有bug,即新值老值会串,所以需要先执行上面的clearTabs清除原来的值\nconst convertDataForGroups = function(input) {\n const settingGroups = input.setting_groups || [];\n const convertedGroups = lodash.uniqBy(settingGroups.map(function (item) {\n return {\n group_name: item.group_name\n }\n }), \"group_name\");\n\n const groupNames = lodash.compact(lodash.map(convertedGroups, \"group_name\"));\n const tab_items = input.__super.__super.items;\n // tabs重新按分组排序\n tab_items.sort(getTabsSortFun(groupNames));\n\n return {\n tab_groups: convertedGroups,\n tab_items: tab_items\n }\n};\n\nconst eventData = event.data;\ndoAction({\n actionType: 'setValue',\n componentId: \"apps-form\",\n args: {\n value: clearTabs()\n }\n});\n\ndoAction({\n actionType: 'setValue',\n componentId: \"apps-form\",\n args: {\n value: convertDataForGroups(eventData)\n }\n});\n\n"
386
368
  }
387
369
  ]
388
370
  }
389
371
  },
390
372
  "type": "dialog",
391
- "size": "lg"
373
+ "size": "lg",
374
+ "id": "u:55db530e3f86",
375
+ "closeOnEsc": false,
376
+ "closeOnOutside": false,
377
+ "showCloseButton": true
392
378
  }
393
379
  }
394
380
  ],
395
- "id": "u:22121edc42b1",
381
+ "id": "crud_tab_items",
396
382
  "perPageAvailable": [
397
383
  10
398
384
  ],
@@ -486,41 +472,41 @@
486
472
  "className": "",
487
473
  "contentClassName": ""
488
474
  }
489
- ],
490
- "panelClassName": "m-0 -mt-3",
475
+ ]
476
+ }
477
+ ],
478
+ "panelClassName": "m-0 -mt-3",
479
+ "actions": [
480
+ {
481
+ "type": "button",
482
+ "label": "取消",
483
+ "actionType": "",
484
+ "level": "default",
485
+ "block": false,
486
+ "onClick": "SteedosUI.getRef(props.data.__super.modalName).close();",
487
+ "id": "u:f2208dc2b4cd"
488
+ },
489
+ {
490
+ "type": "button",
491
+ "label": "保存",
492
+ "actionType": "submit",
493
+ "level": "info",
494
+ "id": "u:207386fce204"
495
+ }
496
+ ],
497
+ "actionsClassName": "p-sm b-t b-light text-center",
498
+ "affixFooter": false,
499
+ "debug": false,
500
+ "onEvent": {
501
+ "inited": {
491
502
  "actions": [
492
503
  {
493
- "type": "button",
494
- "label": "取消",
495
- "actionType": "",
496
- "level": "default",
497
- "block": false,
498
- "onClick": "SteedosUI.getRef(props.data.__super.modalName).close();",
499
- "id": "u:f2208dc2b4cd"
500
- },
501
- {
502
- "type": "button",
503
- "label": "保存",
504
- "actionType": "submit",
505
- "level": "info",
506
- "id": "u:207386fce204"
507
- }
508
- ],
509
- "actionsClassName": "p-sm b-t b-light text-center",
510
- "affixFooter": false,
511
- "debug": false,
512
- "onEvent": {
513
- "inited": {
514
- "actions": [
515
- {
516
- "actionType": "custom",
517
- "script": "const data = context.props.data;\nconst superData = data.__super;\nif (!data._id) { \n return;\n}\nif (data.tab_items) {\n return;\n}\n\ndebugger;\nconst tabOptions = superData.tabs_options || [];\nconst tabItems = [];\n// 把应用中原来tabs属性值添加到新的tab_items属性的默认值中\nif (data.tabs && data.tabs.length) {\n data.tabs.forEach(function (item) {\n tabItems.push({ tab_name: item });\n });\n}\nconst pushObjectsToTabItems = function (objects) {\n objects.forEach(function (item) {\n // 已经有绑定到指定对象的选项卡就不添加\n let existObjectItem = !!tabItems.find(function (tabItem) {\n return !!tabOptions.find(function (option) {\n return tabItem.tab_name === tabItem.value && option.object === item;\n });\n });\n if (existObjectItem) {\n return;\n }\n // 找到指向指定对象的选项卡\n let tempOption = tabOptions.find(function (option) {\n return option.type === \"object\" && option.object === item;\n });\n if (!tempOption) {\n return;\n }\n // 选项卡名称如果重复了就不添加\n let existTabItem = !!tabItems.find(function (tabItem) {\n return tabItem.tab_name === tempOption.value;\n });\n if (existTabItem) {\n return;\n }\n if (tempOption) {\n tabItems.push({ tab_name: tempOption.value });\n }\n });\n}\n// 把应用中原来objects属性值添加到新的tab_items属性的默认值中\nif (data.objects && data.objects.length) {\n pushObjectsToTabItems(data.objects);\n}\n// 把应用中原来mobile_objects属性值添加到新的tab_items属性的默认值中\nif (data.mobile_objects && data.mobile_objects.length) {\n pushObjectsToTabItems(data.mobile_objects);\n}\nconsole.log(\"===tabItems==\", tabItems);\n// data.tab_items = tabItems;\n\ndoAction({\n actionType: 'setValue',\n args: {\n \"value\": { tab_items: tabItems }\n }\n});"
518
- }
519
- ]
504
+ "actionType": "custom",
505
+ "script": "const data = context.props.data;\nif (!data._id) { \n return;\n}\nif (data.tab_items) {\n return;\n}\n\nconst tabOptions = data.tabs_options || [];\nconst tabItems = [];\n// 把应用中原来tabs属性值添加到新的tab_items属性的默认值中\nif (data.tabs && data.tabs.length) {\n data.tabs.forEach(function (item) {\n tabItems.push({ tab_name: item });\n });\n}\nconst pushObjectsToTabItems = function (objects) {\n objects.forEach(function (item) {\n // 已经有绑定到指定对象的选项卡就不添加\n let existObjectItem = !!tabItems.find(function (tabItem) {\n return !!tabOptions.find(function (option) {\n return tabItem.tab_name === tabItem.value && option.object === item;\n });\n });\n if (existObjectItem) {\n return;\n }\n // 找到指向指定对象的选项卡\n let tempOption = tabOptions.find(function (option) {\n return option.type === \"object\" && option.object === item;\n });\n if (!tempOption) {\n return;\n }\n // 选项卡名称如果重复了就不添加\n let existTabItem = !!tabItems.find(function (tabItem) {\n return tabItem.tab_name === tempOption.value;\n });\n if (existTabItem) {\n return;\n }\n if (tempOption) {\n tabItems.push({ tab_name: tempOption.value });\n }\n });\n}\n// 把应用中原来objects属性值添加到新的tab_items属性的默认值中\nif (data.objects && data.objects.length) {\n pushObjectsToTabItems(data.objects);\n}\n// 把应用中原来mobile_objects属性值添加到新的tab_items属性的默认值中\nif (data.mobile_objects && data.mobile_objects.length) {\n pushObjectsToTabItems(data.mobile_objects);\n}\n\ndoAction({\n actionType: 'setValue',\n args: {\n \"value\": { tab_items: tabItems }\n }\n});"
520
506
  }
521
- }
507
+ ]
522
508
  }
523
- ]
509
+ }
524
510
  }
525
511
  ],
526
512
  "regions": [
@@ -38,7 +38,10 @@
38
38
  "source": "get:${context.rootUrl}/service/api/amis-metadata-objects/objects/generate_tabs_options",
39
39
  "headers": {
40
40
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
41
- }
41
+ },
42
+ "validations": {},
43
+ "validationErrors": {},
44
+ "required": true
42
45
  }
43
46
  ],
44
47
  "panelClassName": "m-0",