@aplus-frontend/ui 7.13.8 → 7.13.10
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/es/src/ag-grid/components/body-cell/index.vue2.mjs +7 -7
- package/es/src/ag-grid/components/empty/index.vue2.mjs +10 -10
- package/es/src/ag-grid/components/header-cell/index.vue2.mjs +37 -37
- package/es/src/ag-grid/components/row/index.vue2.mjs +5 -5
- package/es/src/ag-grid/components/tooltip/index.vue2.mjs +12 -12
- package/es/src/ag-grid/editable/form-item.vue.mjs +49 -49
- package/es/src/ag-grid/editable/index.vue.mjs +27 -27
- package/es/src/ag-grid/hooks/use-columns.d.ts +2 -0
- package/es/src/ag-grid/hooks/use-columns.mjs +35 -17
- package/es/src/ag-grid/index.vue.mjs +349 -318
- package/es/src/ap-action/group/index.vue.mjs +15 -15
- package/es/src/ap-action/item/index.vue2.mjs +28 -28
- package/es/src/ap-action/item-dropdown/index.vue.mjs +39 -39
- package/es/src/ap-field/checkbox/index.vue.mjs +19 -19
- package/es/src/ap-field/checkbox/read.vue2.mjs +9 -9
- package/es/src/ap-field/date/index.vue.mjs +50 -50
- package/es/src/ap-field/date/read.vue2.mjs +7 -7
- package/es/src/ap-field/date-range/index.vue.mjs +29 -29
- package/es/src/ap-field/date-range/read.vue2.mjs +22 -22
- package/es/src/ap-field/hooks/use-default-presets.mjs +59 -16
- package/es/src/ap-field/interface.d.ts +46 -1
- package/es/src/ap-field/number/index.vue.mjs +24 -24
- package/es/src/ap-field/radio/index.vue.mjs +24 -24
- package/es/src/ap-field/second/index.vue.mjs +15 -15
- package/es/src/ap-field/second/read.vue2.mjs +7 -7
- package/es/src/ap-field/segmented/index.vue.mjs +24 -24
- package/es/src/ap-field/select/index.vue.d.ts +12 -2
- package/es/src/ap-field/select/index.vue.mjs +127 -124
- package/es/src/ap-field/select/read.vue2.mjs +6 -6
- package/es/src/ap-field/slider/index.vue.mjs +11 -11
- package/es/src/ap-field/style/select.mjs +53 -36
- package/es/src/ap-field/switch/index.vue.mjs +45 -45
- package/es/src/ap-field/text/read-password.vue2.mjs +13 -13
- package/es/src/ap-field/text/read.vue2.mjs +3 -3
- package/es/src/ap-field/text-area/index.vue.mjs +29 -29
- package/es/src/ap-field/text-area/read.vue2.mjs +12 -12
- package/es/src/ap-field/tree-select/index.vue.mjs +31 -31
- package/es/src/ap-form/ap-form.vue2.mjs +46 -46
- package/es/src/ap-form/drawer-form/index.vue.mjs +30 -30
- package/es/src/ap-form/item/index.vue.mjs +75 -75
- package/es/src/ap-form/items/checkbox/index.vue.mjs +10 -10
- package/es/src/ap-form/items/number/index.vue.mjs +17 -17
- package/es/src/ap-form/items/radio/index.vue.mjs +13 -13
- package/es/src/ap-form/items/switch/index.vue.mjs +14 -14
- package/es/src/ap-form/items/text/index.vue2.mjs +26 -26
- package/es/src/ap-form/items/text/password.vue.mjs +19 -19
- package/es/src/ap-form/items/text-area/index.vue.mjs +17 -17
- package/es/src/ap-form/modal-form/index.vue.mjs +34 -34
- package/es/src/ap-form/search-form/components/popover-filter.vue2.mjs +39 -39
- package/es/src/ap-form/search-form/components/popover-sorter/sortable-item.vue2.mjs +7 -7
- package/es/src/ap-grid/editable/form-item.vue.mjs +46 -46
- package/es/src/ap-grid/editable/index.vue.mjs +19 -19
- package/es/src/ap-grid/index.vue.mjs +212 -212
- package/es/src/ap-list/index.vue.mjs +116 -116
- package/es/src/ap-table/ap-table.vue2.mjs +217 -217
- package/es/src/ap-table/components/index/index.vue2.mjs +9 -9
- package/es/src/ap-table/components/setting/modal/index.vue2.mjs +52 -51
- package/es/src/ap-table/components/setting/select-group/index.vue2.mjs +21 -21
- package/es/src/ap-table/components/setting/sortable/index.vue2.mjs +15 -15
- package/es/src/ap-table/components/setting/sortable/item.vue2.mjs +69 -69
- package/es/src/ap-table/components/setting/template/edit-form.vue.d.ts +1 -0
- package/es/src/ap-table/components/setting/template/edit-form.vue2.mjs +31 -30
- package/es/src/ap-table/components/setting/template/index.vue2.mjs +25 -25
- package/es/src/ap-table/components/setting/template/item.vue2.mjs +41 -40
- package/es/src/ap-table/components/setting/tree-select/index.vue2.mjs +14 -14
- package/es/src/ap-table/hooks/use-sorted-filtered.d.ts +18 -2
- package/es/src/ap-table/hooks/use-sorted-filtered.mjs +13 -11
- package/es/src/ap-table/hooks/use-table-paging-ng.d.ts +17 -2
- package/es/src/ap-table/hooks/use-table-paging-ng.mjs +148 -142
- package/es/src/ap-table/style/setting.mjs +2 -2
- package/es/src/business/ag-grid-modal/modal-layout/index.vue2.mjs +54 -54
- package/es/src/business/ag-grid-modal/selected-items/default.vue2.mjs +13 -13
- package/es/src/business/ag-grid-modal/wrapper/index.vue2.mjs +20 -20
- package/es/src/business/ap-descriptions/ap-descriptions.vue.mjs +33 -33
- package/es/src/business/ap-descriptions/help-message/index.vue2.mjs +13 -13
- package/es/src/business/ap-download/ap-download.vue.mjs +24 -24
- package/es/src/business/ap-expand-alert/ApExpandAlert.vue.mjs +77 -77
- package/es/src/business/ap-export-group/ApExportGroup.vue2.mjs +119 -112
- package/es/src/business/ap-export-group/handleExportDownload.d.ts +1 -1
- package/es/src/business/ap-export-group/handleExportDownload.mjs +2 -2
- package/es/src/business/ap-export-group/interface.d.ts +9 -0
- package/es/src/business/ap-radio-group/ap-radio-group.vue2.mjs +33 -33
- package/es/src/business/ap-status/group/ApStatusGroup.vue2.mjs +12 -12
- package/es/src/business/ap-table-modal/table-layout/index.vue2.mjs +43 -43
- package/es/src/business/ap-table-modal/table-modal.vue2.mjs +57 -57
- package/es/src/business/ap-tag/ap-tag-group.vue.mjs +37 -37
- package/es/src/business/ap-tag/ap-tag.vue.mjs +24 -24
- package/es/src/business/ap-title/ApTitle.vue2.mjs +27 -27
- package/es/src/business/ap-value-select-card/index.vue2.mjs +98 -98
- package/es/src/business/ap-view/components/main-button-content.vue.d.ts +1 -1
- package/es/src/business/batch-input-group/form-item.vue.mjs +25 -25
- package/es/src/business/batch-input-group/index.vue.mjs +60 -60
- package/es/src/business/batch-input-group/popover-input/index.vue2.mjs +29 -29
- package/es/src/config-provider/config-provider-props.d.ts +1 -1
- package/es/src/config-provider/config-provider.d.ts +3 -0
- package/es/src/config-provider/hooks/use-global-config.d.ts +1 -0
- package/es/src/config-provider/index.d.ts +6 -0
- package/es/src/editable-table/form-item.vue.mjs +35 -35
- package/es/src/editable-table/index.vue.mjs +19 -19
- package/es/src/full-screen/index.vue.mjs +46 -46
- package/es/src/locale/lang/en.mjs +2 -1
- package/es/src/locale/lang/zh-cn.mjs +2 -1
- package/es/src/mask/index.vue.mjs +48 -48
- package/es/src/portal/index.vue.mjs +5 -5
- package/es/src/scroll-bar/internal.vue.mjs +62 -62
- package/es/src/scroll-view/index.vue.mjs +66 -66
- package/es/src/skeleton/components/desc/index.vue2.mjs +9 -9
- package/es/src/skeleton/components/desc/item-large.vue2.mjs +25 -25
- package/es/src/skeleton/components/desc/item.vue2.mjs +13 -13
- package/es/src/skeleton/components/list/index.vue2.mjs +14 -14
- package/es/src/skeleton/components/list/item.vue2.mjs +12 -12
- package/es/src/skeleton/components/page-header/index.vue2.mjs +8 -8
- package/es/src/skeleton/components/search-form/index.vue2.mjs +35 -35
- package/es/src/skeleton/components/table/index.vue2.mjs +17 -17
- package/es/src/skeleton/components/table/item.vue2.mjs +23 -23
- package/es/src/skeleton/descriptions.vue2.mjs +15 -15
- package/es/src/skeleton/list-page.vue2.mjs +12 -12
- package/es/src/splitter/Panel.vue2.mjs +11 -11
- package/es/src/splitter/SplitBar.vue2.mjs +79 -79
- package/es/src/splitter/Splitter.vue2.mjs +50 -50
- package/es/src/text/group.vue.mjs +8 -8
- package/es/src/text/index.vue.mjs +48 -48
- package/es/src/version.d.ts +1 -1
- package/es/src/version.mjs +1 -1
- package/lib/src/ag-grid/components/body-cell/index.vue2.js +1 -1
- package/lib/src/ag-grid/components/empty/index.vue2.js +1 -1
- package/lib/src/ag-grid/components/header-cell/index.vue2.js +1 -1
- package/lib/src/ag-grid/components/row/index.vue2.js +1 -1
- package/lib/src/ag-grid/components/tooltip/index.vue2.js +1 -1
- package/lib/src/ag-grid/editable/form-item.vue.js +1 -1
- package/lib/src/ag-grid/editable/index.vue.js +1 -1
- package/lib/src/ag-grid/hooks/use-columns.d.ts +2 -0
- package/lib/src/ag-grid/hooks/use-columns.js +1 -1
- package/lib/src/ag-grid/index.vue.js +1 -1
- package/lib/src/ap-action/group/index.vue.js +1 -1
- package/lib/src/ap-action/item/index.vue2.js +1 -1
- package/lib/src/ap-action/item-dropdown/index.vue.js +1 -1
- package/lib/src/ap-field/checkbox/index.vue.js +1 -1
- package/lib/src/ap-field/checkbox/read.vue2.js +1 -1
- package/lib/src/ap-field/date/index.vue.js +1 -1
- package/lib/src/ap-field/date/read.vue2.js +1 -1
- package/lib/src/ap-field/date-range/index.vue.js +1 -1
- package/lib/src/ap-field/date-range/read.vue2.js +1 -1
- package/lib/src/ap-field/hooks/use-default-presets.js +1 -1
- package/lib/src/ap-field/interface.d.ts +46 -1
- package/lib/src/ap-field/number/index.vue.js +1 -1
- package/lib/src/ap-field/radio/index.vue.js +1 -1
- package/lib/src/ap-field/second/index.vue.js +1 -1
- package/lib/src/ap-field/second/read.vue2.js +1 -1
- package/lib/src/ap-field/segmented/index.vue.js +1 -1
- package/lib/src/ap-field/select/index.vue.d.ts +12 -2
- package/lib/src/ap-field/select/index.vue.js +1 -1
- package/lib/src/ap-field/select/read.vue2.js +1 -1
- package/lib/src/ap-field/slider/index.vue.js +1 -1
- package/lib/src/ap-field/style/select.js +1 -1
- package/lib/src/ap-field/switch/index.vue.js +1 -1
- package/lib/src/ap-field/text/read-password.vue2.js +1 -1
- package/lib/src/ap-field/text/read.vue2.js +1 -1
- package/lib/src/ap-field/text-area/index.vue.js +1 -1
- package/lib/src/ap-field/text-area/read.vue2.js +1 -1
- package/lib/src/ap-field/tree-select/index.vue.js +1 -1
- package/lib/src/ap-form/ap-form.vue2.js +1 -1
- package/lib/src/ap-form/drawer-form/index.vue.js +1 -1
- package/lib/src/ap-form/item/index.vue.js +1 -1
- package/lib/src/ap-form/items/checkbox/index.vue.js +1 -1
- package/lib/src/ap-form/items/number/index.vue.js +1 -1
- package/lib/src/ap-form/items/radio/index.vue.js +1 -1
- package/lib/src/ap-form/items/switch/index.vue.js +1 -1
- package/lib/src/ap-form/items/text/index.vue2.js +1 -1
- package/lib/src/ap-form/items/text/password.vue.js +1 -1
- package/lib/src/ap-form/items/text-area/index.vue.js +1 -1
- package/lib/src/ap-form/modal-form/index.vue.js +1 -1
- package/lib/src/ap-form/search-form/components/popover-filter.vue2.js +1 -1
- package/lib/src/ap-form/search-form/components/popover-sorter/sortable-item.vue2.js +1 -1
- package/lib/src/ap-grid/editable/form-item.vue.js +1 -1
- package/lib/src/ap-grid/editable/index.vue.js +1 -1
- package/lib/src/ap-grid/index.vue.js +1 -1
- package/lib/src/ap-list/index.vue.js +1 -1
- package/lib/src/ap-table/ap-table.vue2.js +1 -1
- package/lib/src/ap-table/components/index/index.vue2.js +1 -1
- package/lib/src/ap-table/components/setting/modal/index.vue2.js +1 -1
- package/lib/src/ap-table/components/setting/select-group/index.vue2.js +1 -1
- package/lib/src/ap-table/components/setting/sortable/index.vue2.js +1 -1
- package/lib/src/ap-table/components/setting/sortable/item.vue2.js +1 -1
- package/lib/src/ap-table/components/setting/template/edit-form.vue.d.ts +1 -0
- package/lib/src/ap-table/components/setting/template/edit-form.vue2.js +1 -1
- package/lib/src/ap-table/components/setting/template/index.vue2.js +1 -1
- package/lib/src/ap-table/components/setting/template/item.vue2.js +1 -1
- package/lib/src/ap-table/components/setting/tree-select/index.vue2.js +1 -1
- package/lib/src/ap-table/hooks/use-sorted-filtered.d.ts +18 -2
- package/lib/src/ap-table/hooks/use-sorted-filtered.js +1 -1
- package/lib/src/ap-table/hooks/use-table-paging-ng.d.ts +17 -2
- package/lib/src/ap-table/hooks/use-table-paging-ng.js +1 -1
- package/lib/src/ap-table/style/setting.js +1 -1
- package/lib/src/business/ag-grid-modal/modal-layout/index.vue2.js +1 -1
- package/lib/src/business/ag-grid-modal/selected-items/default.vue2.js +1 -1
- package/lib/src/business/ag-grid-modal/wrapper/index.vue2.js +1 -1
- package/lib/src/business/ap-descriptions/ap-descriptions.vue.js +1 -1
- package/lib/src/business/ap-descriptions/help-message/index.vue2.js +1 -1
- package/lib/src/business/ap-download/ap-download.vue.js +1 -1
- package/lib/src/business/ap-expand-alert/ApExpandAlert.vue.js +1 -1
- package/lib/src/business/ap-export-group/ApExportGroup.vue2.js +1 -1
- package/lib/src/business/ap-export-group/handleExportDownload.d.ts +1 -1
- package/lib/src/business/ap-export-group/handleExportDownload.js +1 -1
- package/lib/src/business/ap-export-group/interface.d.ts +9 -0
- package/lib/src/business/ap-radio-group/ap-radio-group.vue2.js +1 -1
- package/lib/src/business/ap-status/group/ApStatusGroup.vue2.js +1 -1
- package/lib/src/business/ap-table-modal/table-layout/index.vue2.js +1 -1
- package/lib/src/business/ap-table-modal/table-modal.vue2.js +1 -1
- package/lib/src/business/ap-tag/ap-tag-group.vue.js +1 -1
- package/lib/src/business/ap-tag/ap-tag.vue.js +1 -1
- package/lib/src/business/ap-title/ApTitle.vue2.js +1 -1
- package/lib/src/business/ap-value-select-card/index.vue2.js +1 -1
- package/lib/src/business/ap-view/components/main-button-content.vue.d.ts +1 -1
- package/lib/src/business/batch-input-group/form-item.vue.js +1 -1
- package/lib/src/business/batch-input-group/index.vue.js +2 -2
- package/lib/src/business/batch-input-group/popover-input/index.vue2.js +2 -2
- package/lib/src/config-provider/config-provider-props.d.ts +1 -1
- package/lib/src/config-provider/config-provider.d.ts +3 -0
- package/lib/src/config-provider/hooks/use-global-config.d.ts +1 -0
- package/lib/src/config-provider/index.d.ts +6 -0
- package/lib/src/editable-table/form-item.vue.js +1 -1
- package/lib/src/editable-table/index.vue.js +1 -1
- package/lib/src/full-screen/index.vue.js +1 -1
- package/lib/src/locale/lang/en.js +1 -1
- package/lib/src/locale/lang/zh-cn.js +1 -1
- package/lib/src/mask/index.vue.js +1 -1
- package/lib/src/portal/index.vue.js +1 -1
- package/lib/src/scroll-bar/internal.vue.js +1 -1
- package/lib/src/scroll-view/index.vue.js +1 -1
- package/lib/src/skeleton/components/desc/index.vue2.js +1 -1
- package/lib/src/skeleton/components/desc/item-large.vue2.js +1 -1
- package/lib/src/skeleton/components/desc/item.vue2.js +1 -1
- package/lib/src/skeleton/components/list/index.vue2.js +1 -1
- package/lib/src/skeleton/components/list/item.vue2.js +1 -1
- package/lib/src/skeleton/components/page-header/index.vue2.js +1 -1
- package/lib/src/skeleton/components/search-form/index.vue2.js +1 -1
- package/lib/src/skeleton/components/table/index.vue2.js +1 -1
- package/lib/src/skeleton/components/table/item.vue2.js +1 -1
- package/lib/src/skeleton/descriptions.vue2.js +1 -1
- package/lib/src/skeleton/list-page.vue2.js +1 -1
- package/lib/src/splitter/Panel.vue2.js +1 -1
- package/lib/src/splitter/SplitBar.vue2.js +1 -1
- package/lib/src/splitter/Splitter.vue2.js +1 -1
- package/lib/src/text/group.vue.js +1 -1
- package/lib/src/text/index.vue.js +1 -1
- package/lib/src/version.d.ts +1 -1
- package/lib/src/version.js +1 -1
- package/package.json +3 -3
|
@@ -1,167 +1,168 @@
|
|
|
1
|
-
import { ref as
|
|
2
|
-
import { cloneDeep as
|
|
1
|
+
import { ref as me, reactive as B, unref as g, nextTick as Se, onMounted as ze, watch as Pe, computed as y, createVNode as x } from "vue";
|
|
2
|
+
import { cloneDeep as Te, isArray as J, isEqualWith as be, isUndefined as Ce } from "lodash-unified";
|
|
3
3
|
import "../../config-provider/index.mjs";
|
|
4
4
|
import "../../utils/index.mjs";
|
|
5
|
-
import { parseFieldValue as
|
|
6
|
-
import { useTableSortedAndFiltered as
|
|
7
|
-
import { useLocale as
|
|
8
|
-
import { useNamespace as
|
|
9
|
-
import { isDef as
|
|
10
|
-
const d = 1,
|
|
5
|
+
import { parseFieldValue as xe, dataIndexToStr as Fe, isEqualCustom as we } from "../utils.mjs";
|
|
6
|
+
import { useTableSortedAndFiltered as De } from "./use-sorted-filtered.mjs";
|
|
7
|
+
import { useLocale as Ee } from "../../config-provider/hooks/use-locale.mjs";
|
|
8
|
+
import { useNamespace as ve } from "../../config-provider/hooks/use-namespace.mjs";
|
|
9
|
+
import { isDef as K } from "../../utils/is.mjs";
|
|
10
|
+
const d = 1, R = 20, Q = {
|
|
11
11
|
defaultCurrent: d,
|
|
12
|
-
defaultPageSize:
|
|
12
|
+
defaultPageSize: R,
|
|
13
13
|
showLessItems: !1,
|
|
14
14
|
showTotal: !0
|
|
15
15
|
};
|
|
16
|
-
function
|
|
17
|
-
return i === !1 ? {} : i == null || i === !0 ?
|
|
18
|
-
...
|
|
16
|
+
function Ae(i) {
|
|
17
|
+
return i === !1 ? {} : i == null || i === !0 ? Q : {
|
|
18
|
+
...Q,
|
|
19
19
|
...i
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
function
|
|
22
|
+
function Le(i) {
|
|
23
23
|
const f = {};
|
|
24
|
-
return i === !1 || (i === !0 || i == null ? (f.current = d, f.pageSize =
|
|
24
|
+
return i === !1 || (i === !0 || i == null ? (f.current = d, f.pageSize = R) : (f.current = i.defaultCurrent || d, f.pageSize = i.defaultPageSize || R)), f;
|
|
25
25
|
}
|
|
26
|
-
const
|
|
26
|
+
const qe = ({
|
|
27
27
|
manual: i = !1,
|
|
28
28
|
request: f,
|
|
29
|
-
params:
|
|
30
|
-
defaultData:
|
|
31
|
-
formatParams:
|
|
32
|
-
paramsValueTypeMap:
|
|
33
|
-
resetFieldsIgnores:
|
|
34
|
-
filterFields:
|
|
35
|
-
sortFields:
|
|
36
|
-
namespace:
|
|
29
|
+
params: I = {},
|
|
30
|
+
defaultData: M = [],
|
|
31
|
+
formatParams: N,
|
|
32
|
+
paramsValueTypeMap: O,
|
|
33
|
+
resetFieldsIgnores: V,
|
|
34
|
+
filterFields: W,
|
|
35
|
+
sortFields: $,
|
|
36
|
+
namespace: G = "ap-table",
|
|
37
37
|
pagination: p,
|
|
38
|
-
onClickReset:
|
|
39
|
-
onAfterRequest:
|
|
38
|
+
onClickReset: Z,
|
|
39
|
+
onAfterRequest: H,
|
|
40
|
+
defaultSortOrder: h
|
|
40
41
|
}) => {
|
|
41
|
-
let
|
|
42
|
-
const
|
|
43
|
-
getColumnSFConfig:
|
|
44
|
-
setSF:
|
|
45
|
-
clearAll:
|
|
46
|
-
sortedInfo:
|
|
47
|
-
filteredInfo:
|
|
48
|
-
} =
|
|
49
|
-
t:
|
|
50
|
-
} =
|
|
51
|
-
b:
|
|
52
|
-
} =
|
|
53
|
-
total:
|
|
54
|
-
records:
|
|
42
|
+
let F = 0, s = {};
|
|
43
|
+
const X = Ae(p), Y = (e) => N ? N(e) : e, m = me(), c = B(Le(p)), {
|
|
44
|
+
getColumnSFConfig: ee,
|
|
45
|
+
setSF: te,
|
|
46
|
+
clearAll: ne,
|
|
47
|
+
sortedInfo: j,
|
|
48
|
+
filteredInfo: U
|
|
49
|
+
} = De(h), {
|
|
50
|
+
t: S
|
|
51
|
+
} = Ee(), {
|
|
52
|
+
b: z
|
|
53
|
+
} = ve(G), a = B({
|
|
54
|
+
total: M.length,
|
|
55
|
+
records: M,
|
|
55
56
|
loading: !1
|
|
56
|
-
}),
|
|
57
|
-
const n =
|
|
58
|
-
|
|
57
|
+
}), P = () => m.value?.apForm?.getFieldsValueTransformed(!0) || {}, w = async (e, t) => {
|
|
58
|
+
const n = Y(e), r = Date.now(), o = t?.cache;
|
|
59
|
+
F = r, a.loading = !0;
|
|
59
60
|
try {
|
|
60
61
|
const u = await f({
|
|
61
|
-
...g(
|
|
62
|
+
...g(I),
|
|
62
63
|
...n
|
|
63
64
|
});
|
|
64
|
-
if (
|
|
65
|
+
if (F === r) {
|
|
65
66
|
a.total = u.total || u.data?.length || 0, o ? a.records.push(...u.data || []) : a.records = [...u.data || []];
|
|
66
|
-
const
|
|
67
|
-
t?.onSuccess?.(e,
|
|
67
|
+
const C = a.records.length < a.total;
|
|
68
|
+
t?.onSuccess?.(e, C), a.loading = !1;
|
|
68
69
|
}
|
|
69
70
|
} catch {
|
|
70
|
-
|
|
71
|
+
F === r && !o && (a.records = [], a.total = 0), a.loading = !1;
|
|
71
72
|
} finally {
|
|
72
|
-
|
|
73
|
+
H?.(a.records);
|
|
73
74
|
}
|
|
74
|
-
},
|
|
75
|
+
}, D = (e) => {
|
|
75
76
|
const t = {};
|
|
76
77
|
return Object.entries(e).forEach(([n, r]) => {
|
|
77
|
-
if (t[n] = r,
|
|
78
|
-
const o =
|
|
79
|
-
o && (t[n] =
|
|
78
|
+
if (t[n] = r, O && r) {
|
|
79
|
+
const o = O[n];
|
|
80
|
+
o && (t[n] = xe(o, r));
|
|
80
81
|
}
|
|
81
82
|
}), t;
|
|
82
|
-
},
|
|
83
|
-
const t =
|
|
83
|
+
}, re = async (e) => {
|
|
84
|
+
const t = P(), n = {};
|
|
84
85
|
Object.entries(t).forEach(([r, o]) => {
|
|
85
|
-
|
|
86
|
-
}), await
|
|
86
|
+
V && V.indexOf(r) > -1 && (n[r] = o);
|
|
87
|
+
}), await m.value?.apForm?.resetFields(), m.value?.apForm?.setFieldsValue?.(n), Se(() => {
|
|
87
88
|
e?.();
|
|
88
89
|
});
|
|
89
|
-
},
|
|
90
|
+
}, T = (e) => {
|
|
90
91
|
s = e;
|
|
91
|
-
const t =
|
|
92
|
-
|
|
93
|
-
},
|
|
94
|
-
|
|
92
|
+
const t = D(e);
|
|
93
|
+
w(t);
|
|
94
|
+
}, ae = (e) => {
|
|
95
|
+
T({
|
|
95
96
|
...s,
|
|
96
97
|
...e
|
|
97
98
|
});
|
|
98
99
|
};
|
|
99
|
-
let
|
|
100
|
-
function
|
|
101
|
-
|
|
100
|
+
let b, E = !0;
|
|
101
|
+
function q() {
|
|
102
|
+
b = void 0, E = !0;
|
|
102
103
|
}
|
|
103
|
-
const
|
|
104
|
-
if (!
|
|
104
|
+
const oe = () => {
|
|
105
|
+
if (!E)
|
|
105
106
|
return;
|
|
106
|
-
const e =
|
|
107
|
+
const e = b ? b + 1 : 2, t = {
|
|
107
108
|
...s,
|
|
108
109
|
current: e
|
|
109
110
|
};
|
|
110
111
|
s = t;
|
|
111
|
-
const n =
|
|
112
|
-
|
|
112
|
+
const n = D(t);
|
|
113
|
+
w(n, {
|
|
113
114
|
cache: !0,
|
|
114
115
|
onSuccess(r, o) {
|
|
115
|
-
|
|
116
|
+
b = r.current, E = o;
|
|
116
117
|
}
|
|
117
118
|
});
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
},
|
|
121
|
-
const t =
|
|
122
|
-
n && e && (c.current = d),
|
|
119
|
+
}, se = () => Te(s), v = () => {
|
|
120
|
+
_(!0), q();
|
|
121
|
+
}, _ = (e = !1) => {
|
|
122
|
+
const t = P(), n = p !== !1;
|
|
123
|
+
n && e && (c.current = d), T({
|
|
123
124
|
...t,
|
|
124
125
|
filter: s.filter,
|
|
125
126
|
sort: s.sort,
|
|
126
127
|
current: n ? e ? d : s.current || c.current : void 0,
|
|
127
128
|
pageSize: n ? s.pageSize || c.pageSize : void 0
|
|
128
129
|
});
|
|
129
|
-
},
|
|
130
|
-
|
|
131
|
-
},
|
|
132
|
-
|
|
133
|
-
},
|
|
130
|
+
}, ce = () => {
|
|
131
|
+
ne(), s.sort = {}, s.filter = {}, Z?.(), re(v), q();
|
|
132
|
+
}, A = () => {
|
|
133
|
+
T(s);
|
|
134
|
+
}, ie = (e) => {
|
|
134
135
|
if (p === !1)
|
|
135
|
-
|
|
136
|
+
A();
|
|
136
137
|
else {
|
|
137
138
|
const {
|
|
138
139
|
current: t,
|
|
139
140
|
pageSize: n
|
|
140
141
|
} = c, r = a.total - e, o = Math.ceil(r / n), u = t > o ? o : t;
|
|
141
|
-
|
|
142
|
+
ae({
|
|
142
143
|
current: u > 0 ? u : 1
|
|
143
144
|
});
|
|
144
145
|
}
|
|
145
|
-
},
|
|
146
|
-
const r =
|
|
147
|
-
c.current = e.current, c.pageSize = e.pageSize,
|
|
148
|
-
const o =
|
|
146
|
+
}, L = (e, t, n) => {
|
|
147
|
+
const r = P();
|
|
148
|
+
c.current = e.current, c.pageSize = e.pageSize, te(t, n);
|
|
149
|
+
const o = J(n) ? [...n] : [n], u = {};
|
|
149
150
|
for (const l of o)
|
|
150
|
-
g(
|
|
151
|
-
const
|
|
151
|
+
g($)?.includes(l.columnKey || l.field) && l.order && (u[Fe(l.columnKey || l.field)] = l.order);
|
|
152
|
+
const C = {};
|
|
152
153
|
for (const l of Object.keys(t))
|
|
153
|
-
g(
|
|
154
|
-
const
|
|
154
|
+
g(W)?.includes(l) && t[l] && (C[l] = t[l]);
|
|
155
|
+
const k = {
|
|
155
156
|
...r,
|
|
156
|
-
filter:
|
|
157
|
+
filter: C,
|
|
157
158
|
sort: u,
|
|
158
159
|
current: e.current,
|
|
159
160
|
pageSize: e.pageSize
|
|
160
161
|
};
|
|
161
|
-
|
|
162
|
-
},
|
|
162
|
+
be(s, k, we) || T(k);
|
|
163
|
+
}, ue = (e, t = U.value || {}, n = j.value || {}) => {
|
|
163
164
|
const r = e?.current ?? c.current, o = e?.pageSize ?? c.pageSize;
|
|
164
|
-
|
|
165
|
+
L(
|
|
165
166
|
{
|
|
166
167
|
current: r,
|
|
167
168
|
pageSize: o
|
|
@@ -175,8 +176,13 @@ const je = ({
|
|
|
175
176
|
}
|
|
176
177
|
);
|
|
177
178
|
};
|
|
178
|
-
|
|
179
|
-
|
|
179
|
+
function le() {
|
|
180
|
+
return h ? {
|
|
181
|
+
[h.field]: h.order
|
|
182
|
+
} : {};
|
|
183
|
+
}
|
|
184
|
+
ze(() => {
|
|
185
|
+
const e = P(), {
|
|
180
186
|
current: t,
|
|
181
187
|
pageSize: n
|
|
182
188
|
} = c;
|
|
@@ -184,18 +190,18 @@ const je = ({
|
|
|
184
190
|
current: t,
|
|
185
191
|
pageSize: n,
|
|
186
192
|
filter: {},
|
|
187
|
-
sort:
|
|
193
|
+
sort: le(),
|
|
188
194
|
...e
|
|
189
195
|
}, !i) {
|
|
190
|
-
const r =
|
|
191
|
-
|
|
196
|
+
const r = D(s);
|
|
197
|
+
w(r);
|
|
192
198
|
}
|
|
193
|
-
}),
|
|
194
|
-
|
|
199
|
+
}), Pe(() => g(I), () => {
|
|
200
|
+
v();
|
|
195
201
|
}, {
|
|
196
202
|
deep: !0
|
|
197
203
|
});
|
|
198
|
-
const
|
|
204
|
+
const fe = y(() => {
|
|
199
205
|
if (a.total === 0)
|
|
200
206
|
return "-";
|
|
201
207
|
const {
|
|
@@ -204,74 +210,74 @@ const je = ({
|
|
|
204
210
|
} = c;
|
|
205
211
|
return `${e}/${Math.ceil(a.total / t)}`;
|
|
206
212
|
});
|
|
207
|
-
function
|
|
208
|
-
|
|
213
|
+
function ge(e) {
|
|
214
|
+
J(e) && (a.records = e, a.total = e.length);
|
|
209
215
|
}
|
|
210
|
-
const
|
|
216
|
+
const de = y(() => {
|
|
211
217
|
const {
|
|
212
218
|
showLessItems: e,
|
|
213
219
|
showTotal: t,
|
|
214
220
|
showQuickJumper: n,
|
|
215
221
|
showSizeChanger: r,
|
|
216
222
|
pageSizeOptions: o
|
|
217
|
-
} =
|
|
223
|
+
} = X;
|
|
218
224
|
return {
|
|
219
225
|
loading: a.loading,
|
|
220
226
|
pagination: {
|
|
221
227
|
current: c.current,
|
|
222
228
|
pageSize: c.pageSize,
|
|
223
229
|
total: a.total,
|
|
224
|
-
showSizeChanger:
|
|
225
|
-
showQuickJumper:
|
|
230
|
+
showSizeChanger: K(r) ? r : !e,
|
|
231
|
+
showQuickJumper: K(n) ? n : !e,
|
|
226
232
|
showLessItems: e,
|
|
227
233
|
size: "default",
|
|
228
|
-
pageSizeOptions:
|
|
229
|
-
showTotal: t ? (u) =>
|
|
230
|
-
class:
|
|
231
|
-
}, [
|
|
232
|
-
class:
|
|
233
|
-
}, [u]), " ",
|
|
234
|
-
class:
|
|
235
|
-
}, [
|
|
236
|
-
class:
|
|
237
|
-
}, [g(
|
|
234
|
+
pageSizeOptions: Ce(o) ? ["10", "20", "50", "100"] : o,
|
|
235
|
+
showTotal: t ? (u) => x("span", {
|
|
236
|
+
class: z("pagination-total-wrapper")
|
|
237
|
+
}, [S("ap.apTable.pagination.totalLeftPrefix"), " ", x("span", {
|
|
238
|
+
class: z("pagination-count-text")
|
|
239
|
+
}, [u]), " ", S("ap.apTable.pagination.totalLeftSuffix"), x("span", {
|
|
240
|
+
class: z("pagination--total-right")
|
|
241
|
+
}, [S("ap.apTable.pagination.totalRightPrefix"), " ", x("span", {
|
|
242
|
+
class: z("pagination-count-text")
|
|
243
|
+
}, [g(fe)]), " ", S("ap.apTable.pagination.totalRightSuffix")])]) : void 0
|
|
238
244
|
},
|
|
239
|
-
onChange:
|
|
245
|
+
onChange: L,
|
|
240
246
|
dataSource: a.records
|
|
241
247
|
};
|
|
242
248
|
});
|
|
243
|
-
function
|
|
244
|
-
Object.assign(c, e), s.current = e.current, s.pageSize = e.pageSize, t &&
|
|
249
|
+
function pe(e, t = !0) {
|
|
250
|
+
Object.assign(c, e), s.current = e.current, s.pageSize = e.pageSize, t && A();
|
|
245
251
|
}
|
|
246
|
-
function
|
|
252
|
+
function he() {
|
|
247
253
|
return {
|
|
248
254
|
...c
|
|
249
255
|
};
|
|
250
256
|
}
|
|
251
257
|
return {
|
|
252
|
-
formRef:
|
|
253
|
-
submit:
|
|
254
|
-
reset:
|
|
255
|
-
refresh:
|
|
256
|
-
refreshByDelete:
|
|
258
|
+
formRef: m,
|
|
259
|
+
submit: v,
|
|
260
|
+
reset: ce,
|
|
261
|
+
refresh: A,
|
|
262
|
+
refreshByDelete: ie,
|
|
257
263
|
data: a,
|
|
258
|
-
handleTableChange:
|
|
259
|
-
handleTableChangeOptional:
|
|
260
|
-
tableProps:
|
|
261
|
-
dataSource:
|
|
262
|
-
setDataSource:
|
|
263
|
-
getColumnSFConfig:
|
|
264
|
-
sortedInfo:
|
|
265
|
-
filteredInfo:
|
|
266
|
-
getPaging:
|
|
267
|
-
setPaging:
|
|
268
|
-
submitWith:
|
|
269
|
-
fetchNextPageAndCache:
|
|
270
|
-
getLastParams:
|
|
264
|
+
handleTableChange: L,
|
|
265
|
+
handleTableChangeOptional: ue,
|
|
266
|
+
tableProps: de,
|
|
267
|
+
dataSource: y(() => a.records),
|
|
268
|
+
setDataSource: ge,
|
|
269
|
+
getColumnSFConfig: ee,
|
|
270
|
+
sortedInfo: j,
|
|
271
|
+
filteredInfo: U,
|
|
272
|
+
getPaging: he,
|
|
273
|
+
setPaging: pe,
|
|
274
|
+
submitWith: _,
|
|
275
|
+
fetchNextPageAndCache: oe,
|
|
276
|
+
getLastParams: se
|
|
271
277
|
};
|
|
272
278
|
};
|
|
273
279
|
export {
|
|
274
280
|
d as DEFAULT_CURRENT,
|
|
275
|
-
|
|
276
|
-
|
|
281
|
+
R as DEFAULT_PAGE_SIZE,
|
|
282
|
+
qe as useTablePaging
|
|
277
283
|
};
|
|
@@ -250,7 +250,7 @@ const o = (e) => {
|
|
|
250
250
|
marginBottom: 0
|
|
251
251
|
},
|
|
252
252
|
"&:hover": {
|
|
253
|
-
backgroundColor: e.
|
|
253
|
+
backgroundColor: e.colorBg3,
|
|
254
254
|
cursor: "pointer",
|
|
255
255
|
[`${e.componentCls}-template-item-action-wrapper`]: {
|
|
256
256
|
display: "flex"
|
|
@@ -273,7 +273,7 @@ const o = (e) => {
|
|
|
273
273
|
},
|
|
274
274
|
[`${i}-active`]: {
|
|
275
275
|
backgroundColor: e.calc(e.colorPrimary).colorMix(5),
|
|
276
|
-
|
|
276
|
+
[`${i}-label`]: {
|
|
277
277
|
color: e.colorPrimary
|
|
278
278
|
}
|
|
279
279
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { Button as
|
|
3
|
-
import { ApTitle as
|
|
1
|
+
import { defineComponent as M, computed as O, createElementBlock as m, renderSlot as a, openBlock as n, normalizeStyle as g, normalizeClass as o, unref as e, createElementVNode as s, createBlock as v, createCommentVNode as h, withCtx as i, resolveDynamicComponent as V, h as w, Fragment as b, createVNode as p, createTextVNode as S, toDisplayString as T, renderList as L } from "vue";
|
|
2
|
+
import { Button as j, Empty as k } from "@aplus-frontend/antdv";
|
|
3
|
+
import { ApTitle as C } from "../../ap-title/index.mjs";
|
|
4
4
|
import "../../../config-provider/index.mjs";
|
|
5
|
-
import { useAgGridModalInject as
|
|
5
|
+
import { useAgGridModalInject as x } from "../hooks/use-ag-grid-instance.mjs";
|
|
6
6
|
import D from "../style/index.mjs";
|
|
7
7
|
import { useLocale as z } from "../../../config-provider/hooks/use-locale.mjs";
|
|
8
8
|
import { useNamespace as G } from "../../../config-provider/hooks/use-namespace.mjs";
|
|
9
|
-
const
|
|
9
|
+
const U = /* @__PURE__ */ M({
|
|
10
10
|
__name: "index",
|
|
11
11
|
props: {
|
|
12
12
|
leftTitle: { type: [String, Object, Number, Boolean, null, Array], default: "" },
|
|
@@ -15,93 +15,93 @@ const W = /* @__PURE__ */ I({
|
|
|
15
15
|
bordered: { type: Boolean },
|
|
16
16
|
layoutType: { default: void 0 }
|
|
17
17
|
},
|
|
18
|
-
setup(
|
|
19
|
-
const { t:
|
|
20
|
-
if (
|
|
18
|
+
setup(B) {
|
|
19
|
+
const { t: f } = z(), d = x(), r = O(() => d?.selectedRows?.value || []), y = B, E = () => {
|
|
20
|
+
if (y.dividerOffset != null)
|
|
21
21
|
return {
|
|
22
|
-
"--ag-grid-modal-layout-divider-offset": `${
|
|
22
|
+
"--ag-grid-modal-layout-divider-offset": `${y.dividerOffset}px`
|
|
23
23
|
};
|
|
24
|
-
},
|
|
25
|
-
|
|
24
|
+
}, $ = () => {
|
|
25
|
+
d?.clearAllSelected();
|
|
26
26
|
}, u = (t) => {
|
|
27
|
-
|
|
28
|
-
}, { e:
|
|
29
|
-
return (t, P) =>
|
|
27
|
+
d?.removeSelected(t);
|
|
28
|
+
}, { e: A, m: l, b: N } = G("ag-grid-modal"), I = D("ag-grid-modal");
|
|
29
|
+
return (t, P) => t.layoutType === "two-column" ? (n(), m("div", {
|
|
30
30
|
key: 0,
|
|
31
|
-
class:
|
|
32
|
-
style:
|
|
31
|
+
class: o([e(N)(), e(l)("table-layout"), t.bordered ? e(l)("bordered") : "", e(I)]),
|
|
32
|
+
style: g(E())
|
|
33
33
|
}, [
|
|
34
|
-
|
|
35
|
-
class:
|
|
34
|
+
s("div", {
|
|
35
|
+
class: o(e(l)("table-layout-left"))
|
|
36
36
|
}, [
|
|
37
|
-
|
|
37
|
+
t.leftTitle ? (n(), v(e(C), {
|
|
38
38
|
key: 0,
|
|
39
39
|
style: { "margin-bottom": "16px" }
|
|
40
40
|
}, {
|
|
41
|
-
prefix:
|
|
42
|
-
(
|
|
41
|
+
prefix: i(() => [
|
|
42
|
+
(n(), v(V(w(b, [t.leftTitle]))))
|
|
43
43
|
]),
|
|
44
44
|
_: 1
|
|
45
|
-
})) :
|
|
46
|
-
|
|
47
|
-
class:
|
|
45
|
+
})) : h("", !0),
|
|
46
|
+
s("div", {
|
|
47
|
+
class: o(e(l)("table-layout-left-content"))
|
|
48
48
|
}, [
|
|
49
|
-
|
|
49
|
+
a(t.$slots, "default")
|
|
50
50
|
], 2)
|
|
51
51
|
], 2),
|
|
52
|
-
|
|
53
|
-
class:
|
|
54
|
-
style:
|
|
52
|
+
s("div", {
|
|
53
|
+
class: o(e(l)("table-layout-right")),
|
|
54
|
+
style: g(t.rightContentStyle)
|
|
55
55
|
}, [
|
|
56
|
-
|
|
57
|
-
prefix:
|
|
58
|
-
|
|
59
|
-
count:
|
|
56
|
+
p(e(C), null, {
|
|
57
|
+
prefix: i(() => [
|
|
58
|
+
a(t.$slots, "rightTitle", {
|
|
59
|
+
count: r.value.length
|
|
60
60
|
}, () => [
|
|
61
|
-
T(
|
|
61
|
+
S(T(`${e(f)("ap.apTableModal.selected")} (${r.value.length})`), 1)
|
|
62
62
|
])
|
|
63
63
|
]),
|
|
64
|
-
suffix:
|
|
65
|
-
|
|
64
|
+
suffix: i(() => [
|
|
65
|
+
p(e(j), {
|
|
66
66
|
type: "link",
|
|
67
67
|
style: { padding: "0px", height: "22px", "border-width": "0px" },
|
|
68
|
-
onClick:
|
|
68
|
+
onClick: $
|
|
69
69
|
}, {
|
|
70
|
-
default:
|
|
71
|
-
T(
|
|
70
|
+
default: i(() => [
|
|
71
|
+
S(T(e(f)("ap.apTableModal.clear")), 1)
|
|
72
72
|
]),
|
|
73
73
|
_: 1
|
|
74
74
|
})
|
|
75
75
|
]),
|
|
76
76
|
_: 3
|
|
77
77
|
}),
|
|
78
|
-
|
|
79
|
-
class:
|
|
78
|
+
s("div", {
|
|
79
|
+
class: o(e(l)("table-layout-right-content"))
|
|
80
80
|
}, [
|
|
81
|
-
(
|
|
82
|
-
key:
|
|
83
|
-
record:
|
|
84
|
-
actions: { deleteItem: u, deleteCurrent: () => u(
|
|
81
|
+
(n(!0), m(b, null, L(r.value, (c) => a(t.$slots, "renderSelectedItem", {
|
|
82
|
+
key: c,
|
|
83
|
+
record: c,
|
|
84
|
+
actions: { deleteItem: u, deleteCurrent: () => u(c) }
|
|
85
85
|
})), 128)),
|
|
86
|
-
|
|
86
|
+
r.value.length === 0 ? (n(), m("div", {
|
|
87
87
|
key: 0,
|
|
88
|
-
class:
|
|
88
|
+
class: o(e(A)("empty"))
|
|
89
89
|
}, [
|
|
90
|
-
|
|
91
|
-
image: e(
|
|
90
|
+
p(e(k), {
|
|
91
|
+
image: e(k).PRESENTED_IMAGE_SIMPLE
|
|
92
92
|
}, null, 8, ["image"])
|
|
93
|
-
], 2)) :
|
|
93
|
+
], 2)) : h("", !0)
|
|
94
94
|
], 2),
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
records:
|
|
95
|
+
s("div", null, [
|
|
96
|
+
a(t.$slots, "rightBottom", {
|
|
97
|
+
records: r.value,
|
|
98
98
|
actions: { deleteItem: u }
|
|
99
99
|
})
|
|
100
100
|
])
|
|
101
101
|
], 6)
|
|
102
|
-
], 6)) :
|
|
102
|
+
], 6)) : a(t.$slots, "default", { key: 1 });
|
|
103
103
|
}
|
|
104
104
|
});
|
|
105
105
|
export {
|
|
106
|
-
|
|
106
|
+
U as default
|
|
107
107
|
};
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { IconApAdLineCloseDrawer as
|
|
1
|
+
import { defineComponent as m, createElementBlock as p, openBlock as d, normalizeClass as l, unref as e, normalizeStyle as f, createElementVNode as s, renderSlot as u, createVNode as y } from "vue";
|
|
2
|
+
import { IconApAdLineCloseDrawer as k } from "@aplus-frontend/icon";
|
|
3
3
|
import "../../../config-provider/index.mjs";
|
|
4
4
|
import _ from "../style/selected-items.mjs";
|
|
5
|
-
import { useNamespace as
|
|
6
|
-
const v = /* @__PURE__ */
|
|
5
|
+
import { useNamespace as C } from "../../../config-provider/hooks/use-namespace.mjs";
|
|
6
|
+
const v = /* @__PURE__ */ m({
|
|
7
7
|
__name: "default",
|
|
8
8
|
props: {
|
|
9
9
|
style: { type: [Boolean, null, String, Object, Array] }
|
|
10
10
|
},
|
|
11
11
|
emits: ["clickDel"],
|
|
12
|
-
setup(
|
|
13
|
-
const { e: t, b:
|
|
14
|
-
return (
|
|
15
|
-
style:
|
|
16
|
-
class: l([e(
|
|
12
|
+
setup(h, { emit: n }) {
|
|
13
|
+
const { e: t, b: r } = C("ap-selected-items"), a = _("ap-selected-items"), c = n, i = () => c("clickDel");
|
|
14
|
+
return (o, S) => (d(), p("div", {
|
|
15
|
+
style: f(o.style),
|
|
16
|
+
class: l([e(r)(), e(t)("default"), e(a)])
|
|
17
17
|
}, [
|
|
18
|
-
|
|
18
|
+
s("div", {
|
|
19
19
|
class: l(e(t)("default-content"))
|
|
20
20
|
}, [
|
|
21
|
-
|
|
21
|
+
u(o.$slots, "default")
|
|
22
22
|
], 2),
|
|
23
|
-
|
|
23
|
+
s("span", {
|
|
24
24
|
class: l(e(t)("del-icon")),
|
|
25
25
|
onClick: i
|
|
26
26
|
}, [
|
|
27
|
-
|
|
27
|
+
y(e(k))
|
|
28
28
|
], 2)
|
|
29
29
|
], 6));
|
|
30
30
|
}
|