Files
crawlab/frontend/src/store/modules/task.js
2019-03-12 21:20:22 +08:00

123 lines
3.2 KiB
JavaScript

import dayjs from 'dayjs'
import request from '../../api/request'
const state = {
// TaskList
taskList: [],
taskListTotalCount: 0,
taskForm: {},
taskLog: '',
taskResultsData: [],
taskResultsColumns: [],
taskResultsTotalCount: 0,
// pagination
pageNum: 0,
pageSize: 10,
// results
resultsPageNum: 0,
resultsPageSize: 10
}
const getters = {}
const mutations = {
SET_TASK_FORM (state, value) {
state.taskForm = value
},
SET_TASK_LIST (state, value) {
state.taskList = value
},
SET_TASK_LOG (state, value) {
state.taskLog = value
},
SET_TASK_RESULTS_DATA (state, value) {
state.taskResultsData = value
},
SET_TASK_RESULTS_COLUMNS (state, value) {
state.taskResultsColumns = value
},
SET_PAGE_NUM (state, value) {
state.pageNum = value
},
SET_PAGE_SIZE (state, value) {
state.pageSize = value
},
SET_TASK_LIST_TOTAL_COUNT (state, value) {
state.taskListTotalCount = value
},
SET_RESULTS_PAGE_NUM (state, value) {
state.resultsPageNum = value
},
SET_RESULTS_PAGE_SIZE (state, value) {
state.resultsPageSize = value
},
SET_TASK_RESULTS_TOTAL_COUNT (state, value) {
state.taskResultsTotalCount = value
}
}
const actions = {
getTaskData ({ state, dispatch, commit }, id) {
return request.get(`/tasks/${id}`)
.then(response => {
let data = response.data
if (data.create_ts && data.finish_ts) {
data.duration = dayjs(data.finish_ts.$date).diff(dayjs(data.create_ts.$date), 'second')
}
if (data.create_ts) data.create_ts = dayjs(data.create_ts.$date).format('YYYY-MM-DD HH:mm:ss')
if (data.finish_ts) data.finish_ts = dayjs(data.finish_ts.$date).format('YYYY-MM-DD HH:mm:ss')
commit('SET_TASK_FORM', data)
dispatch('spider/getSpiderData', data.spider_id, { root: true })
dispatch('node/getNodeData', data.node_id, { root: true })
})
},
getTaskList ({ state, commit }) {
return request.get('/tasks', {
page_num: state.pageNum,
page_size: state.pageSize
})
.then(response => {
commit('SET_TASK_LIST', response.data.items)
commit('SET_TASK_LIST_TOTAL_COUNT', response.data.total_count)
})
},
deleteTask ({ state, dispatch }, id) {
return request.delete(`/tasks/${id}`)
.then(() => {
dispatch('getTaskList')
})
},
stopTask ({ state, dispatch }, id) {
return request.post(`/tasks/${id}/stop`)
.then(() => {
dispatch('getTaskList')
})
},
getTaskLog ({ state, commit }, id) {
return request.get(`/tasks/${id}/get_log`)
.then(response => {
commit('SET_TASK_LOG', response.data.log)
})
},
getTaskResults ({ state, commit }, id) {
return request.get(`/tasks/${id}/get_results`, {
page_num: state.resultsPageNum,
page_size: state.resultsPageSize
})
.then(response => {
commit('SET_TASK_RESULTS_DATA', response.data.items)
commit('SET_TASK_RESULTS_COLUMNS', response.data.fields)
commit('SET_TASK_RESULTS_COLUMNS', response.data.fields)
commit('SET_TASK_RESULTS_TOTAL_COUNT', response.data.total_count)
})
}
}
export default {
namespaced: true,
state,
getters,
mutations,
actions
}