store.ts 8.4 KB
Newer Older
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
1 2 3
import { Mutation, Action } from 'vuex';
import { StoreModuleType } from "@/utils/store";
import { ResponseData } from '@/utils/request';
雨爱无痕 已提交
4 5
import {WebSocket} from "@/services/websocket";
import settings from "@/config/settings";
aaronchen2k2k's avatar
aaronchen2k2k 已提交
6

aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
7
import {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8 9 10 11 12 13 14 15 16 17 18
    list,
    get,
    extract,
    create,
    update,
    remove,
    loadChildren,
    updateCode,
    syncFromZentao,
    syncToZentao,
    paste, move,
雨爱无痕 已提交
19
    rename,
aaronchen2k2k's avatar
aaronchen2k2k 已提交
20 21
    scriptTreeAddAttr,
    getNodeMap,
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
22
} from './service';
aaronchen2k2k's avatar
aaronchen2k2k 已提交
23
import {ScriptFileNotExist} from "@/utils/const";
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
24

25
export interface ScriptData {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
26
    list: [];
aaronchen2k2k's avatar
aaronchen2k2k 已提交
27
    detail: any;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
28
    treeDataMap: any;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
29
    checkedNodes: [];
aaronchen2k2k's avatar
aaronchen2k2k 已提交
30 31

    currWorkspace: any
aaronchen2k2k's avatar
aaronchen2k2k 已提交
32
    queryParams: any;
Z
zhaoke 已提交
33
    currentCodeChanged: boolean;
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
34 35
}

36 37
export interface ModuleType extends StoreModuleType<ScriptData> {
    state: ScriptData;
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
38
    mutations: {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
39
        setList: Mutation<ScriptData>;
40
        setItem: Mutation<ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
41
        setWorkspace: Mutation<ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
42
        setQueryParams: Mutation<ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
43
        setCheckedNodes: Mutation<ScriptData>;
Z
zhaoke 已提交
44
        setCurrentCodeChanged: Mutation<ScriptData>;
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
45 46
    };
    actions: {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
47
        listScript: Action<ScriptData, ScriptData>;
48
        getScript: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
49
        loadChildren: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
50
        syncFromZentao: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
51
        syncToZentao: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
52
        extractScript: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
53
        changeWorkspace: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
54
        setCheckedNodes: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
55 56

        createScript: Action<ScriptData, ScriptData>;
57
        updateScript: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
58
        deleteScript: Action<ScriptData, ScriptData>;
雨爱无痕 已提交
59
        renameScript: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
60
        pasteScript: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
61
        moveScript: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
62
        updateCode: Action<ScriptData, ScriptData>;
Z
zhaoke 已提交
63
        updateCurrentCodeChanged: Action<ScriptData, ScriptData>;
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
64 65
    };
}
66
const initState: ScriptData = {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
67
    list: [],
aaronchen2k2k's avatar
aaronchen2k2k 已提交
68
    detail: null,
aaronchen2k2k's avatar
aaronchen2k2k 已提交
69
    treeDataMap: {},
aaronchen2k2k's avatar
aaronchen2k2k 已提交
70

aaronchen2k2k's avatar
aaronchen2k2k 已提交
71 72
    currWorkspace: {id: 0, type: 'ztf'},
    queryParams: {},
aaronchen2k2k's avatar
aaronchen2k2k 已提交
73 74

    checkedNodes: [],
Z
zhaoke 已提交
75
    currentCodeChanged: false,
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
76 77 78 79
};

