wangzhibo
6 天以前 da0230346106bc810664488a2b152bc24f853a44
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
87
88
89
90
91
92
93
94
95
96
97
import { defineStore } from "pinia";
import { reactive, ref } from "vue";
import { Cs } from "../types";
import { service } from "/@/cool";
 
export const useSession = defineStore("cs.session", () => {
    // 详情
    const info = ref<Cs.Session>();
 
    // 列表
    const list = ref<Cs.Session[]>([]);
 
    // 是否加载完
    const loaded = ref(false);
 
    // 加载状态
    const loading = ref(false);
 
    // 分页
    const pagination = reactive({
        page: 1,
        size: 20
    });
 
    // 请求参数
    const reqParams = {
        order: "updateTime",
        sort: "desc"
    };
 
    // 刷新
    async function refresh(params?: any) {
        loading.value = true;
 
        // 合并参数
        Object.assign(reqParams, params);
 
        // 请求
        await service.cs.session
            .page({
                ...pagination,
                ...reqParams
            })
            .then((res) => {
                // 设置分页
                Object.assign(pagination, res.pagination);
 
                if (res.pagination.page == 1) {
                    list.value = res.list;
                } else {
                    list.value.push(...res.list);
                }
 
                // 是否加载完成
                loaded.value = res.pagination.total <= list.value.length;
 
                // 默认第一个
                if (!info.value) {
                    set(list.value[0]);
                }
            });
 
        loading.value = false;
    }
 
    // 设置会话
    function set(data?: Cs.Session) {
        if (data) {
            data.adminUnreadCount = 0;
        }
 
        info.value = data;
    }
 
    // 通过id设置会话
    function setById(sessionId: number) {
        const item = list.value.find((e) => e.id == sessionId);
        set(item);
    }
 
    // 清空会话
    function clear() {
        info.value = undefined;
    }
 
    return {
        info,
        list,
        set,
        setById,
        clear,
        pagination,
        loaded,
        loading,
        refresh
    };
});