From 2eb1807fe6fedb94459ed56de67bbff08232e3f5 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sun, 24 May 2026 10:21:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-admin/graphify-out/GRAPH_REPORT.md | 2 +- web-admin/graphify-out/manifest.json | 6 +- web-admin/src/App.vue | 3 +- web-admin/src/assets/styles/core/app.scss | 4 + ...9ffaeb24017fa58cbd1763b67e353ad7879b6.json | 1 + .../src/views/production/consumable/index.vue | 160 +++++++++++-- .../src/views/production/reagent/index.vue | 226 ++++++++++++++---- 7 files changed, 326 insertions(+), 76 deletions(-) create mode 100644 web-admin/src/graphify-out/cache/ast/1560ac6ae09ceffb84f948613069ffaeb24017fa58cbd1763b67e353ad7879b6.json diff --git a/web-admin/graphify-out/GRAPH_REPORT.md b/web-admin/graphify-out/GRAPH_REPORT.md index fb1e6494..d8d6c047 100644 --- a/web-admin/graphify-out/GRAPH_REPORT.md +++ b/web-admin/graphify-out/GRAPH_REPORT.md @@ -1,7 +1,7 @@ # Graph Report - src (2026-05-24) ## Corpus Check -- Large corpus: 595 files · ~325,287 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. +- Large corpus: 595 files · ~325,295 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. ## Summary - 1515 nodes · 1895 edges · 34 communities detected diff --git a/web-admin/graphify-out/manifest.json b/web-admin/graphify-out/manifest.json index 5733ddee..7b72dff6 100644 --- a/web-admin/graphify-out/manifest.json +++ b/web-admin/graphify-out/manifest.json @@ -17,8 +17,8 @@ "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/common/index.ts": 1778582068.0254738, "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/directive/directive.d.ts": 1778582068.026978, "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/api/api.d.ts": 1778582068.0246184, - "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1779586894.4437778, - "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1779586887.6455336, + "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1779587829.0283062, + "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1779587821.900029, "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/store/index.ts": 1778582068.0293276, "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/router/index.ts": 1778775532.895603, "/Users/wuzilong/work/00code/zkxw/web-admin/src/locales/index.ts": 1778582068.004279, @@ -282,7 +282,7 @@ "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-task/index.vue": 1779586846.3205786, "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/reagent/index.vue": 1779543540.724915, "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/index.vue": 1779586813.5815248, - "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts": 1779506613.3205173, + "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts": 1779587781.963615, "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/StepDetailPanel.vue": 1779525781.678735, "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskInputEnhancedTable.vue": 1779525781.679505, "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue": 1779525781.680895, diff --git a/web-admin/src/App.vue b/web-admin/src/App.vue index b9f44ce9..9e8a7900 100644 --- a/web-admin/src/App.vue +++ b/web-admin/src/App.vue @@ -85,7 +85,8 @@ [/(工单)/, 'auto-title-receipt'], [/(流程|待办|已办|申请|请假|执行)/, 'auto-title-operation'], [/(耗材|试剂)/, 'auto-title-box'], - [/(工艺|路线)/, 'auto-title-settings'], + [/(路线)/, 'auto-title-route'], + [/(工艺)/, 'auto-title-settings'], [/(规格|价格|体系|渠道|项目)/, 'auto-title-category'], [/(类型)/, 'auto-title-category'], [/(任务|调度)/, 'auto-title-operation'], diff --git a/web-admin/src/assets/styles/core/app.scss b/web-admin/src/assets/styles/core/app.scss index 17ee1630..345767bb 100755 --- a/web-admin/src/assets/styles/core/app.scss +++ b/web-admin/src/assets/styles/core/app.scss @@ -499,6 +499,10 @@ body { .console-container .panel-top h2.auto-title-user { --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E"); } +.page-container :is(.panel-top h2, .panel-top h3, .storage-content-header h3, .storage-aside__head h2, .user-dept-aside__head h2).auto-title-route, +.console-container .panel-top h2.auto-title-route { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='6' cy='19' r='3'/%3E%3Cpath d='M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15'/%3E%3Ccircle cx='18' cy='5' r='3'/%3E%3C/svg%3E"); +} .page-container :is(.panel-top h2, .panel-top h3, .storage-content-header h3, .storage-aside__head h2, .user-dept-aside__head h2).auto-title-settings, .console-container .panel-top h2.auto-title-settings { --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z'/%3E%3Cpath d='M19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1-1.5 2.6-0.2-.1a2 2 0 0 0-2.1.4 1.8 1.8 0 0 0-.6 2v.2H9.6v-.2a1.8 1.8 0 0 0-.6-2 2 2 0 0 0-2.1-.4l-.2.1-1.5-2.6.1-.1A1.7 1.7 0 0 0 4.6 15a1.7 1.7 0 0 0-1.6-1.1H3v-3h.0a1.7 1.7 0 0 0 1.6-1.1 1.7 1.7 0 0 0-.3-1.9l-.1-.1 1.5-2.6.2.1a2 2 0 0 0 2.1-.4 1.8 1.8 0 0 0 .6-2V2h4.8v.2a1.8 1.8 0 0 0 .6 2 2 2 0 0 0 2.1.4l.2-.1 1.5 2.6-.1.1a1.7 1.7 0 0 0-.3 1.9A1.7 1.7 0 0 0 21 10.9h.0v3H21a1.7 1.7 0 0 0-1.6 1.1z'/%3E%3C/svg%3E"); diff --git a/web-admin/src/graphify-out/cache/ast/1560ac6ae09ceffb84f948613069ffaeb24017fa58cbd1763b67e353ad7879b6.json b/web-admin/src/graphify-out/cache/ast/1560ac6ae09ceffb84f948613069ffaeb24017fa58cbd1763b67e353ad7879b6.json new file mode 100644 index 00000000..9d74cbc6 --- /dev/null +++ b/web-admin/src/graphify-out/cache/ast/1560ac6ae09ceffb84f948613069ffaeb24017fa58cbd1763b67e353ad7879b6.json @@ -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_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": "L35"}, {"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": "L39"}, {"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": "L42"}, {"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": "L57"}, {"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": "L64"}], "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_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": "L16", "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": "L24", "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_cell_product", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L25", "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": "L26", "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_tree_path", "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": "production_work_order_usetaskstepeditor_toapiflag", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "production_work_order_usetaskstepeditor_fromapiflag", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "production_work_order_usetaskstepeditor_normalizestepsubtables", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "production_work_order_usetaskstepeditor_parseordernum", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_usetaskstepeditor_ts", "target": "production_work_order_usetaskstepeditor_usetaskstepeditor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L64", "weight": 1.0}], "raw_calls": [{"caller_nid": "production_work_order_usetaskstepeditor_normalizestepsubtables", "callee": "map", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L45"}, {"caller_nid": "production_work_order_usetaskstepeditor_normalizestepsubtables", "callee": "map", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L49"}, {"caller_nid": "production_work_order_usetaskstepeditor_parseordernum", "callee": "parseInt", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L58"}, {"caller_nid": "production_work_order_usetaskstepeditor_parseordernum", "callee": "trim", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L58"}, {"caller_nid": "production_work_order_usetaskstepeditor_parseordernum", "callee": "String", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L58"}, {"caller_nid": "production_work_order_usetaskstepeditor_parseordernum", "callee": "isFinite", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L59"}, {"caller_nid": "production_work_order_usetaskstepeditor_parseordernum", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L60"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L65"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L66"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L67"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L68"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L69"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L70"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L71"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L74"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L75"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L76"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L77"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L78"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L79"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L80"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L81"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L83"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L84"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L85"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L86"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L87"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L89"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L90"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L92"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L93"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L94"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L96"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L97"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L98"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L100"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L116"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L117"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L118"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L119"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L120"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "computed", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L453"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "computed", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L457"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "computed", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L458"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "computed", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L459"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "computed", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L462"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "computed", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L478"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L859"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L860"}, {"caller_nid": "production_work_order_usetaskstepeditor_usetaskstepeditor", "callee": "ref", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts", "source_location": "L861"}]} \ No newline at end of file diff --git a/web-admin/src/views/production/consumable/index.vue b/web-admin/src/views/production/consumable/index.vue index 4a58ad4d..c3cf48c4 100644 --- a/web-admin/src/views/production/consumable/index.vue +++ b/web-admin/src/views/production/consumable/index.vue @@ -146,6 +146,7 @@ + @@ -162,7 +163,7 @@
- 按耗材、变动类型和时间范围查询变动记录。 + 按耗材编码/名称、变动类型和时间范围查询变动记录。
重置 搜索 @@ -178,6 +179,7 @@ v-loading="logLoading" stripe row-key="id" + @row-dblclick="handleLogView" > @@ -205,6 +207,12 @@ + + + + + + - - - - - - - + - + + + + + + + @@ -1015,20 +1036,101 @@ const logTableData = ref([]) const logLoading = ref(false) const logPagination = reactive({ page: 1, pageSize: 10, total: 0 }) + const logViewVisible = ref(false) + const logViewRow = ref(null) // 变动类型/来源映射 - function getChangeTypeLabel(changeType: string) { - if (changeType === 'in') return '入库' - if (changeType === 'use') return '出库' - return changeType || '-' + function isManualOutLogRow(row: { changeType?: string; sourceType?: string }) { + return row.sourceType === 'manual_out' } - function getChangeTypeTagType(changeType: string) { - if (changeType === 'in') return 'success' - if (changeType === 'use') return 'warning' + function isStepUseLogRow(row: { changeType?: string; sourceType?: string }) { + return row.changeType === 'use' && row.sourceType === 'step_save' + } + + function getChangeTypeLabel(row: { changeType?: string; sourceType?: string }) { + if (row.changeType === 'in') return '入库' + if (isManualOutLogRow(row)) return '出库' + if (isStepUseLogRow(row)) return '生产扣减' + if (row.changeType === 'use') return '出库' + return row.changeType || '-' + } + + function getChangeTypeTagType(row: { changeType?: string; sourceType?: string }) { + if (row.changeType === 'in') return 'success' + if (isManualOutLogRow(row)) return 'warning' + if (isStepUseLogRow(row)) return 'primary' + if (row.changeType === 'use') return 'warning' return 'info' } + function displayLogReceiver(row: any) { + if (!isManualOutLogRow(row)) return '-' + return (row.receiver || '').trim() || '-' + } + + function displayLogPurpose(row: any) { + if (!isManualOutLogRow(row)) return '-' + return (row.purpose || '').trim() || '-' + } + + function displayLogUseTime(row: any) { + if (!isManualOutLogRow(row)) return '-' + return (row.useTime || row.createTime || '').trim() || '-' + } + + const logViewSections = computed(() => { + if (!logViewRow.value) return [] + const row = logViewRow.value + return [ + { + title: '变动信息', + fields: [ + { label: '耗材编码', value: row.materialCode }, + { label: '耗材名称', value: row.materialName }, + { + label: '变动类型', + value: getChangeTypeLabel(row), + tagType: getChangeTypeTagType(row) as 'success' | 'warning' | 'primary' | 'info' + }, + { + label: '变动数量', + value: row.changeQty < 0 ? String(row.changeQty) : `+${row.changeQty}` + }, + { label: '变动前库存', value: String(row.stockBefore ?? 0) }, + { label: '变动后库存', value: String(row.stockAfter ?? 0) }, + { label: '工单号', value: row.taskNo || '-' }, + { label: '步骤名称', value: row.stepName || '-' }, + { + label: '来源类型', + value: getSourceLabel(row.sourceType), + tagType: getSourceTagType(row.sourceType) as 'success' | 'warning' | 'primary' | 'info' + }, + { + label: '领用人', + value: displayLogReceiver(row) === '-' ? '—' : displayLogReceiver(row) + }, + { + label: '用途', + value: displayLogPurpose(row) === '-' ? '—' : displayLogPurpose(row) + }, + { + label: '领用时间', + value: displayLogUseTime(row) === '-' ? '—' : displayLogUseTime(row) + }, + { label: '备注', value: row.remark || '—', span: true }, + { label: '操作人', value: row.createByName || row.createBy || '-' }, + { label: '变动时间', value: row.createTime || '—' } + ] + } + ] + }) + + function handleLogView(row: any) { + logViewRow.value = row + logViewVisible.value = true + } + function getSourceLabel(sourceType: string) { if (sourceType === 'manual_in') return '手动入库' if (sourceType === 'manual_out') return '手动出库' @@ -1540,9 +1642,27 @@ watch(activeTab, (val) => { if (val === 'logs') { + logPagination.page = 1 loadLogData() } }) + + watchDebounced( + logSearchForm, + () => { + if (activeTab.value !== 'logs') return + logPagination.page = 1 + loadLogData() + }, + { debounce: 300, deep: true } + ) + + watch(logDateRange, () => { + if (activeTab.value !== 'logs') return + logPagination.page = 1 + loadLogData() + }) + // 输入检索条件时自动搜索(防抖 300ms) watchDebounced( searchForm, diff --git a/web-admin/src/views/production/reagent/index.vue b/web-admin/src/views/production/reagent/index.vue index 24f0baeb..900fa922 100644 --- a/web-admin/src/views/production/reagent/index.vue +++ b/web-admin/src/views/production/reagent/index.vue @@ -219,8 +219,9 @@ - - + + + @@ -231,12 +232,13 @@ start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD" + clearable style="width: 100%" />
- 按试剂编码/名称、变动类型、时间范围筛选。 + 按试剂编码/名称、变动类型和时间范围查询变动记录。
重置 - + - - - - - + + + + + + + + + + + + - + + + + + + @@ -1120,9 +1124,48 @@ const map: Record = { manual_in: 'success', manual_out: 'warning', - step_save: 'info' + step_save: 'primary' } - return (map[sourceType] || 'info') as 'success' | 'warning' | 'info' + return (map[sourceType] || 'info') as 'success' | 'warning' | 'primary' | 'info' + } + + function isManualOutLogRow(row: { changeType?: string; sourceType?: string }) { + return row.sourceType === 'manual_out' + } + + function isStepUseLogRow(row: { changeType?: string; sourceType?: string }) { + return row.changeType === 'use' && row.sourceType === 'step_save' + } + + function getChangeTypeLabel(row: { changeType?: string; sourceType?: string }) { + if (row.changeType === 'in') return '入库' + if (isManualOutLogRow(row)) return '出库' + if (isStepUseLogRow(row)) return '生产扣减' + if (row.changeType === 'use') return '出库' + return row.changeType || '-' + } + + function getChangeTypeTagType(row: { changeType?: string; sourceType?: string }) { + if (row.changeType === 'in') return 'success' + if (isManualOutLogRow(row)) return 'warning' + if (isStepUseLogRow(row)) return 'primary' + if (row.changeType === 'use') return 'warning' + return 'info' + } + + function displayLogReceiver(row: any) { + if (!isManualOutLogRow(row)) return '-' + return (row.receiver || '').trim() || '-' + } + + function displayLogPurpose(row: any) { + if (!isManualOutLogRow(row)) return '-' + return (row.purpose || '').trim() || '-' + } + + function displayLogUseTime(row: any) { + if (!isManualOutLogRow(row)) return '-' + return (row.useTime || row.createTime || '').trim() || '-' } const activeTab = ref('list') @@ -1278,6 +1321,60 @@ const allLogFilter = reactive({ keyword: '', changeType: '' }) const allLogDateRange = ref(null) const allLogPagination = reactive({ page: 1, pageSize: 10, total: 0 }) + const allLogViewVisible = ref(false) + const allLogViewRow = ref(null) + + const allLogViewSections = computed(() => { + if (!allLogViewRow.value) return [] + const row = allLogViewRow.value + return [ + { + title: '变动信息', + fields: [ + { label: '试剂编码', value: row.materialCode }, + { label: '试剂名称', value: row.materialName }, + { + label: '变动类型', + value: getChangeTypeLabel(row), + tagType: getChangeTypeTagType(row) as 'success' | 'warning' | 'primary' | 'info' + }, + { + label: '变动数量', + value: row.changeQty < 0 ? String(row.changeQty) : `+${row.changeQty}` + }, + { label: '变动前库存', value: String(row.stockBefore ?? 0) }, + { label: '变动后库存', value: String(row.stockAfter ?? 0) }, + { label: '工单号', value: row.taskNo || '-' }, + { label: '步骤名称', value: row.stepName || '-' }, + { + label: '来源类型', + value: sourceTypeLabel(row.sourceType), + tagType: sourceTypeTagType(row.sourceType) + }, + { + label: '领用人', + value: displayLogReceiver(row) === '-' ? '—' : displayLogReceiver(row) + }, + { + label: '用途', + value: displayLogPurpose(row) === '-' ? '—' : displayLogPurpose(row) + }, + { + label: '领用时间', + value: displayLogUseTime(row) === '-' ? '—' : displayLogUseTime(row) + }, + { label: '备注', value: row.remark || '—', span: true }, + { label: '操作人', value: row.createByName || row.createBy || '-' }, + { label: '变动时间', value: row.createTime || '—' } + ] + } + ] + }) + + function handleAllLogView(row: any) { + allLogViewRow.value = row + allLogViewVisible.value = true + } const handleSelectionChange = (rows: any[]) => { selectedRows.value = rows @@ -1805,6 +1902,23 @@ loadAllLogs() } }) + + watchDebounced( + allLogFilter, + () => { + if (activeTab.value !== 'stockLogs') return + allLogPagination.page = 1 + loadAllLogs() + }, + { debounce: 300, deep: true } + ) + + watch(allLogDateRange, () => { + if (activeTab.value !== 'stockLogs') return + allLogPagination.page = 1 + loadAllLogs() + }) + // 输入检索条件时自动搜索(防抖 300ms) watchDebounced( searchForm, @@ -1829,6 +1943,16 @@ } } + .qty-positive { + color: var(--el-color-success); + font-weight: 500; + } + + .qty-negative { + color: var(--el-color-danger); + font-weight: 500; + } + .reagent-batch-stock-dialog { .batch-stock-move-head { margin-bottom: 16px;