diff --git a/src/views/hr/workload/index.vue b/src/views/hr/workload/index.vue index 6da7a5d..ebe496d 100644 --- a/src/views/hr/workload/index.vue +++ b/src/views/hr/workload/index.vue @@ -1,9 +1,9 @@ + @@ -43,13 +88,13 @@ import { ref, reactive, onMounted } from 'vue' import { Message } from '@arco-design/web-vue' import type { TableColumnData } from '@arco-design/web-vue' -import { listTask } from '@/apis/project/task' +// import { listTask } from '@/apis/project/task' // 接口调用处注释 // 任务状态映射 -// status:0未开始,1进行中,2已完成,3已取消 +// 0未分配,1已分配,2已完成,3已取消 const statusOptions = [ - { label: '未开始', value: 0 }, - { label: '进行中', value: 1 }, + { label: '未分配', value: 0 }, + { label: '已分配', value: 1 }, { label: '已完成', value: 2 }, { label: '已取消', value: 3 } ] @@ -64,14 +109,26 @@ const getTaskStatusColor = (status: number) => { } const getTaskStatusText = (status: number) => { const textMap: Record = { - 0: '未开始', - 1: '进行中', + 0: '未分配', + 1: '已分配', 2: '已完成', 3: '已取消' } return textMap[status] || status } +// 示例岗位和人员 +const deptOptions = [ + { label: '开发', value: '开发' }, + { label: '测试', value: '测试' }, + { label: '运维', value: '运维' } +] +const userOptions = [ + { label: '张三', value: '张三' }, + { label: '李四', value: '李四' }, + { label: '王五', value: '王五' } +] + // 搜索表单 let searchForm = reactive({ taskName: '', @@ -137,28 +194,117 @@ const pagination = reactive({ showPageSize: true }) -// 获取任务数据 +// 发布任务弹窗 +const showAddModal = ref(false) +const addForm = reactive({ + taskId: '', + remark: '', + createTime: '' +}) +const openAddModal = () => { + addForm.taskId = Date.now().toString() + addForm.remark = '' + addForm.createTime = new Date().toLocaleString() + showAddModal.value = true +} +const handleAddTask = () => { + if (!addForm.remark) { + Message.warning('请输入任务描述') + return + } + const newTask = { + taskId: addForm.taskId, + taskName: addForm.remark, + mainUserId: '', + deptName: '', + remark: addForm.remark, + status: 0, // 未分配 + createTime: addForm.createTime, + finishTime: '' + } + allData.value.unshift(newTask) + filterAndPaginate() + showAddModal.value = false + Message.success('任务发布成功') +} + +// 任务详情弹窗 +const showDetailModal = ref(false) +const detailForm = reactive({ + taskId: '', + taskName: '', + mainUserId: '', + deptName: '', + remark: '', + status: 0, + createTime: '', + finishTime: '' +}) +let detailIndex = -1 +const onRowClick = (record: any) => { + Object.assign(detailForm, record) + detailIndex = allData.value.findIndex(item => item.taskId === record.taskId) + showDetailModal.value = true +} +const handleUpdateTask = () => { + if (detailIndex !== -1) { + allData.value[detailIndex] = { ...detailForm } + filterAndPaginate() + showDetailModal.value = false + Message.success('任务更新成功') + } +} +const handleDeleteTask = () => { + if (detailIndex !== -1) { + allData.value.splice(detailIndex, 1) + filterAndPaginate() + showDetailModal.value = false + Message.success('任务已删除') + } +} + +// 获取任务数据(用示例数据,接口调用处注释) const fetchTaskList = async () => { loading.value = true try { - const params: any = { - page: searchForm.page, - pageSize: searchForm.size, - taskName: searchForm.taskName, - mainUserId: searchForm.responsiblePerson, - status: searchForm.status - } - // 移除空参数 - Object.keys(params).forEach(key => { - if (params[key] === '' || params[key] === undefined) delete params[key] - }) - const res = await listTask(params) - // 兼容后端返回格式,优先rows,其次data - const rows = res?.rows || res?.data?.rows || [] - console.log('后端返回数据:', res) // 只打印一次原始数据 - allData.value = rows + // const res = await listTask(params) + // const rows = res?.rows || res?.data?.rows || [] + // allData.value = rows + // 示例数据: + allData.value = [ + { + taskId: '1710000000000', + taskName: '示例任务A', + mainUserId: '张三', + deptName: '开发', + remark: '开发新功能', + status: 1, + createTime: '2024-05-01 10:00:00', + finishTime: '' + }, + { + taskId: '1710000000001', + taskName: '示例任务B', + mainUserId: '', + deptName: '', + remark: '待分配任务', + status: 0, + createTime: '2024-05-02 11:00:00', + finishTime: '' + }, + { + taskId: '1710000000002', + taskName: '示例任务C', + mainUserId: '李四', + deptName: '测试', + remark: '测试任务', + status: 2, + createTime: '2024-05-03 09:00:00', + finishTime: '2024-05-05 18:00:00' + } + ] filterAndPaginate() - pagination.total = rows.length + pagination.total = allData.value.length } catch (e) { Message.error('获取任务数据失败') } finally { @@ -192,7 +338,7 @@ const filterAndPaginate = () => { // 搜索和重置 const search = async () => { pagination.current = 1 - await fetchTaskList() + filterAndPaginate() } const reset = async () => { @@ -204,7 +350,7 @@ const reset = async () => { size: 10 }) pagination.current = 1 - await fetchTaskList() + filterAndPaginate() } // 分页处理 @@ -219,13 +365,14 @@ const onPageSizeChange = (size: number) => { filterAndPaginate() } -// 操作方法 -const editRecord = (record: any) => { - Message.info(`编辑任务: ${record.taskName}`) -} - +// 删除操作(表格操作列) const deleteRecord = (record: any) => { - Message.info(`删除任务: ${record.taskName}`) + const idx = allData.value.findIndex(item => item.taskId === record.taskId) + if (idx !== -1) { + allData.value.splice(idx, 1) + filterAndPaginate() + Message.success('任务已删除') + } } onMounted(() => {