@steedos-widgets/amis-lib 3.6.2-beta.3 → 3.6.2-beta.4

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.
package/dist/index.umd.js CHANGED
@@ -472,8 +472,8 @@ var toolbars=[];if(formFactor==='SMALL'){if(toolbarCount){toolbars.push(toolbarC
472
472
  if(formFactor==='SMALL'){// return [
473
473
  // "load-more",
474
474
  // ]
475
- if(options.displayAs==='split'){return["switch-per-page",{"type":"pagination","maxButtons":5,"showPageInput":false}];}else{return[// "statistics",
476
- {"type":"pagination","maxButtons":5,"showPageInput":true,"layout":"total,pager,go"}];}}else{if(options&&options.isRelated){return[{"type":"pagination","maxButtons":10,"showPageInput":false}];}else{var no_pagination=mainObject.paging&&mainObject.paging.enabled===false;var is_lookup=options.isLookup;var commonConfig=[{"type":"pagination","maxButtons":10,"showPageInput":false}];if(no_pagination&&is_lookup){return commonConfig;}else{return["switch-per-page"].concat(commonConfig);}}}}function getObjectFilter(_x100,_x101,_x102){return _getObjectFilter.apply(this,arguments);}function _getObjectFilter(){_getObjectFilter=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee79(objectSchema,fields,options){var fieldsFilterBarSchema,onSubmitSuccScript,onChangeScript;return _regeneratorRuntime().wrap(function _callee79$(_context79){while(1){switch(_context79.prev=_context79.next){case 0:_context79.next=2;return getObjectListHeaderFieldsFilterBar(objectSchema,null,options);case 2:fieldsFilterBarSchema=_context79.sent;onSubmitSuccScript="\n let isLookup = event.data.isLookup;\n if(isLookup){\n return;\n }\n // \u5217\u8868\u641C\u7D22\u680F\u5B57\u6BB5\u503C\u53D8\u66F4\u540E\u7ACB\u523B\u89E6\u53D1\u63D0\u4EA4\u8868\u5355\u6267\u884Ccrud\u641C\u7D22\uFF0C\u6240\u4EE5\u8FD9\u91CC\u9700\u8981\u989D\u5916\u91CD\u7B97crud\u9AD8\u5EA6\u53CA\u7B5B\u9009\u6309\u94AE\u7EA2\u8272\u661F\u53F7\u56FE\u6807\u663E\u793A\u9690\u85CF\n //\u89E6\u53D1amis crud \u9AD8\u5EA6\u91CD\u7B97\n doAction({\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": \"@height.changed.".concat(objectSchema.name,"\"\n },\n \"data\": {\n \"timeOut\": 1000\n }\n });\n resizeWindow();\n const scope = event.context.scoped;\n // let filterFormValues = event.data;\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n // \u4F7F\u7528event.data\u7684\u8BDD\uFF0C\u5E76\u4E0D\u80FD\u62FF\u5230\u672C\u5730\u5B58\u50A8\u4E2D\u7684\u8FC7\u6EE4\u6761\u4EF6\uFF0C\u6240\u4EE5\u9700\u8981\u4ECEfilterFormService\u4E2D\u53D6\u3002\n let filterFormValues = filterFormService.getData()\n let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n crudService && crudService.setData({isFieldsFilterEmpty});\n ");onChangeScript="\n let isLookup = event.data.isLookup;\n let __lookupField = event.data.__lookupField;\n const scope = event.context.scoped;\n // let filterFormValues = event.data;\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n // \u4F7F\u7528event.data\u7684\u8BDD\uFF0C\u5E76\u4E0D\u80FD\u62FF\u5230\u672C\u5730\u5B58\u50A8\u4E2D\u7684\u8FC7\u6EE4\u6761\u4EF6\uFF0C\u6240\u4EE5\u9700\u8981\u4ECEfilterFormService\u4E2D\u53D6\u3002\n let filterFormValues = filterFormService.getData();\n filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //\u53EA\u53D6\u5F53\u5C42\u6570\u636E\u57DF\u4E2D\u6570\u636E\uFF0C\u53BB\u9664__super\u5C42\u6570\u636E\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});;\n // let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n // crudService && crudService.setData({__changedFilterFormValues: changedFilterFormValues});\n // \u8FD9\u91CC\u4E0D\u7528crudService\u800C\u7528crud\u662F\u56E0\u4E3Alookup\u5B57\u6BB5\u5F39\u51FA\u7684\u5217\u8868\u4E2D\u7684crudService\u4E2D\u7684\u53D8\u91CF\u65E0\u6CD5\u4F20\u5165crud\u7684\u53D1\u9001\u9002\u914D\u5668\u4E2D\n // crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});\n let __changedFilterFormValuesKey = \"__changedFilterFormValues\";\n if(isLookup && __lookupField){\n let lookupTag = \"__lookup__\" + __lookupField.name + \"__\" + __lookupField.reference_to;\n if(__lookupField.reference_to_field){\n lookupTag += \"__\" + __lookupField.reference_to_field;\n }\n __changedFilterFormValuesKey += lookupTag;\n }\n if(crud){\n let crudData = crud.getData();\n crudData[__changedFilterFormValuesKey] = changedFilterFormValues;\n crud.setData(crudData);\n }\n ";return _context79.abrupt("return",{"title":"","submitText":"","className":"","debug":false,"mode":"normal","wrapWithPanel":false,"body":[fieldsFilterBarSchema],"onEvent":{"submitSucc":{"actions":[{"actionType":"custom","script":onSubmitSuccScript}]},"change":{"actions":[{"actionType":"custom","script":onChangeScript}]}}});case 6:case"end":return _context79.stop();}}},_callee79);}));return _getObjectFilter.apply(this,arguments);}function getBulkActions(objectSchema){return[{"type":"button","level":"danger","label":"批量删除","actionType":"ajax","confirmText":i18next__default["default"].t('frontend_delete_many_confirm_text'),"className":"hidden","id":"batchDelete","api":getBatchDelete(objectSchema.name),"feedback":{"title":"删除警告","visibleOn":"${deleteErrorMessage}","body":[{"type":"each","name":"deleteErrorMessage","items":{"type":"alert","body":"${item}","level":"danger","className":"mb-3"}}],"actions":[{"type":"button","actionType":"close","label":"关闭"}]}}// {
475
+ if(options.displayAs==='split'){return[{"type":"switch-per-page","visibleOn":"${count >= 20}"},{"type":"pagination","maxButtons":5,"showPageInput":false}];}else{return[// "statistics",
476
+ {"type":"pagination","maxButtons":5,"showPageInput":true,"layout":"total,pager,go"}];}}else{if(options&&options.isRelated){return[{"type":"pagination","maxButtons":10,"showPageInput":false}];}else{var no_pagination=mainObject.paging&&mainObject.paging.enabled===false;var is_lookup=options.isLookup;var commonConfig=[{"type":"pagination","maxButtons":10,"showPageInput":false}];if(no_pagination&&is_lookup){return commonConfig;}else{return[{"type":"switch-per-page","visibleOn":"${count >= 20}"}].concat(commonConfig);}}}}function getObjectFilter(_x100,_x101,_x102){return _getObjectFilter.apply(this,arguments);}function _getObjectFilter(){_getObjectFilter=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee79(objectSchema,fields,options){var fieldsFilterBarSchema,onSubmitSuccScript,onChangeScript;return _regeneratorRuntime().wrap(function _callee79$(_context79){while(1){switch(_context79.prev=_context79.next){case 0:_context79.next=2;return getObjectListHeaderFieldsFilterBar(objectSchema,null,options);case 2:fieldsFilterBarSchema=_context79.sent;onSubmitSuccScript="\n let isLookup = event.data.isLookup;\n if(isLookup){\n return;\n }\n // \u5217\u8868\u641C\u7D22\u680F\u5B57\u6BB5\u503C\u53D8\u66F4\u540E\u7ACB\u523B\u89E6\u53D1\u63D0\u4EA4\u8868\u5355\u6267\u884Ccrud\u641C\u7D22\uFF0C\u6240\u4EE5\u8FD9\u91CC\u9700\u8981\u989D\u5916\u91CD\u7B97crud\u9AD8\u5EA6\u53CA\u7B5B\u9009\u6309\u94AE\u7EA2\u8272\u661F\u53F7\u56FE\u6807\u663E\u793A\u9690\u85CF\n //\u89E6\u53D1amis crud \u9AD8\u5EA6\u91CD\u7B97\n doAction({\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": \"@height.changed.".concat(objectSchema.name,"\"\n },\n \"data\": {\n \"timeOut\": 1000\n }\n });\n resizeWindow();\n const scope = event.context.scoped;\n // let filterFormValues = event.data;\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n // \u4F7F\u7528event.data\u7684\u8BDD\uFF0C\u5E76\u4E0D\u80FD\u62FF\u5230\u672C\u5730\u5B58\u50A8\u4E2D\u7684\u8FC7\u6EE4\u6761\u4EF6\uFF0C\u6240\u4EE5\u9700\u8981\u4ECEfilterFormService\u4E2D\u53D6\u3002\n let filterFormValues = filterFormService.getData()\n let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n crudService && crudService.setData({isFieldsFilterEmpty});\n ");onChangeScript="\n let isLookup = event.data.isLookup;\n let __lookupField = event.data.__lookupField;\n const scope = event.context.scoped;\n // let filterFormValues = event.data;\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n // \u4F7F\u7528event.data\u7684\u8BDD\uFF0C\u5E76\u4E0D\u80FD\u62FF\u5230\u672C\u5730\u5B58\u50A8\u4E2D\u7684\u8FC7\u6EE4\u6761\u4EF6\uFF0C\u6240\u4EE5\u9700\u8981\u4ECEfilterFormService\u4E2D\u53D6\u3002\n let filterFormValues = filterFormService.getData();\n filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //\u53EA\u53D6\u5F53\u5C42\u6570\u636E\u57DF\u4E2D\u6570\u636E\uFF0C\u53BB\u9664__super\u5C42\u6570\u636E\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});;\n // let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n // crudService && crudService.setData({__changedFilterFormValues: changedFilterFormValues});\n // \u8FD9\u91CC\u4E0D\u7528crudService\u800C\u7528crud\u662F\u56E0\u4E3Alookup\u5B57\u6BB5\u5F39\u51FA\u7684\u5217\u8868\u4E2D\u7684crudService\u4E2D\u7684\u53D8\u91CF\u65E0\u6CD5\u4F20\u5165crud\u7684\u53D1\u9001\u9002\u914D\u5668\u4E2D\n // crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});\n let __changedFilterFormValuesKey = \"__changedFilterFormValues\";\n if(isLookup && __lookupField){\n let lookupTag = \"__lookup__\" + __lookupField.name + \"__\" + __lookupField.reference_to;\n if(__lookupField.reference_to_field){\n lookupTag += \"__\" + __lookupField.reference_to_field;\n }\n __changedFilterFormValuesKey += lookupTag;\n }\n if(crud){\n let crudData = crud.getData();\n crudData[__changedFilterFormValuesKey] = changedFilterFormValues;\n crud.setData(crudData);\n }\n ";return _context79.abrupt("return",{"title":"","submitText":"","className":"","debug":false,"mode":"normal","wrapWithPanel":false,"body":[fieldsFilterBarSchema],"onEvent":{"submitSucc":{"actions":[{"actionType":"custom","script":onSubmitSuccScript}]},"change":{"actions":[{"actionType":"custom","script":onChangeScript}]}}});case 6:case"end":return _context79.stop();}}},_callee79);}));return _getObjectFilter.apply(this,arguments);}function getBulkActions(objectSchema){return[{"type":"button","level":"danger","label":"批量删除","actionType":"ajax","confirmText":i18next__default["default"].t('frontend_delete_many_confirm_text'),"className":"hidden","id":"batchDelete","api":getBatchDelete(objectSchema.name),"feedback":{"title":"删除警告","visibleOn":"${deleteErrorMessage}","body":[{"type":"each","name":"deleteErrorMessage","items":{"type":"alert","body":"${item}","level":"danger","className":"mb-3"}}],"actions":[{"type":"button","actionType":"close","label":"关闭"}]}}// {
477
477
  // "label": "批量修改",
478
478
  // "actionType": "dialog",
479
479
  // "dialog": {
@@ -861,7 +861,7 @@ sectionFieldsVisibleOn=___namespace.map(___namespace.compact(___namespace.map(fi
861
861
  * @Author: 殷亮辉 yinlianghui@hotoa.com
862
862
  * @Date: 2023-11-15 09:50:22
863
863
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
864
- * @LastEditTime: 2024-01-12 14:51:00
864
+ * @LastEditTime: 2024-01-14 21:08:32
865
865
  */ /**
866
866
  * @param {*} props
867
867
  * @param {*} mode edit/new/readonly
@@ -1006,12 +1006,13 @@ dialogButtons=[{"type":"button","label":"新增","tooltip":"保存并新增一
1006
1006
  // "__parentForm": "${__super.__super || {}}",
1007
1007
  // "__parentForm": mode == "new" ? "$$" : "${__super.__super || {}}",
1008
1008
  "__parentForm":mode=="new"?"$$":parentFormData,"_master":"${_master}","global":"${global}","uiSchema":"${uiSchema}","index":"${index}",//amis组件自带行索引,在节点嵌套情况下,当前节点如果是children属性下的子节点时,这里的index是当前节点在children中的索引,而不是外层父节点的index
1009
- "parent":"${parent}",//amis组件自带父节点数据域数据,即节点嵌套情况下,当前节点为某个节点(比如A节点)的children属性下的子节点时,当前节点的父节点(即A节点)的数据域数据
1009
+ "parent":"${__super.parent}",//amis组件自带父节点数据域数据,即节点嵌套情况下,当前节点为某个节点(比如A节点)的children属性下的子节点时,当前节点的父节点(即A节点)的数据域数据
1010
1010
  // "__tableItems": `\${${props.name}}`
1011
1011
  // 为了解决"弹出的dialog窗口中子表组件会影响页面布局界面中父作用域字段值",比如设计字段布局微页面中的设置分组功能,弹出的就是子表dialog
1012
1012
  // 所以这里使用json|toJson转一次,断掉event.data.__tableItems与上层任用域中props.name的联系
1013
1013
  // "__tableItems": `\${${props.name}|json|toJson}`
1014
- "__tableItems":"${(".concat(props.name," || [])|json|toJson}")};_context119.t5=dialogButtons;_context119.t6={"confirm":{"actions":[{"actionType":"validate","componentId":formId},{"preventDefault":true,"expression":"${event.data.validateResult.error}"//触发表单校验结果会存入validateResult,amis 3.2不支持,高版本比如 3.5.3支持
1014
+ // 这里加__super.__super是因为要让映射到准确的作用域层,如果不加,在节点嵌套情况下,当前节点正好是带children属性的节点的话,这里弹出的dialog映射到的会是children数组
1015
+ "__tableItems":"${((__super.parent ? __super.__super.".concat(props.name," : __super.").concat(props.name,") || [])|json|toJson}")};_context119.t5=dialogButtons;_context119.t6={"confirm":{"actions":[{"actionType":"validate","componentId":formId},{"preventDefault":true,"expression":"${event.data.validateResult.error}"//触发表单校验结果会存入validateResult,amis 3.2不支持,高版本比如 3.5.3支持
1015
1016
  }]}};_context119.t7={"type":"dialog","id":_context119.t0,"title":_context119.t1,"body":_context119.t3,"size":"lg","showCloseButton":true,"showErrorMsg":true,"showLoading":true,"className":"app-popover","closeOnEsc":false,"data":_context119.t4,"actions":_context119.t5,"onEvent":_context119.t6};actionShowEditDialog={"actionType":"dialog","dialog":_context119.t7};if(props.dialog){Object.assign(actionShowEditDialog.dialog,props.dialog);}if(mode=="new"){// let onNewLineScript = `
1016
1017
  // let newItem = {};
1017
1018
  // if(event.data["${props.name}"]){
@@ -1054,11 +1055,12 @@ actions=[actionShowEditDialog];}else if(mode=="edit"){actions=[actionShowEditDia
1054
1055
  // 换成从__super来映射上级表单数据是因为对象列表视图界面中每行下拉菜单中的编辑按钮弹出的表单中的子表所在作用域中没有record变量
1055
1056
  // 映射到中间变量__parentForm而不是直接用&展开映射是为了避免表单中字段名与作用域中变量重名
1056
1057
  // "__parentForm": "${__super.__super || {}}",
1057
- "__parentForm":parentFormData,"global":"${global}","uiSchema":"${uiSchema}","index":"${index}",// "__tableItems": `\${${props.name}}`
1058
+ "__parentForm":parentFormData,"_master":"${_master}","global":"${global}","uiSchema":"${uiSchema}","index":"${index}","parent":"${__super.parent}",//amis组件自带父节点数据域数据,即节点嵌套情况下,当前节点为某个节点(比如A节点)的children属性下的子节点时,当前节点的父节点(即A节点)的数据域数据
1059
+ // "__tableItems": `\${${props.name}}`
1058
1060
  // 为了解决"弹出的dialog窗口中子表组件会影响页面布局界面中父作用域字段值",比如设计字段布局微页面中的设置分组功能,弹出的就是子表dialog
1059
1061
  // 所以这里使用json|toJson转一次,断掉event.data.__tableItems与上层任用域中props.name的联系
1060
1062
  // "__tableItems": `\${${props.name}|json|toJson}`
1061
- "__tableItems":"${(".concat(props.name," || [])|json|toJson}")};_context119.t13={"type":"dialog","title":_context119.t8,"body":_context119.t10,"size":"lg","showCloseButton":true,"showErrorMsg":true,"showLoading":true,"className":"app-popover","closeOnEsc":false,"actions":_context119.t11,"data":_context119.t12};_context119.t14={"actionType":"dialog","dialog":_context119.t13};actions=[_context119.t14];_context119.next=42;break;case 41:if(mode=="delete"){tableServiceId=getComponentId("table_service",props.id);onDeleteItemScript="\n // let fieldValue = event.data[\"".concat(props.name,"\"];\n let scope = event.context.scoped;\n let __wrapperServiceId = \"").concat(tableServiceId,"\";\n let wrapperService = scope.getComponentById(__wrapperServiceId);\n let wrapperServiceData = wrapperService.getData();\n // \u8FD9\u91CC\u4E0D\u53EF\u4EE5\u7528event.data[\"").concat(props.name,"\"]\u56E0\u4E3Aamis input talbe\u6709\u4E00\u5C42\u5355\u72EC\u7684\u4F5C\u7528\u57DF\uFF0C\u5176\u503C\u4F1A\u5EF6\u8FDF\u4E00\u62CD\n // \u8FD9\u91CC_.clone\u662F\u56E0\u4E3A\u5B57\u6BB5\u8BBE\u8BA1\u5E03\u5C40\u8BBE\u7F6E\u5206\u7EC4\u8FD9\u79CD\u5F39\u51FA\u7A97\u53E3\u4E2D\u7684\u5B50\u8868\u7EC4\u4EF6\uFF0C\u76F4\u63A5\u5220\u9664\u540E\uFF0C\u70B9\u53D6\u6D88\u65E0\u6CD5\u8FD8\u539F\n let lastestFieldValue = _.clone(wrapperServiceData[\"").concat(props.name,"\"]);\n var currentIndex = event.data.index;\n var parent = event.data.__super.parent;\n var __parentIndex = parent && _.findIndex(lastestFieldValue, {_id: parent._id});\n if(parent){\n lastestFieldValue[__parentIndex].children.splice(currentIndex, 1);\n }\n else{\n lastestFieldValue.splice(currentIndex, 1);\n }\n doAction({\n \"componentId\": \"").concat(props.id,"\",\n \"actionType\": \"setValue\",\n \"args\": {\n \"value\": lastestFieldValue\n }\n });\n ");actions=[// {
1063
+ "__tableItems":"${((__super.parent ? __super.__super.".concat(props.name," : __super.").concat(props.name,") || [])|json|toJson}")};_context119.t13={"type":"dialog","title":_context119.t8,"body":_context119.t10,"size":"lg","showCloseButton":true,"showErrorMsg":true,"showLoading":true,"className":"app-popover","closeOnEsc":false,"actions":_context119.t11,"data":_context119.t12};_context119.t14={"actionType":"dialog","dialog":_context119.t13};actions=[_context119.t14];_context119.next=42;break;case 41:if(mode=="delete"){tableServiceId=getComponentId("table_service",props.id);onDeleteItemScript="\n // let fieldValue = event.data[\"".concat(props.name,"\"];\n let scope = event.context.scoped;\n let __wrapperServiceId = \"").concat(tableServiceId,"\";\n let wrapperService = scope.getComponentById(__wrapperServiceId);\n let wrapperServiceData = wrapperService.getData();\n // \u8FD9\u91CC\u4E0D\u53EF\u4EE5\u7528event.data[\"").concat(props.name,"\"]\u56E0\u4E3Aamis input talbe\u6709\u4E00\u5C42\u5355\u72EC\u7684\u4F5C\u7528\u57DF\uFF0C\u5176\u503C\u4F1A\u5EF6\u8FDF\u4E00\u62CD\n // \u8FD9\u91CC_.clone\u662F\u56E0\u4E3A\u5B57\u6BB5\u8BBE\u8BA1\u5E03\u5C40\u8BBE\u7F6E\u5206\u7EC4\u8FD9\u79CD\u5F39\u51FA\u7A97\u53E3\u4E2D\u7684\u5B50\u8868\u7EC4\u4EF6\uFF0C\u76F4\u63A5\u5220\u9664\u540E\uFF0C\u70B9\u53D6\u6D88\u65E0\u6CD5\u8FD8\u539F\n let lastestFieldValue = _.clone(wrapperServiceData[\"").concat(props.name,"\"]);\n var currentIndex = event.data.index;\n var parent = event.data.__super.parent;\n var __parentIndex = parent && _.findIndex(lastestFieldValue, {_id: parent._id});\n if(parent){\n lastestFieldValue[__parentIndex].children.splice(currentIndex, 1);\n }\n else{\n lastestFieldValue.splice(currentIndex, 1);\n }\n doAction({\n \"componentId\": \"").concat(props.id,"\",\n \"actionType\": \"setValue\",\n \"args\": {\n \"value\": lastestFieldValue\n }\n });\n ");actions=[// {
1062
1064
  // "actionType": "deleteItem",
1063
1065
  // "args": {
1064
1066
  // "index": "${index+','}" //这里不加逗号后续会报错,语法是逗号分隔可以删除多行