提交
This commit is contained in:
1 parent
df53d05193
commit
f90726927e
50 files changed
+16281
-12780
No files matched your search
@@ -282,6 +282,36 @@ export function fetchSetTaskInputs(
|
||||
})
|
||||
}
|
||||
|
||||
export interface SpawnTemporaryWorkOrderResult {
|
||||
workOrder: {
|
||||
id: string
|
||||
workOrderNo: string
|
||||
workOrderStatus: string
|
||||
remark?: string
|
||||
}
|
||||
sourceTaskId: string
|
||||
sourceTaskNo: string
|
||||
inputItems: Array<{
|
||||
inputType: string
|
||||
inputId?: string
|
||||
inputCode?: string
|
||||
inputName?: string
|
||||
remark?: string
|
||||
}>
|
||||
}
|
||||
|
||||
export function fetchSpawnTemporaryWorkOrderFromTask(
|
||||
taskId: string,
|
||||
data: { remark?: string },
|
||||
operateScope?: ProductionTaskOperateScope
|
||||
) {
|
||||
return request.post<SpawnTemporaryWorkOrderResult>({
|
||||
url: `/web/admin/production-tasks/${taskId}/spawn-temporary-work-order`,
|
||||
data,
|
||||
params: scopeQuery(operateScope)
|
||||
})
|
||||
}
|
||||
|
||||
export function fetchSetTaskOutputs(
|
||||
taskId: string,
|
||||
data: any[] | Record<string, any>,
|
||||
|
||||
@@ -44,6 +44,8 @@ export type QcMaterialBatch = {
|
||||
amount: number
|
||||
inQty: number
|
||||
remainingQty: number
|
||||
outTotal?: number
|
||||
outCount?: number
|
||||
qcAttachmentUrls?: string
|
||||
stockQty: number
|
||||
warningQty: number
|
||||
@@ -118,6 +120,12 @@ export function fetchQcMaterialBatchList(params?: {
|
||||
})
|
||||
}
|
||||
|
||||
export function fetchQcMaterialBatchDetail(batchId: string) {
|
||||
return request.get<QcMaterialBatch>({
|
||||
url: `/web/admin/qc-material-batches/${batchId}`
|
||||
})
|
||||
}
|
||||
|
||||
export function fetchQcMaterialBatchOptions(params?: {
|
||||
keyword?: string
|
||||
materialId?: string
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "label": "TaskExecutionDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L1"}, {"id": "production_work_order_taskexecutiondialog_onsteplistdrop", "label": "onStepListDrop()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L769"}, {"id": "production_work_order_taskexecutiondialog_handleforwardsuccess", "label": "handleForwardSuccess()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L774"}, {"id": "production_work_order_taskexecutiondialog_openforwarddialog", "label": "openForwardDialog()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L780"}, {"id": "production_work_order_taskexecutiondialog_savetaskoutputsmanual", "label": "saveTaskOutputsManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L785"}, {"id": "production_work_order_taskexecutiondialog_savetaskattachmentsmanual", "label": "saveTaskAttachmentsManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L789"}, {"id": "production_work_order_taskexecutiondialog_savetaskequipmentmanual", "label": "saveTaskEquipmentManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L793"}, {"id": "production_work_order_taskexecutiondialog_handlespawntemporaryworkorderclick", "label": "handleSpawnTemporaryWorkOrderClick()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L797"}, {"id": "production_work_order_taskexecutiondialog_submitspawntemporary", "label": "submitSpawnTemporary()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L808"}, {"id": "production_work_order_taskexecutiondialog_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L847"}, {"id": "production_work_order_taskexecutiondialog_stepseqclass", "label": "stepSeqClass()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L866"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_onsteplistdrop", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L769", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_handleforwardsuccess", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L774", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_openforwarddialog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L780", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_savetaskoutputsmanual", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L785", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "label": "useTaskStepEditor.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L1"}, {"id": "production_work_order_usetaskstepeditor_parsetaskattachmentsfromurls", "label": "parseTaskAttachmentsFromUrls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L67"}, {"id": "production_work_order_usetaskstepeditor_toapiflag", "label": "toApiFlag()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L77"}, {"id": "production_work_order_usetaskstepeditor_fromapiflag", "label": "fromApiFlag()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L81"}, {"id": "production_work_order_usetaskstepeditor_normalizestepsubtables", "label": "normalizeStepSubTables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L84"}, {"id": "production_work_order_usetaskstepeditor_parseordernum", "label": "parseOrderNum()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L111"}, {"id": "production_work_order_usetaskstepeditor_usetaskstepeditor", "label": "useTaskStepEditor()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L118"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_production_task", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_production_step_assignee", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_production", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_admin", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_production_work_order", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_sample_reception", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_equipment_select", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_prodLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_api_production_task_ts", "label": "production-task.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L1"}, {"id": "api_production_task_scopequery", "label": "scopeQuery()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L5"}, {"id": "api_production_task_fetchcreateproductiontask", "label": "fetchCreateProductionTask()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L9"}, {"id": "api_production_task_fetchproductiontasklist", "label": "fetchProductionTaskList()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L13"}, {"id": "api_production_task_fetchproductiontasksbyworkorderids", "label": "fetchProductionTasksByWorkOrderIds()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L33"}, {"id": "api_production_task_groupproductiontasksbyworkorderid", "label": "groupProductionTasksByWorkOrderId()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L54"}, {"id": "api_production_task_fetchmyproductiontasks", "label": "fetchMyProductionTasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L67"}, {"id": "api_production_task_fetchforwardproductiontask", "label": "fetchForwardProductionTask()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L90"}, {"id": "api_production_task_fetchreassignproductiontask", "label": "fetchReassignProductionTask()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L102"}, {"id": "api_production_task_fetchdispatchproductiontasksteps", "label": "fetchDispatchProductionTaskSteps()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L112"}, {"id": "api_production_task_fetchproductiontaskdetail", "label": "fetchProductionTaskDetail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L130"}, {"id": "api_production_task_fetchproductiontaskeditorinit", "label": "fetchProductionTaskEditorInit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L154"}, {"id": "api_production_task_fetchupdateproductiontask", "label": "fetchUpdateProductionTask()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L165"}, {"id": "api_production_task_fetchupdateproductiontaskstatus", "label": "fetchUpdateProductionTaskStatus()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L169"}, {"id": "api_production_task_fetchdeleteproductiontask", "label": "fetchDeleteProductionTask()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L181"}, {"id": "api_production_task_fetchaddtaskstep", "label": "fetchAddTaskStep()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L185"}, {"id": "api_production_task_fetchupdatetaskstep", "label": "fetchUpdateTaskStep()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L197"}, {"id": "api_production_task_fetchdeletetaskstep", "label": "fetchDeleteTaskStep()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L210"}, {"id": "api_production_task_fetchreplacestepreagents", "label": "fetchReplaceStepReagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L221"}, {"id": "api_production_task_fetchreplacestepconsumables", "label": "fetchReplaceStepConsumables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L234"}, {"id": "api_production_task_fetchreplacestepconfiguredreagents", "label": "fetchReplaceStepConfiguredReagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts", "source_location": "L247"}, {"id": "api_production_task_fetchreplacestepdatacollection", "label": "fetchReplLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "label": "TaskExecutionDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L1"}, {"id": "production_work_order_taskexecutiondialog_onsteplistdrop", "label": "onStepListDrop()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L760"}, {"id": "production_work_order_taskexecutiondialog_handleforwardsuccess", "label": "handleForwardSuccess()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L765"}, {"id": "production_work_order_taskexecutiondialog_openforwarddialog", "label": "openForwardDialog()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L771"}, {"id": "production_work_order_taskexecutiondialog_savetaskoutputsmanual", "label": "saveTaskOutputsManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L776"}, {"id": "production_work_order_taskexecutiondialog_savetaskattachmentsmanual", "label": "saveTaskAttachmentsManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L780"}, {"id": "production_work_order_taskexecutiondialog_savetaskequipmentmanual", "label": "saveTaskEquipmentManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L784"}, {"id": "production_work_order_taskexecutiondialog_handlespawntemporaryworkorderclick", "label": "handleSpawnTemporaryWorkOrderClick()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L788"}, {"id": "production_work_order_taskexecutiondialog_submitspawntemporary", "label": "submitSpawnTemporary()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L799"}, {"id": "production_work_order_taskexecutiondialog_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L838"}, {"id": "production_work_order_taskexecutiondialog_stepseqclass", "label": "stepSeqClass()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L857"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_onsteplistdrop", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L760", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_handleforwardsuccess", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L765", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_openforwarddialog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L771", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_savetaskoutputsmanual", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L776", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1"}, {"id": "qc_material_index_ensuretabmounted", "label": "ensureTabMounted()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1263"}, {"id": "qc_material_index_handletabchange", "label": "handleTabChange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1268"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "element_plus", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "icons_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_system_view_dialog_index_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1216", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_components_common_amount_input_index_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1217", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_money_format", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_qc_material_ui", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1219", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_admin", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material_usage", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue", "source_location": "L1235", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_constants_material_discard", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/qualityLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_dispatchtaskdialog_vue", "label": "DispatchTaskDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchTaskDialog.vue", "source_location": "L1"}, {"id": "production_work_order_dispatchtaskdialog_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchTaskDialog.vue", "source_location": "L442"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_dispatchtaskdialog_vue", "target": "production_work_order_dispatchtaskdialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchTaskDialog.vue", "source_location": "L442", "weight": 1.0}], "raw_calls": [{"caller_nid": "production_work_order_dispatchtaskdialog_if", "callee": "enterEditPhase", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchTaskDialog.vue", "source_location": "L445"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_qcmaterialusagetab_vue", "label": "QcMaterialUsageTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L1"}, {"id": "qc_material_qcmaterialusagetab_ismanualoutrow", "label": "isManualOutRow()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L436"}, {"id": "qc_material_qcmaterialusagetab_isdiscardrow", "label": "isDiscardRow()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L442"}, {"id": "qc_material_qcmaterialusagetab_parsefromremark", "label": "parseFromRemark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L446"}, {"id": "qc_material_qcmaterialusagetab_displayreceiver", "label": "displayReceiver()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L455"}, {"id": "qc_material_qcmaterialusagetab_displaypurpose", "label": "displayPurpose()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L461"}, {"id": "qc_material_qcmaterialusagetab_displayusetime", "label": "displayUseTime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L467"}, {"id": "qc_material_qcmaterialusagetab_displayusageqty", "label": "displayUsageQty()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L473"}, {"id": "qc_material_qcmaterialusagetab_displaytaskusageqty", "label": "displayTaskUsageQty()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L479"}, {"id": "qc_material_qcmaterialusagetab_displayqctaskno", "label": "displayQcTaskNo()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L483"}, {"id": "qc_material_qcmaterialusagetab_displaystockbefore", "label": "displayStockBefore()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L488"}, {"id": "qc_material_qcmaterialusagetab_getchangetypelabel", "label": "getChangeTypeLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L495"}, {"id": "qc_material_qcmaterialusagetab_getchangetypetagtype", "label": "getChangeTypeTagType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L503"}, {"id": "qc_material_qcmaterialusagetab_getsourcetagtype", "label": "getSourceTagType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L511"}, {"id": "qc_material_qcmaterialusagetab_getsourcelabel", "label": "getSourceLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L521"}, {"id": "qc_material_qcmaterialusagetab_canmarkfullyused", "label": "canMarkFullyUsed()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L533"}, {"id": "qc_material_qcmaterialusagetab_handlemarkfullyused", "label": "handleMarkFullyUsed()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L537"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_quality_inspection_qc_material_qcmaterialusagetab_vue", "target": "qc_material_qcmaterialusagetab_ismanualoutrow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue", "source_location": "L436", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admiLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_types_import_components_d_ts", "label": "components.d.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material_ts", "label": "qc-material.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L1"}, {"id": "api_qc_material_fetchqcmaterialbatchlist", "label": "fetchQcMaterialBatchList()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L110"}, {"id": "api_qc_material_fetchqcmaterialbatchdetail", "label": "fetchQcMaterialBatchDetail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L123"}, {"id": "api_qc_material_fetchqcmaterialbatchoptions", "label": "fetchQcMaterialBatchOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L129"}, {"id": "api_qc_material_fetchqcmateriallist", "label": "fetchQcMaterialList()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L140"}, {"id": "api_qc_material_fetchqcmaterialoptions", "label": "fetchQcMaterialOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L152"}, {"id": "api_qc_material_fetchcreateqcmaterial", "label": "fetchCreateQcMaterial()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L158"}, {"id": "api_qc_material_fetchupdateqcmaterial", "label": "fetchUpdateQcMaterial()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L165"}, {"id": "api_qc_material_fetchdeleteqcmaterial", "label": "fetchDeleteQcMaterial()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L172"}, {"id": "api_qc_material_fetchstockinqcmaterial", "label": "fetchStockInQcMaterial()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L178"}, {"id": "api_qc_material_fetchbatchstockinqcmaterial", "label": "fetchBatchStockInQcMaterial()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L185"}, {"id": "api_qc_material_fetchupdateqcmaterialbatch", "label": "fetchUpdateQcMaterialBatch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L196"}, {"id": "api_qc_material_fetchdeleteqcmaterialbatch", "label": "fetchDeleteQcMaterialBatch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L203"}, {"id": "api_qc_material_fetchbatchstockoutqcmaterial", "label": "fetchBatchStockOutQcMaterial()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L209"}, {"id": "api_qc_material_fetchbatchdiscardqcmaterial", "label": "fetchBatchDiscardQcMaterial()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L222"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_http", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material_ts", "target": "api_qc_material_fetchqcmaterialbatchlist", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material_ts", "target": "api_qc_material_fetchqcmaterialbatchdetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L123", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material_ts", "target": "api_qc_material_fetchqcmaterialbatchoptions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L129", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_material_ts", "target": "api_qc_material_fetchqcmateriallist", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts", "source_location": "L140", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_webLine truncated
|
||||
@@ -142,7 +142,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="changeQty"
|
||||
label="领用数量"
|
||||
label="变动数量"
|
||||
min-width="120"
|
||||
align="center"
|
||||
header-align="center"
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="changeQty"
|
||||
label="领用数量"
|
||||
label="变动数量"
|
||||
min-width="120"
|
||||
align="center"
|
||||
header-align="center"
|
||||
|
||||
@@ -287,6 +287,7 @@
|
||||
e: 'needStepDispatch',
|
||||
payload: { taskId: string; taskName: string; presetSteps?: Record<string, any>[] }
|
||||
): void
|
||||
(e: 'taskCreated', payload: { taskId: string; taskName: string }): void
|
||||
}>()
|
||||
|
||||
const dialogVisible = computed({
|
||||
@@ -413,6 +414,7 @@
|
||||
presetSteps: stepList.value
|
||||
})
|
||||
}
|
||||
emit('taskCreated', { taskId, taskName: form.taskName })
|
||||
pendingListRefresh.value = true
|
||||
} catch {
|
||||
/* global error handling */
|
||||
|
||||
@@ -431,16 +431,36 @@
|
||||
@search-unit="(q: string) => editor.searchItemUnitOptions(q)"
|
||||
/>
|
||||
</div>
|
||||
<div v-if="!readonly" class="execution-detail-step-footer">
|
||||
<el-button
|
||||
class="task-exec-toolbar-btn task-exec-save-btn"
|
||||
:type="editor.isScopeDirty('output') ? 'primary' : 'danger'"
|
||||
:loading="editor.outputSaving.value"
|
||||
@click="saveTaskOutputsManual"
|
||||
>
|
||||
<el-icon><Check /></el-icon>
|
||||
保存
|
||||
</el-button>
|
||||
<div v-if="showOutputStepFooter" class="execution-detail-step-footer">
|
||||
<div class="execution-detail-actions">
|
||||
<el-tooltip
|
||||
:disabled="!spawnTemporaryDisabledReason"
|
||||
:content="spawnTemporaryDisabledReason"
|
||||
placement="top"
|
||||
>
|
||||
<span class="execution-detail-action-wrap">
|
||||
<el-button
|
||||
v-if="canShowSpawnTemporaryWorkOrder"
|
||||
class="btn-ghost task-exec-toolbar-btn"
|
||||
:disabled="!!spawnTemporaryDisabledReason"
|
||||
@click="handleSpawnTemporaryWorkOrderClick"
|
||||
>
|
||||
<el-icon><Position /></el-icon>
|
||||
派发临时工单
|
||||
</el-button>
|
||||
</span>
|
||||
</el-tooltip>
|
||||
<el-button
|
||||
v-if="!readonly"
|
||||
class="task-exec-toolbar-btn task-exec-save-btn"
|
||||
:type="editor.isScopeDirty('output') ? 'primary' : 'danger'"
|
||||
:loading="editor.outputSaving.value"
|
||||
@click="saveTaskOutputsManual"
|
||||
>
|
||||
<el-icon><Check /></el-icon>
|
||||
保存
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -539,6 +559,56 @@
|
||||
:operate-scope="operateScope"
|
||||
@success="handleForwardSuccess"
|
||||
/>
|
||||
|
||||
<el-dialog
|
||||
v-model="spawnTempVisible"
|
||||
title="新增临时工单"
|
||||
width="560px"
|
||||
class="dialog-form-layout"
|
||||
align-center
|
||||
append-to-body
|
||||
modal-class="protocol-dialog-mask"
|
||||
destroy-on-close
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<el-form label-position="top" class="biz-dialog-form">
|
||||
<p class="hint-muted spawn-temp-hint">
|
||||
将复制当前任务已保存的原材料至新临时工单的生产任务。临时工单不关联样本与协议,创建后请派发任务。
|
||||
</p>
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="备注" class="form-col-span-2">
|
||||
<el-input
|
||||
v-model="spawnTempForm.remark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="选填"
|
||||
maxlength="512"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="spawnTempVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
取消
|
||||
</el-button>
|
||||
<el-button
|
||||
class="btn-main"
|
||||
type="primary"
|
||||
:loading="spawnTempLoading"
|
||||
@click="submitSpawnTemporary"
|
||||
>
|
||||
<el-icon><Check /></el-icon>
|
||||
确认
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<DispatchTaskDialog
|
||||
v-model:visible="spawnDispatchVisible"
|
||||
:work-order-row="spawnDispatchWorkOrderRow"
|
||||
@task-created="handleSpawnTaskCreated"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -551,7 +621,9 @@
|
||||
CopyDocument,
|
||||
Delete,
|
||||
Share,
|
||||
Loading
|
||||
Loading,
|
||||
Position,
|
||||
Close
|
||||
} from '@element-plus/icons-vue'
|
||||
import { VueDraggable as draggable } from 'vue-draggable-plus'
|
||||
import { useTaskStepEditor } from './useTaskStepEditor'
|
||||
@@ -563,7 +635,14 @@
|
||||
import TaskEquipmentPanel from './TaskEquipmentPanel.vue'
|
||||
import CompleteProductionTaskDialog from './CompleteProductionTaskDialog.vue'
|
||||
import ForwardTaskDialog from './ForwardTaskDialog.vue'
|
||||
import DispatchTaskDialog from './DispatchTaskDialog.vue'
|
||||
import type { ProductionTaskOperateScope } from '@/api/production-task'
|
||||
import {
|
||||
fetchSetTaskInputs,
|
||||
fetchSpawnTemporaryWorkOrderFromTask,
|
||||
type SpawnTemporaryWorkOrderResult
|
||||
} from '@/api/production-task'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import {
|
||||
productionConclusionLabel,
|
||||
productionConclusionTagType,
|
||||
@@ -614,7 +693,11 @@
|
||||
completeConclusionInitial,
|
||||
taskActionLoading,
|
||||
submitCompleteWithConclusion,
|
||||
taskDetail
|
||||
taskDetail,
|
||||
taskInputs,
|
||||
validateTaskInputs,
|
||||
isScopeDirty,
|
||||
guardBeforeLeaveCurrentScope
|
||||
} = editor
|
||||
|
||||
const executionTaskConclusion = computed(
|
||||
@@ -647,6 +730,36 @@
|
||||
|
||||
const forwardVisible = ref(false)
|
||||
|
||||
const spawnTempVisible = ref(false)
|
||||
const spawnTempLoading = ref(false)
|
||||
const spawnTempForm = reactive({ remark: '' })
|
||||
const spawnDispatchVisible = ref(false)
|
||||
const spawnDispatchWorkOrderRow = ref<Record<string, any> | null>(null)
|
||||
const pendingSpawnInputItems = ref<SpawnTemporaryWorkOrderResult['inputItems']>([])
|
||||
|
||||
const canShowSpawnTemporaryWorkOrder = computed(() => {
|
||||
const status = taskDetail.value?.taskStatus
|
||||
if (status !== 'dpz' && status !== 'jxz' && status !== 'ywc') return false
|
||||
// 已完成任务常通过「查看」只读进入,仍允许派发临时工单
|
||||
if (props.readonly && status !== 'ywc') return false
|
||||
return true
|
||||
})
|
||||
|
||||
const showOutputStepFooter = computed(
|
||||
() => !props.readonly || canShowSpawnTemporaryWorkOrder.value
|
||||
)
|
||||
|
||||
const spawnTemporaryDisabledReason = computed(() => {
|
||||
if (!canShowSpawnTemporaryWorkOrder.value) return ''
|
||||
if (!taskInputs.value.length) return '请先在原材料中填写至少一条记录'
|
||||
const inputErr = validateTaskInputs()
|
||||
if (inputErr) return inputErr
|
||||
if (taskDetail.value?.taskStatus !== 'ywc' && isScopeDirty('input')) {
|
||||
return '请先保存原材料后再派发'
|
||||
}
|
||||
return ''
|
||||
})
|
||||
|
||||
const isMineScope = computed(() => props.operateScope === 'mine')
|
||||
|
||||
const stepDragHandle = computed(() =>
|
||||
@@ -681,6 +794,55 @@
|
||||
void editor.saveTaskEquipment()
|
||||
}
|
||||
|
||||
async function handleSpawnTemporaryWorkOrderClick() {
|
||||
const reason = spawnTemporaryDisabledReason.value
|
||||
if (reason) {
|
||||
ElMessage.warning(reason)
|
||||
return
|
||||
}
|
||||
if (!(await guardBeforeLeaveCurrentScope())) return
|
||||
spawnTempForm.remark = ''
|
||||
spawnTempVisible.value = true
|
||||
}
|
||||
|
||||
async function submitSpawnTemporary() {
|
||||
if (!props.taskId) return
|
||||
spawnTempLoading.value = true
|
||||
try {
|
||||
const res = await fetchSpawnTemporaryWorkOrderFromTask(
|
||||
props.taskId,
|
||||
{ remark: spawnTempForm.remark?.trim() || undefined },
|
||||
props.operateScope
|
||||
)
|
||||
pendingSpawnInputItems.value = res.inputItems || []
|
||||
spawnDispatchWorkOrderRow.value = {
|
||||
id: res.workOrder.id,
|
||||
workOrderNo: res.workOrder.workOrderNo,
|
||||
workOrderType: 'temporary'
|
||||
}
|
||||
spawnTempVisible.value = false
|
||||
spawnDispatchVisible.value = true
|
||||
ElMessage.success(`已创建临时工单 ${res.workOrder.workOrderNo},请派发生产任务`)
|
||||
} catch {
|
||||
/* global error handling */
|
||||
} finally {
|
||||
spawnTempLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
async function handleSpawnTaskCreated(payload: { taskId: string }) {
|
||||
const items = pendingSpawnInputItems.value
|
||||
const taskId = (payload.taskId || '').trim()
|
||||
pendingSpawnInputItems.value = []
|
||||
if (!items.length || !taskId) return
|
||||
try {
|
||||
await fetchSetTaskInputs(taskId, items, props.operateScope)
|
||||
ElMessage.success('已复制原材料至新任务')
|
||||
} catch {
|
||||
ElMessage.warning('临时任务已创建,但复制原材料失败,请在新任务中手动添加')
|
||||
}
|
||||
}
|
||||
|
||||
async function handleBeforeClose(done: () => void) {
|
||||
if (props.readonly) {
|
||||
done()
|
||||
@@ -1078,6 +1240,15 @@
|
||||
border-top: 1px solid #e5e7eb;
|
||||
background: #fff;
|
||||
}
|
||||
.execution-detail-action-wrap {
|
||||
display: inline-flex;
|
||||
}
|
||||
.spawn-temp-hint {
|
||||
margin: 0 0 12px;
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
color: var(--mint-text-muted, #64748b);
|
||||
}
|
||||
.execution-detail-actions {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
|
||||
@@ -2633,6 +2633,7 @@ export function useTaskStepEditor() {
|
||||
addTaskInputRow,
|
||||
removeTaskInputRow,
|
||||
saveTaskInputs,
|
||||
validateTaskInputs,
|
||||
addTaskOutputRow,
|
||||
removeTaskOutputRow,
|
||||
saveTaskOutputs,
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
<el-option label="出库" value="out" />
|
||||
<el-option v-if="SHOW_QC_TASK_MATERIAL_USAGE" label="任务使用" value="use" />
|
||||
<el-option label="废弃" value="discard" />
|
||||
<el-option v-if="!mineOnly" label="库存调整" value="adjust" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="时间范围">
|
||||
@@ -173,7 +174,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="changeQty"
|
||||
label="领用数量"
|
||||
label="变动数量"
|
||||
min-width="120"
|
||||
align="center"
|
||||
header-align="center"
|
||||
@@ -493,6 +494,7 @@
|
||||
|
||||
function getChangeTypeLabel(row: QcMaterialUsage) {
|
||||
if (row.changeType === 'in') return '入库'
|
||||
if (row.changeType === 'adjust') return '库存调整'
|
||||
if (isDiscardRow(row)) return '废弃'
|
||||
if (isManualOutRow(row)) return '出库'
|
||||
return '任务使用'
|
||||
@@ -500,6 +502,7 @@
|
||||
|
||||
function getChangeTypeTagType(row: QcMaterialUsage) {
|
||||
if (row.changeType === 'in') return 'success'
|
||||
if (row.changeType === 'adjust') return 'warning'
|
||||
if (isDiscardRow(row)) return 'danger'
|
||||
if (isManualOutRow(row)) return 'warning'
|
||||
return 'primary'
|
||||
@@ -511,6 +514,7 @@
|
||||
if (sourceType === 'manual_out') return 'warning'
|
||||
if (sourceType === 'manual_discard') return 'danger'
|
||||
if (sourceType === 'outbound_handover') return 'primary'
|
||||
if (sourceType === 'batch_qty_edit') return 'warning'
|
||||
return 'info'
|
||||
}
|
||||
|
||||
@@ -520,6 +524,7 @@
|
||||
if (sourceType === 'manual_out') return '手动出库'
|
||||
if (sourceType === 'manual_discard') return '手动废弃'
|
||||
if (sourceType === 'outbound_handover') return '出库交接'
|
||||
if (sourceType === 'batch_qty_edit') return '批次数量修正'
|
||||
return sourceType || '-'
|
||||
}
|
||||
|
||||
|
||||
@@ -332,8 +332,14 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="入库数量">
|
||||
<el-input :model-value="String(formData.inQty ?? 0)" disabled />
|
||||
<el-form-item label="入库数量" prop="inQty">
|
||||
<DecimalInput
|
||||
v-model="formData.inQty"
|
||||
:min="0.01"
|
||||
:precision="4"
|
||||
style="width: 100%"
|
||||
@change="onEditInQtyChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="showAmountColumns" label="单价(元)" prop="unitPrice">
|
||||
<AmountInput
|
||||
@@ -351,8 +357,51 @@
|
||||
@change="formData.amountManual = true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="剩余数量">
|
||||
<el-input :model-value="String(formData.remainingQty ?? 0)" disabled />
|
||||
<el-form-item label="剩余数量" prop="remainingQty">
|
||||
<DecimalInput
|
||||
v-model="formData.remainingQty"
|
||||
:min="0"
|
||||
:precision="4"
|
||||
style="width: 100%"
|
||||
@change="onEditRemainingQtyChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
已出库总量
|
||||
<span class="form-label-tip">含出库、废弃及任务扣减</span>
|
||||
</template>
|
||||
<el-input :model-value="String(formData.outTotal ?? 0)" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="理论剩余">
|
||||
<el-input :model-value="String(editTheoreticalRemaining)" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="editOutTotal > 0" class="form-col-span-3">
|
||||
<el-alert
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
:title="`该批次已出库/废弃共 ${editOutTotal}${formData.unit || ''}。修改入库数量后,若未手工改动剩余数量,将自动调整为 ${editTheoreticalRemaining}${formData.unit || ''}。`"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="editInQtyChanged" class="form-col-span-3">
|
||||
<el-alert
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
title="修改入库数量后,保存时将写入一条「编辑修正入库数量」的库存调整记录;原入库流水保持不变。"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="editRemainingQtyChanged && editRemainingDiffersFromTheoretical"
|
||||
class="form-col-span-3"
|
||||
>
|
||||
<el-alert
|
||||
type="warning"
|
||||
:closable="false"
|
||||
show-icon
|
||||
title="剩余数量与「入库数量 − 已出库」不一致,保存时将额外写入一条「编辑修正剩余数量」的库存调整记录。"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" class="form-col-span-3">
|
||||
<el-input v-model="formData.remark" type="textarea" :rows="2" placeholder="可选" />
|
||||
@@ -1184,6 +1233,7 @@
|
||||
fetchQcMaterialBatchList,
|
||||
fetchQcMaterialOptions,
|
||||
fetchQcMaterialBatchOptions,
|
||||
fetchQcMaterialBatchDetail,
|
||||
fetchCreateQcMaterial,
|
||||
fetchUpdateQcMaterialBatch,
|
||||
fetchDeleteQcMaterialBatch,
|
||||
@@ -1336,6 +1386,7 @@
|
||||
amountManual: false,
|
||||
inQty: 0,
|
||||
remainingQty: 0,
|
||||
outTotal: 0,
|
||||
materialCode: '',
|
||||
materialName: '',
|
||||
specModel: '',
|
||||
@@ -1344,6 +1395,27 @@
|
||||
status: '1',
|
||||
remark: ''
|
||||
})
|
||||
const remainingQtyTouched = ref(false)
|
||||
const editInitialInQty = ref(0)
|
||||
const editInitialRemainingQty = ref(0)
|
||||
|
||||
const editOutTotal = computed(() => Number(formData.outTotal) || 0)
|
||||
const editTheoreticalRemaining = computed(() => {
|
||||
const inQty = Number(formData.inQty) || 0
|
||||
return Math.max(0, Math.round((inQty - editOutTotal.value) * 10000) / 10000)
|
||||
})
|
||||
const editRemainingDiffersFromTheoretical = computed(() => {
|
||||
const remaining = Number(formData.remainingQty) || 0
|
||||
return Math.abs(remaining - editTheoreticalRemaining.value) > 0.0001
|
||||
})
|
||||
const editInQtyChanged = computed(() => {
|
||||
const inQty = Number(formData.inQty) || 0
|
||||
return Math.abs(inQty - editInitialInQty.value) > 0.0001
|
||||
})
|
||||
const editRemainingQtyChanged = computed(() => {
|
||||
const remaining = Number(formData.remainingQty) || 0
|
||||
return Math.abs(remaining - editInitialRemainingQty.value) > 0.0001
|
||||
})
|
||||
|
||||
const formRules = computed(() => {
|
||||
const rules: Record<string, unknown[]> = {
|
||||
@@ -1354,7 +1426,9 @@
|
||||
batchNo: [{ required: true, message: '请输入批号', trigger: 'blur' }],
|
||||
manufacturer: [{ required: true, message: '请输入厂家', trigger: 'blur' }],
|
||||
materialCode: [{ required: true, message: '请输入物料编码', trigger: 'blur' }],
|
||||
materialName: [{ required: true, message: '请输入物料名称', trigger: 'blur' }]
|
||||
materialName: [{ required: true, message: '请输入物料名称', trigger: 'blur' }],
|
||||
inQty: [{ required: true, message: '请输入入库数量', trigger: 'change' }],
|
||||
remainingQty: [{ required: true, message: '请输入剩余数量', trigger: 'change' }]
|
||||
}
|
||||
if (showAmountColumns.value) {
|
||||
rules.unitPrice = [{ required: true, message: '请输入单价', trigger: 'change' }]
|
||||
@@ -1736,13 +1810,23 @@
|
||||
formData.amount = calcAmount(formData.unitPrice ?? 0, formData.inQty)
|
||||
}
|
||||
|
||||
function onEditInQtyChange() {
|
||||
if (!remainingQtyTouched.value) {
|
||||
formData.remainingQty = editTheoreticalRemaining.value
|
||||
}
|
||||
onEditPriceQtyChange()
|
||||
}
|
||||
|
||||
function onEditRemainingQtyChange() {
|
||||
remainingQtyTouched.value = true
|
||||
}
|
||||
|
||||
function handleOpenAttachment(row: QcMaterialBatch) {
|
||||
attachmentBatch.value = row
|
||||
attachmentDialogVisible.value = true
|
||||
}
|
||||
|
||||
function handleEdit(row: QcMaterialBatch) {
|
||||
editingBatchId.value = row.batchId || row.id
|
||||
function fillEditFormFromBatch(row: QcMaterialBatch) {
|
||||
formData.stockInNo = row.stockInNo || ''
|
||||
formData.stockInDate = row.stockInDate || ''
|
||||
formData.expireDate = row.expireDate || ''
|
||||
@@ -1754,6 +1838,7 @@
|
||||
formData.amountManual = false
|
||||
formData.inQty = row.inQty ?? 0
|
||||
formData.remainingQty = row.remainingQty ?? 0
|
||||
formData.outTotal = row.outTotal ?? 0
|
||||
formData.materialCode = row.materialCode || ''
|
||||
formData.materialName = row.materialName || ''
|
||||
formData.specModel = row.specModel || ''
|
||||
@@ -1761,15 +1846,53 @@
|
||||
formData.warningQty = row.warningQty ?? 0
|
||||
formData.status = row.status || '1'
|
||||
formData.remark = row.remark || ''
|
||||
editInitialInQty.value = row.inQty ?? 0
|
||||
editInitialRemainingQty.value = row.remainingQty ?? 0
|
||||
remainingQtyTouched.value = false
|
||||
}
|
||||
|
||||
async function handleEdit(row: QcMaterialBatch) {
|
||||
editingBatchId.value = row.batchId || row.id
|
||||
fillEditFormFromBatch(row)
|
||||
ensureUnitOption(row.unit || '')
|
||||
dialogVisible.value = true
|
||||
void searchUnitOptions('')
|
||||
formRef.value?.clearValidate?.()
|
||||
const batchId = editingBatchId.value
|
||||
if (!batchId) return
|
||||
try {
|
||||
const detail = await fetchQcMaterialBatchDetail(batchId)
|
||||
fillEditFormFromBatch(detail)
|
||||
ensureUnitOption(detail.unit || '')
|
||||
} catch {
|
||||
/* 列表行数据仍可编辑 */
|
||||
}
|
||||
}
|
||||
|
||||
async function handleSubmit() {
|
||||
await formRef.value?.validate?.()
|
||||
if (!editingBatchId.value) return
|
||||
|
||||
const inQty = Number(formData.inQty) || 0
|
||||
const remainingQty = Number(formData.remainingQty) || 0
|
||||
const outTotal = editOutTotal.value
|
||||
if (inQty <= 0) {
|
||||
ElMessage.warning('入库数量必须大于 0')
|
||||
return
|
||||
}
|
||||
if (remainingQty < 0) {
|
||||
ElMessage.warning('剩余数量不能为负数')
|
||||
return
|
||||
}
|
||||
if (remainingQty > inQty) {
|
||||
ElMessage.warning('剩余数量不能大于入库数量')
|
||||
return
|
||||
}
|
||||
if (inQty < outTotal) {
|
||||
ElMessage.warning(`入库数量不能小于已出库量 ${outTotal}`)
|
||||
return
|
||||
}
|
||||
|
||||
submitLoading.value = true
|
||||
try {
|
||||
const payload: Record<string, unknown> = {
|
||||
@@ -1785,7 +1908,9 @@
|
||||
unit: formData.unit?.trim() || undefined,
|
||||
warningQty: formData.warningQty,
|
||||
status: String(formData.status ?? '1'),
|
||||
remark: formData.remark?.trim() || undefined
|
||||
remark: formData.remark?.trim() || undefined,
|
||||
inQty,
|
||||
remainingQty
|
||||
}
|
||||
if (showAmountColumns.value) {
|
||||
payload.unitPrice = Number(formData.unitPrice) || 0
|
||||
|
||||
Reference in new issue
Block a user