This commit is contained in:
zlwu committed 2026-06-16 11:25:02 +08:00
1 parent 5679d7981c
commit 7e04ebecc4
25 files changed
+790 -373

No files matched your search

@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "label": "ChannelServiceOrderTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1"}, {"id": "channel_channelserviceordertab_validate", "label": "validate()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1540"}, {"id": "channel_channelserviceordertab_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1624"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "target": "channel_channelserviceordertab_validate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1540", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "target": "channel_channelserviceordertab_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1624", "weight": 1.0}], "raw_calls": [{"caller_nid": "channel_channelserviceordertab_if", "callee": "error", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1625"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "label": "ChannelServiceOrderTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1"}, {"id": "channel_channelserviceordertab_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1343"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "target": "channel_channelserviceordertab_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1343", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "target": "channel_channelserviceordertab_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1623", "weight": 1.0}], "raw_calls": [{"caller_nid": "channel_channelserviceordertab_if", "callee": "handleChannelSearch", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1344"}, {"caller_nid": "channel_channelserviceordertab_if", "callee": "error", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1624"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationformdialog_vue", "label": "ApplicationFormDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L1"}, {"id": "pilot_application_applicationformdialog_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L1456"}, {"id": "pilot_application_applicationformdialog_remotesearchcustomers", "label": "remoteSearchCustomers()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L2500"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationformdialog_vue", "target": "pilot_application_applicationformdialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L1456", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationformdialog_vue", "target": "pilot_application_applicationformdialog_remotesearchcustomers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L2500", "weight": 1.0}], "raw_calls": [{"caller_nid": "pilot_application_applicationformdialog_if", "callee": "warning", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L1457"}, {"caller_nid": "pilot_application_applicationformdialog_remotesearchcustomers", "callee": "mapUrlsToAttachmentFiles", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L2574"}]}
@@ -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": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "label": "ChannelServiceOrderTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1"}, {"id": "channel_channelserviceordertab_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1326"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "target": "channel_channelserviceordertab_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1326", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_channelserviceordertab_vue", "target": "channel_channelserviceordertab_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1606", "weight": 1.0}], "raw_calls": [{"caller_nid": "channel_channelserviceordertab_if", "callee": "handleChannelSearch", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1327"}, {"caller_nid": "channel_channelserviceordertab_if", "callee": "error", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue", "source_location": "L1607"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationdetaildialog_vue", "label": "ApplicationDetailDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L1"}, {"id": "pilot_application_applicationdetaildialog_validate", "label": "validate()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2115"}, {"id": "pilot_application_applicationdetaildialog_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2379"}, {"id": "pilot_application_applicationdetaildialog_async", "label": "async()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2971"}, {"id": "pilot_application_applicationdetaildialog_initdata", "label": "initData()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L3410"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationdetaildialog_vue", "target": "pilot_application_applicationdetaildialog_validate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2115", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationdetaildialog_vue", "target": "pilot_application_applicationdetaildialog_validate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2179", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationdetaildialog_vue", "target": "pilot_application_applicationdetaildialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationdetaildialog_vue", "target": "pilot_application_applicationdetaildialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2956", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationdetaildialog_vue", "target": "pilot_application_applicationdetaildialog_async", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2971", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationdetaildialog_vue", "target": "pilot_application_applicationdetaildialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L3387", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationdetaildialog_vue", "target": "pilot_application_applicationdetaildialog_initdata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L3410", "weight": 1.0}], "raw_calls": [{"caller_nid": "pilot_application_applicationdetaildialog_if", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2533"}, {"caller_nid": "pilot_application_applicationdetaildialog_if", "callee": "parseAttachmentUrls", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue", "source_location": "L2963"}, {"caller_nid": "pilot_application_applicationdetaildialog_async", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/AppLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationformdialog_vue", "label": "ApplicationFormDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L1"}, {"id": "pilot_application_applicationformdialog_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L1457"}, {"id": "pilot_application_applicationformdialog_remotesearchcustomers", "label": "remoteSearchCustomers()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L2501"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationformdialog_vue", "target": "pilot_application_applicationformdialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L1457", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationformdialog_vue", "target": "pilot_application_applicationformdialog_remotesearchcustomers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L2501", "weight": 1.0}], "raw_calls": [{"caller_nid": "pilot_application_applicationformdialog_if", "callee": "warning", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L1458"}, {"caller_nid": "pilot_application_applicationformdialog_remotesearchcustomers", "callee": "mapUrlsToAttachmentFiles", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue", "source_location": "L2575"}]}
@@ -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": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_service_order_serviceordertxndialog_vue", "label": "ServiceOrderTxnDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnDialog.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_material_materialstockchecktab_vue", "label": "MaterialStockCheckTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/MaterialStockCheckTab.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_service_order_finance_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L1"}, {"id": "channel_service_order_finance_index_txnamountlabel", "label": "txnAmountLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L574"}, {"id": "channel_service_order_finance_index_txntypehasproducts", "label": "txnTypeHasProducts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L584"}, {"id": "channel_service_order_finance_index_financesubmitremarkdisplay", "label": "financeSubmitRemarkDisplay()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L588"}, {"id": "channel_service_order_finance_index_financesubmitattachmentdisplayfiles", "label": "financeSubmitAttachmentDisplayFiles()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L593"}, {"id": "channel_service_order_finance_index_fullfileurl", "label": "fullFileUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L610"}, {"id": "channel_service_order_finance_index_isimagefile", "label": "isImageFile()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L617"}, {"id": "channel_service_order_finance_index_isvideofile", "label": "isVideoFile()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L627"}, {"id": "channel_service_order_finance_index_formatlocaldate", "label": "formatLocalDate()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L647"}, {"id": "channel_service_order_finance_index_loaddata", "label": "loadData()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L683"}, {"id": "channel_service_order_finance_index_handlesearch", "label": "handleSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L710"}, {"id": "channel_service_order_finance_index_handlereset", "label": "handleReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L715"}, {"id": "channel_service_order_finance_index_handletabchange", "label": "handleTabChange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L724"}, {"id": "channel_service_order_finance_index_switchtab", "label": "switchTab()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L733"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_service_order_finance_index_vue", "target": "channel_service_order_finance_index_txnamountlabel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L574", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_service_order_finance_index_vue", "target": "channel_service_order_finance_index_txntypehasproducts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L584", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_service_order_finance_index_vue", "target": "channel_service_order_finance_index_financesubmitremarkdisplay", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue", "source_location": "L588"Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_channel_service_order_serviceordertxndialog_vue", "label": "ServiceOrderTxnDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnDialog.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_edittaskinfodialog_vue", "label": "EditTaskInfoDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L1"}, {"id": "production_work_order_edittaskinfodialog_loadtaskdetail", "label": "loadTaskDetail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L83"}, {"id": "production_work_order_edittaskinfodialog_handleclose", "label": "handleClose()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L95"}, {"id": "production_work_order_edittaskinfodialog_handlesubmit", "label": "handleSubmit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L102"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_edittaskinfodialog_vue", "target": "element_plus", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_edittaskinfodialog_vue", "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/EditTaskInfoDialog.vue", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_edittaskinfodialog_vue", "target": "element_plus", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_edittaskinfodialog_vue", "target": "production_work_order_edittaskinfodialog_loadtaskdetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_edittaskinfodialog_vue", "target": "production_work_order_edittaskinfodialog_handleclose", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L95", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_edittaskinfodialog_vue", "target": "production_work_order_edittaskinfodialog_handlesubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L102", "weight": 1.0}, {"source": "production_work_order_edittaskinfodialog_handlesubmit", "target": "production_work_order_edittaskinfodialog_handleclose", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L115", "weight": 1.0}], "raw_calls": [{"caller_nid": "production_work_order_edittaskinfodialog_loadtaskdetail", "callee": "fetchProductionTaskDetail", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L86"}, {"caller_nid": "production_work_order_edittaskinfodialog_handlesubmit", "callee": "validate", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L104"}, {"caller_nid": "production_work_order_edittaskinfodialog_handlesubmit", "callee": "fetchUpdateProductionTask", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L108"}, {"caller_nid": "production_work_order_edittaskinfodialog_handlesubmit", "callee": "success", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue", "source_location": "L113"}, {"caller_nid": "production_work_order_edittaskinfodialLine truncated
@@ -72,8 +72,20 @@
header-align="center"
:index="(index) => (pagination.page - 1) * pagination.pageSize + index + 1"
/>
<el-table-column prop="title" label="盘点标题" min-width="180" align="center" header-align="center" />
<el-table-column prop="checkTime" label="盘点时间" min-width="170" align="center" header-align="center" />
<el-table-column
prop="title"
label="盘点标题"
min-width="180"
align="center"
header-align="center"
/>
<el-table-column
prop="checkTime"
label="盘点时间"
min-width="170"
align="center"
header-align="center"
/>
<el-table-column label="状态" min-width="100" align="center" header-align="center">
<template #default="{ row }">
<el-tag :type="statusTagType(row.status)" size="small">{{ row.statusLabel }}</el-tag>
@@ -88,7 +100,13 @@
<el-table-column label="创建人" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ row.createByName || row.createBy || '—' }}</template>
</el-table-column>
<el-table-column prop="completeTime" label="完成时间" min-width="170" align="center" header-align="center">
<el-table-column
prop="completeTime"
label="完成时间"
min-width="170"
align="center"
header-align="center"
>
<template #default="{ row }">{{ row.completeTime || '—' }}</template>
</el-table-column>
<el-table-column
@@ -207,7 +225,9 @@
<aside class="unused-list-panel">
<div class="unused-list-panel__head">
<span class="unused-list-panel__title">领用记录</span>
<span class="stat-pill">共 {{ requisitionTotalCount }} · 已登记 {{ requisitionRegisteredCount }}</span>
<span class="stat-pill"
>共 {{ requisitionTotalCount }} · 已登记 {{ requisitionRegisteredCount }}</span
>
</div>
<div class="unused-list-search-wrap">
<el-input
@@ -229,7 +249,9 @@
>
<div class="unused-line-item__top">
<span class="unused-line-item__name">{{ req.materialName }}</span>
<span v-if="isRequisitionEntryRegistered(req.id)" class="unused-reg-tag">已登记</span>
<span v-if="isRequisitionEntryRegistered(req.id)" class="unused-reg-tag"
>已登记</span
>
</div>
<div class="unused-line-item__meta">
<span>{{ req.requisitionQty }}{{ req.unit || '' }}</span>
@@ -292,29 +314,41 @@
</aside>
<section class="unused-detail-panel">
<div
v-if="editMode === 'requisition' && activeRequisition"
class="unused-detail-body"
>
<div v-if="editMode === 'requisition' && activeRequisition" class="unused-detail-body">
<div class="unused-detail-head">
<div>
<h3 class="unused-detail-title">{{ activeRequisition.materialName }}</h3>
<p class="unused-detail-sub">
{{ activeRequisition.stockInNo || '—' }} · 批号 {{ activeRequisition.batchNo || '—' }} ·
领用 {{ activeRequisition.requisitionQty }}{{ activeRequisition.unit || '' }}
{{ activeRequisition.stockInNo || '—' }} · 批号
{{ activeRequisition.batchNo || '—' }} · 领用 {{ activeRequisition.requisitionQty
}}{{ activeRequisition.unit || '' }}
<template v-if="activeRequisition.taskConsumedQty > 0">
· 任务已消耗 {{ activeRequisition.taskConsumedQty }}{{ activeRequisition.unit || '' }}
· 任务已消耗 {{ activeRequisition.taskConsumedQty
}}{{ activeRequisition.unit || '' }}
</template>
</p>
</div>
</div>
<div class="unused-readonly-grid">
<div><span class="ro-label">领用人</span>{{ activeRequisition.receiverName || activeRequisition.receiver || '—' }}</div>
<div><span class="ro-label">领用时间</span>{{ activeRequisition.useTime || '—' }}</div>
<div
><span class="ro-label">领用人</span
>{{ activeRequisition.receiverName || activeRequisition.receiver || '—' }}</div
>
<div
><span class="ro-label">领用时间</span>{{ activeRequisition.useTime || '—' }}</div
>
<div><span class="ro-label">规格</span>{{ activeRequisition.specModel || '—' }}</div>
<div><span class="ro-label">厂家</span>{{ activeRequisition.manufacturer || '—' }}</div>
<div><span class="ro-label">单价</span>{{ displayMoney(activeRequisition.unitPrice) }}</div>
<div><span class="ro-label">过期日期</span>{{ activeRequisition.expireDate || '—' }}</div>
<div
><span class="ro-label">厂家</span>{{ activeRequisition.manufacturer || '—' }}</div
>
<div
><span class="ro-label">单价</span
>{{ displayMoney(activeRequisition.unitPrice) }}</div
>
<div
><span class="ro-label">过期日期</span
>{{ activeRequisition.expireDate || '—' }}</div
>
</div>
<el-form label-position="top" class="unused-edit-form">
<div class="form-grid-2">
@@ -330,7 +364,9 @@
</el-form-item>
<el-form-item label="剩余金额(元)">
<el-input
:model-value="displayMoney(calcLineAmount(activeDraft.unitPrice, activeDraft.unusedQty))"
:model-value="
displayMoney(calcLineAmount(activeDraft.unitPrice, activeDraft.unusedQty))
"
disabled
/>
</el-form-item>
@@ -348,7 +384,9 @@
<div class="unused-detail-head">
<div>
<h3 class="unused-detail-title">手工登记</h3>
<p class="unused-detail-sub">检索入库批次带出物料信息,填写未用完数量、持有人与备注。</p>
<p class="unused-detail-sub"
>检索入库批次带出物料信息,填写未用完数量、持有人与备注。</p
>
</div>
</div>
<el-form label-position="top" class="unused-edit-form">
@@ -365,11 +403,19 @@
:remote-method="searchUnusedBatchOptions"
@change="onManualBatchPick"
>
<el-option v-for="opt in batchOptions" :key="opt.id" :label="opt.label" :value="opt.id">
<el-option
v-for="opt in batchOptions"
:key="opt.id"
:label="opt.label"
:value="opt.id"
>
<div class="batch-option-item">
<span class="batch-option-main">{{ opt.stockInNo }} · {{ opt.materialName }}</span>
<span class="batch-option-main"
>{{ opt.stockInNo }} · {{ opt.materialName }}</span
>
<span class="batch-option-sub">
批号:{{ opt.batchNo || '—' }} · 剩余 {{ opt.remainingQty }}{{ opt.unit || '' }}
批号:{{ opt.batchNo || '—' }} · 剩余 {{ opt.remainingQty
}}{{ opt.unit || '' }}
</span>
</div>
</el-option>
@@ -381,7 +427,9 @@
<div><span class="ro-label">批号</span>{{ manualDraft.batchNo || '—' }}</div>
<div><span class="ro-label">规格</span>{{ manualDraft.specModel || '—' }}</div>
<div><span class="ro-label">厂家</span>{{ manualDraft.manufacturer || '—' }}</div>
<div><span class="ro-label">单价</span>{{ displayMoney(manualDraft.unitPrice) }}</div>
<div
><span class="ro-label">单价</span>{{ displayMoney(manualDraft.unitPrice) }}</div
>
</div>
<div class="form-grid-2">
<el-form-item label="未用完数量" required>
@@ -395,7 +443,9 @@
</el-form-item>
<el-form-item label="剩余金额(元)">
<el-input
:model-value="displayMoney(calcLineAmount(manualDraft.unitPrice, manualDraft.unusedQty))"
:model-value="
displayMoney(calcLineAmount(manualDraft.unitPrice, manualDraft.unusedQty))
"
disabled
/>
</el-form-item>
@@ -423,7 +473,12 @@
<el-button class="btn-ghost" @click="unusedVisible = false">
<el-icon><Close /></el-icon>取消
</el-button>
<el-button class="btn-main" type="primary" :loading="unusedLoading" @click="handleSaveUnused">
<el-button
class="btn-main"
type="primary"
:loading="unusedLoading"
@click="handleSaveUnused"
>
<el-icon><Check /></el-icon>保存
</el-button>
</template>
@@ -440,130 +495,286 @@
modal-class="protocol-dialog-mask"
destroy-on-close
>
<div v-if="viewDetail" class="stock-check-view">
<div class="view-head-grid">
<div><span class="view-label">盘点时间</span>{{ viewDetail.checkTime }}</div>
<div>
<span class="view-label">状态</span>
<el-tag :type="statusTagType(viewDetail.status)" size="small">{{ viewDetail.statusLabel }}</el-tag>
<DialogFormBody :loading="false" body-class="min-h-[200px]">
<div v-if="viewDetail" class="stock-check-view">
<div class="view-head-grid">
<div><span class="view-label">盘点时间</span>{{ viewDetail.checkTime }}</div>
<div>
<span class="view-label">状态</span>
<el-tag :type="statusTagType(viewDetail.status)" size="small">{{
viewDetail.statusLabel
}}</el-tag>
</div>
<div
><span class="view-label">创建人</span
>{{ viewDetail.createByName || viewDetail.createBy || '—' }}</div
>
<div><span class="view-label">完成时间</span>{{ viewDetail.completeTime || '—' }}</div>
<div class="view-head-remark"
><span class="view-label">备注</span>{{ viewDetail.remark || '—' }}</div
>
</div>
<div class="stock-check-lines-section">
<h3 class="detail-section-title"
>系统库存快照({{ viewDetail.batchLines?.length || 0 }} 行)</h3
>
<div class="list-body list-wrap view-inner-table-wrap stock-check-inner-list-wrap">
<el-table
v-if="viewDetail.batchLines?.length"
:data="viewDetail.batchLines"
stripe
class="list-table inner-table"
max-height="320"
>
<el-table-column
type="index"
label="序号"
min-width="52"
align="center"
header-align="center"
/>
<el-table-column
label="入库编号"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.stockInNo) }}</template>
</el-table-column>
<el-table-column
label="入库日期"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.stockInDate) }}</template>
</el-table-column>
<el-table-column
label="过期日期"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.expireDate) }}</template>
</el-table-column>
<el-table-column
label="物料编码"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.materialCode) }}</template>
</el-table-column>
<el-table-column
label="物料名称"
min-width="130"
align="center"
header-align="center"
show-overflow-tooltip
>
<template #default="{ row }">{{ displayText(row.materialName) }}</template>
</el-table-column>
<el-table-column
label="规格型号"
min-width="100"
align="center"
header-align="center"
show-overflow-tooltip
>
<template #default="{ row }">{{ displayText(row.specModel) }}</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.unit) }}</template>
</el-table-column>
<el-table-column label="货号" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.catalogNo) }}</template>
</el-table-column>
<el-table-column label="批号" min-width="90" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.batchNo) }}</template>
</el-table-column>
<el-table-column
label="厂家"
min-width="110"
align="center"
header-align="center"
show-overflow-tooltip
>
<template #default="{ row }">{{ displayText(row.manufacturer) }}</template>
</el-table-column>
<el-table-column
label="单价(元)"
min-width="100"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayMoney(row.unitPrice) }}</template>
</el-table-column>
<el-table-column
label="剩余金额(元)"
min-width="120"
align="center"
header-align="center"
>
<template #default="{ row }">
{{
displayMoney(
row.remainingAmount ?? calcLineAmount(row.unitPrice, row.remainingQty)
)
}}
</template>
</el-table-column>
<el-table-column
label="剩余数量"
min-width="100"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.remainingQty) }}</template>
</el-table-column>
</el-table>
<el-empty v-else description="暂无系统库存快照数据" :image-size="48" />
</div>
</div>
<div class="stock-check-lines-section">
<h3 class="detail-section-title"
>领用未用完登记({{ viewDetail.unusedLines?.length || 0 }} 行)</h3
>
<div class="list-body list-wrap view-inner-table-wrap stock-check-inner-list-wrap">
<el-table
v-if="viewDetail.unusedLines?.length"
:data="viewDetail.unusedLines"
stripe
class="list-table inner-table"
max-height="320"
>
<el-table-column
type="index"
label="序号"
min-width="52"
align="center"
header-align="center"
/>
<el-table-column
label="入库编号"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.stockInNo) }}</template>
</el-table-column>
<el-table-column
label="入库日期"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.stockInDate) }}</template>
</el-table-column>
<el-table-column
label="过期日期"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.expireDate) }}</template>
</el-table-column>
<el-table-column
label="物料编码"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.materialCode) }}</template>
</el-table-column>
<el-table-column
label="物料名称"
min-width="130"
align="center"
header-align="center"
show-overflow-tooltip
>
<template #default="{ row }">{{ displayText(row.materialName) }}</template>
</el-table-column>
<el-table-column
label="规格型号"
min-width="100"
align="center"
header-align="center"
show-overflow-tooltip
>
<template #default="{ row }">{{ displayText(row.specModel) }}</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.unit) }}</template>
</el-table-column>
<el-table-column label="货号" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.catalogNo) }}</template>
</el-table-column>
<el-table-column label="批号" min-width="90" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.batchNo) }}</template>
</el-table-column>
<el-table-column
label="厂家"
min-width="110"
align="center"
header-align="center"
show-overflow-tooltip
>
<template #default="{ row }">{{ displayText(row.manufacturer) }}</template>
</el-table-column>
<el-table-column
label="单价(元)"
min-width="100"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayMoney(row.unitPrice) }}</template>
</el-table-column>
<el-table-column
label="剩余金额(元)"
min-width="120"
align="center"
header-align="center"
>
<template #default="{ row }">
{{
displayMoney(
row.remainingAmount ?? calcLineAmount(row.unitPrice, row.unusedQty)
)
}}
</template>
</el-table-column>
<el-table-column
label="未用完数量"
min-width="110"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.unusedQty) }}</template>
</el-table-column>
<el-table-column
label="持有人"
min-width="100"
align="center"
header-align="center"
>
<template #default="{ row }">{{ displayText(row.holder) }}</template>
</el-table-column>
<el-table-column
label="备注"
min-width="120"
align="center"
header-align="center"
show-overflow-tooltip
>
<template #default="{ row }">{{ displayText(row.remark) }}</template>
</el-table-column>
</el-table>
<el-empty v-else description="暂无领用未用完登记数据" :image-size="48" />
</div>
</div>
<div><span class="view-label">创建人</span>{{ viewDetail.createByName || viewDetail.createBy || '—' }}</div>
<div><span class="view-label">完成时间</span>{{ viewDetail.completeTime || '—' }}</div>
<div class="view-head-remark"><span class="view-label">备注</span>{{ viewDetail.remark || '—' }}</div>
</div>
<h3 class="view-section-title">系统库存快照({{ viewDetail.batchLines?.length || 0 }} 行)</h3>
<div class="inner-table-scroll">
<el-table
:data="viewDetail.batchLines || []"
stripe
:fit="false"
table-layout="auto"
class="list-table inner-table"
>
<el-table-column type="index" label="序号" min-width="52" align="center" header-align="center" />
<el-table-column label="入库编号" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.stockInNo) }}</template>
</el-table-column>
<el-table-column label="入库日期" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.stockInDate) }}</template>
</el-table-column>
<el-table-column label="过期日期" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.expireDate) }}</template>
</el-table-column>
<el-table-column label="物料编码" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.materialCode) }}</template>
</el-table-column>
<el-table-column label="物料名称" min-width="130" align="center" header-align="center" show-overflow-tooltip>
<template #default="{ row }">{{ displayText(row.materialName) }}</template>
</el-table-column>
<el-table-column label="规格型号" min-width="100" align="center" header-align="center" show-overflow-tooltip>
<template #default="{ row }">{{ displayText(row.specModel) }}</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.unit) }}</template>
</el-table-column>
<el-table-column label="货号" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.catalogNo) }}</template>
</el-table-column>
<el-table-column label="批号" min-width="90" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.batchNo) }}</template>
</el-table-column>
<el-table-column label="厂家" min-width="110" align="center" header-align="center" show-overflow-tooltip>
<template #default="{ row }">{{ displayText(row.manufacturer) }}</template>
</el-table-column>
<el-table-column label="单价(元)" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ displayMoney(row.unitPrice) }}</template>
</el-table-column>
<el-table-column label="剩余金额(元)" min-width="120" align="center" header-align="center">
<template #default="{ row }">
{{ displayMoney(row.remainingAmount ?? calcLineAmount(row.unitPrice, row.remainingQty)) }}
</template>
</el-table-column>
<el-table-column label="剩余数量" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.remainingQty) }}</template>
</el-table-column>
</el-table>
</div>
<h3 class="view-section-title">领用未用完登记({{ viewDetail.unusedLines?.length || 0 }} 行)</h3>
<div class="inner-table-scroll">
<el-table
:data="viewDetail.unusedLines || []"
stripe
:fit="false"
table-layout="auto"
class="list-table inner-table"
>
<el-table-column type="index" label="序号" min-width="52" align="center" header-align="center" />
<el-table-column label="入库编号" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.stockInNo) }}</template>
</el-table-column>
<el-table-column label="入库日期" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.stockInDate) }}</template>
</el-table-column>
<el-table-column label="过期日期" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.expireDate) }}</template>
</el-table-column>
<el-table-column label="物料编码" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.materialCode) }}</template>
</el-table-column>
<el-table-column label="物料名称" min-width="130" align="center" header-align="center" show-overflow-tooltip>
<template #default="{ row }">{{ displayText(row.materialName) }}</template>
</el-table-column>
<el-table-column label="规格型号" min-width="100" align="center" header-align="center" show-overflow-tooltip>
<template #default="{ row }">{{ displayText(row.specModel) }}</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.unit) }}</template>
</el-table-column>
<el-table-column label="货号" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.catalogNo) }}</template>
</el-table-column>
<el-table-column label="批号" min-width="90" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.batchNo) }}</template>
</el-table-column>
<el-table-column label="厂家" min-width="110" align="center" header-align="center" show-overflow-tooltip>
<template #default="{ row }">{{ displayText(row.manufacturer) }}</template>
</el-table-column>
<el-table-column label="单价(元)" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ displayMoney(row.unitPrice) }}</template>
</el-table-column>
<el-table-column label="剩余金额(元)" min-width="120" align="center" header-align="center">
<template #default="{ row }">
{{ displayMoney(row.remainingAmount ?? calcLineAmount(row.unitPrice, row.unusedQty)) }}
</template>
</el-table-column>
<el-table-column label="未用完数量" min-width="110" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.unusedQty) }}</template>
</el-table-column>
<el-table-column label="持有人" min-width="100" align="center" header-align="center">
<template #default="{ row }">{{ displayText(row.holder) }}</template>
</el-table-column>
<el-table-column label="备注" min-width="120" align="center" header-align="center" show-overflow-tooltip>
<template #default="{ row }">{{ displayText(row.remark) }}</template>
</el-table-column>
</el-table>
</div>
</div>
</DialogFormBody>
<template #footer>
<el-button class="btn-ghost" @click="viewVisible = false">
<el-icon><Close /></el-icon>关闭
@@ -599,6 +810,7 @@
import * as XLSX from 'xlsx'
import FileSaver from 'file-saver'
import { formatMoneyDisplay } from '@/utils/money-format'
import DialogFormBody from '@/components/business/dialog-form-body/index.vue'
import { fetchMaterialBatchOptions, type MaterialBatchOption } from '@/api/material'
import { fetchMarkMaterialUsageFullyUsed } from '@/api/material-usage'
import {
@@ -960,7 +1172,8 @@
}
const manualDetailKey = computed(
() => `manual-detail-${editingManualKey.value || 'new'}-${manualDraft.value.batchPickId || 'empty'}`
() =>
`manual-detail-${editingManualKey.value || 'new'}-${manualDraft.value.batchPickId || 'empty'}`
)
function rebuildRegisteredUsageMap() {
@@ -1133,7 +1346,9 @@
activeKey.value = `req:${req.id}`
activeRequisition.value = req
applyActiveDraft(
requisitionDrafts.value[req.id] ? { ...requisitionDrafts.value[req.id] } : lineFromRequisition(req)
requisitionDrafts.value[req.id]
? { ...requisitionDrafts.value[req.id] }
: lineFromRequisition(req)
)
if (prevUsageId && prevDraft) {
@@ -1244,11 +1459,15 @@
async function handleMarkFullyUsed(usageId: string) {
dbgLog('handleMarkFullyUsed START', { usageId })
try {
await ElMessageBox.confirm('确认该领用记录已全部使用完?标记后将不再出现在待登记列表。', '标记已使用完', {
type: 'warning',
confirmButtonText: '确认',
cancelButtonText: '取消'
})
await ElMessageBox.confirm(
'确认该领用记录已全部使用完?标记后将不再出现在待登记列表。',
'标记已使用完',
{
type: 'warning',
confirmButtonText: '确认',
cancelButtonText: '取消'
}
)
} catch {
return
}
@@ -1428,7 +1647,11 @@
return Number(v)
}
function lineAmount(unitPrice?: number | null, qty?: number | null, remainingAmount?: number | null) {
function lineAmount(
unitPrice?: number | null,
qty?: number | null,
remainingAmount?: number | null
) {
if (remainingAmount != null && !Number.isNaN(Number(remainingAmount))) {
return Number(remainingAmount)
}
@@ -1605,9 +1828,13 @@
}
async function handleComplete(row: MaterialStockCheck) {
await ElMessageBox.confirm(`确定完成盘点「${row.title}」吗?完成后不可再修改登记。`, '完成盘点', {
type: 'warning'
})
await ElMessageBox.confirm(
`确定完成盘点「${row.title}」吗?完成后不可再修改登记。`,
'完成盘点',
{
type: 'warning'
}
)
await fetchCompleteMaterialStockCheck(row.id)
ElMessage.success('盘点已完成')
loadData()
@@ -1774,7 +2001,9 @@
border-radius: 6px;
background: #fff;
cursor: pointer;
transition: border-color 0.12s, background 0.12s;
transition:
border-color 0.12s,
background 0.12s;
&:hover {
border-color: #a7f3d0;
@@ -2123,33 +2352,47 @@
}
/*
* 弹窗内宽表横向滚动(对齐 order/index.vue order-detail-items-scroll):
* OpenSpec 列 min-width + :fit="false" + body-wrapper overflow-x,覆盖全局 width:100%!important
* 弹窗内宽表横向滚动:OpenSpec 标准 list-body + view-inner-table-wrap,
* 列 min-width 驱动横向滚动,覆盖全局 width:100%!important
*/
.inner-table-scroll {
width: 100%;
max-width: 100%;
overflow-x: hidden;
overflow-y: visible;
-webkit-overflow-scrolling: touch;
}
.stock-check-inner-list-wrap.view-inner-table-wrap.list-body.list-wrap {
border: 1px solid var(--mint-border, #e2e8f0);
border-radius: var(--mint-radius, 10px);
overflow: hidden;
background: #fff;
.inner-table-scroll :deep(.el-table.inner-table) {
width: 100% !important;
min-width: 100%;
}
:deep(.el-table) {
--el-table-header-bg-color: var(--mint-table-head, #f8fafc);
--el-table-border-color: var(--mint-border, #e2e8f0);
--el-table-row-hover-bg-color: var(--mint-row-hover, #f0fdf4);
--el-table-text-color: var(--mint-text, #0f172a);
--el-table-header-text-color: var(--mint-text-muted, #64748b);
font-size: 14px;
}
.inner-table-scroll :deep(.el-table.inner-table .el-table__inner-wrapper) {
width: 100% !important;
min-width: 100%;
}
:deep(.el-table th.el-table__cell) {
font-size: 12px;
font-weight: 600;
color: var(--mint-text-muted, #64748b);
}
.inner-table-scroll :deep(.el-table.inner-table .el-table__body-wrapper) {
overflow-x: auto !important;
}
:deep(.el-table td.el-table__cell) {
font-size: 14px;
font-weight: 500;
color: var(--mint-text, #0f172a);
}
.inner-table-scroll :deep(.el-table.inner-table .el-table__header-wrapper) {
overflow-x: hidden !important;
:deep(.el-table.inner-table .el-table__body-wrapper) {
overflow-x: auto !important;
}
:deep(.el-table.inner-table .el-table__header-wrapper) {
overflow-x: hidden !important;
}
:deep(.el-empty) {
padding: 24px 0;
}
}
.inner-cell-input {
@@ -2203,11 +2446,22 @@
color: var(--mint-text-muted, #64748b);
}
.view-section-title {
margin: 16px 0 8px;
.stock-check-lines-section {
margin-top: 20px;
&:first-of-type {
margin-top: 0;
}
}
.detail-section-title {
margin: 0 0 12px;
padding-left: 10px;
font-size: 14px;
font-weight: 600;
color: var(--mint-text, #0f172a);
color: #1e293b;
border-left: 3px solid #047857;
line-height: 1.4;
}
}
</style>
@@ -258,10 +258,13 @@
title="确认操作"
:width="txnTypeHasProducts(currentRow?.txnType) ? '960px' : '640px'"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
:close-on-click-modal="false"
class="finance-receipt-dialog"
class="finance-receipt-dialog dialog-form-layout"
style="backdrop-filter: none"
>
<div v-if="currentRow" v-loading="confirmDetailLoading" class="dialog-form-layout">
<div v-if="currentRow" v-loading="confirmDetailLoading">
<!-- 流水摘要 -->
<div class="detail-section">
<h4 class="detail-section-title">流水信息</h4>
@@ -8,7 +8,8 @@
align-center
append-to-body
:close-on-click-modal="false"
class="service-order-txn-dialog"
class="service-order-txn-dialog dialog-form-layout"
modal-class="protocol-dialog-mask"
style="backdrop-filter: none"
>
<div v-loading="loading" class="txn-dialog-body">
@@ -1276,9 +1277,6 @@
<style lang="scss" scoped>
.txn-dialog-body {
min-height: 120px;
max-height: calc(100vh - 220px);
overflow-y: auto;
padding-right: 4px;
}
.txn-dialog-summary {
@@ -353,10 +353,12 @@
destroy-on-close
:close-on-click-modal="false"
@close="handleFormClose"
class="service-order-dialog"
class="service-order-dialog dialog-form-layout"
align-center
modal-class="protocol-dialog-mask"
style="backdrop-filter: none"
>
<div class="dialog-form-layout">
<el-form
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
@@ -442,7 +444,6 @@
</el-form-item>
</div>
</el-form>
</div>
<template #footer>
<el-button class="btn-ghost" @click="formVisible = false">
@@ -467,6 +468,10 @@
width="560px"
destroy-on-close
:close-on-click-modal="false"
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
>
<p v-if="currentOrderForTxn" class="order-context-bar">{{
formatOrderContext(currentOrderForTxn)
@@ -574,6 +579,10 @@
width="640px"
destroy-on-close
:close-on-click-modal="false"
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
>
<p v-if="currentOrderForTxn" class="order-context-bar">{{
formatOrderContext(currentOrderForTxn)
@@ -691,67 +700,110 @@
width="880px"
destroy-on-close
:close-on-click-modal="false"
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
>
<p v-if="currentOrderForTxn" class="order-context-bar">{{
formatOrderContext(currentOrderForTxn)
}}</p>
<el-form label-position="top">
<div class="product-detail-table-wrap">
<el-table :data="purchaseForm.items" stripe size="small" class="list-table inner-table">
<el-table-column type="index" label="序号" min-width="60" align="center" />
<el-table-column label="项目/规格" min-width="260">
<template #default="{ row, $index }">
<el-select
v-model="row.priceId"
class="product-detail-cell-control"
placeholder="选择项目"
filterable
@change="(v: string) => handlePurchasePriceChange(v, $index)"
>
<el-option
v-for="p in getAvailablePriceOptionsForPurchase($index)"
:key="p.priceId"
:label="formatProjectOptionLabel(p)"
:value="p.priceId"
/>
</el-select>
</template>
</el-table-column>
<el-table-column label="单价(元)" min-width="100" align="right">
<template #default="{ row }">¥{{ formatAmount(row.unitPrice) }}</template>
</el-table-column>
<el-table-column label="份数" min-width="100">
<template #default="{ row }">
<el-input-number
v-model="row.quantity"
class="product-detail-cell-control"
:min="1"
:precision="0"
controls-position="right"
@change="calcItemAmount(row)"
/>
</template>
</el-table-column>
<el-table-column label="金额(元)" min-width="100" align="right">
<template #default="{ row }">¥{{ formatAmount(row.amount) }}</template>
</el-table-column>
<el-table-column label="操作" min-width="60" align="center">
<template #default="{ $index }">
<el-button type="danger" link size="small" @click="removePurchaseItem($index)">
<el-icon><Delete /></el-icon>删除
<div class="product-detail-table-wrap product-detail-table-wrap--standard-list">
<div class="purchase-product-list">
<div class="list-toolbar">
<div class="list-toolbar-row">
<el-button class="btn-main" type="primary" @click="addPurchaseItem">
<el-icon><Plus /></el-icon>添加产品
</el-button>
</template>
</el-table-column>
</el-table>
<div class="product-detail-footer">
<el-button size="small" @click="addPurchaseItem"
><el-icon><Plus /></el-icon>添加产品</el-button
</div>
</div>
<div class="list-body list-wrap product-detail-list-body">
<el-table
v-if="purchaseForm.items.length"
:data="purchaseForm.items"
stripe
class="list-table inner-table"
max-height="360"
>
<el-table-column
type="index"
label="序号"
min-width="68"
align="center"
header-align="center"
/>
<el-table-column label="项目/规格" min-width="260">
<template #default="{ row, $index }">
<el-select
v-model="row.priceId"
class="product-detail-cell-control"
placeholder="选择项目"
filterable
popper-class="project-option-popper"
@change="(v: string) => handlePurchasePriceChange(v, $index)"
>
<el-option
v-for="p in getAvailablePriceOptionsForPurchase($index)"
:key="p.priceId"
:label="formatProjectOptionLabel(p)"
:value="p.priceId"
/>
</el-select>
</template>
</el-table-column>
<el-table-column
label="单价(元)"
min-width="100"
align="right"
header-align="center"
>
<template #default="{ row }">¥{{ formatAmount(row.unitPrice) }}</template>
</el-table-column>
<el-table-column label="份数" min-width="100" align="center" header-align="center">
<template #default="{ row }">
<el-input-number
v-model="row.quantity"
class="product-detail-cell-control"
:min="1"
:precision="0"
controls-position="right"
@change="calcItemAmount(row)"
/>
</template>
</el-table-column>
<el-table-column
label="金额(元)"
min-width="100"
align="right"
header-align="center"
>
<template #default="{ row }">¥{{ formatAmount(row.amount) }}</template>
</el-table-column>
<el-table-column
label="操作"
fixed="right"
min-width="80"
align="center"
header-align="center"
>
<template #default="{ $index }">
<el-button type="danger" link @click="removePurchaseItem($index)">
<el-icon><Delete /></el-icon>删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-empty v-else description="暂无产品,点击上方按钮添加" :image-size="48" />
</div>
<div
v-if="purchaseForm.items.length"
class="product-detail-total product-detail-total--summary"
>
<span class="product-detail-total">
合计:<span class="product-detail-total-value"
>¥{{ formatAmount(purchaseTotalAmount) }}(元)</span
>
</span>
</div>
</div>
</div>
<el-form-item label="备注" style="margin-top: 12px">
@@ -786,6 +838,10 @@
width="860px"
destroy-on-close
:close-on-click-modal="false"
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
>
<p v-if="currentOrderForTxn" class="order-context-bar">{{
formatOrderContext(currentOrderForTxn)
@@ -2082,11 +2138,6 @@
}
}
.dialog-form-layout {
max-height: calc(100vh - 100px);
overflow-y: auto;
padding-right: 4px;
}
.amount-text {
font-weight: 600;
@@ -2141,6 +2192,13 @@
.product-detail-table-wrap {
width: 100%;
.purchase-product-list {
border: 1px solid var(--mint-border, #e2e8f0);
border-radius: var(--mint-radius, 10px);
overflow: hidden;
background: #fff;
}
.product-detail-footer {
display: flex;
align-items: center;
@@ -2157,6 +2215,14 @@
text-align: right;
}
&--summary {
margin: 0;
padding: 10px 16px;
text-align: right;
border-top: 1px solid var(--mint-border, #e2e8f0);
background: var(--mint-table-head, #f8fafc);
}
.product-detail-total-value {
font-weight: 600;
color: var(--primary, #047857);
@@ -2173,6 +2239,58 @@
height: 32px;
box-sizing: border-box;
}
&--standard-list {
.list-toolbar {
padding: 0;
background: var(--mint-table-head, #f8fafc);
border-bottom: none;
}
.list-toolbar-row {
padding: 8px 16px;
gap: 8px;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: flex-start;
:deep(.el-button + .el-button) {
margin-left: 0 !important;
}
}
.product-detail-list-body {
border-top: 1px solid var(--mint-border, #e2e8f0);
border-radius: 0;
overflow: hidden;
}
:deep(.list-table.el-table) {
--el-table-header-bg-color: var(--mint-table-head, #f8fafc);
--el-table-border-color: var(--mint-border, #e2e8f0);
--el-table-row-hover-bg-color: var(--mint-row-hover, #f0fdf4);
--el-table-text-color: var(--mint-text, #0f172a);
--el-table-header-text-color: var(--mint-text-muted, #64748b);
font-size: 14px;
}
:deep(.list-table th.el-table__cell) {
color: var(--mint-text-muted, #64748b);
font-size: 12px;
font-weight: 600;
}
:deep(.list-table td.el-table__cell) {
color: var(--mint-text, #0f172a);
font-size: 14px;
font-weight: 500;
}
:deep(.el-empty) {
padding: 24px 0;
}
}
}
:global(.project-option-popper .el-select-dropdown__item) {
@@ -1127,10 +1127,13 @@
:title="checkupData ? '编辑体检信息' : '新增体检信息'"
width="640px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="dialog-form-layout">
<el-form ref="checkupFormRef" :model="checkupForm" label-position="top" class="dialog-form">
<el-form ref="checkupFormRef" :model="checkupForm" label-position="top" class="dialog-form">
<div class="form-grid-2">
<el-form-item label="预约时间">
<el-date-picker
@@ -1227,7 +1230,6 @@
</el-form-item>
</div>
</el-form>
</div>
<template #footer>
<el-button @click="checkupDialogVisible = false"
><el-icon><Close /></el-icon>取消</el-button
@@ -1245,10 +1247,13 @@
title="添加预约项目"
width="420px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="dialog-form-layout">
<el-form :model="reserveItemForm" label-position="top" class="dialog-form">
<el-form :model="reserveItemForm" label-position="top" class="dialog-form">
<el-form-item label="项目名称">
<el-input v-model="reserveItemForm.itemName" placeholder="请输入项目名称" />
</el-form-item>
@@ -1262,7 +1267,6 @@
/>
</el-form-item>
</el-form>
</div>
<template #footer>
<el-button @click="reserveItemDialogVisible = false"
><el-icon><Close /></el-icon>取消</el-button
@@ -1280,10 +1284,13 @@
title="添加实际项目"
width="420px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="dialog-form-layout">
<el-form :model="actualItemForm" label-position="top" class="dialog-form">
<el-form :model="actualItemForm" label-position="top" class="dialog-form">
<el-form-item label="项目名称">
<el-input v-model="actualItemForm.itemName" placeholder="请输入项目名称" />
</el-form-item>
@@ -1297,7 +1304,6 @@
/>
</el-form-item>
</el-form>
</div>
<template #footer>
<el-button @click="actualItemDialogVisible = false"
><el-icon><Close /></el-icon>取消</el-button
@@ -1315,6 +1321,10 @@
title="交付详情"
width="720px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<el-tabs v-model="deliveryDetailTab">
@@ -1492,10 +1502,13 @@
title="添加物料"
width="420px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="dialog-form-layout">
<el-form :model="addMaterialForm" label-position="top" class="dialog-form">
<el-form :model="addMaterialForm" label-position="top" class="dialog-form">
<el-form-item label="物料名称">
<el-input v-model="addMaterialForm.materialName" placeholder="请输入物料名称" />
</el-form-item>
@@ -1514,7 +1527,6 @@
<el-input v-model="addMaterialForm.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
</div>
<template #footer>
<el-button @click="addMaterialDialogVisible = false"
><el-icon><Close /></el-icon>取消</el-button
@@ -1532,6 +1544,10 @@
title="选择客户"
width="800px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="customer-dialog-content">
@@ -1603,11 +1619,14 @@
:title="planDialogMode === 'add' ? '新增输注方案' : '编辑输注方案'"
width="640px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
@close="planFormRef?.resetFields()"
>
<div class="dialog-form-layout">
<el-form
<el-form
ref="planFormRef"
:model="planForm"
:rules="planRules"
@@ -1647,7 +1666,6 @@
</el-form-item>
</div>
</el-form>
</div>
<template #footer>
<el-button @click="planDialogVisible = false"
><el-icon><Close /></el-icon>取消</el-button
@@ -1665,10 +1683,13 @@
:title="scheduleDialogMode === 'add' ? '添加输注计划' : '编辑输注计划'"
width="500px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="dialog-form-layout">
<el-form
<el-form
ref="scheduleFormRef"
:model="scheduleForm"
label-position="top"
@@ -1714,7 +1735,6 @@
</div>
</el-form-item>
</el-form>
</div>
<template #footer>
<el-button @click="scheduleDialogVisible = false"
><el-icon><Close /></el-icon>取消</el-button
@@ -1732,10 +1752,13 @@
:title="localPlanEditIndex >= 0 ? '编辑输注方案' : '新增输注方案'"
width="640px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="dialog-form-layout">
<el-form
<el-form
ref="localPlanFormRef"
:model="localPlanForm"
:rules="localPlanRules"
@@ -1774,7 +1797,6 @@
</el-form-item>
</div>
</el-form>
</div>
<template #footer>
<el-button @click="localPlanDialogVisible = false"
><el-icon><Close /></el-icon>取消</el-button
@@ -1792,10 +1814,13 @@
title="新增客户"
width="500px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="dialog-form-layout">
<el-form
<el-form
ref="newCustomerFormRef"
:model="newCustomerForm"
:rules="newCustomerRules"
@@ -1828,7 +1853,6 @@
</el-form-item>
</div>
</el-form>
</div>
<template #footer>
<el-button @click="newCustomerDialogVisible = false"
><el-icon><Close /></el-icon>取消</el-button
@@ -963,9 +963,12 @@
title="新增客户"
width="500px"
destroy-on-close
align-center
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
>
<div class="dialog-form-layout">
<el-form
ref="newCustomerFormRef"
:model="newCustomerForm"
@@ -999,7 +1002,6 @@
</el-form-item>
</div>
</el-form>
</div>
<template #footer>
<el-button @click="newCustomerDialogVisible = false">
<el-icon><Close /></el-icon>取消
@@ -7,6 +7,9 @@
destroy-on-close
align-center
append-to-body
modal-class="protocol-dialog-mask"
class="dialog-form-layout"
style="backdrop-filter: none"
:close-on-click-modal="false"
@close="handleClose"
>
@@ -15,7 +18,6 @@
:model="form"
:rules="rules"
label-position="top"
class="dialog-form-layout"
>
<div class="form-grid-2">
<el-form-item label="任务名称" prop="taskName" class="form-col-span-2">
@@ -63,16 +63,16 @@
<el-option label="已完成" value="ywc" />
</el-select>
</el-form-item>
<el-form-item label="任务类型">
<el-select
v-model="searchForm.taskType"
placeholder="全部"
clearable
<el-form-item :label="filterTimeLabel">
<el-date-picker
v-model="createTimeRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD"
style="width: 100%"
>
<el-option label="实验室自检" value="sysz" />
<el-option label="第三方检测" value="dsfjc" />
</el-select>
/>
</el-form-item>
</div>
@@ -100,16 +100,16 @@
<el-option label="基础实验" value="basic_experiment" />
</el-select>
</el-form-item>
<el-form-item :label="filterTimeLabel">
<el-date-picker
v-model="createTimeRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD"
<el-form-item label="任务类型">
<el-select
v-model="searchForm.taskType"
placeholder="全部"
clearable
style="width: 100%"
/>
>
<el-option label="实验室自检" value="sysz" />
<el-option label="第三方检测" value="dsfjc" />
</el-select>
</el-form-item>
</div>
</div>
@@ -194,7 +194,7 @@
const activeTypeTab = ref<WorkOrderTypeTab>('inbound')
const filterExpanded = ref(false)
const filterTimeLabel = computed(() =>
activeTypeTab.value === 'outbound' ? '输注时间' : '创建时间'
activeTypeTab.value === 'outbound' ? '输注/交付时间' : '创建时间'
)
const filterHint = computed(() => {
const timeHint =
@@ -57,7 +57,7 @@
<el-icon><Upload /></el-icon>
入库
</el-button>
<el-button class="btn-ghost" @click="handleBatchStockIn">
<el-button v-if="batchStockInButtonVisible" class="btn-ghost" @click="handleBatchStockIn">
<el-icon><Upload /></el-icon>
批量入库
</el-button>
@@ -1183,6 +1183,9 @@
defineOptions({ name: 'QualityInspectionQcMaterial' })
/** 暂时隐藏批量入库入口,恢复时改为 true */
const batchStockInButtonVisible = false
const route = useRoute()
const QC_MATERIAL_TABS = [