const StoreModel: ModuleType = {
    namespaced: true,
aaronchen2k2k's avatar
aaronchen2k2k 已提交
80
    name: 'Script',
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
81 82 83 84
    state: {
        ...initState
    },
    mutations: {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
85
        setList(state, payload) {
Z
zhaoke 已提交
86
            state.list = payload.length > 0 ? payload[0]['children'] : [];
R
root 已提交
87 88 89 90 91
            const treeDataMap = {};
            if(payload.length > 0) {
                getNodeMap(payload[0], treeDataMap);
            }
            state.treeDataMap = treeDataMap;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
92
        },
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
93
        setItem(state, payload) {
94
            state.detail = payload;
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
95
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
96 97 98
        setWorkspace(state, payload) {
            state.currWorkspace = payload;
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
99 100 101
        setQueryParams(state, payload) {
            state.queryParams = payload;
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
102 103 104 105

        setCheckedNodes(state, payload) {
            state.checkedNodes = payload;
        },
Z
zhaoke 已提交
106 107 108
        setCurrentCodeChanged(state, payload) {
            state.currentCodeChanged = payload;
        },
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
109 110
    },
    actions: {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
111 112
        async listScript({ commit }, playload: any ) {
            const response: ResponseData = await list(playload);
Z
zhaoke 已提交
113 114
            const data = response.data;
            data.id = data.path;
115
            data.children = scriptTreeAddAttr(data.children ? data.children : []);
aaronchen2k2k's avatar
aaronchen2k2k 已提交
116
            commit('setList', [data]);
雨爱无痕 已提交
117 118 119 120 121
            if(data.children != undefined){
                const watchPaths = [] as any;
                data.children.forEach(element => {
                    watchPaths.push({WorkspacePath: element.path})
                });
雨爱无痕 已提交
122
                WebSocket.sentMsg(settings.webSocketRoom, JSON.stringify({act: 'watch',testSets:watchPaths}), "local")
雨爱无痕 已提交
123
            }
aaronchen2k2k's avatar
aaronchen2k2k 已提交
124
            commit('setQueryParams', playload);
aaronchen2k2k's avatar
aaronchen2k2k 已提交
125 126
            return true;
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
127
        async loadChildren(_ctx, treeNode: any ) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
128 129 130 131 132 133 134 135 136
            console.log('load node children', treeNode.dataRef.workspaceType)
            if (treeNode.dataRef.workspaceType === 'ztf')
                return true

            loadChildren(treeNode.dataRef.path, treeNode.dataRef.workspaceId).then((json) => {
                treeNode.dataRef.children = json.data
                return true;
            })
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
137

aaronchen2k2k's avatar
aaronchen2k2k 已提交
138
        async getScript({ commit}, script: any ) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
139
            if (!script || script.type !== 'file') {
140
                commit('setItem', null);
aaronchen2k2k's avatar
aaronchen2k2k 已提交
141
            } else if (script.path.indexOf('zentao-') === 0) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
142
                commit('setItem', {id: script.caseId, workspaceId: script.workspaceId, code: ScriptFileNotExist});
aaronchen2k2k's avatar
aaronchen2k2k 已提交
143 144 145
            } else {
                const response: ResponseData = await get(script.path, script.workspaceId);
                commit('setItem', response.data);
aaronchen2k2k's avatar
aaronchen2k2k 已提交
146 147
            }

148
            return true;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
149
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
150

aaronchen2k2k's avatar
aaronchen2k2k 已提交
151
        async syncFromZentao({ commit, dispatch, state }, payload: any ) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
152 153
            const resp = await syncFromZentao(payload)
            if (resp.code === 0) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
154
                await dispatch('listScript', state.queryParams)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
155

Z
zhaoke 已提交
156
                if (resp.code === 0 && resp.data != null && resp.data.length === 1) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
157 158 159 160 161 162 163 164 165 166
                    const getResp = await get(resp.data[0], payload.workspaceId);
                    commit('setItem', getResp.data);
                } else {
                    commit('setItem', null);
                }
            }

            return resp
        },

aaronchen2k2k's avatar
aaronchen2k2k 已提交
167
        async syncToZentao({ dispatch, state }, payload: any ) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
168 169 170 171 172 173 174 175 176
            const resp = await syncToZentao(payload)

            if (resp.code === 0) {
                await dispatch('listScript', state.queryParams)
            }

            return resp
        },

aaronchen2k2k's avatar
aaronchen2k2k 已提交
177
        async extractScript({ commit }, script: any ) {
178
            if (!script.path) return true
179

180
            const response: ResponseData = await extract(script.path, script.workspaceId)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
181
            const { data } = response
182 183 184
            commit('setItem', data.script)

            return data.done
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
185
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
186

aaronchen2k2k's avatar
aaronchen2k2k 已提交
187
        async createScript({ dispatch, state}, payload: any) {
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
188
            try {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
189 190 191 192 193 194
                const jsn = await create(payload);
                const path = jsn.data

                await dispatch('listScript', state.queryParams)

                return path;
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
195
            } catch (error) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
196
                return ''
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
197 198
            }
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
199
        async updateScript(_ctx, payload: any ) {
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
200
            try {
201 202
                const { id, ...params } = payload;
                await update(id, { ...params });
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
203 204 205 206 207
                return true;
            } catch (error) {
                return false;
            }
        },
208

aaronchen2k2k's avatar
aaronchen2k2k 已提交
209
        async updateCode({ dispatch, state }, payload: any ) {
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
210
            try {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
211
                await updateCode(payload);
Z
zhaoke 已提交
212
                dispatch('listScript', state.queryParams)
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
213
                return true;
aaronchen2k2k's avatar
aaronchen2k2k 已提交
214 215 216 217 218
            } catch (error) {
                return false;
            }
        },

aaronchen2k2k's avatar
aaronchen2k2k 已提交
219
        async pasteScript({ dispatch, state}, data: any ) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
220 221 222 223
            try {
                await paste(data);
                await dispatch('listScript', state.queryParams)

aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
224 225 226 227 228
                return true;
            } catch (error) {
                return false;
            }
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
229

aaronchen2k2k's avatar
aaronchen2k2k 已提交
230
        async moveScript({ dispatch, state}, data: any ) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
231 232 233 234 235 236 237 238 239 240
            try {
                await move(data);
                await dispatch('listScript', state.queryParams)

                return true;
            } catch (error) {
                return false;
            }
        },

aaronchen2k2k's avatar
aaronchen2k2k 已提交
241
        async deleteScript({ dispatch, state}, path: string ) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
242
            try {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
243 244 245
                await remove(path);
                await dispatch('listScript', state.queryParams)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
246 247 248 249 250 251
                return true;
            } catch (error) {
                return false;
            }
        },

雨爱无痕 已提交
252 253 254 255 256 257 258 259 260 261 262
        async renameScript({ dispatch, state}, data: any ) {
            try {
                await rename(data);
                await dispatch('listScript', state.queryParams)

                return true;
            } catch (error) {
                return false;
            }
        },

aaronchen2k2k's avatar
aaronchen2k2k 已提交
263 264 265 266
        async changeWorkspace({ commit }, payload: any ) {
            commit('setWorkspace', payload);
            return true;
        },
aaronchen2k2k's avatar
aaronchen2k2k 已提交
267 268 269 270 271

        async setCheckedNodes({ commit }, payload: any ) {
            commit('setCheckedNodes', payload);
            return true;
        },
Z
zhaoke 已提交
272 273 274 275 276

        async updateCurrentCodeChanged({ commit }, payload: any ) {
            commit('setCurrentCodeChanged', payload);
            return true;
        },
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
277 278 279
    }
};

aaronchen2k2k's avatar
merge  
aaronchen2k2k 已提交
280
export default StoreModel;