1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
| import { useCore } from "../../../hooks";
|
| // 排序
| export function useSort({
| config,
| Table,
| emit
| }: {
| config: ClTable.Config;
| Table: Vue.Ref<any>;
| emit: Vue.Emit;
| }) {
| const { crud } = useCore();
|
| // 设置默认排序Ï
| const defaultSort = (function () {
| let { prop, order } = config.defaultSort || {};
|
| const item = config.columns.find((e) =>
| ["desc", "asc", "descending", "ascending"].find((a) => a == e.sortable)
| );
|
| if (item) {
| prop = item.prop;
| order = ["descending", "desc"].find((a) => a == item.sortable)
| ? "descending"
| : "ascending";
| }
|
| if (order && prop) {
| crud.params.order = ["descending", "desc"].includes(order) ? "desc" : "asc";
| crud.params.prop = prop;
|
| return {
| prop,
| order
| };
| }
|
| return {};
| })();
|
| // 排序监听
| function onSortChange({ prop, order }: { prop: string | undefined; order: string }) {
| if (config.sortRefresh) {
| if (order === "descending") {
| order = "desc";
| }
|
| if (order === "ascending") {
| order = "asc";
| }
|
| if (!order) {
| prop = undefined;
| }
|
| crud.refresh({
| prop,
| order,
| page: 1
| });
| }
|
| emit("sort-change", { prop, order });
| }
|
| // 改变排序
| function changeSort(prop: string, order: string) {
| if (order === "desc") {
| order = "descending";
| }
|
| if (order === "asc") {
| order = "ascending";
| }
|
| Table.value?.sort(prop, order);
| }
|
| return {
| defaultSort,
| onSortChange,
| changeSort
| };
| }
|
|