@steedos-widgets/amis-object 1.3.19 → 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.
@@ -4207,7 +4207,7 @@ var config = {
4207
4207
  * @Author: baozhoutao@steedos.com
4208
4208
  * @Date: 2022-10-28 14:52:55
4209
4209
  * @LastEditors: liaodaxue
4210
- * @LastEditTime: 2023-07-28 16:16:29
4210
+ * @LastEditTime: 2023-12-14 12:01:22
4211
4211
  * @Description:
4212
4212
  */
4213
4213
 
@@ -4224,6 +4224,7 @@ const AmisFormInputs$1 = [
4224
4224
  'percent',
4225
4225
  'password',
4226
4226
  'url',
4227
+ "color",
4227
4228
  'email'
4228
4229
  ];
4229
4230
 
@@ -4236,7 +4237,7 @@ function getAmisStaticFieldType$1(type, readonly, options){
4236
4237
  }
4237
4238
  return type;
4238
4239
  }
4239
- if(_$1__namespace.includes(['text','image'], type)){
4240
+ if(_$1__namespace.includes(['text','image','color'], type)){
4240
4241
  if('text' === type && options && options.amis && options.amis.tpl){
4241
4242
  return 'static';
4242
4243
  }
@@ -4370,6 +4371,7 @@ var frontend_form_please_select$1 = "Please select";
4370
4371
  var frontend_form_confirm$1 = "Confirm";
4371
4372
  var frontend_form_delete$1 = "Delete";
4372
4373
  var frontend_form_view$1 = "view";
4374
+ var frontend_form_details$1 = "details";
4373
4375
  var frontend_delete_confirm_text$1 = "Are you sure you want to delete this item?";
4374
4376
  var frontend_delete_many_selected_required$1 = "Please select the item to be deleted";
4375
4377
  var frontend_delete_many_confirm_text$1 = "Are you sure you want to delete?";
@@ -4456,6 +4458,7 @@ var en_us = {
4456
4458
  frontend_form_confirm: frontend_form_confirm$1,
4457
4459
  frontend_form_delete: frontend_form_delete$1,
4458
4460
  frontend_form_view: frontend_form_view$1,
4461
+ frontend_form_details: frontend_form_details$1,
4459
4462
  frontend_delete_confirm_text: frontend_delete_confirm_text$1,
4460
4463
  frontend_delete_many_selected_required: frontend_delete_many_selected_required$1,
4461
4464
  frontend_delete_many_confirm_text: frontend_delete_many_confirm_text$1,
@@ -4543,6 +4546,7 @@ var frontend_form_please_select = "请选择";
4543
4546
  var frontend_form_confirm = "确认";
4544
4547
  var frontend_form_delete = "删除";
4545
4548
  var frontend_form_view = "查看";
4549
+ var frontend_form_details = "详情";
4546
4550
  var frontend_delete_confirm_text = "确定要删除此项目?";
4547
4551
  var frontend_delete_many_selected_required = "请选择要删除的项";
4548
4552
  var frontend_delete_many_confirm_text = "确定要删除吗?";
@@ -4630,6 +4634,7 @@ var zh_cn = {
4630
4634
  frontend_form_confirm: frontend_form_confirm,
4631
4635
  frontend_form_delete: frontend_form_delete,
4632
4636
  frontend_form_view: frontend_form_view,
4637
+ frontend_form_details: frontend_form_details,
4633
4638
  frontend_delete_confirm_text: frontend_delete_confirm_text,
4634
4639
  frontend_delete_many_selected_required: frontend_delete_many_selected_required,
4635
4640
  frontend_delete_many_confirm_text: frontend_delete_many_confirm_text,
@@ -5176,6 +5181,9 @@ async function getTableColumns$1(fields, options){
5176
5181
  const allowEdit = options.permissions?.allowEdit && !options.isLookup && options.enable_inline_edit != false;
5177
5182
 
5178
5183
  for (const field of fields) {
5184
+ if(field.hidden || field.extra){
5185
+ continue;
5186
+ }
5179
5187
  //增加quickEdit属性,实现快速编辑
5180
5188
  const quickEditSchema = allowEdit ? await getQuickEditSchema(field, options) : allowEdit;
5181
5189
  let className = "";
@@ -5301,6 +5309,11 @@ async function getTableColumns$1(fields, options){
5301
5309
  options: field.type === 'html' ? {html: true} : null
5302
5310
  // toggled: true
5303
5311
  }, field.amis, {name: field.name});
5312
+
5313
+ if(field.type === 'color'){
5314
+ columnItem.type = 'color';
5315
+ columnItem.defaultColor = null;
5316
+ }
5304
5317
  }
5305
5318
  }
5306
5319
  if(columnItem){
@@ -7988,8 +8001,8 @@ const getSchema$2 = (uiSchema) => {
7988
8001
  /*
7989
8002
  * @Author: baozhoutao@steedos.com
7990
8003
  * @Date: 2022-11-07 17:00:38
7991
- * @LastEditors: baozhoutao@steedos.com
7992
- * @LastEditTime: 2023-08-24 16:44:42
8004
+ * @LastEditors: liaodaxue
8005
+ * @LastEditTime: 2023-12-13 10:09:05
7993
8006
  * @Description:
7994
8007
  */
7995
8008
 
@@ -8000,7 +8013,7 @@ const getSchema$1 = (uiSchema)=>{
8000
8013
  "body": [
8001
8014
  {
8002
8015
  "type": "button",
8003
- "label": instance.t('frontend_form_view'),
8016
+ "label": instance.t('frontend_form_details'),
8004
8017
  "className": "border-none",
8005
8018
  "onEvent": {
8006
8019
  "click": {
@@ -14681,6 +14694,16 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
14681
14694
  }
14682
14695
  }
14683
14696
 
14697
+ break;
14698
+ case 'color':
14699
+ convertData = {
14700
+ type: getAmisStaticFieldType$1('color', readonly),
14701
+ name: field.name,
14702
+ label: field.label
14703
+ };
14704
+ if(readonly){
14705
+ convertData.defaultColor = null;
14706
+ }
14684
14707
  break;
14685
14708
  case 'boolean':
14686
14709
  convertData = {
@@ -15535,7 +15558,7 @@ async function getFormBody(permissionFields, formFields, ctx){
15535
15558
  * @Author: 殷亮辉 yinlianghui@hotoa.com
15536
15559
  * @Date: 2023-11-15 09:50:22
15537
15560
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
15538
- * @LastEditTime: 2023-12-04 17:36:50
15561
+ * @LastEditTime: 2023-12-16 16:39:49
15539
15562
  */
15540
15563
 
15541
15564
  /**
@@ -15549,52 +15572,71 @@ function getFormFields(props, mode = "edit") {
15549
15572
  "name": item.name,
15550
15573
  "config": item
15551
15574
  };
15552
- if(mode === "readonly"){
15575
+ if (mode === "readonly") {
15553
15576
  formItem.static = true;
15554
15577
  }
15555
15578
  return formItem;
15556
15579
  }) || [];
15557
15580
  }
15558
15581
 
15582
+ function getInputTableCell(field, showAsInlineEditMode) {
15583
+ if (showAsInlineEditMode) {
15584
+ return {
15585
+ label: field.label,
15586
+ name: field.name,
15587
+ quickEdit: {
15588
+ "type": "steedos-field",
15589
+ "config": field,
15590
+ hideLabel: true
15591
+ }
15592
+ }
15593
+ }
15594
+ else {
15595
+ return {
15596
+ "type": "steedos-field",
15597
+ "config": field,
15598
+ "static": true,
15599
+ "readonly": true,
15600
+ label: field.label,
15601
+ name: field.name,
15602
+ hideLabel: true
15603
+ }
15604
+ }
15605
+ }
15606
+
15559
15607
  /**
15560
15608
  * @param {*} props
15561
15609
  * @param {*} mode edit/new/readonly
15562
15610
  */
15563
15611
  async function getInputTableColumns(props) {
15564
15612
  let columns = props.columns || [];
15613
+ let inlineEditMode = props.inlineEditMode;
15614
+ let showAsInlineEditMode = inlineEditMode && props.editable;
15565
15615
  // 实测过,直接不生成对应的隐藏column并不会对input-table值造成丢失问题,隐藏的列字段值能正常维护
15566
15616
  let fields = props.fields;
15567
- if(columns && columns.length){
15568
- return columns.map(function(column){
15617
+ if (columns && columns.length) {
15618
+ return columns.map(function (column) {
15569
15619
  let field, extendColumnProps = {};
15570
- if(typeof column === "string"){
15620
+ if (typeof column === "string") {
15571
15621
  // 如果字符串,则取出要显示的列配置
15572
- field = fields.find(function(fieldItem){
15622
+ field = fields.find(function (fieldItem) {
15573
15623
  return fieldItem.name === column;
15574
15624
  });
15575
15625
  }
15576
15626
  else {
15577
15627
  // 如果是对象,则合并到steedos-field的config.amis属性中,steedos组件会把config.amis属性混合到最终生成的input-table column
15578
- field = fields.find(function(fieldItem){
15628
+ field = fields.find(function (fieldItem) {
15579
15629
  return fieldItem.name === column.name;
15580
15630
  });
15581
- if(field){
15631
+ if (field) {
15582
15632
  // field.amis = Object.assign({}, field.amis, column);
15583
15633
  // 如果把column合并到field.amis,column的label/width等属性不会生效,只能放外层合并
15584
15634
  extendColumnProps = column;
15585
15635
  }
15586
15636
  }
15587
- if(field){
15588
- return {
15589
- "type": "steedos-field",
15590
- "config": field,
15591
- "static": true,
15592
- "readonly": true,
15593
- label: field.label,
15594
- name: field.name,
15595
- hideLabel: true,
15596
- ...extendColumnProps
15597
- }
15637
+ if (field) {
15638
+ let tableCell = getInputTableCell(field, showAsInlineEditMode);
15639
+ return Object.assign({}, tableCell, extendColumnProps);
15598
15640
  }
15599
15641
  else {
15600
15642
  return column;
@@ -15602,20 +15644,226 @@ async function getInputTableColumns(props) {
15602
15644
  });
15603
15645
  }
15604
15646
  else {
15605
- return fields.map(function(field){
15606
- return {
15607
- "type": "steedos-field",
15608
- "config": field,
15609
- "static": true,
15610
- "readonly": true,
15611
- label: field.label,
15612
- name: field.name,
15613
- hideLabel: true
15614
- }
15647
+ return fields.map(function (field) {
15648
+ let tableCell = getInputTableCell(field, showAsInlineEditMode);
15649
+ return tableCell;
15615
15650
  }) || [];
15616
15651
  }
15617
15652
  }
15618
15653
 
15654
+ function getFormPagination(props) {
15655
+ let onPageChangeScript = `
15656
+ let scope = event.context.scoped;
15657
+ let __paginationServiceId = event.data.__paginationServiceId;
15658
+ let __wrapperServiceId = event.data.__wrapperServiceId;
15659
+ let __formId = event.data.__formId;
15660
+ let fieldValue = event.data.__changedItems;//这里不可以_.cloneDeep,因为翻页form中用的是event.data.changedItems,直接变更其值即可改变表单中的值
15661
+ let pageChangeDirection = context.props.pageChangeDirection;
15662
+ let currentPage = event.data.__page;
15663
+ let currentIndex = event.data.index;
15664
+
15665
+ // 翻页到下一页之前需要先把当前页改动的内容保存到中间变量changedItems中
15666
+ let currentFormValues = scope.getComponentById(__formId).getValues();
15667
+ fieldValue[currentIndex] = currentFormValues;
15668
+ // // 因为翻页form中用的是event.data.changedItems中的数据,所以不需要像下面这样doAction setValue变更中间变量changedItems值
15669
+ // doAction({
15670
+ // "componentId": __wrapperServiceId,
15671
+ // "actionType": "setValue",
15672
+ // "args": {
15673
+ // "value": {
15674
+ // "__changedItems": fieldValue
15675
+ // }
15676
+ // }
15677
+ // });
15678
+ // 如果翻页到下一页前需要同时把改动的内容保存到最终正式的表单字段中,需要额外给正式表单字段执行一次setValue
15679
+ // 但是同时保存到正式表单字段中会造成翻页后点击取消无法取消翻页之前的改动内容
15680
+ // doAction({
15681
+ // "componentId": "${props.id}",
15682
+ // "actionType": "setValue",
15683
+ // "args": {
15684
+ // "value": fieldValue
15685
+ // }
15686
+ // });
15687
+
15688
+ // 以下是翻页逻辑,翻到下一页并把下一页内容显示到表单上
15689
+ let targetPage;
15690
+ if(pageChangeDirection === "next"){
15691
+ targetPage = currentPage + 1;
15692
+ }
15693
+ else{
15694
+ targetPage = currentPage - 1;
15695
+ }
15696
+ let targetIndex = targetPage - 1;//input-table组件行索引,从0开始的索引
15697
+ // let targetFormData = __changedItems[targetIndex];
15698
+ doAction({
15699
+ "actionType": "setValue",
15700
+ "componentId": __paginationServiceId,
15701
+ "args": {
15702
+ "value": {
15703
+ "__page": targetPage,
15704
+ "index": targetIndex
15705
+ }
15706
+ }
15707
+ });
15708
+ // 这里不用进一步把表单内容setValue到form中,是因为编辑表单中schemaApi监听了行索引index的变化,其值变化时会重新build整个form
15709
+ // doAction({
15710
+ // "actionType": "setValue",
15711
+ // "componentId": __formId,
15712
+ // "args": {
15713
+ // "value": targetFormData
15714
+ // },
15715
+ // "dataMergeMode": "override"// amis 3.2不支持override模式,高版本才支持
15716
+ // });
15717
+ `;
15718
+ return {
15719
+ "type": "wrapper",
15720
+ "className": "py-2",
15721
+ "body": [
15722
+ {
15723
+ "type": "button",
15724
+ "label": "",
15725
+ "icon": `fa fa-angle-left`,
15726
+ "level": "link",
15727
+ "pageChangeDirection": "prev",
15728
+ "disabledOn": "${__page <= 1}",
15729
+ "size": "sm",
15730
+ "onEvent": {
15731
+ "click": {
15732
+ "actions": [
15733
+ {
15734
+ "actionType": "custom",
15735
+ "script": onPageChangeScript
15736
+ }
15737
+ ]
15738
+ }
15739
+ }
15740
+ },
15741
+ {
15742
+ "type": "tpl",
15743
+ "tpl": "${__page}/${__total}"
15744
+ },
15745
+ {
15746
+ "type": "button",
15747
+ "label": "",
15748
+ "icon": `fa fa-angle-right`,
15749
+ "level": "link",
15750
+ "pageChangeDirection": "next",
15751
+ "disabledOn": "${__page >= __total}",
15752
+ "size": "sm",
15753
+ "onEvent": {
15754
+ "click": {
15755
+ "actions": [
15756
+ {
15757
+ "actionType": "custom",
15758
+ "script": onPageChangeScript
15759
+ }
15760
+ ]
15761
+ }
15762
+ }
15763
+ }
15764
+ ]
15765
+ }
15766
+ }
15767
+
15768
+ /**
15769
+ * 传入formSchema输出带翻页容器的wrapper
15770
+ * @param {*} props input-table组件props
15771
+ * @param {*} form formSchema
15772
+ * @param {*} mode edit/readonly
15773
+ * @returns 带翻页容器的wrapper
15774
+ */
15775
+ function getFormPaginationWrapper(props, form, mode) {
15776
+ let serviceId = `service_popup_pagination_wrapper__${props.id}`;
15777
+ // 这里加__super前缀是因为__parentForm变量(即主表单)中可能会正好有名为index的字段
15778
+ // 比如“对象字段”对象options字段是一个子表字段,但是主表(即“对象字段”对象)中正好有一个名为index的字段
15779
+ // 只读的时候不可以走中间变量__changedItems,比如工作流规则详细页面修改了子表字段”时间触发器“值后,在只读界面点击查看按钮弹出的表单中__changedItems值是修改前的值
15780
+ let formValues = mode === "readonly" ? `\${${props.name}[__super.index]}` : "${__changedItems[__super.index]}";
15781
+ // 这时用__readonlyItemsLength是因为`\${${props.name}.length}`拿不到值
15782
+ let totalValue = mode === "readonly" ? "${__readonlyItemsLength}" : "${__changedItems.length}";
15783
+ let innerForm = Object.assign({}, form, {
15784
+ "data": {
15785
+ // "&": "${__changedItems[__super.index]}"
15786
+ "&": formValues,
15787
+ }
15788
+ });
15789
+ let formBody = [
15790
+ {
15791
+ "type": "wrapper",
15792
+ "size": "none",
15793
+ "className": "flex justify-end border-y border-gray-200 -mx-6 shadow-inner sticky top-0 right-0 left-0 z-20 bg-white mb-4",
15794
+ "body": [
15795
+ getFormPagination(props)
15796
+ ]
15797
+ },
15798
+ {
15799
+ "type": "service",
15800
+ "body": [
15801
+ innerForm
15802
+ ],
15803
+ "data": {
15804
+ "&": "${__parentForm}"
15805
+ }
15806
+ }
15807
+ ];
15808
+ let onServiceInitedScript = `
15809
+ // 以下脚本在inlineEditMode模式时才有必要执行(不过执行了也没有坏处,纯粹是没必要),是为了解决:
15810
+ // inlineEditMode模式时,用户在表格单元格中直接修改数据,然后弹出的表单form中并没有包含单元格中修改的内容
15811
+ // 思路是每次弹出form之前先把其changedItems同步更新为最新值,这样就能在弹出form中包含单元格中做的修改
15812
+ // 注意:service init事件只会在每次弹出窗口时才执行,在触发翻页时并不会触发service init事件
15813
+ let inlineEditMode = ${props.inlineEditMode};
15814
+ if(!inlineEditMode){
15815
+ return;
15816
+ }
15817
+ let scope = event.context.scoped;
15818
+ let __wrapperServiceId = event.data.__wrapperServiceId;
15819
+ let wrapperService = scope.getComponentById(__wrapperServiceId);
15820
+ let wrapperServiceData = wrapperService.getData();
15821
+ let lastestFieldValue = wrapperServiceData["${props.name}"];//这里不可以用event.data["${props.name}"]因为amis input talbe有一层单独的作用域,其值会延迟一拍
15822
+ //不可以直接像event.data.__changedItems = originalFieldValue; 这样整个赋值,否则作用域会断
15823
+ event.data.__changedItems.forEach(function(n,i){
15824
+ event.data.__changedItems[i] = lastestFieldValue[i];
15825
+ });
15826
+ `;
15827
+ let schema = {
15828
+ "type": "service",
15829
+ "id": serviceId,
15830
+ "schemaApi": {
15831
+ "url": "${context.rootUrl}/graphql?rebuildOn=${index}",
15832
+ // "url": "${context.rootUrl}/graphql",
15833
+ "method": "post",
15834
+ "headers": {
15835
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
15836
+ },
15837
+ "requestAdaptor": "api.data={query: '{spaces__findOne(id: \"none\"){_id,name}}'};return api;",
15838
+ "adaptor": `
15839
+ const formBody = ${JSON.stringify(formBody)};
15840
+ return {
15841
+ "body": formBody
15842
+ }
15843
+ `
15844
+ },
15845
+ // "body": formBody,
15846
+ "data": {
15847
+ "__page": "${index + 1}",
15848
+ // "__total": `\${${props.name}.length}`,
15849
+ "__total": totalValue,
15850
+ "__paginationServiceId": serviceId,
15851
+ "__formId": form.id
15852
+ },
15853
+ "onEvent": {
15854
+ "init": {
15855
+ "actions": [
15856
+ {
15857
+ "actionType": "custom",
15858
+ "script": onServiceInitedScript
15859
+ }
15860
+ ]
15861
+ }
15862
+ }
15863
+ };
15864
+ return schema;
15865
+ }
15866
+
15619
15867
  /**
15620
15868
  * @param {*} props
15621
15869
  * @param {*} mode edit/new/readonly
@@ -15623,29 +15871,62 @@ async function getInputTableColumns(props) {
15623
15871
  async function getForm(props, mode = "edit") {
15624
15872
  let formFields = getFormFields(props, mode);
15625
15873
  let body = await getFormBody(null, formFields);
15874
+ let forId = `form_popup__${props.id}`;
15626
15875
  let schema = {
15627
15876
  "type": "form",
15877
+ "id": forId,
15628
15878
  "title": "表单",
15629
15879
  "debug": false,
15630
15880
  "mode": "normal",
15631
15881
  "body": body,
15882
+ "wrapWithPanel": false,
15883
+ "canAccessSuperData": false,
15632
15884
  "className": "steedos-object-form steedos-amis-form"
15633
15885
  };
15634
15886
  if (mode === "edit") {
15887
+ let onEditItemSubmitScript = `
15888
+ // let fieldValue = _.cloneDeep(event.data["${props.name}"]);
15889
+ let fieldValue = event.data.__changedItems;//这里不可以_.cloneDeep,因为翻页form中用的是event.data.changedItems,直接变更其值即可改变表单中的值
15890
+
15891
+ //这里加__super.__super前缀是因为__parentForm变量(即主表单)中可能会正好有名为index的字段
15892
+ // 比如“对象字段”对象options字段是一个子表字段,但是主表(即“对象字段”对象)中正好有一个名为index的字段
15893
+ fieldValue[event.data.__super.__super.index] = JSON.parse(JSON.stringify(event.data));
15894
+ doAction({
15895
+ "componentId": "${props.id}",
15896
+ "actionType": "setValue",
15897
+ "args": {
15898
+ "value": fieldValue
15899
+ }
15900
+ });
15901
+ // // 因为翻页form中用的是event.data.changedItems中的数据,所以不需要像下面这样doAction setValue变更中间变量changedItems值
15902
+ // doAction({
15903
+ // "componentId": event.data.__wrapperServiceId,
15904
+ // "actionType": "setValue",
15905
+ // "args": {
15906
+ // "value": {
15907
+ // "__changedItems": fieldValue
15908
+ // }
15909
+ // }
15910
+ // });
15911
+ `;
15635
15912
  Object.assign(schema, {
15636
15913
  "onEvent": {
15637
15914
  "submit": {
15638
15915
  "weight": 0,
15639
15916
  "actions": [
15917
+ // {
15918
+ // "actionType": "setValue",
15919
+ // "args": {
15920
+ // "index": "${index}",
15921
+ // "value": {
15922
+ // "&": "$$"
15923
+ // }
15924
+ // },
15925
+ // "componentId": props.id
15926
+ // }
15640
15927
  {
15641
- "actionType": "setValue",
15642
- "args": {
15643
- "index": "${index}",
15644
- "value": {
15645
- "&": "$$"
15646
- }
15647
- },
15648
- "componentId": props.id
15928
+ "actionType": "custom",
15929
+ "script": onEditItemSubmitScript
15649
15930
  }
15650
15931
  ]
15651
15932
  }
@@ -15654,10 +15935,11 @@ async function getForm(props, mode = "edit") {
15654
15935
  }
15655
15936
  else if (mode === "new") {
15656
15937
  let onNewItemSubmitScript = `
15657
- let fieldValue = _.cloneDeep(event.data["${props.name}"]);
15658
- if(!fieldValue){
15659
- fieldValue = [];
15938
+ // let fieldValue = _.cloneDeep(event.data["${props.name}"]);
15939
+ if(!event.data.__changedItems){
15940
+ event.data.__changedItems = [];
15660
15941
  }
15942
+ let fieldValue = event.data.__changedItems;
15661
15943
  fieldValue.push(JSON.parse(JSON.stringify(event.data)));
15662
15944
  doAction({
15663
15945
  "componentId": "${props.id}",
@@ -15666,6 +15948,16 @@ async function getForm(props, mode = "edit") {
15666
15948
  "value": fieldValue
15667
15949
  }
15668
15950
  });
15951
+ // // 因为翻页form中用的是event.data.changedItems中的数据,所以不需要像下面这样doAction setValue变更中间变量changedItems值
15952
+ // doAction({
15953
+ // "componentId": event.data.__wrapperServiceId,
15954
+ // "actionType": "setValue",
15955
+ // "args": {
15956
+ // "value": {
15957
+ // "__changedItems": fieldValue
15958
+ // }
15959
+ // }
15960
+ // });
15669
15961
  `;
15670
15962
  Object.assign(schema, {
15671
15963
  "onEvent": {
@@ -15691,6 +15983,9 @@ async function getForm(props, mode = "edit") {
15691
15983
  }
15692
15984
  });
15693
15985
  }
15986
+ if (mode === "edit" || mode === "readonly") {
15987
+ schema = getFormPaginationWrapper(props, schema, mode);
15988
+ }
15694
15989
  return schema;
15695
15990
  }
15696
15991
 
@@ -15725,11 +16020,32 @@ async function getButtonNew(props) {
15725
16020
  };
15726
16021
  }
15727
16022
 
15728
- async function getButtonEdit(props) {
16023
+ async function getButtonEdit(props, showAsInlineEditMode) {
16024
+ let onCancelScript = `
16025
+ let scope = event.context.scoped;
16026
+ let __wrapperServiceId = event.data.__wrapperServiceId;
16027
+ let wrapperService = scope.getComponentById(__wrapperServiceId);
16028
+ let wrapperServiceData = wrapperService.getData();
16029
+ let originalFieldValue = wrapperServiceData["${props.name}"];//这里不可以用event.data["${props.name}"]因为amis input talbe有一层单独的作用域,其值会延迟一拍
16030
+ //不可以直接像event.data.__changedItems = originalFieldValue; 这样整个赋值,否则作用域会断,造成无法还原
16031
+ event.data.__changedItems.forEach(function(n,i){
16032
+ event.data.__changedItems[i] = originalFieldValue[i];
16033
+ });
16034
+ // 因为翻页form中用的是event.data.changedItems中的数据,所以像下面这样doAction setValue无法实现还原
16035
+ // doAction({
16036
+ // "componentId": __wrapperServiceId,
16037
+ // "actionType": "setValue",
16038
+ // "args": {
16039
+ // "value": {
16040
+ // "__changedItems": originalFieldValue
16041
+ // }
16042
+ // }
16043
+ // });
16044
+ `;
15729
16045
  return {
15730
16046
  "type": "button",
15731
16047
  "label": "",
15732
- "icon": "fa fa-pencil",
16048
+ "icon": `fa fa-${showAsInlineEditMode ? "expand" : "pencil"}`,//inline edit模式时显示为放开按钮,只读时显示为笔按钮
15733
16049
  "level": "link",
15734
16050
  "onEvent": {
15735
16051
  "click": {
@@ -15747,7 +16063,31 @@ async function getButtonEdit(props) {
15747
16063
  "showErrorMsg": true,
15748
16064
  "showLoading": true,
15749
16065
  "className": "app-popover",
15750
- "closeOnEsc": false
16066
+ "closeOnEsc": false,
16067
+ "data": {
16068
+ // 这里必须加data数据映射,否则翻页功能中取changedItems值时会乱,比如翻页编辑后会把上一页中没改过的字段值带过去
16069
+ // 额外把华炎魔方主表记录ObjectForm中的字段值从record变量中映射到子表form中,因为子表lookup字段filtersFunction中可能依赖了主表记录中的字段值,比如“工作流规则”对象“时间触发器”字段中的“日期字段”字段
16070
+ // 额外把global、uiSchema也映射过去,有可能要用,后续需要用到其他变更可以这里加映射
16071
+ // "&": "${record || {}}",
16072
+ // 换成从__super来映射上级表单数据是因为对象列表视图界面中每行下拉菜单中的编辑按钮弹出的表单中的子表所在作用域中没有record变量
16073
+ // 映射到中间变量__parentForm而不是直接用&展开映射是为了避免表单中字段名与作用域中变量重名
16074
+ "__parentForm": "${__super.__super || {}}",
16075
+ "global": "${global}",
16076
+ "uiSchema": "${uiSchema}",
16077
+ "index": "${index}",
16078
+ "__changedItems": "${__changedItems}",
16079
+ "__wrapperServiceId": "${__wrapperServiceId}"
16080
+ },
16081
+ "onEvent": {
16082
+ "cancel": {
16083
+ "actions": [
16084
+ {
16085
+ "actionType": "custom",
16086
+ "script": onCancelScript
16087
+ }
16088
+ ]
16089
+ }
16090
+ }
15751
16091
  }
15752
16092
  }
15753
16093
  ]
@@ -15760,7 +16100,7 @@ async function getButtonView(props) {
15760
16100
  return {
15761
16101
  "type": "button",
15762
16102
  "label": "",
15763
- "icon": "fa fa-external-link",
16103
+ "icon": "fa fa-expand",//fa-external-link
15764
16104
  "level": "link",
15765
16105
  "onEvent": {
15766
16106
  "click": {
@@ -15778,7 +16118,21 @@ async function getButtonView(props) {
15778
16118
  "showErrorMsg": true,
15779
16119
  "showLoading": true,
15780
16120
  "className": "app-popover",
15781
- "closeOnEsc": false
16121
+ "closeOnEsc": false,
16122
+ "actions": [],
16123
+ "data": {
16124
+ // 这里必须加data数据映射,否则翻页功能中取changedItems值时会乱,比如翻页编辑后会把上一页中没改过的字段值带过去
16125
+ // 额外把华炎魔方主表记录ObjectForm中的字段值从formData变量中映射到子表form中,因为子表lookup字段filtersFunction中可能依赖了主表记录中的字段值,比如“工作流规则”对象“时间触发器”字段中的“日期字段”字段
16126
+ // global、uiSchema等常用变量本来就在formData变量已经存在了,无需另外映射
16127
+ // "&": "${formData || {}}",
16128
+ // 换成从__super来映射上级表单数据是因为对象列表视图界面中每行下拉菜单中的编辑按钮弹出的表单中的子表所在作用域中没有formData变量
16129
+ // 映射到中间变量__parentForm而不是直接用&展开映射是为了避免表单中字段名与作用域中变量重名
16130
+ "__parentForm": "${__super.__super || {}}",
16131
+ "index": "${index}",
16132
+ "__changedItems": "${__changedItems}",
16133
+ "__wrapperServiceId": "${__wrapperServiceId}",
16134
+ "__readonlyItemsLength": `\${${props.name}.length}`
16135
+ }
15782
16136
  }
15783
16137
  }
15784
16138
  ]
@@ -15788,6 +16142,32 @@ async function getButtonView(props) {
15788
16142
  }
15789
16143
 
15790
16144
  function getButtonDelete(props) {
16145
+ let onDeleteItemScript = `
16146
+ // let fieldValue = _.cloneDeep(event.data["${props.name}"]);
16147
+ if(!event.data.__changedItems){
16148
+ event.data.__changedItems = [];
16149
+ }
16150
+ let fieldValue = event.data.__changedItems;
16151
+ // fieldValue.push(JSON.parse(JSON.stringify(event.data)));
16152
+ fieldValue.splice(event.data.index, 1)
16153
+ doAction({
16154
+ "componentId": "${props.id}",
16155
+ "actionType": "setValue",
16156
+ "args": {
16157
+ "value": fieldValue
16158
+ }
16159
+ });
16160
+ // // 因为翻页form中用的是event.data.changedItems中的数据,所以不需要像下面这样doAction setValue变更中间变量changedItems值
16161
+ // doAction({
16162
+ // "componentId": event.data.__wrapperServiceId,
16163
+ // "actionType": "setValue",
16164
+ // "args": {
16165
+ // "value": {
16166
+ // "__changedItems": fieldValue
16167
+ // }
16168
+ // }
16169
+ // });
16170
+ `;
15791
16171
  return {
15792
16172
  "type": "button",
15793
16173
  "label": "",
@@ -15796,12 +16176,16 @@ function getButtonDelete(props) {
15796
16176
  "onEvent": {
15797
16177
  "click": {
15798
16178
  "actions": [
16179
+ // {
16180
+ // "actionType": "deleteItem",
16181
+ // "args": {
16182
+ // "index": "${index+','}" //这里不加逗号后续会报错,语法是逗号分隔可以删除多行
16183
+ // },
16184
+ // "componentId": props.id
16185
+ // },
15799
16186
  {
15800
- "actionType": "deleteItem",
15801
- "args": {
15802
- "index": "${index+','}" //这里不加逗号后续会报错,语法是逗号分隔可以删除多行
15803
- },
15804
- "componentId": props.id
16187
+ "actionType": "custom",
16188
+ "script": onDeleteItemScript
15805
16189
  }
15806
16190
  ]
15807
16191
  }
@@ -15809,18 +16193,34 @@ function getButtonDelete(props) {
15809
16193
  };
15810
16194
  }
15811
16195
 
15812
- const getAmisInputTableSchema = async (props, readonly) => {
16196
+ const getAmisInputTableSchema = async (props) => {
15813
16197
  if (!props.id) {
15814
16198
  props.id = "steedos_input_table_" + props.name + "_" + Math.random().toString(36).substr(2, 9);
15815
16199
  }
16200
+ let serviceId = `service_wrapper__${props.id}`;
15816
16201
  let buttonsForColumnOperations = [];
16202
+ let inlineEditMode = props.inlineEditMode;
16203
+ let showAsInlineEditMode = inlineEditMode && props.editable;
15817
16204
  if (props.editable) {
15818
- let buttonEditSchema = await getButtonEdit(props);
15819
- buttonsForColumnOperations.push(buttonEditSchema);
16205
+ let showEditButton = true;
16206
+ if (showAsInlineEditMode) {
16207
+ // inline edit模式下只在有列被隐藏时才需要显示编辑按钮
16208
+ if (props.columns && props.columns.length > 0 && props.columns.length < props.fields.length) {
16209
+ showEditButton = true;
16210
+ }
16211
+ else {
16212
+ showEditButton = false;
16213
+ }
16214
+ }
16215
+ // 编辑时显示编辑按钮
16216
+ if (showEditButton) {
16217
+ let buttonEditSchema = await getButtonEdit(props, showAsInlineEditMode);
16218
+ buttonsForColumnOperations.push(buttonEditSchema);
16219
+ }
15820
16220
  }
15821
16221
  else {
15822
16222
  // 只读时显示查看按钮
15823
- if(props.columns && props.columns.length > 0 && props.columns.length < props.fields.length){
16223
+ if (props.columns && props.columns.length > 0 && props.columns.length < props.fields.length) {
15824
16224
  // 只在有列被隐藏时才需要显示查看按钮
15825
16225
  let buttonViewSchema = await getButtonView(props);
15826
16226
  buttonsForColumnOperations.push(buttonViewSchema);
@@ -15844,7 +16244,7 @@ const getAmisInputTableSchema = async (props, readonly) => {
15844
16244
  "id": props.id,
15845
16245
  "columns": await getInputTableColumns(props),
15846
16246
  // "needConfirm": false, //不可以配置为false,否则,单元格都是可编辑状态,且很多static类型无法正常显示,比如static-mapping
15847
- "strictMode": true,
16247
+ "strictMode": props.strictMode,
15848
16248
  "showTableAddBtn": false,
15849
16249
  "showFooterAddBtn": false,
15850
16250
  "className": props.tableClassName
@@ -15857,13 +16257,60 @@ const getAmisInputTableSchema = async (props, readonly) => {
15857
16257
  "width": buttonsForColumnOperations.length > 1 ? "46px" : "20px"
15858
16258
  });
15859
16259
  }
16260
+ if (showAsInlineEditMode) {
16261
+ inputTableSchema.needConfirm = false;
16262
+ }
16263
+ let dataProviderInited = `
16264
+ // 单独维护一份中间变量changedItems,因为原变量在input-table组件有单独的作用域,翻页功能中无法维护此作用域中的行记录值
16265
+ setData({ __changedItems: _.cloneDeep(data["${props.name}"]) || []});
16266
+ `;
16267
+ let onInitScript = `
16268
+ // 上面dataProviderInited中setData有时不生效,没有成功给service组件设置__changedItems变量值
16269
+ // 比如设计字段布局界面中的设置分组功能就因为__changedItems变量值不存在而报错,应该是因为把steedos-input-table组件单独放到弹出窗口中会有这个问题
16270
+ // 所以额外在service init事件中手动设置一次__changedItems值
16271
+ let __wrapperServiceId = event.data.__wrapperServiceId;
16272
+ let fieldValue = _.cloneDeep(event.data["${props.name}"]) || [];
16273
+ doAction({
16274
+ "componentId": __wrapperServiceId,
16275
+ "actionType": "setValue",
16276
+ "args": {
16277
+ "value": {
16278
+ "__changedItems": fieldValue
16279
+ }
16280
+ }
16281
+ });
16282
+ // 下面的doAction好像不是必须的
16283
+ // doAction({
16284
+ // "componentId": "${props.id}",
16285
+ // "actionType": "setValue",
16286
+ // "args": {
16287
+ // "value": fieldValue
16288
+ // }
16289
+ // });
16290
+ `;
15860
16291
  let schema = {
15861
- "type": "wrapper",
15862
- "size": "none",
16292
+ "type": "service",
15863
16293
  "body": [
15864
16294
  inputTableSchema
15865
16295
  ],
15866
- "className": props.className
16296
+ "className": props.className,
16297
+ "id": serviceId,
16298
+ "data": {
16299
+ "__wrapperServiceId": serviceId
16300
+ },
16301
+ "dataProvider": {
16302
+ "inited": dataProviderInited
16303
+ },
16304
+ "onEvent": {
16305
+ "init": {
16306
+ "actions": [
16307
+ {
16308
+ "actionType": "custom",
16309
+ "script": onInitScript
16310
+ }
16311
+ ]
16312
+ }
16313
+ }
15867
16314
  };
15868
16315
  let footerToolbar = _$1.clone(props.footerToolbar || []); //这里不clone的话,会造成死循环,应该是因为props属性变更会让组件重新渲染
15869
16316
  if (props.addable) {
@@ -15877,10 +16324,22 @@ const getAmisInputTableSchema = async (props, readonly) => {
15877
16324
  "body": footerToolbar
15878
16325
  });
15879
16326
  }
15880
- if (props.amis) {
15881
- delete props.amis.id;
15882
- Object.assign(schema.body[0], props.amis);
16327
+ let amis = props["input-table"] || props.amis;//额外支持"input-table"代替amis属性,是因为在字段yml文件中用amis作为key不好理解
16328
+ if (amis) {
16329
+ // 支持配置amis属性重写或添加最终生成的input-table中任何属性。
16330
+ delete amis.id;//如果steedos-input-table组件配置了amis.id属性,会造成新建编辑行功能不生效
16331
+ Object.assign(schema.body[0], amis);
16332
+ }
16333
+ const isAnyFieldHasDependOn = (props.fields || []).find(function (item) {
16334
+ return item.depend_on;
16335
+ });
16336
+ if(isAnyFieldHasDependOn){
16337
+ // 有任意一个子字段有depend_on属性时,强制设置禁用静态模式
16338
+ Object.assign(schema.body[0], {
16339
+ strictMode: false
16340
+ });
15883
16341
  }
16342
+ // console.log("===schema===", schema);
15884
16343
  return schema;
15885
16344
  };
15886
16345
 
@@ -20862,14 +21321,14 @@ function getAmisStaticFieldType(type, data_type, options) {
20862
21321
  return type;
20863
21322
  }
20864
21323
  var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void 0, function () {
20865
- var steedosField, field, _a, readonly, _b, ctx, config, fStatic, hideLabel, schema, schema, fieldAmis, schema, error_1;
20866
- var _c;
20867
- return __generator(this, function (_d) {
20868
- switch (_d.label) {
21324
+ var steedosField, field, _a, readonly, _b, ctx, config, fStatic, hideLabel, defaultSource, source, schema, schema, fieldAmis, schema, error_1;
21325
+ var _c, _d, _e;
21326
+ return __generator(this, function (_f) {
21327
+ switch (_f.label) {
20869
21328
  case 0:
20870
21329
  steedosField = null;
20871
21330
  field = props.field, _a = props.readonly, readonly = _a === void 0 ? false : _a, _b = props.ctx, ctx = _b === void 0 ? {} : _b, config = props.config, props.$schema, fStatic = props.static, hideLabel = props.hideLabel;
20872
- console.log("AmisSteedosField", props);
21331
+ // console.log(`AmisSteedosField`, props)
20873
21332
  // if($schema.config && isString($schema.config)){
20874
21333
  // $schema.config = JSON.parse($schema.config)
20875
21334
  // props.config = $schema.config
@@ -20877,36 +21336,51 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
20877
21336
  if (_$1.isString(ctx)) {
20878
21337
  ctx = JSON.parse(ctx);
20879
21338
  }
20880
- if (config) {
20881
- steedosField = config;
20882
- if (_$1.isString(steedosField)) {
20883
- steedosField = JSON.parse(config);
20884
- }
21339
+ steedosField = config ? config : field;
21340
+ if (_$1.isString(steedosField)) {
21341
+ steedosField = JSON.parse(steedosField);
20885
21342
  }
20886
21343
  else {
20887
- steedosField = field;
20888
- if (_$1.isString(field)) {
20889
- steedosField = JSON.parse(field);
20890
- }
21344
+ // 这里要clone是因为后面图片字段类型执行steedosField.amis = ...的时候会造成input-table中的图片字段在弹出编辑表单点击确认后整个input-table组件重新渲染了,从而导致其翻页功能异常
21345
+ steedosField = _$1.clone(steedosField);
20891
21346
  }
20892
- _d.label = 1;
21347
+ if (!fStatic && steedosField.readonly && !props.data.hasOwnProperty("_display")) {
21348
+ // 字段配置为只读,强制走fStatic模式,加上_display判断是为了不影响历史代码,比如直接在ObjectForm中调用steedos-field组件
21349
+ fStatic = true;
21350
+ }
21351
+ _f.label = 1;
20893
21352
  case 1:
20894
- _d.trys.push([1, 15, , 16]);
21353
+ _f.trys.push([1, 16, , 17]);
20895
21354
  if (!(fStatic && (steedosField.type === 'lookup' || steedosField.type === 'master_detail'))) return [3 /*break*/, 2];
21355
+ defaultSource = {
21356
+ "method": "post",
21357
+ "url": "${context.rootUrl}/graphql",
21358
+ "requestAdaptor": "\n var steedosField = ".concat(JSON.stringify(steedosField), ";\n var objectName, filters, valueFieldKey, labelFieldKey;\n if(_.isString(steedosField.reference_to)){\n // reference_to\u4E3A\u5355\u9009\n const referenceTo = getReferenceToSync(steedosField);\n const referenceToField = steedosField.reference_to_field || '_id';\n\n objectName = referenceTo.objectName\n valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n let value = api.data[steedosField.name];\n if(_.isString(value)){\n value = [value]\n }\n filters = [referenceToField, \"in\", value || []];\n if(objectName == \"object_fields\"){\n //\u5BF9\u8C61\u4E3Aobject_fields\u65F6\uFF0C\u5FC5\u987B\u52A0\u4E0Aobject\u7684\u8FC7\u6EE4\u6761\u4EF6\n const filtersFunction = ").concat(steedosField.filtersFunction || steedosField._filtersFunction, ";\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data);\n if(_filters && _filters.length > 0){\n filters = [filters,_filters]\n }\n }\n }\n }else{\n // reference_to\u4E3A\u591A\u9009\n const _steedosField = {\n ...steedosField,\n reference_to: api.data[steedosField.name].o\n }\n const referenceTo = getReferenceToSync(_steedosField);\n const referenceToField = _steedosField.reference_to_field || '_id';\n\n objectName = referenceTo.objectName\n valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n let value = api.data[_steedosField.name] && api.data[_steedosField.name].ids;\n filters = [referenceToField, \"in\", value || []];\n }\n api.data = {\n query: '{options:' + objectName + '(filters: ' + JSON.stringify(filters) + '){label: ' + labelFieldKey + ',value: ' + valueFieldKey + '}}'\n }\n return api;\n "),
21359
+ "trackExpression": "${" + steedosField.name + "}",
21360
+ "cache": 3000
21361
+ };
21362
+ if (!steedosField.reference_to) {
21363
+ // 兼容lookup字段未配置reference_to属性的情况,当普通下拉框字段用
21364
+ defaultSource = {
21365
+ "url": "${context.rootUrl}/api/v1/spaces/none",
21366
+ data: { $: "$$" },
21367
+ };
21368
+ if (steedosField.optionsFunction || steedosField._optionsFunction) {
21369
+ defaultSource.adaptor = "\n var options = eval(".concat(steedosField.optionsFunction || steedosField._optionsFunction, ")(api.body.$);\n if(api.body.$term){\n options = _.filter(options, function(o) {\n var label = o.label;\n return label.toLowerCase().indexOf(api.body.$term.toLowerCase()) > -1;\n });\n }\n if(!payload.data){\n payload.data = {};\n }\n payload.data.options = options;\n return payload;\n ");
21370
+ }
21371
+ else if (steedosField.options) {
21372
+ defaultSource.adaptor = "\n var options = ".concat(JSON.stringify(steedosField.options), "\n if(api.body.$term){\n options = _.filter(options, function(o) {\n var label = o.label;\n return label.toLowerCase().indexOf(api.body.$term.toLowerCase()) > -1;\n });\n }\n if(!payload.data){\n payload.data = {};\n }\n payload.data.options = options;\n return payload;\n ");
21373
+ }
21374
+ }
21375
+ source = ((_c = steedosField.amis) === null || _c === void 0 ? void 0 : _c.source) || ((_d = steedosField.amis) === null || _d === void 0 ? void 0 : _d.autoComplete) || defaultSource;
20896
21376
  schema = Object.assign({}, {
20897
21377
  type: 'select',
20898
21378
  multiple: steedosField.multiple,
20899
21379
  name: steedosField.name,
20900
21380
  label: steedosField.label,
20901
21381
  static: true,
20902
- className: (_c = steedosField.amis) === null || _c === void 0 ? void 0 : _c.className,
20903
- source: {
20904
- "method": "post",
20905
- "url": "${context.rootUrl}/graphql",
20906
- "requestAdaptor": "\n var steedosField = ".concat(JSON.stringify(steedosField), ";\n var objectName, filters, valueFieldKey, labelFieldKey;\n if(_.isString(steedosField.reference_to)){\n const referenceTo = getReferenceToSync(steedosField);\n const referenceToField = steedosField.reference_to_field || '_id';\n\n objectName = referenceTo.objectName\n valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n let value = api.data[steedosField.name];\n if(_.isString(value)){\n value = [value]\n }\n filters = [referenceToField, \"in\", value || []];\n if(objectName == \"object_fields\"){\n //\u5BF9\u8C61\u4E3Aobject_fields\u65F6\uFF0C\u5FC5\u987B\u52A0\u4E0Aobject\u7684\u8FC7\u6EE4\u6761\u4EF6\n const filtersFunction = ").concat(steedosField.filtersFunction || steedosField._filtersFunction, ";\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data);\n if(_filters && _filters.length > 0){\n filters = [filters,_filters]\n }\n }\n }\n }else{\n const _steedosField = {\n ...steedosField,\n reference_to: api.data[steedosField.name].o\n }\n const referenceTo = getReferenceToSync(_steedosField);\n const referenceToField = _steedosField.reference_to_field || '_id';\n\n objectName = referenceTo.objectName\n valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n let value = api.data[_steedosField.name] && api.data[_steedosField.name].ids;\n filters = [referenceToField, \"in\", value || []];\n }\n api.data = {\n query: '{options:' + objectName + '(filters: ' + JSON.stringify(filters) + '){label: ' + labelFieldKey + ',value: ' + valueFieldKey + '}}'\n }\n return api;\n "),
20907
- "trackExpression": "${" + steedosField.name + "}",
20908
- "cache": 3000
20909
- },
21382
+ className: (_e = steedosField.amis) === null || _e === void 0 ? void 0 : _e.className,
21383
+ source: source,
20910
21384
  }, _$1.pick(steedosField.amis || {}, ['className', 'inline', 'label', 'labelAlign', 'name', 'labelRemark', 'description', 'placeholder', 'staticClassName', 'staticLabelClassName', 'staticInputClassName', 'staticSchema']));
20911
21385
  schema.placeholder = "";
20912
21386
  if (hideLabel) {
@@ -20914,12 +21388,12 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
20914
21388
  }
20915
21389
  return [2 /*return*/, schema];
20916
21390
  case 2:
20917
- if (!fStatic) return [3 /*break*/, 12];
21391
+ if (!fStatic) return [3 /*break*/, 13];
20918
21392
  if (!props.data.hasOwnProperty("_display")) return [3 /*break*/, 4];
20919
21393
  return [4 /*yield*/, index.convertSFieldToAmisField(steedosField, readonly, ctx)];
20920
21394
  case 3:
20921
21395
  // 有_display时保持原来的逻辑不变,不走以下新的逻辑,审批王中会特意传入_display以跳过后面新加的代码
20922
- return [2 /*return*/, _d.sent()];
21396
+ return [2 /*return*/, _f.sent()];
20923
21397
  case 4:
20924
21398
  schema = Object.assign({}, steedosField, {
20925
21399
  type: getAmisStaticFieldType(steedosField.type, steedosField.data_type, steedosField),
@@ -20932,27 +21406,33 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
20932
21406
  timeFormat: 'HH:mm',
20933
21407
  format: '1970-01-01THH:mm:00.000[Z]',
20934
21408
  });
20935
- return [3 /*break*/, 11];
21409
+ return [3 /*break*/, 12];
20936
21410
  case 5:
20937
21411
  if (!(steedosField.type === "percent")) return [3 /*break*/, 6];
20938
21412
  Object.assign(schema, {
20939
21413
  "percent": steedosField.scale ? steedosField.scale : true
20940
21414
  });
20941
- return [3 /*break*/, 11];
21415
+ return [3 /*break*/, 12];
20942
21416
  case 6:
20943
21417
  if (!(steedosField.type === "password")) return [3 /*break*/, 7];
20944
21418
  Object.assign(schema, {
20945
21419
  "revealPassword": false //没生效,需要用样式隐藏
20946
21420
  });
20947
- return [3 /*break*/, 11];
21421
+ return [3 /*break*/, 12];
20948
21422
  case 7:
20949
21423
  if (!(steedosField.type === "select")) return [3 /*break*/, 8];
20950
21424
  Object.assign(schema, {
20951
21425
  "placeholder": ""
20952
21426
  });
20953
- return [3 /*break*/, 11];
21427
+ return [3 /*break*/, 12];
20954
21428
  case 8:
20955
- if (!(steedosField.type === "image")) return [3 /*break*/, 9];
21429
+ if (!(steedosField.type === "color")) return [3 /*break*/, 9];
21430
+ Object.assign(schema, {
21431
+ "defaultColor": null
21432
+ });
21433
+ return [3 /*break*/, 12];
21434
+ case 9:
21435
+ if (!(steedosField.type === "image")) return [3 /*break*/, 10];
20956
21436
  Object.assign(schema, {
20957
21437
  enlargeAble: true,
20958
21438
  showToolbar: true,
@@ -20983,21 +21463,21 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
20983
21463
  return value;
20984
21464
  }
20985
21465
  });
20986
- return [3 /*break*/, 11];
20987
- case 9:
20988
- if (!(steedosField.type === "file")) return [3 /*break*/, 11];
21466
+ return [3 /*break*/, 12];
21467
+ case 10:
21468
+ if (!(steedosField.type === "file")) return [3 /*break*/, 12];
20989
21469
  return [4 /*yield*/, index.convertSFieldToAmisField(steedosField, readonly, ctx)];
20990
- case 10:
21470
+ case 11:
20991
21471
  // 附件static模式先保持原来的逻辑,依赖_display,审批王中相关功能在creator中
20992
21472
  // convertSFieldToAmisField中会合并steedosField.amis,所以也不需要再次合并steedosField.amis,直接return就好
20993
- return [2 /*return*/, _d.sent()];
20994
- case 11:
21473
+ return [2 /*return*/, _f.sent()];
21474
+ case 12:
20995
21475
  Object.assign(schema, steedosField.amis || {});
20996
21476
  if (hideLabel) {
20997
21477
  delete schema.label;
20998
21478
  }
20999
21479
  return [2 /*return*/, schema];
21000
- case 12:
21480
+ case 13:
21001
21481
  fieldAmis = steedosField.amis || {};
21002
21482
  if (!props.data.hasOwnProperty("_display")) {
21003
21483
  // 有_display时保持原来的逻辑不变,不走以下新的逻辑,审批王中会特意传入_display以跳过后面新加的代码
@@ -21055,16 +21535,19 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
21055
21535
  }
21056
21536
  }
21057
21537
  return [4 /*yield*/, index.convertSFieldToAmisField(steedosField, readonly, ctx)];
21058
- case 13:
21059
- schema = _d.sent();
21538
+ case 14:
21539
+ schema = _f.sent();
21540
+ if (hideLabel) {
21541
+ delete schema.label;
21542
+ }
21060
21543
  // console.log(`AmisSteedosField return schema`, schema)
21061
21544
  return [2 /*return*/, schema];
21062
- case 14: return [3 /*break*/, 16];
21063
- case 15:
21064
- error_1 = _d.sent();
21545
+ case 15: return [3 /*break*/, 17];
21546
+ case 16:
21547
+ error_1 = _f.sent();
21065
21548
  console.log("error", error_1);
21066
- return [3 /*break*/, 16];
21067
- case 16: return [2 /*return*/, null];
21549
+ return [3 /*break*/, 17];
21550
+ case 17: return [2 /*return*/, null];
21068
21551
  }
21069
21552
  });
21070
21553
  }); };
@@ -21307,7 +21790,7 @@ var AmisInputTable = function (props) { return __awaiter(void 0, void 0, void 0,
21307
21790
  return __generator(this, function (_a) {
21308
21791
  switch (_a.label) {
21309
21792
  case 0:
21310
- props.$schema, props.fields, props.name, props.id, props.data, props.columns, props.amis, props.className, props.tableClassName, props.footerToolbar;
21793
+ props.$schema, props.fields, props.name, props.id, props.data, props.columns, props.amis, props.className, props.tableClassName, props.footerToolbar, props.inlineEditMode, props.strictMode;
21311
21794
  return [4 /*yield*/, getAmisInputTableSchema(props)];
21312
21795
  case 1:
21313
21796
  amisSchema = _a.sent();