aldehyde 0.2.516 → 0.2.518

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 (186) hide show
  1. package/lib/controls/auto-complete/index.d.ts.map +1 -1
  2. package/lib/controls/auto-complete/index.js +2 -4
  3. package/lib/controls/auto-complete/index.js.map +1 -1
  4. package/lib/controls/direct-file-view/index.d.ts.map +1 -1
  5. package/lib/controls/direct-file-view/index.js +4 -1
  6. package/lib/controls/direct-file-view/index.js.map +1 -1
  7. package/lib/controls/entry-control.d.ts.map +1 -1
  8. package/lib/controls/entry-control.js +4 -0
  9. package/lib/controls/entry-control.js.map +1 -1
  10. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +99 -99
  11. package/lib/controls/view-control.d.ts.map +1 -1
  12. package/lib/controls/view-control.js +1 -0
  13. package/lib/controls/view-control.js.map +1 -1
  14. package/lib/detail/view/act-dtmpl-view.d.ts +2 -0
  15. package/lib/detail/view/act-dtmpl-view.d.ts.map +1 -1
  16. package/lib/detail/view/act-dtmpl-view.js +3 -2
  17. package/lib/detail/view/act-dtmpl-view.js.map +1 -1
  18. package/lib/detail/view/dtmpl-view.d.ts +11 -0
  19. package/lib/detail/view/dtmpl-view.d.ts.map +1 -1
  20. package/lib/detail/view/dtmpl-view.js +20 -17
  21. package/lib/detail/view/dtmpl-view.js.map +1 -1
  22. package/lib/detail/view/field-view-group.d.ts +9 -0
  23. package/lib/detail/view/field-view-group.d.ts.map +1 -1
  24. package/lib/detail/view/field-view-group.js +17 -15
  25. package/lib/detail/view/field-view-group.js.map +1 -1
  26. package/lib/detail/view/index.less +6 -0
  27. package/lib/draw-canvas-edit/components/asset-bar/index.less +35 -35
  28. package/lib/draw-canvas-edit/components/main-header/index.less +23 -23
  29. package/lib/form/dtmpl-form.d.ts +12 -1
  30. package/lib/form/dtmpl-form.d.ts.map +1 -1
  31. package/lib/form/dtmpl-form.js +35 -27
  32. package/lib/form/dtmpl-form.js.map +1 -1
  33. package/lib/form/form-Item-group.d.ts +9 -0
  34. package/lib/form/form-Item-group.d.ts.map +1 -1
  35. package/lib/form/form-Item-group.js +13 -3
  36. package/lib/form/form-Item-group.js.map +1 -1
  37. package/lib/list/card-list/card-list-item.d.ts.map +1 -1
  38. package/lib/list/card-list/card-list-item.js +28 -6
  39. package/lib/list/card-list/card-list-item.js.map +1 -1
  40. package/lib/lowcode-components/base-table/index.less +61 -61
  41. package/lib/lowcode-components/data-number/index.d.ts +2 -0
  42. package/lib/lowcode-components/data-number/index.d.ts.map +1 -1
  43. package/lib/lowcode-components/data-number/index.js +21 -1
  44. package/lib/lowcode-components/data-number/index.js.map +1 -1
  45. package/lib/lowcode-components/data-number/index.less +10 -10
  46. package/lib/lowcode-components/date-time/index.less +4 -4
  47. package/lib/lowcode-components/four-angle-glow-border/index.less +49 -49
  48. package/lib/lowcode-components/line-chart/index.js +7 -7
  49. package/lib/lowcode-components/line-chart/index.js.map +1 -1
  50. package/lib/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
  51. package/lib/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
  52. package/lib/lowcode-components/text-scroller/index.less +28 -28
  53. package/lib/module/dtmpl-edit-page.d.ts +1 -0
  54. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  55. package/lib/module/dtmpl-edit-page.js +5 -5
  56. package/lib/module/dtmpl-edit-page.js.map +1 -1
  57. package/lib/module/dtmpl-view-card.d.ts +2 -0
  58. package/lib/module/dtmpl-view-card.d.ts.map +1 -1
  59. package/lib/module/dtmpl-view-card.js +7 -4
  60. package/lib/module/dtmpl-view-card.js.map +1 -1
  61. package/lib/module/dtmpl-view-drawer.d.ts +2 -0
  62. package/lib/module/dtmpl-view-drawer.d.ts.map +1 -1
  63. package/lib/module/dtmpl-view-drawer.js +3 -2
  64. package/lib/module/dtmpl-view-drawer.js.map +1 -1
  65. package/lib/module/dtmpl-view-modal.d.ts +2 -0
  66. package/lib/module/dtmpl-view-modal.d.ts.map +1 -1
  67. package/lib/module/dtmpl-view-modal.js +3 -2
  68. package/lib/module/dtmpl-view-modal.js.map +1 -1
  69. package/lib/module/ttmpl-table.d.ts.map +1 -1
  70. package/lib/module/ttmpl-table.js +1 -1
  71. package/lib/module/ttmpl-table.js.map +1 -1
  72. package/lib/routable/index.less +5 -0
  73. package/lib/routable/ltmpl-route.d.ts +1 -0
  74. package/lib/routable/ltmpl-route.d.ts.map +1 -1
  75. package/lib/routable/ltmpl-route.js +37 -7
  76. package/lib/routable/ltmpl-route.js.map +1 -1
  77. package/lib/routable/ttmpl-table-route.d.ts.map +1 -1
  78. package/lib/routable/ttmpl-table-route.js +2 -1
  79. package/lib/routable/ttmpl-table-route.js.map +1 -1
  80. package/lib/table/act-table.d.ts +3 -0
  81. package/lib/table/act-table.d.ts.map +1 -1
  82. package/lib/table/act-table.js +9 -6
  83. package/lib/table/act-table.js.map +1 -1
  84. package/lib/table/column/column-builder.d.ts.map +1 -1
  85. package/lib/table/column/column-builder.js +22 -10
  86. package/lib/table/column/column-builder.js.map +1 -1
  87. package/lib/table/pagination.js +1 -1
  88. package/lib/table/pagination.js.map +1 -1
  89. package/lib/table/relation-table.d.ts +5 -0
  90. package/lib/table/relation-table.d.ts.map +1 -1
  91. package/lib/table/relation-table.js +54 -10
  92. package/lib/table/relation-table.js.map +1 -1
  93. package/lib/tmpl/control-type-supportor.d.ts.map +1 -1
  94. package/lib/tmpl/control-type-supportor.js +1 -0
  95. package/lib/tmpl/control-type-supportor.js.map +1 -1
  96. package/lib/tmpl/hcservice-v3.d.ts +2 -0
  97. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  98. package/lib/tmpl/hcservice-v3.js +26 -0
  99. package/lib/tmpl/hcservice-v3.js.map +1 -1
  100. package/lib/tmpl/interface.d.ts +8 -1
  101. package/lib/tmpl/interface.d.ts.map +1 -1
  102. package/lib/tmpl/interface.js.map +1 -1
  103. package/lib/units/index.d.ts +2 -0
  104. package/lib/units/index.d.ts.map +1 -1
  105. package/lib/units/index.js +45 -0
  106. package/lib/units/index.js.map +1 -1
  107. package/package.json +1 -1
  108. package/src/aldehyde/controls/auto-complete/index.tsx +4 -6
  109. package/src/aldehyde/controls/direct-file-view/index.tsx +4 -1
  110. package/src/aldehyde/controls/entry-control.tsx +4 -0
  111. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +99 -99
  112. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +156 -156
  113. package/src/aldehyde/controls/view-control.tsx +1 -0
  114. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +4 -1
  115. package/src/aldehyde/detail/view/dtmpl-view.tsx +20 -26
  116. package/src/aldehyde/detail/view/field-view-group.tsx +20 -22
  117. package/src/aldehyde/detail/view/index.less +6 -0
  118. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +35 -35
  119. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +110 -110
  120. package/src/aldehyde/draw-canvas-edit/components/main-header/index.less +23 -23
  121. package/src/aldehyde/draw-canvas-edit/components/main-header/index.tsx +263 -263
  122. package/src/aldehyde/draw-canvas-edit/components/render/draws/index.ts +7 -7
  123. package/src/aldehyde/draw-canvas-edit/components/render/graphs/base-graph.ts +241 -241
  124. package/src/aldehyde/draw-canvas-edit/components/render/graphs/circle.ts +699 -699
  125. package/src/aldehyde/draw-canvas-edit/components/render/graphs/curve.ts +500 -500
  126. package/src/aldehyde/draw-canvas-edit/components/render/graphs/index.ts +5 -5
  127. package/src/aldehyde/draw-canvas-edit/components/render/graphs/line.ts +493 -493
  128. package/src/aldehyde/draw-canvas-edit/components/render/graphs/rect.ts +680 -680
  129. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-handlers.ts +68 -68
  130. package/src/aldehyde/draw-canvas-edit/components/render/handlers/graph-handlers.ts +113 -113
  131. package/src/aldehyde/draw-canvas-edit/components/render/handlers/index.ts +9 -9
  132. package/src/aldehyde/draw-canvas-edit/components/render/handlers/key-move-handlers.ts +49 -49
  133. package/src/aldehyde/draw-canvas-edit/components/render/handlers/link-handlers.ts +45 -45
  134. package/src/aldehyde/draw-canvas-edit/components/render/handlers/shutcut-handlers.ts +45 -45
  135. package/src/aldehyde/draw-canvas-edit/components/render/handlers/text-handlers.ts +81 -81
  136. package/src/aldehyde/draw-canvas-edit/components/render/handlers/zoom-handlers.ts +59 -59
  137. package/src/aldehyde/draw-canvas-edit/components/render/tools/align-tool.ts +89 -89
  138. package/src/aldehyde/draw-canvas-edit/components/render/tools/asset-tool.ts +154 -154
  139. package/src/aldehyde/draw-canvas-edit/components/render/tools/link-tool.ts +222 -222
  140. package/src/aldehyde/draw-canvas-edit/components/render/tools/z-index-tool.ts +224 -224
  141. package/src/aldehyde/draw-canvas-edit/components/render/utils/a-star.ts +116 -116
  142. package/src/aldehyde/draw-canvas-edit/components/render/utils/bezier-scene-func.ts +72 -72
  143. package/src/aldehyde/draw-canvas-edit/components/setting-form/imag-upload.tsx +119 -119
  144. package/src/aldehyde/form/dtmpl-form.tsx +59 -55
  145. package/src/aldehyde/form/form-Item-group.tsx +16 -5
  146. package/src/aldehyde/layout4/imgs/user.svg +26 -26
  147. package/src/aldehyde/list/card-list/card-list-item.tsx +26 -7
  148. package/src/aldehyde/lowcode-components/base-color-block/index.tsx +31 -31
  149. package/src/aldehyde/lowcode-components/base-table/index.less +61 -61
  150. package/src/aldehyde/lowcode-components/data-number/index.less +10 -10
  151. package/src/aldehyde/lowcode-components/data-number/index.tsx +22 -1
  152. package/src/aldehyde/lowcode-components/date-time/index.less +4 -4
  153. package/src/aldehyde/lowcode-components/date-time/index.tsx +64 -64
  154. package/src/aldehyde/lowcode-components/four-angle-glow-border/index.less +49 -49
  155. package/src/aldehyde/lowcode-components/four-angle-glow-border/index.tsx +53 -53
  156. package/src/aldehyde/lowcode-components/line-chart/index.tsx +7 -7
  157. package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-controller.ts +64 -64
  158. package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-definition.ts +77 -77
  159. package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-designer-loader.ts +36 -36
  160. package/src/aldehyde/lowcode-components/lowcode-view/component/component-container.tsx +144 -144
  161. package/src/aldehyde/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
  162. package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/controller.ts +36 -36
  163. package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/definition.ts +53 -53
  164. package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/index.tsx +15 -15
  165. package/src/aldehyde/lowcode-components/lowcode-view/component/layer-builder.tsx +98 -98
  166. package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
  167. package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.tsx +121 -121
  168. package/src/aldehyde/lowcode-components/placeholder-component/index.tsx +81 -81
  169. package/src/aldehyde/lowcode-components/text-scroller/index.less +28 -28
  170. package/src/aldehyde/lowcode-components/text-scroller/index.tsx +173 -173
  171. package/src/aldehyde/module/dtmpl-edit-page.tsx +10 -1
  172. package/src/aldehyde/module/dtmpl-view-card.tsx +39 -34
  173. package/src/aldehyde/module/dtmpl-view-drawer.tsx +4 -2
  174. package/src/aldehyde/module/dtmpl-view-modal.tsx +4 -2
  175. package/src/aldehyde/module/ttmpl-table.tsx +1 -0
  176. package/src/aldehyde/routable/index.less +5 -0
  177. package/src/aldehyde/routable/ltmpl-route.tsx +39 -4
  178. package/src/aldehyde/routable/ttmpl-table-route.tsx +3 -0
  179. package/src/aldehyde/table/act-table.tsx +11 -6
  180. package/src/aldehyde/table/column/column-builder.tsx +14 -3
  181. package/src/aldehyde/table/pagination.tsx +1 -1
  182. package/src/aldehyde/table/relation-table.tsx +77 -16
  183. package/src/aldehyde/tmpl/control-type-supportor.tsx +1 -0
  184. package/src/aldehyde/tmpl/hcservice-v3.tsx +23 -0
  185. package/src/aldehyde/tmpl/interface.tsx +9 -2
  186. package/src/aldehyde/units/index.tsx +44 -0
