aldehyde 0.2.481 → 0.2.482

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.
Files changed (136) hide show
  1. package/lib/controls/direct-file-view/index.d.ts.map +1 -1
  2. package/lib/controls/direct-file-view/index.js +4 -4
  3. package/lib/controls/direct-file-view/index.js.map +1 -1
  4. package/lib/controls/direct-upload/index.d.ts.map +1 -1
  5. package/lib/controls/direct-upload/index.js +3 -3
  6. package/lib/controls/direct-upload/index.js.map +1 -1
  7. package/lib/controls/entry-control.d.ts +2 -1
  8. package/lib/controls/entry-control.d.ts.map +1 -1
  9. package/lib/controls/entry-control.js +10 -0
  10. package/lib/controls/entry-control.js.map +1 -1
  11. package/lib/controls/select/index.d.ts +8 -2
  12. package/lib/controls/select/index.d.ts.map +1 -1
  13. package/lib/controls/select/index.js +35 -13
  14. package/lib/controls/select/index.js.map +1 -1
  15. package/lib/controls/upload-read-excel/index.d.ts +10 -0
  16. package/lib/controls/upload-read-excel/index.d.ts.map +1 -0
  17. package/lib/controls/upload-read-excel/index.js +30 -0
  18. package/lib/controls/upload-read-excel/index.js.map +1 -0
  19. package/lib/detail/dtmpl.css +5 -0
  20. package/lib/detail/view/dtmpl-view.d.ts.map +1 -1
  21. package/lib/detail/view/dtmpl-view.js +12 -2
  22. package/lib/detail/view/dtmpl-view.js.map +1 -1
  23. package/lib/draw-canvas-edit/components/asset-bar/index.less +2 -2
  24. package/lib/draw-canvas-edit/components/main-header/index.d.ts.map +1 -1
  25. package/lib/draw-canvas-edit/components/main-header/index.js +32 -2
  26. package/lib/draw-canvas-edit/components/main-header/index.js.map +1 -1
  27. package/lib/draw-canvas-edit/components/render/components/index.less +61 -0
  28. package/lib/draw-canvas-edit/components/render/components/workstation-component.d.ts +7 -0
  29. package/lib/draw-canvas-edit/components/render/components/workstation-component.d.ts.map +1 -1
  30. package/lib/draw-canvas-edit/components/render/components/workstation-component.js +122 -15
  31. package/lib/draw-canvas-edit/components/render/components/workstation-component.js.map +1 -1
  32. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts.map +1 -1
  33. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js +19 -5
  34. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js.map +1 -1
  35. package/lib/draw-canvas-edit/components/render/index.d.ts.map +1 -1
  36. package/lib/draw-canvas-edit/components/render/index.js +15 -4
  37. package/lib/draw-canvas-edit/components/render/index.js.map +1 -1
  38. package/lib/draw-canvas-edit/components/render/tools/asset-tool.d.ts +2 -0
  39. package/lib/draw-canvas-edit/components/render/tools/asset-tool.d.ts.map +1 -1
  40. package/lib/draw-canvas-edit/components/render/tools/asset-tool.js +22 -11
  41. package/lib/draw-canvas-edit/components/render/tools/asset-tool.js.map +1 -1
  42. package/lib/draw-canvas-edit/components/render/tools/component-factory.js.map +1 -1
  43. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.d.ts +1 -0
  44. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.d.ts.map +1 -1
  45. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.js +35 -22
  46. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.js.map +1 -1
  47. package/lib/draw-canvas-edit/components/render/types.d.ts +3 -0
  48. package/lib/draw-canvas-edit/components/render/types.d.ts.map +1 -1
  49. package/lib/draw-canvas-edit/components/render/types.js.map +1 -1
  50. package/lib/draw-canvas-edit/components/setting-form/index.d.ts.map +1 -1
  51. package/lib/draw-canvas-edit/components/setting-form/index.js +10 -0
  52. package/lib/draw-canvas-edit/components/setting-form/index.js.map +1 -1
  53. package/lib/draw-canvas-edit/index.d.ts.map +1 -1
  54. package/lib/draw-canvas-edit/index.js +5 -2
  55. package/lib/draw-canvas-edit/index.js.map +1 -1
  56. package/lib/draw-canvas-view/index.less +7 -0
  57. package/lib/draw-canvas-view/view.d.ts.map +1 -1
  58. package/lib/draw-canvas-view/view.js +16 -21
  59. package/lib/draw-canvas-view/view.js.map +1 -1
  60. package/lib/form/dtmpl-form.d.ts.map +1 -1
  61. package/lib/form/dtmpl-form.js +11 -2
  62. package/lib/form/dtmpl-form.js.map +1 -1
  63. package/lib/form/field-group-form.d.ts.map +1 -1
  64. package/lib/form/field-group-form.js +1 -1
  65. package/lib/form/field-group-form.js.map +1 -1
  66. package/lib/form/form-Item-group.d.ts +2 -1
  67. package/lib/form/form-Item-group.d.ts.map +1 -1
  68. package/lib/form/form-Item-group.js +2 -2
  69. package/lib/form/form-Item-group.js.map +1 -1
  70. package/lib/list/card-list/card-list-item.d.ts.map +1 -1
  71. package/lib/list/card-list/card-list-item.js +3 -2
  72. package/lib/list/card-list/card-list-item.js.map +1 -1
  73. package/lib/list/card-list/index.less +1 -1
  74. package/lib/lowcode-components/carousel/index.js +3 -3
  75. package/lib/lowcode-components/carousel/index.js.map +1 -1
  76. package/lib/module/ltmpl-table.d.ts +1 -0
  77. package/lib/module/ltmpl-table.d.ts.map +1 -1
  78. package/lib/module/ltmpl-table.js +2 -2
  79. package/lib/module/ltmpl-table.js.map +1 -1
  80. package/lib/table/act-table.d.ts.map +1 -1
  81. package/lib/table/act-table.js +21 -20
  82. package/lib/table/act-table.js.map +1 -1
  83. package/lib/table/column/column-builder.d.ts.map +1 -1
  84. package/lib/table/column/column-builder.js +16 -15
  85. package/lib/table/column/column-builder.js.map +1 -1
  86. package/lib/table/column/index.less +22 -0
  87. package/lib/table/query-table.js +2 -1
  88. package/lib/table/query-table.js.map +1 -1
  89. package/lib/table/relation-table.d.ts +1 -1
  90. package/lib/table/relation-table.d.ts.map +1 -1
  91. package/lib/table/relation-table.js +5 -24
  92. package/lib/table/relation-table.js.map +1 -1
  93. package/lib/tmpl/hc-data-source.d.ts +1 -0
  94. package/lib/tmpl/hc-data-source.d.ts.map +1 -1
  95. package/lib/tmpl/hc-data-source.js +9 -0
  96. package/lib/tmpl/hc-data-source.js.map +1 -1
  97. package/lib/tmpl/interface.d.ts +5 -0
  98. package/lib/tmpl/interface.d.ts.map +1 -1
  99. package/lib/tmpl/interface.js.map +1 -1
  100. package/package.json +2 -1
  101. package/src/aldehyde/controls/direct-file-view/index.tsx +5 -4
  102. package/src/aldehyde/controls/direct-upload/index.tsx +4 -3
  103. package/src/aldehyde/controls/entry-control.tsx +11 -1
  104. package/src/aldehyde/controls/select/index.tsx +25 -14
  105. package/src/aldehyde/controls/upload-read-excel/index.tsx +44 -0
  106. package/src/aldehyde/detail/dtmpl.css +5 -0
  107. package/src/aldehyde/detail/view/dtmpl-view.tsx +22 -2
  108. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +2 -2
  109. package/src/aldehyde/draw-canvas-edit/components/main-header/index.tsx +33 -2
  110. package/src/aldehyde/draw-canvas-edit/components/render/components/index.less +61 -0
  111. package/src/aldehyde/draw-canvas-edit/components/render/components/workstation-component.tsx +131 -15
  112. package/src/aldehyde/draw-canvas-edit/components/render/handlers/selection-handlers.ts +17 -5
  113. package/src/aldehyde/draw-canvas-edit/components/render/index.ts +16 -3
  114. package/src/aldehyde/draw-canvas-edit/components/render/tools/asset-tool.ts +21 -7
  115. package/src/aldehyde/draw-canvas-edit/components/render/tools/component-factory.ts +1 -1
  116. package/src/aldehyde/draw-canvas-edit/components/render/tools/import-export-tool.ts +34 -22
  117. package/src/aldehyde/draw-canvas-edit/components/render/types.ts +3 -0
  118. package/src/aldehyde/draw-canvas-edit/components/setting-form/index.tsx +12 -0
  119. package/src/aldehyde/draw-canvas-edit/index.tsx +5 -2
  120. package/src/aldehyde/draw-canvas-view/index.less +7 -0
  121. package/src/aldehyde/draw-canvas-view/view.tsx +18 -21
  122. package/src/aldehyde/form/dtmpl-form.tsx +20 -1
  123. package/src/aldehyde/form/field-group-form.tsx +6 -5
  124. package/src/aldehyde/form/form-Item-group.tsx +5 -4
  125. package/src/aldehyde/list/card-list/card-list-item.tsx +3 -2
  126. package/src/aldehyde/list/card-list/index.less +1 -1
  127. package/src/aldehyde/lowcode-components/carousel/index.tsx +3 -3
  128. package/src/aldehyde/lowcode-components/data.d.ts +1 -0
  129. package/src/aldehyde/module/ltmpl-table.tsx +3 -2
  130. package/src/aldehyde/table/act-table.tsx +13 -14
  131. package/src/aldehyde/table/column/column-builder.tsx +18 -17
  132. package/src/aldehyde/table/column/index.less +22 -0
  133. package/src/aldehyde/table/query-table.tsx +1 -1
  134. package/src/aldehyde/table/relation-table.tsx +6 -21
  135. package/src/aldehyde/tmpl/hc-data-source.tsx +8 -0
  136. package/src/aldehyde/tmpl/interface.tsx +5 -0
