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.
- package/lib/controls/auto-complete/index.d.ts.map +1 -1
- package/lib/controls/auto-complete/index.js +2 -4
- package/lib/controls/auto-complete/index.js.map +1 -1
- package/lib/controls/direct-file-view/index.d.ts.map +1 -1
- package/lib/controls/direct-file-view/index.js +4 -1
- package/lib/controls/direct-file-view/index.js.map +1 -1
- package/lib/controls/entry-control.d.ts.map +1 -1
- package/lib/controls/entry-control.js +4 -0
- package/lib/controls/entry-control.js.map +1 -1
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +99 -99
- package/lib/controls/view-control.d.ts.map +1 -1
- package/lib/controls/view-control.js +1 -0
- package/lib/controls/view-control.js.map +1 -1
- package/lib/detail/view/act-dtmpl-view.d.ts +2 -0
- package/lib/detail/view/act-dtmpl-view.d.ts.map +1 -1
- package/lib/detail/view/act-dtmpl-view.js +3 -2
- package/lib/detail/view/act-dtmpl-view.js.map +1 -1
- package/lib/detail/view/dtmpl-view.d.ts +11 -0
- package/lib/detail/view/dtmpl-view.d.ts.map +1 -1
- package/lib/detail/view/dtmpl-view.js +20 -17
- package/lib/detail/view/dtmpl-view.js.map +1 -1
- package/lib/detail/view/field-view-group.d.ts +9 -0
- package/lib/detail/view/field-view-group.d.ts.map +1 -1
- package/lib/detail/view/field-view-group.js +17 -15
- package/lib/detail/view/field-view-group.js.map +1 -1
- package/lib/detail/view/index.less +6 -0
- package/lib/draw-canvas-edit/components/asset-bar/index.less +35 -35
- package/lib/draw-canvas-edit/components/main-header/index.less +23 -23
- package/lib/form/dtmpl-form.d.ts +12 -1
- package/lib/form/dtmpl-form.d.ts.map +1 -1
- package/lib/form/dtmpl-form.js +35 -27
- package/lib/form/dtmpl-form.js.map +1 -1
- package/lib/form/form-Item-group.d.ts +9 -0
- package/lib/form/form-Item-group.d.ts.map +1 -1
- package/lib/form/form-Item-group.js +13 -3
- package/lib/form/form-Item-group.js.map +1 -1
- package/lib/list/card-list/card-list-item.d.ts.map +1 -1
- package/lib/list/card-list/card-list-item.js +28 -6
- package/lib/list/card-list/card-list-item.js.map +1 -1
- package/lib/lowcode-components/base-table/index.less +61 -61
- package/lib/lowcode-components/data-number/index.d.ts +2 -0
- package/lib/lowcode-components/data-number/index.d.ts.map +1 -1
- package/lib/lowcode-components/data-number/index.js +21 -1
- package/lib/lowcode-components/data-number/index.js.map +1 -1
- package/lib/lowcode-components/data-number/index.less +10 -10
- package/lib/lowcode-components/date-time/index.less +4 -4
- package/lib/lowcode-components/four-angle-glow-border/index.less +49 -49
- package/lib/lowcode-components/line-chart/index.js +7 -7
- package/lib/lowcode-components/line-chart/index.js.map +1 -1
- package/lib/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
- package/lib/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
- package/lib/lowcode-components/text-scroller/index.less +28 -28
- package/lib/module/dtmpl-edit-page.d.ts +1 -0
- package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
- package/lib/module/dtmpl-edit-page.js +5 -5
- package/lib/module/dtmpl-edit-page.js.map +1 -1
- package/lib/module/dtmpl-view-card.d.ts +2 -0
- package/lib/module/dtmpl-view-card.d.ts.map +1 -1
- package/lib/module/dtmpl-view-card.js +7 -4
- package/lib/module/dtmpl-view-card.js.map +1 -1
- package/lib/module/dtmpl-view-drawer.d.ts +2 -0
- package/lib/module/dtmpl-view-drawer.d.ts.map +1 -1
- package/lib/module/dtmpl-view-drawer.js +3 -2
- package/lib/module/dtmpl-view-drawer.js.map +1 -1
- package/lib/module/dtmpl-view-modal.d.ts +2 -0
- package/lib/module/dtmpl-view-modal.d.ts.map +1 -1
- package/lib/module/dtmpl-view-modal.js +3 -2
- package/lib/module/dtmpl-view-modal.js.map +1 -1
- package/lib/module/ttmpl-table.d.ts.map +1 -1
- package/lib/module/ttmpl-table.js +1 -1
- package/lib/module/ttmpl-table.js.map +1 -1
- package/lib/routable/index.less +5 -0
- package/lib/routable/ltmpl-route.d.ts +1 -0
- package/lib/routable/ltmpl-route.d.ts.map +1 -1
- package/lib/routable/ltmpl-route.js +37 -7
- package/lib/routable/ltmpl-route.js.map +1 -1
- package/lib/routable/ttmpl-table-route.d.ts.map +1 -1
- package/lib/routable/ttmpl-table-route.js +2 -1
- package/lib/routable/ttmpl-table-route.js.map +1 -1
- package/lib/table/act-table.d.ts +3 -0
- package/lib/table/act-table.d.ts.map +1 -1
- package/lib/table/act-table.js +9 -6
- package/lib/table/act-table.js.map +1 -1
- package/lib/table/column/column-builder.d.ts.map +1 -1
- package/lib/table/column/column-builder.js +22 -10
- package/lib/table/column/column-builder.js.map +1 -1
- package/lib/table/pagination.js +1 -1
- package/lib/table/pagination.js.map +1 -1
- package/lib/table/relation-table.d.ts +5 -0
- package/lib/table/relation-table.d.ts.map +1 -1
- package/lib/table/relation-table.js +54 -10
- package/lib/table/relation-table.js.map +1 -1
- package/lib/tmpl/control-type-supportor.d.ts.map +1 -1
- package/lib/tmpl/control-type-supportor.js +1 -0
- package/lib/tmpl/control-type-supportor.js.map +1 -1
- package/lib/tmpl/hcservice-v3.d.ts +2 -0
- package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
- package/lib/tmpl/hcservice-v3.js +26 -0
- package/lib/tmpl/hcservice-v3.js.map +1 -1
- package/lib/tmpl/interface.d.ts +8 -1
- package/lib/tmpl/interface.d.ts.map +1 -1
- package/lib/tmpl/interface.js.map +1 -1
- package/lib/units/index.d.ts +2 -0
- package/lib/units/index.d.ts.map +1 -1
- package/lib/units/index.js +45 -0
- package/lib/units/index.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/auto-complete/index.tsx +4 -6
- package/src/aldehyde/controls/direct-file-view/index.tsx +4 -1
- package/src/aldehyde/controls/entry-control.tsx +4 -0
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +99 -99
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +156 -156
- package/src/aldehyde/controls/view-control.tsx +1 -0
- package/src/aldehyde/detail/view/act-dtmpl-view.tsx +4 -1
- package/src/aldehyde/detail/view/dtmpl-view.tsx +20 -26
- package/src/aldehyde/detail/view/field-view-group.tsx +20 -22
- package/src/aldehyde/detail/view/index.less +6 -0
- package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +35 -35
- package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +110 -110
- package/src/aldehyde/draw-canvas-edit/components/main-header/index.less +23 -23
- package/src/aldehyde/draw-canvas-edit/components/main-header/index.tsx +263 -263
- package/src/aldehyde/draw-canvas-edit/components/render/draws/index.ts +7 -7
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/base-graph.ts +241 -241
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/circle.ts +699 -699
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/curve.ts +500 -500
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/index.ts +5 -5
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/line.ts +493 -493
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/rect.ts +680 -680
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-handlers.ts +68 -68
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/graph-handlers.ts +113 -113
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/index.ts +9 -9
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/key-move-handlers.ts +49 -49
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/link-handlers.ts +45 -45
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/shutcut-handlers.ts +45 -45
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/text-handlers.ts +81 -81
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/zoom-handlers.ts +59 -59
- package/src/aldehyde/draw-canvas-edit/components/render/tools/align-tool.ts +89 -89
- package/src/aldehyde/draw-canvas-edit/components/render/tools/asset-tool.ts +154 -154
- package/src/aldehyde/draw-canvas-edit/components/render/tools/link-tool.ts +222 -222
- package/src/aldehyde/draw-canvas-edit/components/render/tools/z-index-tool.ts +224 -224
- package/src/aldehyde/draw-canvas-edit/components/render/utils/a-star.ts +116 -116
- package/src/aldehyde/draw-canvas-edit/components/render/utils/bezier-scene-func.ts +72 -72
- package/src/aldehyde/draw-canvas-edit/components/setting-form/imag-upload.tsx +119 -119
- package/src/aldehyde/form/dtmpl-form.tsx +59 -55
- package/src/aldehyde/form/form-Item-group.tsx +16 -5
- package/src/aldehyde/layout4/imgs/user.svg +26 -26
- package/src/aldehyde/list/card-list/card-list-item.tsx +26 -7
- package/src/aldehyde/lowcode-components/base-color-block/index.tsx +31 -31
- package/src/aldehyde/lowcode-components/base-table/index.less +61 -61
- package/src/aldehyde/lowcode-components/data-number/index.less +10 -10
- package/src/aldehyde/lowcode-components/data-number/index.tsx +22 -1
- package/src/aldehyde/lowcode-components/date-time/index.less +4 -4
- package/src/aldehyde/lowcode-components/date-time/index.tsx +64 -64
- package/src/aldehyde/lowcode-components/four-angle-glow-border/index.less +49 -49
- package/src/aldehyde/lowcode-components/four-angle-glow-border/index.tsx +53 -53
- package/src/aldehyde/lowcode-components/line-chart/index.tsx +7 -7
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-controller.ts +64 -64
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-definition.ts +77 -77
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-designer-loader.ts +36 -36
- package/src/aldehyde/lowcode-components/lowcode-view/component/component-container.tsx +144 -144
- package/src/aldehyde/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/controller.ts +36 -36
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/definition.ts +53 -53
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/index.tsx +15 -15
- package/src/aldehyde/lowcode-components/lowcode-view/component/layer-builder.tsx +98 -98
- package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
- package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.tsx +121 -121
- package/src/aldehyde/lowcode-components/placeholder-component/index.tsx +81 -81
- package/src/aldehyde/lowcode-components/text-scroller/index.less +28 -28
- package/src/aldehyde/lowcode-components/text-scroller/index.tsx +173 -173
- package/src/aldehyde/module/dtmpl-edit-page.tsx +10 -1
- package/src/aldehyde/module/dtmpl-view-card.tsx +39 -34
- package/src/aldehyde/module/dtmpl-view-drawer.tsx +4 -2
- package/src/aldehyde/module/dtmpl-view-modal.tsx +4 -2
- package/src/aldehyde/module/ttmpl-table.tsx +1 -0
- package/src/aldehyde/routable/index.less +5 -0
- package/src/aldehyde/routable/ltmpl-route.tsx +39 -4
- package/src/aldehyde/routable/ttmpl-table-route.tsx +3 -0
- package/src/aldehyde/table/act-table.tsx +11 -6
- package/src/aldehyde/table/column/column-builder.tsx +14 -3
- package/src/aldehyde/table/pagination.tsx +1 -1
- package/src/aldehyde/table/relation-table.tsx +77 -16
- package/src/aldehyde/tmpl/control-type-supportor.tsx +1 -0
- package/src/aldehyde/tmpl/hcservice-v3.tsx +23 -0
- package/src/aldehyde/tmpl/interface.tsx +9 -2
- 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 (
|
|
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
|
|
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
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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
|
<>
|
|
@@ -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
|
};
|