@steedos-widgets/amis-lib 1.3.20 → 1.3.21

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.esm.js CHANGED
@@ -1038,7 +1038,7 @@ var config = {
1038
1038
  * @Author: baozhoutao@steedos.com
1039
1039
  * @Date: 2022-10-28 14:52:55
1040
1040
  * @LastEditors: liaodaxue
1041
- * @LastEditTime: 2023-07-28 16:16:29
1041
+ * @LastEditTime: 2023-12-14 12:01:22
1042
1042
  * @Description:
1043
1043
  */
1044
1044
 
@@ -1055,6 +1055,7 @@ const AmisFormInputs = [
1055
1055
  'percent',
1056
1056
  'password',
1057
1057
  'url',
1058
+ "color",
1058
1059
  'email'
1059
1060
  ];
1060
1061
 
@@ -1067,7 +1068,7 @@ function getAmisStaticFieldType(type, readonly, options){
1067
1068
  }
1068
1069
  return type;
1069
1070
  }
1070
- if(_$1.includes(['text','image'], type)){
1071
+ if(_$1.includes(['text','image','color'], type)){
1071
1072
  if('text' === type && options && options.amis && options.amis.tpl){
1072
1073
  return 'static';
1073
1074
  }
@@ -1201,6 +1202,7 @@ var frontend_form_please_select$1 = "Please select";
1201
1202
  var frontend_form_confirm$1 = "Confirm";
1202
1203
  var frontend_form_delete$1 = "Delete";
1203
1204
  var frontend_form_view$1 = "view";
1205
+ var frontend_form_details$1 = "details";
1204
1206
  var frontend_delete_confirm_text$1 = "Are you sure you want to delete this item?";
1205
1207
  var frontend_delete_many_selected_required$1 = "Please select the item to be deleted";
1206
1208
  var frontend_delete_many_confirm_text$1 = "Are you sure you want to delete?";
@@ -1287,6 +1289,7 @@ var en_us = {
1287
1289
  frontend_form_confirm: frontend_form_confirm$1,
1288
1290
  frontend_form_delete: frontend_form_delete$1,
1289
1291
  frontend_form_view: frontend_form_view$1,
1292
+ frontend_form_details: frontend_form_details$1,
1290
1293
  frontend_delete_confirm_text: frontend_delete_confirm_text$1,
1291
1294
  frontend_delete_many_selected_required: frontend_delete_many_selected_required$1,
1292
1295
  frontend_delete_many_confirm_text: frontend_delete_many_confirm_text$1,
@@ -1374,6 +1377,7 @@ var frontend_form_please_select = "请选择";
1374
1377
  var frontend_form_confirm = "确认";
1375
1378
  var frontend_form_delete = "删除";
1376
1379
  var frontend_form_view = "查看";
1380
+ var frontend_form_details = "详情";
1377
1381
  var frontend_delete_confirm_text = "确定要删除此项目?";
1378
1382
  var frontend_delete_many_selected_required = "请选择要删除的项";
1379
1383
  var frontend_delete_many_confirm_text = "确定要删除吗?";
@@ -1461,6 +1465,7 @@ var zh_cn = {
1461
1465
  frontend_form_confirm: frontend_form_confirm,
1462
1466
  frontend_form_delete: frontend_form_delete,
1463
1467
  frontend_form_view: frontend_form_view,
1468
+ frontend_form_details: frontend_form_details,
1464
1469
  frontend_delete_confirm_text: frontend_delete_confirm_text,
1465
1470
  frontend_delete_many_selected_required: frontend_delete_many_selected_required,
1466
1471
  frontend_delete_many_confirm_text: frontend_delete_many_confirm_text,
@@ -2135,6 +2140,11 @@ async function getTableColumns(fields, options){
2135
2140
  options: field.type === 'html' ? {html: true} : null
2136
2141
  // toggled: true
2137
2142
  }, field.amis, {name: field.name});
2143
+
2144
+ if(field.type === 'color'){
2145
+ columnItem.type = 'color';
2146
+ columnItem.defaultColor = null;
2147
+ }
2138
2148
  }
2139
2149
  }
2140
2150
  if(columnItem){
@@ -4822,8 +4832,8 @@ const getSchema$2 = (uiSchema) => {
4822
4832
  /*
4823
4833
  * @Author: baozhoutao@steedos.com
4824
4834
  * @Date: 2022-11-07 17:00:38
4825
- * @LastEditors: baozhoutao@steedos.com
4826
- * @LastEditTime: 2023-08-24 16:44:42
4835
+ * @LastEditors: liaodaxue
4836
+ * @LastEditTime: 2023-12-13 10:09:05
4827
4837
  * @Description:
4828
4838
  */
4829
4839
 
@@ -4834,7 +4844,7 @@ const getSchema$1 = (uiSchema)=>{
4834
4844
  "body": [
4835
4845
  {
4836
4846
  "type": "button",
4837
- "label": i18next.t('frontend_form_view'),
4847
+ "label": i18next.t('frontend_form_details'),
4838
4848
  "className": "border-none",
4839
4849
  "onEvent": {
4840
4850
  "click": {
@@ -11515,6 +11525,16 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
11515
11525
  }
11516
11526
  }
11517
11527
 
11528
+ break;
11529
+ case 'color':
11530
+ convertData = {
11531
+ type: getAmisStaticFieldType('color', readonly),
11532
+ name: field.name,
11533
+ label: field.label
11534
+ };
11535
+ if(readonly){
11536
+ convertData.defaultColor = null;
11537
+ }
11518
11538
  break;
11519
11539
  case 'boolean':
11520
11540
  convertData = {
@@ -12369,7 +12389,7 @@ async function getFormBody(permissionFields, formFields, ctx){
12369
12389
  * @Author: 殷亮辉 yinlianghui@hotoa.com
12370
12390
  * @Date: 2023-11-15 09:50:22
12371
12391
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
12372
- * @LastEditTime: 2023-12-12 17:13:37
12392
+ * @LastEditTime: 2023-12-16 16:39:49
12373
12393
  */
12374
12394
 
12375
12395
  /**
@@ -12465,24 +12485,24 @@ async function getInputTableColumns(props) {
12465
12485
  function getFormPagination(props) {
12466
12486
  let onPageChangeScript = `
12467
12487
  let scope = event.context.scoped;
12468
- let paginationServiceId = event.data.paginationServiceId;
12469
- let wrapperServiceId = event.data.wrapperServiceId;
12470
- let formId = event.data.formId;
12471
- let fieldValue = event.data.changedItems;//这里不可以_.cloneDeep,因为翻页form中用的是event.data.changedItems,直接变更其值即可改变表单中的值
12488
+ let __paginationServiceId = event.data.__paginationServiceId;
12489
+ let __wrapperServiceId = event.data.__wrapperServiceId;
12490
+ let __formId = event.data.__formId;
12491
+ let fieldValue = event.data.__changedItems;//这里不可以_.cloneDeep,因为翻页form中用的是event.data.changedItems,直接变更其值即可改变表单中的值
12472
12492
  let pageChangeDirection = context.props.pageChangeDirection;
12473
- let currentPage = event.data.page;
12493
+ let currentPage = event.data.__page;
12474
12494
  let currentIndex = event.data.index;
12475
12495
 
12476
12496
  // 翻页到下一页之前需要先把当前页改动的内容保存到中间变量changedItems中
12477
- let currentFormValues = scope.getComponentById(formId).getValues();
12497
+ let currentFormValues = scope.getComponentById(__formId).getValues();
12478
12498
  fieldValue[currentIndex] = currentFormValues;
12479
12499
  // // 因为翻页form中用的是event.data.changedItems中的数据,所以不需要像下面这样doAction setValue变更中间变量changedItems值
12480
12500
  // doAction({
12481
- // "componentId": wrapperServiceId,
12501
+ // "componentId": __wrapperServiceId,
12482
12502
  // "actionType": "setValue",
12483
12503
  // "args": {
12484
12504
  // "value": {
12485
- // "changedItems": fieldValue
12505
+ // "__changedItems": fieldValue
12486
12506
  // }
12487
12507
  // }
12488
12508
  // });
@@ -12505,13 +12525,13 @@ function getFormPagination(props) {
12505
12525
  targetPage = currentPage - 1;
12506
12526
  }
12507
12527
  let targetIndex = targetPage - 1;//input-table组件行索引,从0开始的索引
12508
- // let targetFormData = changedItems[targetIndex];
12528
+ // let targetFormData = __changedItems[targetIndex];
12509
12529
  doAction({
12510
12530
  "actionType": "setValue",
12511
- "componentId": paginationServiceId,
12531
+ "componentId": __paginationServiceId,
12512
12532
  "args": {
12513
12533
  "value": {
12514
- "page": targetPage,
12534
+ "__page": targetPage,
12515
12535
  "index": targetIndex
12516
12536
  }
12517
12537
  }
@@ -12519,7 +12539,7 @@ function getFormPagination(props) {
12519
12539
  // 这里不用进一步把表单内容setValue到form中,是因为编辑表单中schemaApi监听了行索引index的变化,其值变化时会重新build整个form
12520
12540
  // doAction({
12521
12541
  // "actionType": "setValue",
12522
- // "componentId": formId,
12542
+ // "componentId": __formId,
12523
12543
  // "args": {
12524
12544
  // "value": targetFormData
12525
12545
  // },
@@ -12536,7 +12556,7 @@ function getFormPagination(props) {
12536
12556
  "icon": `fa fa-angle-left`,
12537
12557
  "level": "link",
12538
12558
  "pageChangeDirection": "prev",
12539
- "disabledOn": "${page <= 1}",
12559
+ "disabledOn": "${__page <= 1}",
12540
12560
  "size": "sm",
12541
12561
  "onEvent": {
12542
12562
  "click": {
@@ -12551,7 +12571,7 @@ function getFormPagination(props) {
12551
12571
  },
12552
12572
  {
12553
12573
  "type": "tpl",
12554
- "tpl": "${page}/${total}"
12574
+ "tpl": "${__page}/${__total}"
12555
12575
  },
12556
12576
  {
12557
12577
  "type": "button",
@@ -12559,7 +12579,7 @@ function getFormPagination(props) {
12559
12579
  "icon": `fa fa-angle-right`,
12560
12580
  "level": "link",
12561
12581
  "pageChangeDirection": "next",
12562
- "disabledOn": "${page >= total}",
12582
+ "disabledOn": "${__page >= __total}",
12563
12583
  "size": "sm",
12564
12584
  "onEvent": {
12565
12585
  "click": {
@@ -12580,10 +12600,23 @@ function getFormPagination(props) {
12580
12600
  * 传入formSchema输出带翻页容器的wrapper
12581
12601
  * @param {*} props input-table组件props
12582
12602
  * @param {*} form formSchema
12603
+ * @param {*} mode edit/readonly
12583
12604
  * @returns 带翻页容器的wrapper
12584
12605
  */
12585
- function getFormPaginationWrapper(props, form) {
12606
+ function getFormPaginationWrapper(props, form, mode) {
12586
12607
  let serviceId = `service_popup_pagination_wrapper__${props.id}`;
12608
+ // 这里加__super前缀是因为__parentForm变量(即主表单)中可能会正好有名为index的字段
12609
+ // 比如“对象字段”对象options字段是一个子表字段,但是主表(即“对象字段”对象)中正好有一个名为index的字段
12610
+ // 只读的时候不可以走中间变量__changedItems,比如工作流规则详细页面修改了子表字段”时间触发器“值后,在只读界面点击查看按钮弹出的表单中__changedItems值是修改前的值
12611
+ let formValues = mode === "readonly" ? `\${${props.name}[__super.index]}` : "${__changedItems[__super.index]}";
12612
+ // 这时用__readonlyItemsLength是因为`\${${props.name}.length}`拿不到值
12613
+ let totalValue = mode === "readonly" ? "${__readonlyItemsLength}" : "${__changedItems.length}";
12614
+ let innerForm = Object.assign({}, form, {
12615
+ "data": {
12616
+ // "&": "${__changedItems[__super.index]}"
12617
+ "&": formValues,
12618
+ }
12619
+ });
12587
12620
  let formBody = [
12588
12621
  {
12589
12622
  "type": "wrapper",
@@ -12593,14 +12626,15 @@ function getFormPaginationWrapper(props, form) {
12593
12626
  getFormPagination(props)
12594
12627
  ]
12595
12628
  },
12596
- // form
12597
- Object.assign({}, form, {
12598
- "canAccessSuperData": false,
12629
+ {
12630
+ "type": "service",
12631
+ "body": [
12632
+ innerForm
12633
+ ],
12599
12634
  "data": {
12600
- // "&": `\${${props.name}[index]}`,
12601
- "&": "${changedItems[index]}"
12635
+ "&": "${__parentForm}"
12602
12636
  }
12603
- })
12637
+ }
12604
12638
  ];
12605
12639
  let onServiceInitedScript = `
12606
12640
  // 以下脚本在inlineEditMode模式时才有必要执行(不过执行了也没有坏处,纯粹是没必要),是为了解决:
@@ -12612,13 +12646,13 @@ function getFormPaginationWrapper(props, form) {
12612
12646
  return;
12613
12647
  }
12614
12648
  let scope = event.context.scoped;
12615
- let wrapperServiceId = event.data.wrapperServiceId;
12616
- let wrapperService = scope.getComponentById(wrapperServiceId);
12649
+ let __wrapperServiceId = event.data.__wrapperServiceId;
12650
+ let wrapperService = scope.getComponentById(__wrapperServiceId);
12617
12651
  let wrapperServiceData = wrapperService.getData();
12618
12652
  let lastestFieldValue = wrapperServiceData["${props.name}"];//这里不可以用event.data["${props.name}"]因为amis input talbe有一层单独的作用域,其值会延迟一拍
12619
- //不可以直接像event.data.changedItems = originalFieldValue; 这样整个赋值,否则作用域会断
12620
- event.data.changedItems.forEach(function(n,i){
12621
- event.data.changedItems[i] = lastestFieldValue[i];
12653
+ //不可以直接像event.data.__changedItems = originalFieldValue; 这样整个赋值,否则作用域会断
12654
+ event.data.__changedItems.forEach(function(n,i){
12655
+ event.data.__changedItems[i] = lastestFieldValue[i];
12622
12656
  });
12623
12657
  `;
12624
12658
  let schema = {
@@ -12641,11 +12675,11 @@ function getFormPaginationWrapper(props, form) {
12641
12675
  },
12642
12676
  // "body": formBody,
12643
12677
  "data": {
12644
- "page": "${index + 1}",
12645
- // "total": `\${${props.name}.length}`,
12646
- "total": "${changedItems.length}",
12647
- "paginationServiceId": serviceId,
12648
- "formId": form.id
12678
+ "__page": "${index + 1}",
12679
+ // "__total": `\${${props.name}.length}`,
12680
+ "__total": totalValue,
12681
+ "__paginationServiceId": serviceId,
12682
+ "__formId": form.id
12649
12683
  },
12650
12684
  "onEvent": {
12651
12685
  "init": {
@@ -12677,13 +12711,17 @@ async function getForm(props, mode = "edit") {
12677
12711
  "mode": "normal",
12678
12712
  "body": body,
12679
12713
  "wrapWithPanel": false,
12714
+ "canAccessSuperData": false,
12680
12715
  "className": "steedos-object-form steedos-amis-form"
12681
12716
  };
12682
12717
  if (mode === "edit") {
12683
12718
  let onEditItemSubmitScript = `
12684
12719
  // let fieldValue = _.cloneDeep(event.data["${props.name}"]);
12685
- let fieldValue = event.data.changedItems;//这里不可以_.cloneDeep,因为翻页form中用的是event.data.changedItems,直接变更其值即可改变表单中的值
12686
- fieldValue[event.data.index] = JSON.parse(JSON.stringify(event.data));
12720
+ let fieldValue = event.data.__changedItems;//这里不可以_.cloneDeep,因为翻页form中用的是event.data.changedItems,直接变更其值即可改变表单中的值
12721
+
12722
+ //这里加__super.__super前缀是因为__parentForm变量(即主表单)中可能会正好有名为index的字段
12723
+ // 比如“对象字段”对象options字段是一个子表字段,但是主表(即“对象字段”对象)中正好有一个名为index的字段
12724
+ fieldValue[event.data.__super.__super.index] = JSON.parse(JSON.stringify(event.data));
12687
12725
  doAction({
12688
12726
  "componentId": "${props.id}",
12689
12727
  "actionType": "setValue",
@@ -12693,11 +12731,11 @@ async function getForm(props, mode = "edit") {
12693
12731
  });
12694
12732
  // // 因为翻页form中用的是event.data.changedItems中的数据,所以不需要像下面这样doAction setValue变更中间变量changedItems值
12695
12733
  // doAction({
12696
- // "componentId": event.data.wrapperServiceId,
12734
+ // "componentId": event.data.__wrapperServiceId,
12697
12735
  // "actionType": "setValue",
12698
12736
  // "args": {
12699
12737
  // "value": {
12700
- // "changedItems": fieldValue
12738
+ // "__changedItems": fieldValue
12701
12739
  // }
12702
12740
  // }
12703
12741
  // });
@@ -12729,10 +12767,10 @@ async function getForm(props, mode = "edit") {
12729
12767
  else if (mode === "new") {
12730
12768
  let onNewItemSubmitScript = `
12731
12769
  // let fieldValue = _.cloneDeep(event.data["${props.name}"]);
12732
- if(!event.data.changedItems){
12733
- event.data.changedItems = [];
12770
+ if(!event.data.__changedItems){
12771
+ event.data.__changedItems = [];
12734
12772
  }
12735
- let fieldValue = event.data.changedItems;
12773
+ let fieldValue = event.data.__changedItems;
12736
12774
  fieldValue.push(JSON.parse(JSON.stringify(event.data)));
12737
12775
  doAction({
12738
12776
  "componentId": "${props.id}",
@@ -12743,11 +12781,11 @@ async function getForm(props, mode = "edit") {
12743
12781
  });
12744
12782
  // // 因为翻页form中用的是event.data.changedItems中的数据,所以不需要像下面这样doAction setValue变更中间变量changedItems值
12745
12783
  // doAction({
12746
- // "componentId": event.data.wrapperServiceId,
12784
+ // "componentId": event.data.__wrapperServiceId,
12747
12785
  // "actionType": "setValue",
12748
12786
  // "args": {
12749
12787
  // "value": {
12750
- // "changedItems": fieldValue
12788
+ // "__changedItems": fieldValue
12751
12789
  // }
12752
12790
  // }
12753
12791
  // });
@@ -12777,7 +12815,7 @@ async function getForm(props, mode = "edit") {
12777
12815
  });
12778
12816
  }
12779
12817
  if (mode === "edit" || mode === "readonly") {
12780
- schema = getFormPaginationWrapper(props, schema);
12818
+ schema = getFormPaginationWrapper(props, schema, mode);
12781
12819
  }
12782
12820
  return schema;
12783
12821
  }
@@ -12816,21 +12854,21 @@ async function getButtonNew(props) {
12816
12854
  async function getButtonEdit(props, showAsInlineEditMode) {
12817
12855
  let onCancelScript = `
12818
12856
  let scope = event.context.scoped;
12819
- let wrapperServiceId = event.data.wrapperServiceId;
12820
- let wrapperService = scope.getComponentById(wrapperServiceId);
12857
+ let __wrapperServiceId = event.data.__wrapperServiceId;
12858
+ let wrapperService = scope.getComponentById(__wrapperServiceId);
12821
12859
  let wrapperServiceData = wrapperService.getData();
12822
12860
  let originalFieldValue = wrapperServiceData["${props.name}"];//这里不可以用event.data["${props.name}"]因为amis input talbe有一层单独的作用域,其值会延迟一拍
12823
- //不可以直接像event.data.changedItems = originalFieldValue; 这样整个赋值,否则作用域会断,造成无法还原
12824
- event.data.changedItems.forEach(function(n,i){
12825
- event.data.changedItems[i] = originalFieldValue[i];
12861
+ //不可以直接像event.data.__changedItems = originalFieldValue; 这样整个赋值,否则作用域会断,造成无法还原
12862
+ event.data.__changedItems.forEach(function(n,i){
12863
+ event.data.__changedItems[i] = originalFieldValue[i];
12826
12864
  });
12827
12865
  // 因为翻页form中用的是event.data.changedItems中的数据,所以像下面这样doAction setValue无法实现还原
12828
12866
  // doAction({
12829
- // "componentId": wrapperServiceId,
12867
+ // "componentId": __wrapperServiceId,
12830
12868
  // "actionType": "setValue",
12831
12869
  // "args": {
12832
12870
  // "value": {
12833
- // "changedItems": originalFieldValue
12871
+ // "__changedItems": originalFieldValue
12834
12872
  // }
12835
12873
  // }
12836
12874
  // });
@@ -12861,13 +12899,15 @@ async function getButtonEdit(props, showAsInlineEditMode) {
12861
12899
  // 这里必须加data数据映射,否则翻页功能中取changedItems值时会乱,比如翻页编辑后会把上一页中没改过的字段值带过去
12862
12900
  // 额外把华炎魔方主表记录ObjectForm中的字段值从record变量中映射到子表form中,因为子表lookup字段filtersFunction中可能依赖了主表记录中的字段值,比如“工作流规则”对象“时间触发器”字段中的“日期字段”字段
12863
12901
  // 额外把global、uiSchema也映射过去,有可能要用,后续需要用到其他变更可以这里加映射
12864
- "&": "${record || {}}",
12902
+ // "&": "${record || {}}",
12903
+ // 换成从__super来映射上级表单数据是因为对象列表视图界面中每行下拉菜单中的编辑按钮弹出的表单中的子表所在作用域中没有record变量
12904
+ // 映射到中间变量__parentForm而不是直接用&展开映射是为了避免表单中字段名与作用域中变量重名
12905
+ "__parentForm": "${__super.__super || {}}",
12865
12906
  "global": "${global}",
12866
12907
  "uiSchema": "${uiSchema}",
12867
- "grid": "${grid}",
12868
12908
  "index": "${index}",
12869
- "changedItems": "${changedItems}",
12870
- "wrapperServiceId": "${wrapperServiceId}"
12909
+ "__changedItems": "${__changedItems}",
12910
+ "__wrapperServiceId": "${__wrapperServiceId}"
12871
12911
  },
12872
12912
  "onEvent": {
12873
12913
  "cancel": {
@@ -12915,11 +12955,14 @@ async function getButtonView(props) {
12915
12955
  // 这里必须加data数据映射,否则翻页功能中取changedItems值时会乱,比如翻页编辑后会把上一页中没改过的字段值带过去
12916
12956
  // 额外把华炎魔方主表记录ObjectForm中的字段值从formData变量中映射到子表form中,因为子表lookup字段filtersFunction中可能依赖了主表记录中的字段值,比如“工作流规则”对象“时间触发器”字段中的“日期字段”字段
12917
12957
  // global、uiSchema等常用变量本来就在formData变量已经存在了,无需另外映射
12918
- "&": "${formData || {}}",
12919
- "grid": "${grid}",
12958
+ // "&": "${formData || {}}",
12959
+ // 换成从__super来映射上级表单数据是因为对象列表视图界面中每行下拉菜单中的编辑按钮弹出的表单中的子表所在作用域中没有formData变量
12960
+ // 映射到中间变量__parentForm而不是直接用&展开映射是为了避免表单中字段名与作用域中变量重名
12961
+ "__parentForm": "${__super.__super || {}}",
12920
12962
  "index": "${index}",
12921
- "changedItems": "${changedItems}",
12922
- "wrapperServiceId": "${wrapperServiceId}"
12963
+ "__changedItems": "${__changedItems}",
12964
+ "__wrapperServiceId": "${__wrapperServiceId}",
12965
+ "__readonlyItemsLength": `\${${props.name}.length}`
12923
12966
  }
12924
12967
  }
12925
12968
  }
@@ -12932,10 +12975,10 @@ async function getButtonView(props) {
12932
12975
  function getButtonDelete(props) {
12933
12976
  let onDeleteItemScript = `
12934
12977
  // let fieldValue = _.cloneDeep(event.data["${props.name}"]);
12935
- if(!event.data.changedItems){
12936
- event.data.changedItems = [];
12978
+ if(!event.data.__changedItems){
12979
+ event.data.__changedItems = [];
12937
12980
  }
12938
- let fieldValue = event.data.changedItems;
12981
+ let fieldValue = event.data.__changedItems;
12939
12982
  // fieldValue.push(JSON.parse(JSON.stringify(event.data)));
12940
12983
  fieldValue.splice(event.data.index, 1)
12941
12984
  doAction({
@@ -12947,11 +12990,11 @@ function getButtonDelete(props) {
12947
12990
  });
12948
12991
  // // 因为翻页form中用的是event.data.changedItems中的数据,所以不需要像下面这样doAction setValue变更中间变量changedItems值
12949
12992
  // doAction({
12950
- // "componentId": event.data.wrapperServiceId,
12993
+ // "componentId": event.data.__wrapperServiceId,
12951
12994
  // "actionType": "setValue",
12952
12995
  // "args": {
12953
12996
  // "value": {
12954
- // "changedItems": fieldValue
12997
+ // "__changedItems": fieldValue
12955
12998
  // }
12956
12999
  // }
12957
13000
  // });
@@ -13032,7 +13075,7 @@ const getAmisInputTableSchema = async (props) => {
13032
13075
  "id": props.id,
13033
13076
  "columns": await getInputTableColumns(props),
13034
13077
  // "needConfirm": false, //不可以配置为false,否则,单元格都是可编辑状态,且很多static类型无法正常显示,比如static-mapping
13035
- "strictMode": true,
13078
+ "strictMode": props.strictMode,
13036
13079
  "showTableAddBtn": false,
13037
13080
  "showFooterAddBtn": false,
13038
13081
  "className": props.tableClassName
@@ -13050,7 +13093,31 @@ const getAmisInputTableSchema = async (props) => {
13050
13093
  }
13051
13094
  let dataProviderInited = `
13052
13095
  // 单独维护一份中间变量changedItems,因为原变量在input-table组件有单独的作用域,翻页功能中无法维护此作用域中的行记录值
13053
- setData({ changedItems: _.cloneDeep(data["${props.name}"]) || []});
13096
+ setData({ __changedItems: _.cloneDeep(data["${props.name}"]) || []});
13097
+ `;
13098
+ let onInitScript = `
13099
+ // 上面dataProviderInited中setData有时不生效,没有成功给service组件设置__changedItems变量值
13100
+ // 比如设计字段布局界面中的设置分组功能就因为__changedItems变量值不存在而报错,应该是因为把steedos-input-table组件单独放到弹出窗口中会有这个问题
13101
+ // 所以额外在service init事件中手动设置一次__changedItems值
13102
+ let __wrapperServiceId = event.data.__wrapperServiceId;
13103
+ let fieldValue = _.cloneDeep(event.data["${props.name}"]) || [];
13104
+ doAction({
13105
+ "componentId": __wrapperServiceId,
13106
+ "actionType": "setValue",
13107
+ "args": {
13108
+ "value": {
13109
+ "__changedItems": fieldValue
13110
+ }
13111
+ }
13112
+ });
13113
+ // 下面的doAction好像不是必须的
13114
+ // doAction({
13115
+ // "componentId": "${props.id}",
13116
+ // "actionType": "setValue",
13117
+ // "args": {
13118
+ // "value": fieldValue
13119
+ // }
13120
+ // });
13054
13121
  `;
13055
13122
  let schema = {
13056
13123
  "type": "service",
@@ -13060,10 +13127,20 @@ const getAmisInputTableSchema = async (props) => {
13060
13127
  "className": props.className,
13061
13128
  "id": serviceId,
13062
13129
  "data": {
13063
- "wrapperServiceId": serviceId
13130
+ "__wrapperServiceId": serviceId
13064
13131
  },
13065
13132
  "dataProvider": {
13066
13133
  "inited": dataProviderInited
13134
+ },
13135
+ "onEvent": {
13136
+ "init": {
13137
+ "actions": [
13138
+ {
13139
+ "actionType": "custom",
13140
+ "script": onInitScript
13141
+ }
13142
+ ]
13143
+ }
13067
13144
  }
13068
13145
  };
13069
13146
  let footerToolbar = clone(props.footerToolbar || []); //这里不clone的话,会造成死循环,应该是因为props属性变更会让组件重新渲染
@@ -13078,9 +13155,20 @@ const getAmisInputTableSchema = async (props) => {
13078
13155
  "body": footerToolbar
13079
13156
  });
13080
13157
  }
13081
- if (props.amis) {
13082
- delete props.amis.id;
13083
- Object.assign(schema.body[0], props.amis);
13158
+ let amis = props["input-table"] || props.amis;//额外支持"input-table"代替amis属性,是因为在字段yml文件中用amis作为key不好理解
13159
+ if (amis) {
13160
+ // 支持配置amis属性重写或添加最终生成的input-table中任何属性。
13161
+ delete amis.id;//如果steedos-input-table组件配置了amis.id属性,会造成新建编辑行功能不生效
13162
+ Object.assign(schema.body[0], amis);
13163
+ }
13164
+ const isAnyFieldHasDependOn = (props.fields || []).find(function (item) {
13165
+ return item.depend_on;
13166
+ });
13167
+ if(isAnyFieldHasDependOn){
13168
+ // 有任意一个子字段有depend_on属性时,强制设置禁用静态模式
13169
+ Object.assign(schema.body[0], {
13170
+ strictMode: false
13171
+ });
13084
13172
  }
13085
13173
  // console.log("===schema===", schema);
13086
13174
  return schema;