@@ -50,6 +50,7 @@ export interface LtmplRouteState {
50
50
  showEdit2D?: boolean; // 编辑2D图
51
51
  showView2D?: boolean; // 查看2D图
52
52
  isCopy?: boolean; // 是否复制
53
+ isAudit?: boolean; // 是否审计
53
54
  }
54
55
 
55
56
  class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
@@ -83,7 +84,8 @@ class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
83
84
  drawerSize: "92vw",
84
85
  showEdit2D: false,
85
86
  showView2D: false,
86
- isCopy: false
87
+ isCopy: false,
88
+ isAudit: false
87
89
  };
88
90
 
89
91
  async componentDidMount() {
@@ -152,7 +154,8 @@ class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
152
154
  showWindowType: undefined,
153
155
  showEdit: false,
154
156
  selectedCode: undefined,
155
- toCustomPage: false
157
+ toCustomPage: false,
158
+ isAudit: false
156
159
  }
157
160
  )
158
161
  };
@@ -323,6 +326,35 @@ class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
323
326
  this.setState({ showView2D: true, selectedCode: val });
324
327
  }
325
328
 
329
+ // 审计查看
330
+ doAuditView = (val: string) => {
331
+ const { sourceId } = this.props.params;
332
+ const { ltmplConfigRes } = this.state;
333
+ let ltmplConfig: LtmplConfig = ltmplConfigRes.ltmplConfig;
334
+ let showType: string = !ltmplConfig.buttonViewConfig ? "drawer" : ltmplConfig.buttonViewConfig.showType;
335
+ this.setState({
336
+ showViewModal: showType === "modal",
337
+ showViewDrawer: ["drawer", "default"].includes(showType),
338
+ selectedCode: val,
339
+ viewSourceId: sourceId,
340
+ isAudit: true
341
+ });
342
+ }
343
+ // 审计编辑
344
+ doAuditEdit = (val: string) => {
345
+ const { sourceId } = this.props.params;
346
+ const { ltmplConfigRes } = this.state;
347
+ let ltmplConfig: LtmplConfig = ltmplConfigRes.ltmplConfig;
348
+ let showWindowType: PageType = !ltmplConfig.buttonEditConfig ? "drawer" : ltmplConfig.buttonEditConfig.showType;
349
+ this.setState({
350
+ showEdit: true,
351
+ showWindowType: showWindowType === "default" ? "drawer" : showWindowType,
352
+ selectedCode: val,
353
+ editSourceId: sourceId,
354
+ isAudit: true
355
+ });
356
+ }
357
+
326
358
  pathMark = () => {
327
359
  const { tableType } = this.props;
328
360
  return tableType && tableType == "report" ? "report-table" : "act-table";
@@ -399,7 +431,7 @@ class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
399
431
  const {
400
432
  ltmplConfigRes, showDraw, showWindowType, ractionId, selectedCode,
401
433
  showViewDrawer, showViewModal, showEdit, editSourceId, viewSourceId, toCustomPage, userPageConfig,
402
- themeConfig, pageSizeOptions, userPageConfigLoading, drawerSize, showEdit2D, showView2D, isCopy
434
+ themeConfig, pageSizeOptions, userPageConfigLoading, drawerSize, showEdit2D, showView2D, isCopy, isAudit
403
435
  } = this.state;
404
436
  const { location, params, tableType, rowOperatable, defShowType } = this.props;
405
437
  const { sourceId } = params;
@@ -448,6 +480,7 @@ class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
448
480
  defShowType={defShowType} userPageConfig={userPageConfig} setUserPageConfig={this.setUserPageConfig}
449
481
  resetUserPageConfig={this.resetUserPageConfig} allowUserConfig={themeConfig?.allowUserConfig}
450
482
  onUpdatePageSizeOptions={this.onUpdatePageSizeOptions} doEdit2D={this.doEdit2D} doView2D={this.doView2D}
483
+ doAuditView={this.doAuditView} doAuditEdit={this.doAuditEdit}
451
484
  />
452
485
  {showDraw ? (
453
486
  <Drawer
@@ -478,6 +511,7 @@ class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
478
511
  open={showViewDrawer}
479
512
  sourceId={viewSourceId ? viewSourceId : sourceId}
480
513
  code={selectedCode}
514
+ isAudit={isAudit}
481
515
  />
482
516
  ) : null}
483
517
  {showViewModal && selectedCode ? (
@@ -486,7 +520,7 @@ class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
486
520
  <DtmplViewModal
487
521
  serverKey={serverKey} width={windowWidth} height={windowHeight} onClose={this.doClose}
488
522
  open={showViewModal} sourceId={viewSourceId ? viewSourceId : sourceId}
489
- code={selectedCode}
523
+ code={selectedCode} isAudit={isAudit}
490
524
  />
491
525
  ) : null}
492
526
  {showEdit && ltmplConfig ? (
@@ -517,6 +551,7 @@ class LtmplRoute extends React.PureComponent<LtmplRouteProps, LtmplRouteState> {
517
551
  code={selectedCode}
518
552
  onOk={this.doSubmited}
519
553
  isCopy={isCopy}
554
+ isAudit={isAudit}
520
555
  />
521
556
  )
522
557
  ) : null}
@@ -14,6 +14,7 @@ import CustomDetailModalPage from "../custom-page/custom-detail-modal-page";
14
14
  import DtmplEditPage from "../module/dtmpl-edit-page";
15
15
  import DtmplViewModal from "../module/dtmpl-view-modal";
16
16
  import { useLocale } from "../index";
17
+ import HcserviceV3 from "../tmpl/hcservice-v3";
17
18
  import "./index.less";
18
19
 
19
20
  const { useToken } = theme;
@@ -272,6 +273,8 @@ const Index = (props: Props) => {
272
273
  expandable={(recursiveRatmplId || subNodes.length) ? { expandedRowRender } : undefined} // 嵌套表格
273
274
  bordered={false}
274
275
  showHeader={false}
276
+ requestQueryKey={HcserviceV3.requestEttmplQueryKey}
277
+ showEmpty={false}
275
278
  />;
276
279
  };
277
280
 
@@ -88,11 +88,14 @@ interface ActTableProps extends TmplBaseProps {
88
88
  loadDataCallback?: (val: object[]) => void; // 请求数据回调函数
89
89
  doEdit2D?: (val: string) => void; // 2D图编辑
90
90
  doView2D?: (val: string) => void; // 2D图查看
91
+ doAuditView?: (val: string) => void; // 审计查看
92
+ doAuditEdit?: (val: string) => void; // 审计编辑
91
93
  showTableAdd?: boolean; // 是否支持添加列表
92
94
  expandable?: { expandedRowRender: (val: { [key: string]: any }) => React.JSX.Element }; // 嵌套表格
93
95
  hideOnSinglePage?: boolean; // 分页配置,只有一页时是否隐藏分页器
94
96
  bordered?: boolean; // 表格是否显示边框
95
97
  showHeader?: boolean; // 表格是否显示表头
98
+ requestQueryKey?: Function; // queryKey 查询
96
99
  }
97
100
 
98
101
  interface ActTableStat {
@@ -253,7 +256,7 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
253
256
  ) => {
254
257
  const {
255
258
  sourceId, criteriaData, ltmplConfig,
256
- mainCode, level, pageNo, pageSize, serverKey, defShowType, userPageConfig
259
+ mainCode, level, pageNo, pageSize, serverKey, defShowType, userPageConfig, requestQueryKey
257
260
  } = this.props;
258
261
 
259
262
  if (!this.isSameSourceQuery(sourceId, criteriaData)) {
@@ -315,7 +318,9 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
315
318
  //构建过滤条件
316
319
  const params = { ...criteriaData, ...pageInfo, mainCode };
317
320
  let queryKey: QueryKey;
318
- if (level && level === "l2") {
321
+ if (requestQueryKey) { // 组件传参requestQueryKey,优先使用requestQueryKey
322
+ queryKey = await requestQueryKey(serverKey, sourceId, params);
323
+ } else if (level && level === "l2") {
319
324
  queryKey = await HcserviceV3.requestL2LtmplQueryKey(serverKey, sourceId, params);
320
325
  } else {
321
326
  if (viewModels.includes("ganttChart")) {
@@ -1569,7 +1574,7 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
1569
1574
  title, collapsible,
1570
1575
  onChangePage, serverKey, criteriaData, showEmpty, loadDataCallback,
1571
1576
  showView, doEdit, doRAction, customEditable, readOnly, tableType, showPagination, showAggregates, userPageConfig,
1572
- doEdit2D, doView2D, showTableAdd, setUserPageConfig, expandable, hideOnSinglePage, bordered, showHeader
1577
+ doEdit2D, doView2D, showTableAdd, setUserPageConfig, expandable, hideOnSinglePage, bordered, showHeader, doAuditView, doAuditEdit
1573
1578
  } = this.props;
1574
1579
  const { translate } = this.context;
1575
1580
 
@@ -1595,12 +1600,12 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
1595
1600
  doRowAction: this.doRowAction, doDeleteByCode: this.doDeleteByCode, sortColumns: criteriaData["sortColIds"],
1596
1601
  editings, editRowEdit: this.editRowEdit, cancelRowEdit: this.cancelRowEdit, saveRowData: this.saveRowData,
1597
1602
  doDelModalOpen: this.doDelModalOpen, mainCode, criteriaData: userCriteriaData, actTableDoSearch: this.actTableDoSearch,
1598
- columnResize: userPageConfig?.colResize, doEdit2D, doView2D
1603
+ columnResize: userPageConfig?.colResize, doEdit2D, doView2D, doAuditView, doAuditEdit
1599
1604
  }
1600
1605
  );
1601
1606
 
1602
1607
  let { buttons, extDisplayConfig, rowCardCount, customViewPagePath, splitTabShowType } = ltmplConfig;
1603
- let { primaryColumn, primaryColumnLabel, secondColumn, secondColumnLabel, mainPicture, mainPictureLabel, labelColumn, cardShowCols, notDisplayFieldName, colNumOnRow } = extDisplayConfig;
1608
+ let { primaryColumn, primaryColumnLabel, secondColumn, secondColumnLabel, mainPicture, mainPictureLabel, labelColumn, cardShowCols, notDisplayFieldName, colNumOnRow, secondaryPicture } = extDisplayConfig;
1604
1609
  let displayCriteriaCard: boolean = false;
1605
1610
  if (funcMode == "simple" || funcMode == "common") {
1606
1611
  displayCriteriaCard = false;
@@ -1662,7 +1667,7 @@ class ActTable extends React.PureComponent<ActTableProps, ActTableStat> {
1662
1667
  groupIColumns={ltmplConfig.groupIColumns}
1663
1668
  doSearch={this.actTableDoSearch}
1664
1669
  sortColumnData={sortColumnData}
1665
- cardListConfig={{ primaryColumn, primaryColumnLabel, secondColumn, secondColumnLabel, mainPicture, mainPictureLabel, labelColumn, cardShowCols, rowCardCount, buttons, customViewPagePath, mainCode, notDisplayFieldName, colNumOnRow }}
1670
+ cardListConfig={{ primaryColumn, primaryColumnLabel, secondColumn, secondColumnLabel, mainPicture, mainPictureLabel, labelColumn, cardShowCols, rowCardCount, buttons, customViewPagePath, mainCode, notDisplayFieldName, colNumOnRow, secondaryPicture }}
1666
1671
  ltmplConfig={ltmplConfig}
1667
1672
  showView={showView}
1668
1673
  showPagination={showPagination}
@@ -12,7 +12,8 @@ import {
12
12
  FormOutlined,
13
13
  KeyOutlined,
14
14
  MenuOutlined, QuestionCircleOutlined, PlaySquareOutlined,
15
- SettingOutlined, UpSquareFilled, DownSquareFilled
15
+ SettingOutlined, UpSquareFilled, DownSquareFilled, AlignCenterOutlined,
16
+ EditOutlined
16
17
  } from "@ant-design/icons";
17
18
  import ActionUtils from "../../controls/action/utils";
18
19
  import ViewButton from "../../detail/button/view-button";
@@ -189,7 +190,7 @@ export default {
189
190
  let detailParams = undefined;
190
191
  if (showView && primaryColumn?.id === item.id) { // 首字段增加主题色显示/查看详情功能
191
192
  if (buttons.includes("detail")) {
192
- const classView = ltmplConfig.classViewConfigs.find(r => ActionUtils.isShow(r.preposes, [record], undefined));
193
+ const classView = ltmplConfig.classViewConfigs?.find(r => ActionUtils.isShow(r.preposes, [record], undefined));
193
194
  if (classView) {
194
195
  detailParams = { code: record.code, dtmplSourceId: classView.id };
195
196
  } else {
@@ -553,7 +554,7 @@ export default {
553
554
  readOnly,
554
555
  sourceId, translate, doCustomButton, doRowJump, blockMenuTreeDrawerOpen,
555
556
  doRowAction, doDeleteByCode, editRowEdit, editings, cancelRowEdit, saveRowData, doDelModalOpen,
556
- doView2D, doEdit2D, actTableDoSearch
557
+ doView2D, doEdit2D, actTableDoSearch, doAuditView, doAuditEdit
557
558
  } = props;
558
559
  const { buttons, builtInButtons, defShowRowActionCount, strongDeleteConfirmText, edit2DBtnTitle, view2DBtnTitle, deleteBtnTitle, copyMode } = ltmplConfig;
559
560
  let actionButtons: any[] = [];
@@ -588,6 +589,16 @@ export default {
588
589
  )
589
590
  };
590
591
 
592
+ // 审计查看
593
+ if (buttons.includes("auditView") && doAuditView && !readOnly && ActionUtils.isShow(ltmplConfig.buttonAuditViewAction?.preposes, [record], undefined)) {
594
+ actionButtons.push(<Tooltip title={translate("${审计查看}")}><Button type="primary" size="small" onClick={() => doAuditView(record.code)} icon={<AlignCenterOutlined />} /></Tooltip>);
595
+ };
596
+
597
+ // 审计编辑
598
+ if (buttons.includes("auditEdit") && doAuditEdit && !readOnly && ActionUtils.isShow(ltmplConfig.buttonAuditEditAction?.preposes, [record], undefined)) {
599
+ actionButtons.push(<Tooltip title={translate("${审计编辑}")}><Button size="small" onClick={() => doAuditEdit(record.code)} icon={<EditOutlined />} /></Tooltip>);
600
+ };
601
+
591
602
  // 2D图编辑
592
603
  if (buttons.includes("edit2D") && doEdit2D && !readOnly) {
593
604
  actionButtons.push((!edit2DBtnTitle || edit2DBtnTitle?.length < 4) ? <Button size="small" onClick={() => doEdit2D(record.code)}>{edit2DBtnTitle || <SettingOutlined />}</Button> :
@@ -55,7 +55,7 @@ class Pagination extends React.PureComponent<PaginationProps, PaginationStat> {
55
55
 
56
56
  return (
57
57
  <div className="Pagination" style={{ justifyContent: paginationPosition === "middle" ? "center" : (paginationPosition || "left"), marginTop: !(hideOnSinglePage && (total < (pageInfo.pageSize || 10))) ? "10px" : 0 }}>
58
- {!(hideOnSinglePage && (total < (pageInfo.pageSize || 10))) ?
58
+ {!(hideOnSinglePage && ((total || 0) < (pageInfo.pageSize || 10))) ?
59
59
  <span
60
60
  className={sewTotal ? "sewTotal" : "seeTotal"}
61
61
  onClick={queryTotal}
@@ -8,7 +8,7 @@ import {
8
8
  Space,
9
9
  Tooltip,
10
10
  Typography, Popconfirm, FormInstance,
11
- message
11
+ message, Tag
12
12
  } from "antd";
13
13
  import Table from "./control-table-x-axis-wrapper";
14
14
  import {
@@ -17,7 +17,7 @@ import {
17
17
  EditOutlined,
18
18
  FormOutlined,
19
19
  PlusSquareOutlined, QuestionCircleOutlined,
20
- SnippetsOutlined,
20
+ SnippetsOutlined, ExclamationCircleOutlined
21
21
  } from "@ant-design/icons";
22
22
  import "./index.css";
23
23
  import {
@@ -47,6 +47,12 @@ import TmplConfigAnalysis from "../tmpl/tmpl-config-analysis";
47
47
  const FormItem = AntdForm.Item;
48
48
  const { Text } = Typography;
49
49
 
50
+ const auditDataStates = {
51
+ add: { "text": "新增", "color": "green" },
52
+ edit: { "text": "修改", "color": "orange" },
53
+ remove: { "text": "删除", "color": "red" },
54
+ };
55
+
50
56
  interface RelationTableProps {
51
57
  showRightNav?: boolean;
52
58
  mainCode?: string;
@@ -62,6 +68,7 @@ interface RelationTableProps {
62
68
  onEditing?: (editing: boolean) => void;
63
69
  initCollapse?: boolean;
64
70
  showCollapseCard?: boolean; // 是否显示折叠卡片,默认显示
71
+ audit?: { isAudit: boolean, previousData: any, changeInfo: any }; // 审计页面配置
65
72
  }
66
73
 
67
74
  interface RelationTableStat {
@@ -126,14 +133,14 @@ class RelationTable extends React.PureComponent<
126
133
 
127
134
  buildDataSource = () => {
128
135
  const { filterStr } = this.state;
129
- const { value } = this.props;
136
+ const { value, audit } = this.props;
130
137
  let dataSource = undefined;
131
138
 
132
139
  /** 构建 dataSource **/
133
140
  if (value) {
134
141
  dataSource = [];
135
- value.forEach((item, index) => {
136
- let flag = true;
142
+ value.forEach((item) => {
143
+ let flag = true, opt, preData;
137
144
  if (filterStr) {
138
145
  flag = false;
139
146
  for (let value of Object.values(item.fieldMap)) {
@@ -143,23 +150,52 @@ class RelationTable extends React.PureComponent<
143
150
  }
144
151
  }
145
152
  if (flag) {
153
+ if (audit?.isAudit) { // 审计页面
154
+ const temChange = audit.changeInfo?.find(r => r.code === item.code);
155
+ opt = temChange?.opt; // 数据类型
156
+ // 修改类型的数据
157
+ if (opt === "edit") {
158
+ const temData = audit?.previousData?.get(item.code)?.fieldMap;
159
+ preData = temChange.changeFields?.reduce((total, item) => {
160
+ total[item] = temData[item];
161
+ return total;
162
+ }, {});
163
+ }
164
+ }
146
165
  let row = {
147
166
  key: item.code,
148
167
  editStatus: item.editStatus,
149
168
  relationLabel: item.relationLabel,
150
169
  code: item.code, //增加code,为了删除操作
170
+ opt, // 审计页面展示数据状态
171
+ preData, // 审计页面修改数据展示上次数据
151
172
  ...item.fieldMap,
152
173
  };
153
174
  dataSource.push(row);
154
175
  }
155
176
  });
156
- }
157
177
 
178
+ if (audit?.isAudit) { // 审计页面上次删除数据展示
179
+ const delDatas = audit.changeInfo?.filter(r => r.opt === "remove") || [];
180
+ delDatas.forEach(item => {
181
+ const tData = audit.previousData.get(item.code);
182
+ const row = {
183
+ key: item.code,
184
+ editStatus: tData.editStatus,
185
+ relationLabel: tData.relationLabel,
186
+ code: item.code,
187
+ opt: "remove",
188
+ ...tData.fieldMap,
189
+ };
190
+ dataSource.push(row);
191
+ });
192
+ }
193
+ }
158
194
  return dataSource;
159
195
  };
160
196
 
161
197
  buildColumns = () => {
162
- const { viewOrEdit, fieldGroupConfig, serverKey, parentFormInstance } = this.props;
198
+ const { viewOrEdit, fieldGroupConfig, serverKey, parentFormInstance, audit } = this.props;
163
199
  const {
164
200
  buttons,
165
201
  fields,
@@ -173,6 +209,18 @@ class RelationTable extends React.PureComponent<
173
209
  let columns = [];
174
210
  /** 构建column **/
175
211
  let s = 0;
212
+
213
+ if (audit?.isAudit) { // 审计页面-增加数据状态列显示
214
+ let column = {};
215
+ columns.push(column);
216
+ column["dataIndex"] = "数据状态";
217
+ column["title"] = translate("${数据状态}");
218
+ column["render"] = (_, record) => {
219
+ const state = auditDataStates[record.opt];
220
+ return state ? <Tag key={record.opt} color={state.color} >{state.text}</Tag> : "";
221
+ };
222
+ }
223
+
176
224
  fields.forEach((item) => {
177
225
  let column = {};
178
226
  columns.push(column);
@@ -209,13 +257,28 @@ class RelationTable extends React.PureComponent<
209
257
  fieldConfig={{ ...item }}
210
258
  value={record[item.id]}
211
259
  editStatus={record.editStatus}
212
- /></FormItem> :
213
- <ViewControl
214
- serverKey={serverKey}
215
- holderType={"table"}
216
- fieldConfig={item}
217
- value={record[item.id]}
218
- />
260
+ /></FormItem> : (
261
+ (audit?.isAudit && record.opt === "edit" && record.preData?.[item.id]) ?
262
+ <div style={{ display: "flex", alignItems: "center", justifyContent: "space-between" }}>
263
+ <div style={{ width: "calc(100% - 20px)" }}>
264
+ <ViewControl
265
+ serverKey={serverKey}
266
+ holderType={"table"}
267
+ fieldConfig={item}
268
+ value={record[item.id]}
269
+ />
270
+ </div>
271
+ <Tooltip title={<ViewControl serverKey={serverKey} holderType={"table"} fieldConfig={item} value={record.preData[item.id]} />}>
272
+ <ExclamationCircleOutlined style={{ color: "red", cursor: "pointer" }} />
273
+ </Tooltip>
274
+ </div> :
275
+ <ViewControl
276
+ serverKey={serverKey}
277
+ holderType={"table"}
278
+ fieldConfig={item}
279
+ value={record[item.id]}
280
+ />
281
+ )
219
282
  );
220
283
  };
221
284
  });
@@ -1008,8 +1071,6 @@ class RelationTable extends React.PureComponent<
1008
1071
  /></AntdForm>}
1009
1072
  </div>;
1010
1073
 
1011
- console.log("showCollapseCard", showCollapseCard);
1012
-
1013
1074
  return fieldGroupConfig.displayConfig.includes("nonDataNonDisplayed") &&
1014
1075
  (!value || value.length <= 0) ? "" : (
1015
1076
  <>
@@ -88,6 +88,7 @@ SupportInputTypes.add('field-history');
88
88
  SupportInputTypes.add('relfile');
89
89
  SupportInputTypes.add('QRCode');
90
90
  SupportInputTypes.add('single-checkbox');
91
+ SupportInputTypes.add("relimage");
91
92
 
92
93
 
93
94
  function ControlTypeSupportor() {
@@ -465,6 +465,17 @@ export default class HcserviceV3 {
465
465
  );
466
466
  }
467
467
 
468
+ // 查询审计数据
469
+ static async requestViewDtmplAuditData(serverKey: string, sourceId: string, code, versionId) {
470
+ let url = `/v3/dtmpl/audit-data`;
471
+ let res = await Super.super({ url, serverKey, query: { code, versionId, sourceId }, method: "GET" });
472
+ if (res?.status === "success") {
473
+ return { sourceId, ...res };
474
+ } else {
475
+ return null;
476
+ }
477
+ }
478
+
468
479
  static async requestMstrucViewDtmplData(
469
480
  serverKey: string,
470
481
  sourceId,
@@ -1598,4 +1609,16 @@ export default class HcserviceV3 {
1598
1609
  return [];
1599
1610
  }
1600
1611
  }
1612
+
1613
+ // 列表-展开树顶层数据查询
1614
+ static async requestEttmplQueryKey(serverKey: string, sourceId, condition) {
1615
+ let url = `v3/ettmpl/query/key`;
1616
+ let res = await Super.super({
1617
+ url,
1618
+ serverKey,
1619
+ method: "GET",
1620
+ query: { ...condition, sourceId },
1621
+ });
1622
+ return res;
1623
+ }
1601
1624
  }
@@ -60,6 +60,7 @@ export interface CardListConfig {
60
60
  mainPictureLabel?: ColumnConfig;
61
61
  labelColumn?: ColumnConfig;
62
62
  cardShowCols?: ColumnConfig[];
63
+ secondaryPicture?: ColumnConfig;
63
64
  rowCardCount?: number;
64
65
  buttons?: string[];
65
66
  customViewPagePath?: string;
@@ -152,7 +153,8 @@ export interface DtmplFormProps extends DtmplBaseProps {
152
153
  showHeader?: boolean;
153
154
  onFinish: (code: string | boolean) => void;
154
155
  onValuesChange?: (changedValues, allValues: DtmplData) => void;
155
- valueFieldMap?: { [key: string]: any } // 表单关联项
156
+ valueFieldMap?: { [key: string]: any }; // 表单关联项
157
+ isAudit?: boolean; // 是否审计编辑页
156
158
  }
157
159
 
158
160
  export interface CQueryConfig extends OrderableTmplBase {
@@ -352,7 +354,7 @@ export type ButtonName =
352
354
  | "ltmplSelectAdd"
353
355
  | "reStat"
354
356
  | "drilling"
355
- | "ratmplSelect" | "edit2D" | "view2D" | "showTableAdd";
357
+ | "ratmplSelect" | "edit2D" | "view2D" | "showTableAdd" | "auditView" | "auditEdit";
356
358
 
357
359
  export type ChartType = "line" | "pie" | "column";
358
360
  export type GroupDisplayConfig =
@@ -524,6 +526,8 @@ export interface ActionRenderProps {
524
526
  doView2D?: (recordCode: string) => any,
525
527
  doEdit2D?: (recordCode: string) => any,
526
528
  actTableDoSearch?: (data: object) => void,
529
+ doAuditView?: (recordCode: string) => any, // 审计查看
530
+ doAuditEdit?: (recordCode: string) => any, // 审计编辑
527
531
  }
528
532
 
529
533
  export interface FileRule {
@@ -672,6 +676,7 @@ export interface LtmplConfig extends SelectConfig {
672
676
  cardShowCols?: ColumnConfig[];
673
677
  notDisplayFieldName?: boolean;
674
678
  colNumOnRow?: number; // 卡片展示字段每行列数
679
+ secondaryPicture?: ColumnConfig; // 次图片字段
675
680
  };
676
681
  rowCardCount?: number;
677
682
  defaultDtmplData?: DtmplData;
@@ -715,6 +720,8 @@ export interface LtmplConfig extends SelectConfig {
715
720
  totalNumInTotalViewTitle?: string; // 聚合视图中显示总数的标题
716
721
  notAutoQuery?: boolean; // 页面是否默认查询
717
722
  tableLayout?: "auto" | "fixed"; // 表格布局(自适应列宽/固定列宽)
723
+ buttonAuditViewAction?: ActionConfig; // 审计查看按钮
724
+ buttonAuditEditAction?: ActionConfig; // 审计编辑按钮
718
725
  }
719
726
 
720
727
  export interface EnumItem {
@@ -1371,5 +1371,49 @@ export default {
1371
1371
  },
1372
1372
  getCrossProjectCode(sourceId: string) { // 获取全局跨项目code
1373
1373
  return Cross_Project_Code[sourceId];
1374
+ },
1375
+ arrayToMap(arr: any[], key: string) { // 对象数组转Map
1376
+ if (arr?.length) {
1377
+ return new Map(arr.map(item => [item[key], item]));
1378
+ } else {
1379
+ return arr;
1380
+ }
1381
+ },
1382
+ formatDuration(totalSeconds, level = 'second-daysecond', translate?: Function) { // 时长格式化显示
1383
+ if (typeof totalSeconds !== 'number' || isNaN(totalSeconds) || totalSeconds <= 0) {
1384
+ return `0${translate ? translate("秒") : "秒"}`;
1385
+ }
1386
+ const units = [
1387
+ { label: '年', base: 31536000 },
1388
+ { label: '天', base: 86400 },
1389
+ { label: '时', base: 3600 },
1390
+ { label: '分', base: 60 },
1391
+ { label: '秒', base: 1 }
1392
+ ];
1393
+ const levelConfig = {
1394
+ 'second-daysecond': 4, // 显示到 秒 (下标4)
1395
+ 'second-dayminute': 3, // 显示到 分 (下标3)
1396
+ 'second-dayhour': 2, // 显示到 时 (下标2)
1397
+ 'second-day': 1 // 显示到 天 (下标1)
1398
+ };
1399
+ const maxIndex = levelConfig[level] || 4; // 当前允许显示的最大层级下标
1400
+ let remaining = Math.floor(totalSeconds);
1401
+ const allParts = [];
1402
+ for (let i = 0; i < units.length; i++) {
1403
+ const count = Math.floor(remaining / units[i].base);
1404
+ remaining %= units[i].base;
1405
+ if (count > 0) {
1406
+ allParts.push({ label: units[i].label, count: count, index: i });
1407
+ }
1408
+ }
1409
+ const validParts = allParts.filter(p => p.index <= maxIndex);
1410
+ if (validParts.length === 0) {
1411
+ if (allParts.length > 0) {
1412
+ const fallback = allParts[allParts.length - 1];
1413
+ return `${fallback.count}${fallback.label}`;
1414
+ }
1415
+ return `0${translate ? translate("秒") : "秒"}`;
1416
+ }
1417
+ return validParts.map(p => `${p.count}${translate ? translate(p.label) : p.label}`).join('');
1374
1418
  }
1375
1419
  };