@@ -286,7 +286,7 @@ export default class DtmplForm extends React.PureComponent<
286
286
  if (dtmplConfig) {
287
287
  groups = dtmplConfig.groups;
288
288
  }
289
- return groups.map((item) => {
289
+ const groupElements = groups.map((item) => {
290
290
  if (item.type == "embed") {
291
291
  let codeSource = undefined;
292
292
  //code 从来源字段里面拿
@@ -430,11 +430,30 @@ export default class DtmplForm extends React.PureComponent<
430
430
  dataCode={dtmplData ? dtmplData.code : undefined}
431
431
  valueMap={dtmplData ? dtmplData.fieldMap : undefined}
432
432
  valueFieldMap={valueFieldMap}
433
+ editStatus={dtmplData?.code ? "changed" : "new"} // 新增或修改状态
433
434
  />}
434
435
  </CollapseCard>
435
436
  );
436
437
  }
437
438
  });
439
+
440
+ if (dtmplConfig?.editRactions?.length) { // 关系操作
441
+ const viewRactions = dtmplConfig.editRactions.map(item => {
442
+ return <CollapseCard
443
+ title={item.title}
444
+ key={item.id}
445
+ id={item.id}
446
+ className="hoverable"
447
+ styles={{ header: { background: "#f2f4f5" } }}
448
+ loading={loading}
449
+ >
450
+ <LtmplTable funcMode="common" serverKey={serverKey} sourceId={item.id} mainCode={dtmplData?.code} />
451
+ </CollapseCard>;
452
+ });
453
+ groupElements.push(...viewRactions);
454
+ }
455
+
456
+ return groupElements;
438
457
  };
