提交
This commit is contained in:
1 parent
5679d7981c
commit
7e04ebecc4
25 files changed
+790
-373
No files matched your search
+1
@@ -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"}]}
|
||||
+1
@@ -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"}]}
|
||||
+1
@@ -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"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_types_import_components_d_ts", "label": "components.d.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_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"}]}
|
||||
+1
@@ -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
|
||||
+1
@@ -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"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_types_import_components_d_ts", "label": "components.d.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_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": []}
|
||||
+1
@@ -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": []}
|
||||
+1
@@ -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
|
||||
+1
@@ -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": []}
|
||||
+1
@@ -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 = [
|
||||
|
||||
Reference in new issue
Block a user