| | |
| | | /> |
| | | </ElCard> |
| | | |
| | | <TaskFlowStepDialog |
| | | v-model:visible="flowStepDialogVisible" |
| | | :task-row="activeTaskRow" |
| | | /> |
| | | <TaskFlowStepDialog v-model:visible="flowStepDialogVisible" :task-row="activeTaskRow" /> |
| | | |
| | | <TaskDetailDrawer |
| | | v-model:visible="detailDrawerVisible" |
| | |
| | | fetchPickTask, |
| | | fetchRemoveTask, |
| | | fetchTaskAutoRunFlag, |
| | | fetchTaskDetail, |
| | | fetchTaskItemPage, |
| | | fetchTaskPage, |
| | | fetchTopTask, |
| | |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'platOrderCode', |
| | | label: t('pages.task.expand.platOrderCode'), |
| | | minWidth: 150, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'platWorkCode', |
| | | label: t('pages.orders.transfer.detail.relatedCode'), |
| | | minWidth: 150, |
| | |
| | | prop: 'platItemId', |
| | | label: t('pages.orders.delivery.table.platItemId'), |
| | | minWidth: 100, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'projectCode', |
| | | label: t('pages.task.expand.projectCode'), |
| | | minWidth: 140, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | |
| | | align: 'right' |
| | | }, |
| | | { |
| | | prop: 'workQty', |
| | | label: t('pages.task.expand.workQty'), |
| | | width: 100, |
| | | align: 'right' |
| | | }, |
| | | { |
| | | prop: 'qty', |
| | | label: t('pages.task.expand.qty'), |
| | | width: 100, |
| | | align: 'right' |
| | | }, |
| | | { |
| | | prop: 'spec', |
| | | label: t('pages.task.expand.spec'), |
| | | minWidth: 140, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'model', |
| | | label: t('pages.task.expand.model'), |
| | | minWidth: 140, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'createByText', |
| | | label: t('table.createBy'), |
| | | minWidth: 120, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'createTimeText', |
| | | label: t('table.createTime'), |
| | | minWidth: 180, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'updateByText', |
| | | label: t('pages.orders.delivery.detail.updateBy'), |
| | | minWidth: 120, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'statusText', |
| | | label: t('table.status'), |
| | | minWidth: 120, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | | prop: 'memo', |
| | | label: t('table.remark'), |
| | | minWidth: 180, |
| | | showOverflowTooltip: true |
| | | }, |
| | | { |
| | |
| | | } |
| | | |
| | | if (action.key === 'complete') { |
| | | await confirmTaskAction(t('pages.task.messages.completeConfirm', { code: row.taskCode || '' })) |
| | | await confirmTaskAction( |
| | | t('pages.task.messages.completeConfirm', { code: row.taskCode || '' }) |
| | | ) |
| | | await fetchCompleteTask(row.id) |
| | | ElMessage.success(t('pages.task.messages.completeSuccess')) |
| | | } else if (action.key === 'remove') { |
| | | await confirmTaskAction(t('pages.task.messages.removeConfirm', { code: row.taskCode || '' })) |
| | | await confirmTaskAction( |
| | | t('pages.task.messages.removeConfirm', { code: row.taskCode || '' }) |
| | | ) |
| | | await fetchRemoveTask(row.id) |
| | | ElMessage.success(t('pages.task.messages.removeSuccess')) |
| | | } else if (action.key === 'check') { |
| | |
| | | async function loadAutoRunConfig() { |
| | | autoRunLoading.value = true |
| | | try { |
| | | const response = await guardRequestWithMessage(fetchTaskAutoRunFlag(), { val: false }, { |
| | | timeoutMessage: t('pages.task.messages.autoRunTimeout') |
| | | }) |
| | | const response = await guardRequestWithMessage( |
| | | fetchTaskAutoRunFlag(), |
| | | { val: false }, |
| | | { |
| | | timeoutMessage: t('pages.task.messages.autoRunTimeout') |
| | | } |
| | | ) |
| | | const rawValue = response?.val |
| | | autoRunEnabled.value = |
| | | rawValue === true || rawValue === 'true' || rawValue === 1 || rawValue === '1' |
| | |
| | | try { |
| | | await fetchUpdateTaskAutoRunFlag(enabled) |
| | | autoRunEnabled.value = enabled |
| | | ElMessage.success(enabled ? t('pages.task.messages.autoRunOnSuccess') : t('pages.task.messages.autoRunOffSuccess')) |
| | | ElMessage.success( |
| | | enabled |
| | | ? t('pages.task.messages.autoRunOnSuccess') |
| | | : t('pages.task.messages.autoRunOffSuccess') |
| | | ) |
| | | } catch (error) { |
| | | ElMessage.error(error?.message || t('pages.task.messages.autoRunUpdateFailed')) |
| | | } finally { |
| | |
| | | |
| | | detailLoading.value = true |
| | | try { |
| | | const taskItemResponse = await guardRequestWithMessage( |
| | | fetchTaskItemPage({ |
| | | taskId: activeTaskRow.value.id, |
| | | current: detailPagination.current, |
| | | pageSize: detailPagination.size |
| | | const [taskDetailResult, taskItemResult] = await Promise.allSettled([ |
| | | guardRequestWithMessage(fetchTaskDetail(activeTaskRow.value.id), activeTaskRow.value, { |
| | | timeoutMessage: t('pages.task.messages.detailTimeout') |
| | | }), |
| | | { |
| | | records: [], |
| | | total: 0, |
| | | current: detailPagination.current, |
| | | size: detailPagination.size |
| | | }, |
| | | { timeoutMessage: t('pages.task.messages.itemsTimeout') } |
| | | ) |
| | | guardRequestWithMessage( |
| | | fetchTaskItemPage({ |
| | | taskId: activeTaskRow.value.id, |
| | | current: detailPagination.current, |
| | | pageSize: detailPagination.size |
| | | }), |
| | | { |
| | | records: [], |
| | | total: 0, |
| | | current: detailPagination.current, |
| | | size: detailPagination.size |
| | | }, |
| | | { timeoutMessage: t('pages.task.messages.itemsTimeout') } |
| | | ) |
| | | ]) |
| | | |
| | | const taskDetailResponse = |
| | | taskDetailResult.status === 'fulfilled' ? taskDetailResult.value : activeTaskRow.value |
| | | const taskItemResponse = |
| | | taskItemResult.status === 'fulfilled' |
| | | ? taskItemResult.value |
| | | : { |
| | | records: [], |
| | | total: 0, |
| | | current: detailPagination.current, |
| | | size: detailPagination.size |
| | | } |
| | | |
| | | activeTaskRow.value = { |
| | | ...activeTaskRow.value, |
| | | ...taskDetailResponse |
| | | } |
| | | detailData.value = normalizeTaskRow(activeTaskRow.value) |
| | | detailTableData.value = Array.isArray(taskItemResponse?.records) |
| | | detailTableData.value = Array.isArray(taskItemResponse.records) |
| | | ? taskItemResponse.records.map((record) => normalizeTaskItemRow(record)) |
| | | : [] |
| | | updatePaginationState(detailPagination, taskItemResponse, detailPagination.current, detailPagination.size) |
| | | updatePaginationState( |
| | | detailPagination, |
| | | taskItemResponse, |
| | | detailPagination.current, |
| | | detailPagination.size |
| | | ) |
| | | |
| | | if (taskDetailResult.status === 'rejected' && taskItemResult.status === 'rejected') { |
| | | throw taskDetailResult.reason || taskItemResult.reason |
| | | } |
| | | } catch (error) { |
| | | detailTableData.value = [] |
| | | detailData.value = normalizeTaskRow(activeTaskRow.value) |
| | | ElMessage.error(error?.message || t('pages.task.messages.detailLoadFailed')) |
| | | } finally { |
| | | detailLoading.value = false |