439
458
 
440
459
  onValuesChange = (changedValues, allValues) => {
@@ -16,7 +16,7 @@ export interface FieldGroupFormProps {
16
16
  onFinish: (value: DtmplData) => void;
17
17
  }
18
18
 
19
- interface FieldGroupFormStat {}
19
+ interface FieldGroupFormStat { }
20
20
 
21
21
  export default class Form extends React.PureComponent<
22
22
  FieldGroupFormProps,
@@ -29,7 +29,7 @@ export default class Form extends React.PureComponent<
29
29
  static defaultProps = {
30
30
  }
31
31
 
32
- async componentDidMount() {}
32
+ async componentDidMount() { }
33
33
 
34
34
  onSubmit = (values: any) => {
35
35
  const { dtmplData, fieldGroupConfig } = this.props;
@@ -87,14 +87,15 @@ export default class Form extends React.PureComponent<
87
87
  >
88
88
  {this.selectRelation()}
89
89
  <FormItemGroup
90
- maxColsOnRow={fieldGroupConfig && fieldGroupConfig.addOrEditType=="doubleCol"?2:1}
91
- dataCode={dtmplData ? dtmplData.code : undefined}
90
+ maxColsOnRow={fieldGroupConfig && fieldGroupConfig.addOrEditType == "doubleCol" ? 2 : 1}
91
+ dataCode={dtmplData ? dtmplData.code : undefined}
92
92
  serverKey={serverKey}
93
93
  formRef={formRef}
94
94
  nameAttr={"id"}
95
95
  fields={fieldGroupConfig ? fieldGroupConfig.fields : undefined}
96
96
  valueMap={dtmplData ? dtmplData.fieldMap : {}}
97
- ></FormItemGroup>
97
+ editStatus={dtmplData ? dtmplData.editStatus : "new"}
98
+ />
98
99
  </AntdForm>
99
100
  </>
100
101
  );
@@ -1,6 +1,6 @@
1
1
  import React, { RefObject, useState, useMemo } from "react";
2
2
  import { Col, Form, Row, Popconfirm } from "antd";
3
- import { FieldConfig } from "../tmpl/interface";
3
+ import { FieldConfig, EditStatus } from "../tmpl/interface";
4
4
  import EntryControl from "../controls/entry-control";
5
5
  import Units from "../units";
6
6
  import { FormInstance } from "antd/lib/form/hooks/useForm";
@@ -12,11 +12,11 @@ const FormItem = Form.Item;
12
12
 
13
13
  // 渲染表单项,如果有关联项,则在更改值时弹出确认框,否则直接更改值
14
14
  const RenderEntryControl = ({ fieldValue, item, props, translate, getMainCode, ...otherProps }) => {
15
- const { mainCode, serverKey, dataCode, valueFieldMap } = props;
15
+ const { mainCode, serverKey, dataCode, valueFieldMap, editStatus } = props;
16
16
  const { onChange } = otherProps;
17
17
  const [isUpdateItem, setIsUpdateItem] = useState<boolean>(false);
18
18
  const [value, setValue] = useState<any>(fieldValue);
19
- const controlProps = { dataCode, serverKey, mainCode: getMainCode(item, mainCode), value: fieldValue, fieldConfig: item, ...otherProps };
19
+ const controlProps = { dataCode, serverKey, mainCode: getMainCode(item, mainCode), value: fieldValue, fieldConfig: item, editStatus, ...otherProps };
20
20
 
21
21
  const popconfirm = useMemo(() => {
22
22
  if (!valueFieldMap) {
@@ -65,7 +65,8 @@ export interface FieldGroupProps {
65
65
  formRef?: RefObject<FormInstance>;
66
66
  dataCode?: string,
67
67
  layout?: "horizontal" | "vertical";
68
- valueFieldMap?: { [key: string]: any } // 表单关联项配置
68
+ valueFieldMap?: { [key: string]: any }; // 表单关联项配置
69
+ editStatus?: EditStatus
69
70
  }
70
71
 
71
72
  interface FieldGroupState {
@@ -19,6 +19,7 @@ const dataKeys = ["primaryColumn", "primaryColumnLabel", "secondColumn", "second
19
19
  const Index = (props: Props) => {
20
20
  const { cardListConfig, item, renderOpt, serverKey, sourceId } = props;
21
21
  const { buttons, customViewPagePath, mainCode } = cardListConfig;
22
+ const cardColSpan = Math.trunc(24 / (cardListConfig.colNumOnRow || 2));
22
23
  const { translate } = useLocale();
23
24
  const [data, setData] = useState({});
24
25
  const [detailOpen, setDetailOpen] = useState<boolean>(false);
@@ -91,8 +92,8 @@ const Index = (props: Props) => {
91
92
  <div className="card-show-cols">
92
93
  <Row gutter={6}>
93
94
  {data["cardShowCols"].map((col, index) => // 卡片展示字段是两个,则右侧对齐
94
- <Col className="card-show-col" span={12} key={index} style={data["cardShowCols"].length < 3 && index % 2 ? { justifyContent: "flex-end" } : {}}>
95
- <div className="card-show-col-title">{translate("${" + col.title + "}")}:</div>
95
+ <Col className="card-show-col" span={cardColSpan} key={index} style={data["cardShowCols"].length < 3 && index % 2 ? { justifyContent: "flex-end" } : {}}>
96
+ {cardListConfig?.notDisplayFieldName ? "" : <div className="card-show-col-title">{translate("${" + col.title + "}")}:</div>}
96
97
  <div className="card-show-col-value">{col.value || col.value === 0 ? col.element : "-"}</div>
97
98
  </Col>)
98
99
  }
@@ -80,7 +80,7 @@
80
80
 
81
81
  .card-list-item-main {
82
82
  width: 100%;
83
- min-height: 100px;
83
+ // min-height: 100px;
84
84
  margin-bottom: 12px;
85
85
  background-color: #f5f5f5;
86
86
  flex-grow: 1;
@@ -54,7 +54,7 @@ const handleValue = (val: string, ossConfig: OssConfig,) => {
54
54
  if (!ossConfig) {
55
55
  return;
56
56
  }
57
- return `http://${ossConfig.bucket}.${ossConfig.endpoint}/${val}`;
57
+ return `${ossConfig.protocol || "http"}://${ossConfig.bucket}.${ossConfig.endpoint}/${val}`;
58
58
  }
59
59
  };
60
60
 
@@ -104,8 +104,8 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
104
104
  const { translate } = useLocale();
105
105
 
106
106
  const getOssConfig = (serverKey: string) => {
107
- const { accessKeyId, accessKeySecret, bucket, endpoint } = ProgramConfig.getExtendServers(serverKey) || {};
108
- const temObj = { accessKeyId, accessKeySecret, bucket, endpoint }
107
+ const { accessKeyId, accessKeySecret, bucket, endpoint, protocol } = ProgramConfig.getExtendServers(serverKey) || {};
108
+ const temObj = { accessKeyId, accessKeySecret, bucket, endpoint, protocol }
109
109
  return temObj;
110
110
  }
111
111
 
@@ -16,4 +16,5 @@ export interface OssConfig {
16
16
  accessKeySecret: string;
17
17
  bucket: string;
18
18
  endpoint: string;
19
+ protocol: string;
19
20
  }
@@ -38,6 +38,7 @@ export interface LtmplTableProps {
38
38
  showAggregates?: boolean; // 是否显示统计卡片数据
39
39
  deleteCallback?: (val: object) => void; // 删除回调
40
40
  loadDataCallback?: (val: object[]) => void; // 请求数据回调函数
41
+ defRowCardCount?: number; // 卡片展示模式-默认行卡片数量
41
42
  }
42
43
 
43
44
  export interface LtmplTableState {
@@ -263,7 +264,7 @@ class LtmplTable extends React.PureComponent<LtmplTableProps, LtmplTableState> {
263
264
  tip, title, collapsible,
264
265
  initCollapse, doCustomEdit, doCustomCreate,
265
266
  serverKey, rowOperatable, readOnly, defShowType, showPagination, showAggregates, deleteCallback,
266
- loadDataCallback
267
+ loadDataCallback, defRowCardCount
267
268
  } = this.props;
268
269
  const { translate } = this.context;
269
270
 
@@ -286,7 +287,7 @@ class LtmplTable extends React.PureComponent<LtmplTableProps, LtmplTableState> {
286
287
  criteriaData={criteriaData}
287
288
  customEditable={doCustomEdit ? true : false}
288
289
  customCreatable={doCustomCreate ? true : false}
289
- ltmplConfig={ltmplConfigRes.ltmplConfig}
290
+ ltmplConfig={defRowCardCount ? { ...ltmplConfigRes.ltmplConfig, rowCardCount: defRowCardCount } : ltmplConfigRes.ltmplConfig}
290
291
  defShowType={defShowType}
291
292
  showPagination={showPagination}
292
293
  showAggregates={showAggregates}
@@ -647,7 +647,7 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
647
647
  changeViewModel = (viewModels) => {
648
648
  const { setUserPageConfig } = this.props;
649
649
  const { hiddenColIds, hiddenRowCodes, sortedColConfigs, viewModels: oldViewModels } = this.state;
650
- setUserPageConfig({ viewModels });
650
+ setUserPageConfig && setUserPageConfig({ viewModels });
651
651
  this.setState({ viewModels }, () => {
652
652
  if (viewModels.length && viewModels.includes("ganttChart") !== oldViewModels.includes("ganttChart")) {
653
653
  this.loadData(hiddenColIds, hiddenRowCodes, sortedColConfigs); // 前后选择是否存在甘特图,刷新数据
@@ -658,7 +658,7 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
658
658
  changeHiddenColumns = (hiddenColIds: string[]) => {
659
659
  const { setUserPageConfig } = this.props;
660
660
  this.setState({ showL2Chart: false, hiddenColIds });
661
- setUserPageConfig({ hiddenColIds });
661
+ setUserPageConfig && setUserPageConfig({ hiddenColIds });
662
662
  };
663
663
 
664
664
  doSelectedAction = async (actionId: string, codes, params: object) => {
@@ -933,14 +933,14 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
933
933
  const { setUserPageConfig } = this.props;
934
934
  this.setState({ sortedColConfigs });
935
935
  const sortedColIds = sortedColConfigs.map(r => r.id);
936
- setUserPageConfig({ sortedColIds });
936
+ setUserPageConfig && setUserPageConfig({ sortedColIds });
937
937
  };
938
938
 
939
939
  // 更新本地缓存列宽度
940
940
  onChangeResize = (colResize: { [key: string]: number }) => {
941
941
  const { setUserPageConfig, userPageConfig } = this.props;
942
942
  const oldColResize = userPageConfig?.colResize || {};
943
- setUserPageConfig({ colResize: { ...oldColResize, ...colResize } });
943
+ setUserPageConfig && setUserPageConfig({ colResize: { ...oldColResize, ...colResize } });
944
944
  }
945
945
 
946
946
  getAddTmplButton = (classAddConfigs: ClassAddConfig[]) => {
@@ -1546,7 +1546,7 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
1546
1546
  );
1547
1547
 
1548
1548
  let { buttons, extDisplayConfig, rowCardCount, customViewPagePath, splitTabShowType } = ltmplConfig;
1549
- let { primaryColumn, primaryColumnLabel, secondColumn, secondColumnLabel, mainPicture, mainPictureLabel, labelColumn, cardShowCols } = extDisplayConfig;
1549
+ let { primaryColumn, primaryColumnLabel, secondColumn, secondColumnLabel, mainPicture, mainPictureLabel, labelColumn, cardShowCols, notDisplayFieldName, colNumOnRow } = extDisplayConfig;
1550
1550
  let displayCriteriaCard: boolean = false;
1551
1551
  if (funcMode == "simple" || funcMode == "common") {
1552
1552
  displayCriteriaCard = false;
@@ -1607,7 +1607,7 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
1607
1607
  groupIColumns={ltmplConfig.groupIColumns}
1608
1608
  doSearch={this.actTableDoSearch}
1609
1609
  sortColumnData={sortColumnData}
1610
- cardListConfig={{ primaryColumn, primaryColumnLabel, secondColumn, secondColumnLabel, mainPicture, mainPictureLabel, labelColumn, cardShowCols, rowCardCount, buttons, customViewPagePath, mainCode }}
1610
+ cardListConfig={{ primaryColumn, primaryColumnLabel, secondColumn, secondColumnLabel, mainPicture, mainPictureLabel, labelColumn, cardShowCols, rowCardCount, buttons, customViewPagePath, mainCode, notDisplayFieldName, colNumOnRow }}
1611
1611
  ltmplConfig={ltmplConfig}
1612
1612
  showView={showView}
1613
1613
  showPagination={showPagination}
@@ -1644,10 +1644,10 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
1644
1644
  ""
1645
1645
  )}
1646
1646
  <div className="actTable">
1647
- <Row>
1648
- <Col span={24}>
1649
- {funcMode == "complete" || funcMode == "common" ? (
1650
- collapsible ? null : (
1647
+ {["complete", "common"].includes(funcMode) ?
1648
+ <Row>
1649
+ <Col span={24}>
1650
+ {collapsible ? null : (
1651
1651
  <span>
1652
1652
  {ltmplConfig.header ? (
1653
1653
  <div
@@ -1667,10 +1667,9 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
1667
1667
  <p className="fr" style={{ marginBottom: "4px" }}>{this.renderHeaderButtons()}</p>
1668
1668
  </>}
1669
1669
  </span>
1670
- )
1671
- ) : null}
1672
- </Col>
1673
- </Row>
1670
+ )}
1671
+ </Col>
1672
+ </Row> : null}
1674
1673
  {(<Row><Col span={24}><Layout hasSider style={{ backgroundColor: "#fff" }}>
1675
1674
  <Sider
1676
1675
  width={ltreeEntitySelect ? 260 : 0}
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import { ActionRenderProps, ColumnConfig, DtmplData, LtmplConfig, FieldConfig, CustomButton, CQueryConfig } from "../../tmpl/interface";
3
3
  import TableUnits from "../table-util";
4
4
  import SupportInputTypes from "../../tmpl/control-type-supportor";
5
- import { Button, Popconfirm, Popover, Space, Tooltip, Form as AntdForm } from "antd";
5
+ import { Button, Popconfirm, Popover, Space, Tooltip, Form as AntdForm, theme } from "antd";
6
6
  import { SortableHandle } from "react-sortable-hoc";
7
7
  import {
8
8
  AlignLeftOutlined, CopyOutlined, DeleteOutlined,
@@ -12,7 +12,7 @@ import {
12
12
  FormOutlined,
13
13
  KeyOutlined,
14
14
  MenuOutlined, QuestionCircleOutlined, PlaySquareOutlined,
15
- SettingOutlined
15
+ SettingOutlined, UpSquareFilled, DownSquareFilled
16
16
  } from "@ant-design/icons";
17
17
  import ActionUtils from "../../controls/action/utils";
18
18
  import ViewButton from "../../detail/button/view-button";
@@ -31,20 +31,11 @@ import "./index.less";
31
31
 
32
32
  const FormItem = AntdForm.Item;
33
33
 
34
- const isDisabled = (record: DtmplData, item: FieldConfig) => {
35
- if (!item.rowEditType) {
36
- return false;
37
- }
38
- let isNew: boolean = record.editStatus === "new";
39
- let type = item.rowEditType;
40
- if (type === "editable" || (type === "editonly" && !isNew) || (type === "addonly" && isNew)) {
41
- return false;
42
- } else if (type === "readonly") {
43
- return true;
44
- }
45
- return true;
46
- }
47
-
34
+ // 负责提取 token
35
+ const ThemeToken = (props) => {
36
+ const { token } = theme.useToken();
37
+ return props.children(token); // 使用 render props 模式
38
+ };
48
39
 
49
40
  interface ColumnBuilderProps extends ActionRenderProps {
50
41
  ltmplConfig: LtmplConfig,
@@ -127,6 +118,15 @@ export default {
127
118
  const order = this.handleColumnOrder(column["dataIndex"], sortColumns);
128
119
  if (item.sortable) {
129
120
  TableUnits.sort(column, itemType, order);
121
+ } else if (item.pageSortable) {
122
+ // column["sorter"] = (a, b) => a[column["dataIndex"]] - b[column["dataIndex"]];
123
+ // column["sortIcon"] = ({ sortOrder }) =>
124
+ // <ThemeToken>
125
+ // {(token) => <span className="pageSortable" >
126
+ // <UpSquareFilled className="ascend" style={sortOrder === 'ascend' ? { color: token.colorPrimary } : {}} />
127
+ // <DownSquareFilled className="descend" style={sortOrder === 'descend' ? { color: token.colorPrimary } : {}} />
128
+ // </span>}
129
+ // </ThemeToken>
130
130
  }
131
131
  }
132
132
  }
@@ -228,8 +228,9 @@ export default {
228
228
  initialValue={record[item.id]}>
229
229
  <EntryControl
230
230
  serverKey={serverKey}
231
- fieldConfig={{ ...item, disabled: isDisabled(record, item) }}
231
+ fieldConfig={{ ...item }}
232
232
  value={record[item.id]}
233
+ editStatus={record.editStatus}
233
234
  />
234
235
  </FormItem> :
235
236
  <div className={record['dataType'] ? record['dataType'] === "小计" ? "xiaoji" : 'heji' : ""}>
@@ -61,4 +61,26 @@
61
61
  .column-action {
62
62
  display: block;
63
63
  }
64
+ }
65
+
66
+ .pageSortable {
67
+ display: inline-flex;
68
+ flex-direction: column;
69
+ margin-left: 4;
70
+
71
+ .ascend,
72
+ .descend {
73
+ font-size: var(--ant-font-size-icon);
74
+ color: var(--ant-table-header-icon-color);
75
+ }
76
+ }
77
+
78
+ .ant-table-column-sorters:hover {
79
+ .pageSortable {
80
+
81
+ .ascend,
82
+ .descend {
83
+ color: var(--ant-table-header-icon-hover-color);
84
+ }
85
+ }
64
86
  }
@@ -355,7 +355,7 @@ class QueryTable extends React.PureComponent<QueryTableProps, QueryTableStat> {
355
355
 
356
356
  onChange(pagination, filters, sorter, extra) {
357
357
  console.log("params", pagination, filters, sorter, extra);
358
- if (extra.action === "sort") {
358
+ if (extra.action === "sort" && typeof sorter.column?.sorter !== "function") { // 非函数排序处理
359
359
  let new_sort_serial_number = new Date().getTime();
360
360
  if (new_sort_serial_number - this.sort_serial_number < 2000) {
361
361
  const { translate } = this.context;
@@ -158,24 +158,6 @@ class RelationTable extends React.PureComponent<
158
158
  return dataSource;
159
159
  };
160
160
 
161
- isDisabled = (record: DtmplData, item: FieldConfig) => {
162
- if (!item.rowEditType) {
163
- return false;
164
- }
165
- let isNew: boolean = record.editStatus && record.editStatus == "new";
166
- let type = item.rowEditType;
167
- if (type == "editable") {
168
- return false;
169
- } else if (type == "readonly") {
170
- return true;
171
- } else if (type == "editonly" && !isNew) {
172
- return false;
173
- } else if (type == "addonly" && isNew) {
174
- return false;
175
- }
176
- return true;
177
- }
178
-
179
161
  buildColumns = () => {
180
162
  const { viewOrEdit, fieldGroupConfig, serverKey, parentFormInstance } = this.props;
181
163
  const {
@@ -211,7 +193,7 @@ class RelationTable extends React.PureComponent<
211
193
  }
212
194
  item.baseCriteria = {
213
195
  ...item.baseCriteria,
214
- "secondCriterion": parentFormInstance.getFieldValue(item.relValueField.id)
196
+ "secondCriterion": parentFormInstance?.getFieldValue?.(item.relValueField.id)
215
197
  };
216
198
  item.configChanged = true;
217
199
  }
@@ -224,8 +206,9 @@ class RelationTable extends React.PureComponent<
224
206
  initialValue={record[item.id]}>
225
207
  <EntryControl
226
208
  serverKey={serverKey}
227
- fieldConfig={{ ...item, disabled: this.isDisabled(record, item) }}
209
+ fieldConfig={{ ...item }}
228
210
  value={record[item.id]}
211
+ editStatus={record.editStatus}
229
212
  /></FormItem> :
230
213
  <ViewControl
231
214
  serverKey={serverKey}
@@ -857,6 +840,8 @@ class RelationTable extends React.PureComponent<
857
840
  addOrEditType == "tableRow" ?
858
841
  <>
859
842
  <Button
843
+ styles={{ root: { marginBottom: "10px" } }}
844
+ disabled={buttonDisabled}
860
845
  onClick={() => this.addNewRow(undefined)}>{translate("${添加一行}")}</Button>
861
846
  {batchAddFileField ?
862
847
  <EntryControl value={uploadingFiles} onChange={this.uploadFiles}
@@ -918,7 +903,7 @@ class RelationTable extends React.PureComponent<
918
903
  ""
919
904
  )}
920
905
  {fieldGroupConfig.min && (!value || value.length <= 0) ? (
921
- <Text style={{ color: "red" }}>
906
+ <Text style={{ color: "red", display: 'inline-block', marginBottom: "10px" }}>
922
907
  {translate("${请选择或添加}")}
923
908
  {translate("${" + fieldGroupConfig.title + "}")}
924
909
  </Text>
@@ -369,6 +369,14 @@ HCDataSource.getEnums = function (mstrucId: string): EnumItem[] {
369
369
  return enumMap.get(mstrucId);
370
370
  };
371
371
 
372
+ // 获取枚举,缓存没有则请求
373
+ HCDataSource.getSelectEnums = async function (serverKey: string, mstrucId: string): Promise<EnumItem[]> {
374
+ if (!enumMap.has(mstrucId)) {
375
+ await loadEnum(serverKey, [mstrucId]);
376
+ }
377
+ return enumMap.get(mstrucId);
378
+ };
379
+
372
380
  HCDataSource.getEnumsValueMap = function (
373
381
  mstrucId: string
374
382
  ): Map<string, string> {
@@ -63,6 +63,8 @@ export interface CardListConfig {
63
63
  buttons?: string[];
64
64
  customViewPagePath?: string;
65
65
  mainCode?: string;
66
+ notDisplayFieldName?: boolean;
67
+ colNumOnRow?: number;
66
68
  }
67
69
 
68
70
  export interface QueryTableProps extends ReportTableProps {
@@ -459,6 +461,7 @@ export interface FieldConfig extends FieldBase {
459
461
  defaultDtmplData?: DtmplData;
460
462
  optionCodeColId?: string;
461
463
  sortable?: boolean;
464
+ pageSortable?: boolean; // 页内排序
462
465
  itemBreakLine?: boolean;
463
466
  configChanged?: boolean;
464
467
  rowEditType?: "editable" | "readonly" | "editonly" | "addonly";
@@ -635,6 +638,8 @@ export interface LtmplConfig extends SelectConfig {
635
638
  mainPictureLabel?: ColumnConfig;
636
639
  labelColumn?: ColumnConfig;
637
640
  cardShowCols?: ColumnConfig[];
641
+ notDisplayFieldName?: boolean;
642
+ colNumOnRow?: number; // 卡片展示字段每行列数
638
643
  };
639
644
  rowCardCount?: number;
640
645
  defaultDtmplData?: DtmplData;