提交
This commit is contained in:
1 parent
eaf7d490ec
commit
5679d7981c
52 files changed
+7606
-4839
No files matched your search
+1
-1
@@ -1 +1 @@
|
||||
23976
|
||||
96644
|
||||
@@ -1,4 +1,4 @@
|
||||
# Graph Report - app (2026-06-15)
|
||||
# Graph Report - app (2026-06-16)
|
||||
|
||||
## Corpus Check
|
||||
- Large corpus: 208 files · ~240,881 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1,11 +1,11 @@
|
||||
# Graph Report - src (2026-06-16)
|
||||
|
||||
## Corpus Check
|
||||
- Large corpus: 734 files · ~513,108 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
- Large corpus: 737 files · ~515,188 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
|
||||
## Summary
|
||||
- 2452 nodes · 3380 edges · 53 communities detected
|
||||
- Extraction: 78% EXTRACTED · 22% INFERRED · 0% AMBIGUOUS · INFERRED: 748 edges (avg confidence: 0.8)
|
||||
- 2481 nodes · 3433 edges · 54 communities detected
|
||||
- Extraction: 78% EXTRACTED · 22% INFERRED · 0% AMBIGUOUS · INFERRED: 752 edges (avg confidence: 0.8)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
@@ -60,8 +60,9 @@
|
||||
- [[_COMMUNITY_Community 51|Community 51]]
|
||||
- [[_COMMUNITY_Community 53|Community 53]]
|
||||
- [[_COMMUNITY_Community 55|Community 55]]
|
||||
- [[_COMMUNITY_Community 58|Community 58]]
|
||||
- [[_COMMUNITY_Community 60|Community 60]]
|
||||
- [[_COMMUNITY_Community 56|Community 56]]
|
||||
- [[_COMMUNITY_Community 59|Community 59]]
|
||||
- [[_COMMUNITY_Community 61|Community 61]]
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `get()` - 259 edges
|
||||
@@ -76,171 +77,171 @@
|
||||
10. `TableCache` - 14 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- `handleBatchDelete()` --calls--> `withFullscreenLoading()` [INFERRED]
|
||||
views/basic-info/customer/index.vue → utils/fullscreen-loading.ts
|
||||
- `fmtMoney()` --calls--> `formatMoneyDisplay()` [INFERRED]
|
||||
components/business/clinical-schedule-payment-detail/index.vue → utils/money-format.ts
|
||||
- `handleDownloadAttachment()` --calls--> `downloadAttachmentFile()` [INFERRED]
|
||||
views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue → utils/download-attachment.ts
|
||||
- `subscribeTokenRefresh()` --calls--> `push()` [INFERRED]
|
||||
utils/http/index.ts → views/operations/storage-facility/index.vue
|
||||
- `fetchLeaveList()` --calls--> `get()` [INFERRED]
|
||||
api/leave.ts → views/production/process/ProcessRouteTab.vue
|
||||
- `fetchLeaveDetail()` --calls--> `get()` [INFERRED]
|
||||
api/leave.ts → views/production/process/ProcessRouteTab.vue
|
||||
- `handleUnauthorizedResponse()` --calls--> `fetchRefreshToken()` [INFERRED]
|
||||
utils/http/index.ts → api/auth.ts
|
||||
- `toLogin()` --calls--> `logOut()` [INFERRED]
|
||||
components/core/layouts/art-screen-lock/index.vue → utils/http/index.ts
|
||||
|
||||
## Communities
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.01
|
||||
Nodes (127): fetchAccessLogList(), fetchActiveRegions(), fetchCategoryList(), fetchCategoryParameters(), fetchCellProductPriceList(), fetchChannelAccount(), fetchChannelAgreementPrices(), fetchChannelAgreements() (+119 more)
|
||||
Nodes (132): fetchAccessLogList(), fetchActiveRegions(), fetchCategoryList(), fetchCategoryParameters(), fetchCellProductPriceList(), fetchChannelAccount(), fetchChannelAgreementPrices(), fetchChannelAgreements() (+124 more)
|
||||
|
||||
### Community 1 - "Community 1"
|
||||
Cohesion: 0.02
|
||||
Nodes (64): fetchCheckupInstitutionInvoices(), fetchCheckupInstitutionList(), fetchCheckupInstitutionProjects(), fetchCreateCheckupInstitution(), fetchCreateCheckupInstitutionInvoice(), fetchCreateCheckupInstitutionProject(), fetchUpdateCheckupInstitution(), fetchUpdateCheckupInstitutionInvoice() (+56 more)
|
||||
Nodes (42): fetchAllConsumablePacks(), fetchAllConsumables(), fetchAllConsumableStockLogs(), fetchAllEquipments(), fetchAllOutputTypes(), fetchAllProcessCategories(), fetchAllProcesses(), fetchAllReagents() (+34 more)
|
||||
|
||||
### Community 2 - "Community 2"
|
||||
Cohesion: 0.03
|
||||
Nodes (84): fetchUploadAttachment(), reload(), handleReportUpload(), formatNowDatetime(), handleReportUpload(), walk(), formatTodayDate(), handleMenuJump() (+76 more)
|
||||
Nodes (78): batchSavePilotCheckup(), deletePilotCheckupActualItem(), fetchCheckupInstitutionPackageDetail(), fetchCheckupInstitutionPackages(), fetchPilotCheckupDetail(), markPilotCheckupChecked(), savePilotCheckup(), savePilotCheckupActualItems() (+70 more)
|
||||
|
||||
### Community 3 - "Community 3"
|
||||
Cohesion: 0.02
|
||||
Nodes (42): fetchAllConsumablePacks(), fetchAllConsumables(), fetchAllConsumableStockLogs(), fetchAllEquipments(), fetchAllOutputTypes(), fetchAllProcessCategories(), fetchAllProcesses(), fetchAllReagents() (+34 more)
|
||||
Cohesion: 0.03
|
||||
Nodes (33): fetchGetMenuList(), ComponentLoader, IframeRouteManager, MenuProcessor, RouteRegistry, RouteTransformer, useAppMode(), useAuth() (+25 more)
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.02
|
||||
Nodes (43): fetchAttachmentDownloadUrl(), fetchCreateProductionWorkOrder(), fetchProductionWorkOrderCellProductOptions(), fetchProductionWorkOrderDetail(), fetchProductionWorkOrderList(), handleDownloadAttachment(), deep(), fullFileUrl() (+35 more)
|
||||
Cohesion: 0.03
|
||||
Nodes (53): fetchCheckupInstitutionInvoices(), fetchCheckupInstitutionList(), fetchCheckupInstitutionProjects(), fetchCreateCheckupInstitution(), fetchCreateCheckupInstitutionInvoice(), fetchCreateCheckupInstitutionProject(), fetchUpdateCheckupInstitution(), fetchUpdateCheckupInstitutionInvoice() (+45 more)
|
||||
|
||||
### Community 5 - "Community 5"
|
||||
Cohesion: 0.04
|
||||
Nodes (69): batchSavePilotCheckup(), deletePilotCheckupActualItem(), fetchCheckupInstitutionPackageDetail(), fetchCheckupInstitutionPackages(), markPilotCheckupChecked(), savePilotCheckup(), savePilotCheckupActualItems(), savePilotCheckupReserveItems() (+61 more)
|
||||
Cohesion: 0.03
|
||||
Nodes (37): fetchAttachmentDownloadUrl(), deep(), fullFileUrl(), handleDownloadAttachment(), handlePreviewAttachment(), isVideoFile(), handleReceptionAttachmentDownload(), handleTabChange() (+29 more)
|
||||
|
||||
### Community 6 - "Community 6"
|
||||
Cohesion: 0.03
|
||||
Nodes (31): fetchGetMenuList(), IframeRouteManager, MenuProcessor, RoutePermissionValidator, RouteRegistry, useAppMode(), useAuth(), useCommon() (+23 more)
|
||||
Nodes (40): fetchMyProductionTasks(), useSettingsHandlers(), useSettingsPanel(), useSettingsState(), RoutePermissionValidator, useCeremony(), useTheme(), for() (+32 more)
|
||||
|
||||
### Community 7 - "Community 7"
|
||||
Cohesion: 0.04
|
||||
Nodes (39): handleBlur(), handleFocus(), handleInput(), fetchEthnicList(), fetchDeleteQcMaterialBatch(), fetchQcMaterialBatchList(), fetchQcMaterialBatchOptions(), fetchQcMaterialList() (+31 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (54): fetchUploadAttachment(), FireworkSystem, reload(), handleReportUpload(), handleReportUpload(), walk(), handleMenuJump(), openExternalLink() (+46 more)
|
||||
|
||||
### Community 8 - "Community 8"
|
||||
Cohesion: 0.05
|
||||
Nodes (32): fetchClinicalPaymentDetail(), fetchClinicalPayments(), fetchClinicalReceiptConfirmed(), fetchClinicalReceiptPending(), fetchClinicalRefundConfirmed(), fetchClinicalRefundPending(), fetchOrderAdjusts(), fetchOrderDetail() (+24 more)
|
||||
Nodes (34): fetchClinicalPaymentDetail(), fetchClinicalPayments(), fetchClinicalReceiptConfirmed(), fetchClinicalReceiptPending(), fetchClinicalRefundConfirmed(), fetchClinicalRefundPending(), fetchOrderAdjusts(), fetchOrderDetail() (+26 more)
|
||||
|
||||
### Community 9 - "Community 9"
|
||||
Cohesion: 0.06
|
||||
Nodes (11): fetchGetLatestUpgradeLog(), getDefaultLanguage(), checkStorageCompatibility(), StorageConfig, getSystemStorage(), getSysVersion(), StorageKeyManager, StorageCompatibilityManager (+3 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (26): fetchProductionTaskList(), handleSubmit(), handleReset(), handleSearch(), handleSubmit(), canDeleteWorkOrder(), canDispatchTask(), formatTempEmptyField() (+18 more)
|
||||
|
||||
### Community 10 - "Community 10"
|
||||
Cohesion: 0.07
|
||||
Nodes (31): fetchMyQcTaskList(), fetchQcTaskDetail(), fetchQcTaskList(), buildWorkOrderSearchFilters(), handleReset(), handleSearch(), handleTabChange(), handleTypeTabChange() (+23 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (32): fetchMyQcTaskList(), fetchQcTaskDetail(), fetchQcTaskList(), buildWorkOrderSearchFilters(), handleReset(), handleSearch(), handleTabChange(), handleTypeTabChange() (+24 more)
|
||||
|
||||
### Community 11 - "Community 11"
|
||||
Cohesion: 0.06
|
||||
Nodes (32): fetchCreateCustomer(), fetchCustomerList(), fetchDeleteCustomer(), fetchUpdateCustomer(), updateInfusionScheduleStatus(), fetchCreateProductionWorkOrder(), fetchProductionWorkOrderCellProductOptions(), fetchProductionWorkOrderDetail() (+24 more)
|
||||
|
||||
### Community 12 - "Community 12"
|
||||
Cohesion: 0.06
|
||||
Nodes (29): fetchDeleteQcMaterialBatch(), fetchQcMaterialBatchList(), fetchQcMaterialBatchOptions(), fetchQcMaterialList(), fetchQcMaterialOptions(), fetchUpdateQcMaterialBatch(), fetchMarkQcMaterialUsageFullyUsed(), fetchMyQcMaterialUsageList() (+21 more)
|
||||
|
||||
### Community 13 - "Community 13"
|
||||
Cohesion: 0.05
|
||||
Nodes (27): handleBlur(), handleFocus(), handleInput(), fetchEthnicList(), formatAmount(), formatAmount(), formatProtocolAmount(), applyDonationBundleToForm() (+19 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.05
|
||||
Nodes (28): fetchFullmoonTodoList(), fetchUpdateFullmoonTodoInsurance(), fetchCollectionProtocolAuditList(), fetchCollectionProtocolDetail(), fetchCollectionProtocolList(), fetchPaymentDetailList(), fetchReceiptConfirmedList(), fetchReceiptConfirmList() (+20 more)
|
||||
|
||||
### Community 12 - "Community 12"
|
||||
### Community 15 - "Community 15"
|
||||
Cohesion: 0.04
|
||||
Nodes (21): fetchAvailableMaterialBatches(), fetchMyProductionMaterialConsumptions(), fetchMyProductionMaterialUsageList(), fetchProductionMaterialBatchList(), fetchProductionMaterialBatchOptions(), fetchProductionMaterialConsumptions(), fetchProductionMaterialFormula(), fetchProductionMaterialLinkedStepUsages() (+13 more)
|
||||
|
||||
### Community 13 - "Community 13"
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.06
|
||||
Nodes (22): fmtMoney(), auditorDisplay(), dash(), expressName(), formatYm(), formatYmd(), sampleTypeName(), siteName() (+14 more)
|
||||
Nodes (34): fetchUserList(), fetchAddTaskStep(), fetchCopyTaskStep(), fetchDeleteTaskStep(), fetchForwardProductionTask(), fetchProductionTaskDetail(), fetchReassignProductionTask(), fetchReorderTaskSteps() (+26 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.07
|
||||
Nodes (33): fetchUserList(), fetchAddTaskStep(), fetchCopyTaskStep(), fetchDeleteTaskStep(), fetchForwardProductionTask(), fetchProductionTaskDetail(), fetchReassignProductionTask(), fetchReorderTaskSteps() (+25 more)
|
||||
|
||||
### Community 15 - "Community 15"
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.06
|
||||
Nodes (20): fetchCreateMenu(), fetchDeleteMenu(), fetchMenuTree(), fetchUpdateMenu(), collectIds(), postorder(), preorder(), applyTreeExpand() (+12 more)
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
### Community 18 - "Community 18"
|
||||
Cohesion: 0.1
|
||||
Nodes (2): WebSocketClient, TableCache
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.08
|
||||
Nodes (33): fetchRefreshToken(), toLogin(), base64ToBytes(), bytesToBase64(), decryptJson(), deriveKey(), encryptJson(), fromBase64Url() (+25 more)
|
||||
|
||||
### Community 18 - "Community 18"
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.08
|
||||
Nodes (28): fetchUserOptions(), fetchSampleReceptionCheckItemList(), fetchSampleReceptionCheckItemsActive(), fetchAllocateLabStorageCodes(), fetchSampleReceptionBySampleCode(), fetchSampleReceptionDetail(), fetchSampleReceptionPendingList(), fetchSampleReceptionReceivedList() (+20 more)
|
||||
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.08
|
||||
Nodes (28): fetchCreateCustomer(), fetchCustomerList(), fetchDeleteCustomer(), fetchUpdateCustomer(), updateInfusionScheduleStatus(), handleAdd(), handleBatchDelete(), handleDelete() (+20 more)
|
||||
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.08
|
||||
Nodes (24): fetchMyProductionTasks(), fetchProductionTaskList(), canDeleteTask(), canEditTask(), canEnterExecution(), canForwardTask(), handleDropdownCommand(), handleEnterExecution() (+16 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (12): fmtMoney(), auditorDisplay(), dash(), expressName(), formatYm(), formatYmd(), sampleTypeName(), siteName() (+4 more)
|
||||
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.09
|
||||
Nodes (31): base64ToBytes(), bytesToBase64(), decryptJson(), deriveKey(), encryptJson(), fromBase64Url(), hexToBytes(), sha256Hex() (+23 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.09
|
||||
Nodes (8): getDefaultLanguage(), checkStorageCompatibility(), StorageConfig, getSystemStorage(), getSysVersion(), StorageKeyManager, StorageCompatibilityManager, validateStorageData()
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.07
|
||||
Nodes (13): maskIdCard(), buildBasicExperimentApplicationFields(), buildDefaultApplicationFields(), buildOutboundPilotContextSections(), applicationStatusLabel(), applicationStatusTagType(), infusionMethodLabel(), infusionStatusLabel() (+5 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
### Community 24 - "Community 24"
|
||||
Cohesion: 0.09
|
||||
Nodes (28): completePilotApplication(), deletePilotApplication(), fetchPilotApplicationList(), startPilotApplication(), voidPilotApplication(), clearTableSelection(), handleBatchComplete(), handleBatchStart() (+20 more)
|
||||
|
||||
### Community 25 - "Community 25"
|
||||
Cohesion: 0.08
|
||||
Nodes (16): fetchDeleteMaterialBatch(), fetchMaterialBatchList(), fetchMaterialBatchOptions(), fetchMaterialList(), fetchMaterialOptions(), fetchUpdateMaterialBatch(), fetchMaterialUsageList(), fetchMyMaterialUsageList() (+8 more)
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.11
|
||||
Nodes (25): completePilotApplication(), deletePilotApplication(), fetchPilotApplicationList(), startPilotApplication(), voidPilotApplication(), clearTableSelection(), handleBatchComplete(), handleBatchStart() (+17 more)
|
||||
|
||||
### Community 24 - "Community 24"
|
||||
Cohesion: 0.12
|
||||
Nodes (20): fetchGetMenuCodes(), fetchGetUserInfo(), fetchLogin(), fetchUpdateProfile(), fetchUploadProfileAvatar(), fetchUserInfo(), buildWebEncryptedLoginBody(), defaultAvatarPathByRole() (+12 more)
|
||||
|
||||
### Community 25 - "Community 25"
|
||||
Cohesion: 0.12
|
||||
Nodes (24): fetchCellProductSpecList(), fetchCellProductTypeList(), applyProductCodeToLines(), calcExpiryFromFreeze(), createEmptyProductLine(), createQuantityValue(), getLineStorageSlotOptions(), getOtherLineStorageSlotIds() (+16 more)
|
||||
|
||||
### Community 26 - "Community 26"
|
||||
Cohesion: 0.13
|
||||
Nodes (20): fetchCreateUser(), fetchDeleteUser(), fetchResetPassword(), fetchUpdateUser(), fetchUserDetail(), formatUserDeptDisplay(), handleAdd(), handleBatchDelete() (+12 more)
|
||||
Cohesion: 0.12
|
||||
Nodes (25): fetchCellProductSpecList(), fetchCellProductTypeList(), applyProductCodeToLines(), calcExpiryFromFreeze(), createEmptyProductLine(), createQuantityValue(), getLineStorageSlotOptions(), getOtherLineStorageSlotIds() (+17 more)
|
||||
|
||||
### Community 27 - "Community 27"
|
||||
Cohesion: 0.12
|
||||
Nodes (15): addCopyButton(), highlightCode(), insertLineNumbers(), isBlockProcessed(), markBlockAsProcessed(), processBlock(), setupHighlightDirective(), setupRippleDirective() (+7 more)
|
||||
Nodes (20): fetchGetMenuCodes(), fetchGetUserInfo(), fetchLogin(), fetchRefreshToken(), fetchUpdateProfile(), fetchUploadProfileAvatar(), buildWebEncryptedLoginBody(), defaultAvatarPathByRole() (+12 more)
|
||||
|
||||
### Community 28 - "Community 28"
|
||||
Cohesion: 0.13
|
||||
Nodes (18): fetchCellSampleTypeList(), fetchCreateCellSampleType(), fetchDeleteCellSampleType(), fetchUpdateCellSampleType(), handleAdd(), handleDelete(), handleDropdownCommand(), handleEdit() (+10 more)
|
||||
Nodes (20): fetchCreateUser(), fetchDeleteUser(), fetchResetPassword(), fetchUpdateUser(), fetchUserDetail(), formatUserDeptDisplay(), handleAdd(), handleBatchDelete() (+12 more)
|
||||
|
||||
### Community 29 - "Community 29"
|
||||
Cohesion: 0.12
|
||||
Nodes (12): fetchApproveTask(), fetchBusinessAllTasks(), fetchCompletedTasks(), fetchDesignerData(), fetchInstanceDetail(), fetchMyInstances(), fetchPendingTasks(), fetchProcessDefList() (+4 more)
|
||||
Nodes (15): addCopyButton(), highlightCode(), insertLineNumbers(), isBlockProcessed(), markBlockAsProcessed(), processBlock(), setupHighlightDirective(), setupRippleDirective() (+7 more)
|
||||
|
||||
### Community 30 - "Community 30"
|
||||
Cohesion: 0.13
|
||||
Nodes (18): fetchCellSampleTypeList(), fetchCreateCellSampleType(), fetchDeleteCellSampleType(), fetchUpdateCellSampleType(), handleAdd(), handleDelete(), handleDropdownCommand(), handleEdit() (+10 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.16
|
||||
Nodes (14): fetchCreateEnvDetectItem(), fetchDeleteEnvDetectItem(), fetchEnvDetectItemDetail(), fetchEnvDetectItemList(), fetchEnvDetectItemsActive(), fetchUpdateEnvDetectItem(), handleAdd(), handleBatchDelete() (+6 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.2
|
||||
Nodes (11): fetchMarkQcMaterialUsageFullyUsed(), canMarkFullyUsed(), displayPurpose(), displayReceiver(), displayUseTime(), getChangeTypeLabel(), getChangeTypeTagType(), handleMarkFullyUsed() (+3 more)
|
||||
|
||||
### Community 32 - "Community 32"
|
||||
Cohesion: 0.13
|
||||
Nodes (5): canDeleteWorkOrder(), canDispatchTask(), formatTempEmptyField(), hasMoreActions(), shouldShowTempEmptyField()
|
||||
Nodes (8): fetchOutboundReleaseMaterial(), fetchOutboundReleaseReviewDetail(), fetchOutboundReleaseReviewList(), fetchReleaseReviewList(), handleReset(), handleSearch(), loadData(), onReviewSubmitted()
|
||||
|
||||
### Community 33 - "Community 33"
|
||||
Cohesion: 0.16
|
||||
Nodes (10): useTable(), useTableImpl(), getColumnChecks(), useTableColumns(), createErrorHandler(), createSmartDebounce(), defaultResponseAdapter(), extractPagination() (+2 more)
|
||||
Cohesion: 0.22
|
||||
Nodes (2): systemUpgrade(), VersionManager
|
||||
|
||||
### Community 34 - "Community 34"
|
||||
Cohesion: 0.2
|
||||
Nodes (2): ComponentLoader, RouteTransformer
|
||||
Cohesion: 0.16
|
||||
Nodes (10): useTable(), useTableImpl(), getColumnChecks(), useTableColumns(), createErrorHandler(), createSmartDebounce(), defaultResponseAdapter(), extractPagination() (+2 more)
|
||||
|
||||
### Community 35 - "Community 35"
|
||||
Cohesion: 0.27
|
||||
Nodes (14): useChart(), useChartComponent(), useChartOps(), colourBlend(), getCssVar(), getDarkColor(), getLightColor(), handleElementThemeColor() (+6 more)
|
||||
|
||||
### Community 36 - "Community 36"
|
||||
Cohesion: 0.14
|
||||
Nodes (8): useSettingsHandlers(), useSettingsPanel(), useSettingsState(), useCeremony(), useTheme(), themeAnimation(), toggleTheme(), toggleTransition()
|
||||
|
||||
### Community 37 - "Community 37"
|
||||
Cohesion: 0.17
|
||||
Nodes (6): fetchServiceOrderTxnList(), handleReset(), handleSearch(), handleTabChange(), loadData(), switchTab()
|
||||
|
||||
### Community 37 - "Community 37"
|
||||
Cohesion: 0.33
|
||||
Nodes (13): buildProtocolPaymentFlowSteps(), dash(), financeReceiptTime(), formatAmount(), hasFinanceReceipt(), hasFinanceRefund(), hasReceiptSubmit(), hasRefundSubmit() (+5 more)
|
||||
|
||||
### Community 39 - "Community 39"
|
||||
Cohesion: 0.18
|
||||
Nodes (3): normalizeStepSubTables(), parseEquipmentIds(), syncEquipmentNamesFromOptions()
|
||||
@@ -250,8 +251,8 @@ Cohesion: 0.17
|
||||
Nodes (3): fetchResearchDonationAuditList(), fetchResearchDonationDetail(), fetchResearchDonationList()
|
||||
|
||||
### Community 41 - "Community 41"
|
||||
Cohesion: 0.28
|
||||
Nodes (1): FireworkSystem
|
||||
Cohesion: 0.42
|
||||
Nodes (9): buildPaymentFlowSteps(), dash(), formatAmount(), hasFinanceReceipt(), hasFinanceRefund(), hasReceiptSubmit(), hasRefundSubmit(), receiptSubmitTime() (+1 more)
|
||||
|
||||
### Community 42 - "Community 42"
|
||||
Cohesion: 0.25
|
||||
@@ -291,22 +292,24 @@ Nodes (2): if(), logSidebarMenu()
|
||||
|
||||
### Community 55 - "Community 55"
|
||||
Cohesion: 0.5
|
||||
Nodes (1): fetchStorageEntrySmsList()
|
||||
|
||||
### Community 56 - "Community 56"
|
||||
Cohesion: 0.5
|
||||
Nodes (1): fetchSampleSmsNotificationList()
|
||||
|
||||
### Community 58 - "Community 58"
|
||||
### Community 59 - "Community 59"
|
||||
Cohesion: 1.0
|
||||
Nodes (2): getSettingDefaults(), resetToDefaults()
|
||||
|
||||
### Community 60 - "Community 60"
|
||||
### Community 61 - "Community 61"
|
||||
Cohesion: 1.0
|
||||
Nodes (2): copyTextToClipboard(), copyTextWithFallback()
|
||||
|
||||
## Knowledge Gaps
|
||||
- **Thin community `Community 16`** (42 nodes): `WebSocketClient`, `.calculateReconnectDelay()`, `.clearAllTimers()`, `.clearConnectionTimers()`, `.clearTimer()`, `.close()`, `.closeCurrentSocketForReconnect()`, `.connect()`, `.connectionStatusText()`, `.constructor()`, `.destroyInstance()`, `.flushMessageQueue()`, `.getInstance()`, `.getReadyStateText()`, `.handleClose()`, `.handleConnectionTimeout()`, `.handleError()`, `.handleMessage()`, `.handleOpen()`, `.init()`, `.isWebSocketConnected()`, `.reconnect()`, `.resetHeartbeat()`, `.send()`, `.startHeartbeat()`, `.startPing()`, `TableCache`, `.cleanupExpired()`, `.clear()`, `.clearByTags()`, `.clearCurrentSearch()`, `.clearPagination()`, `.constructor()`, `.evictLRU()`, `.generateKey()`, `.generateTags()`, `.get()`, `.getStats()`, `.log()`, `.set()`, `index.ts`, `tableCache.ts`
|
||||
- **Thin community `Community 18`** (42 nodes): `WebSocketClient`, `.calculateReconnectDelay()`, `.clearAllTimers()`, `.clearConnectionTimers()`, `.clearTimer()`, `.close()`, `.closeCurrentSocketForReconnect()`, `.connect()`, `.connectionStatusText()`, `.constructor()`, `.destroyInstance()`, `.flushMessageQueue()`, `.getInstance()`, `.getReadyStateText()`, `.handleClose()`, `.handleConnectionTimeout()`, `.handleError()`, `.handleMessage()`, `.handleOpen()`, `.init()`, `.isWebSocketConnected()`, `.reconnect()`, `.resetHeartbeat()`, `.send()`, `.startHeartbeat()`, `.startPing()`, `TableCache`, `.cleanupExpired()`, `.clear()`, `.clearByTags()`, `.clearCurrentSearch()`, `.clearPagination()`, `.constructor()`, `.evictLRU()`, `.generateKey()`, `.generateTags()`, `.get()`, `.getStats()`, `.log()`, `.set()`, `index.ts`, `tableCache.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 34`** (17 nodes): `ComponentLoader`, `.constructor()`, `.createEmptyComponent()`, `.createErrorComponent()`, `.load()`, `.loadIframe()`, `.loadLayout()`, `.load()`, `RouteTransformer`, `.extractFirstSegment()`, `.handleFirstLevelRoute()`, `.handleIframeRoute()`, `.handleNormalRoute()`, `.isFirstLevelRoute()`, `.transform()`, `ComponentLoader.ts`, `RouteTransformer.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 41`** (9 nodes): `FireworkSystem`, `.constructor()`, `.createFirework()`, `.createParticle()`, `.getAvailableParticle()`, `.initializePool()`, `.preloadAllImages()`, `.preloadImage()`, `index.vue`
|
||||
- **Thin community `Community 33`** (17 nodes): `systemUpgrade()`, `VersionManager`, `.buildUpgradeMessage()`, `.cleanupLegacyData()`, `.executeUpgrade()`, `.findLegacyStorage()`, `.getStoredVersion()`, `.isFirstVisit()`, `.isSameVersion()`, `.normalizeVersion()`, `.performLogout()`, `.processUpgrade()`, `.setStoredVersion()`, `.shouldRequireReLogin()`, `.shouldSkipUpgrade()`, `.showUpgradeNotification()`, `upgrade.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 42`** (9 nodes): `cleanupEventListeners()`, `handleTouchEnd()`, `handleTouchMove()`, `handleTouchStart()`, `handleWheelScroll()`, `if()`, `setTransition()`, `setupEventListeners()`, `index.vue`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
@@ -322,22 +325,24 @@ Nodes (2): copyTextToClipboard(), copyTextWithFallback()
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 53`** (4 nodes): `if()`, `logSidebarMenu()`, `index.vue`, `SidebarSubmenu.vue`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 55`** (4 nodes): `fetchGenerateSms()`, `fetchSampleSmsNotificationList()`, `fetchToggleSmsNotified()`, `sample-sms-notification.ts`
|
||||
- **Thin community `Community 55`** (4 nodes): `fetchGenerateStorageEntrySms()`, `fetchStorageEntrySmsList()`, `fetchToggleStorageEntrySmsNotified()`, `storage-entry-sms-notification.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 58`** (3 nodes): `getSettingDefaults()`, `resetToDefaults()`, `setting.ts`
|
||||
- **Thin community `Community 56`** (4 nodes): `fetchGenerateSms()`, `fetchSampleSmsNotificationList()`, `fetchToggleSmsNotified()`, `sample-sms-notification.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 60`** (3 nodes): `copyTextToClipboard()`, `copyTextWithFallback()`, `copy-text.ts`
|
||||
- **Thin community `Community 59`** (3 nodes): `getSettingDefaults()`, `resetToDefaults()`, `setting.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 61`** (3 nodes): `copyTextToClipboard()`, `copyTextWithFallback()`, `copy-text.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `get()` connect `Community 0` to `Community 1`, `Community 2`, `Community 3`, `Community 4`, `Community 5`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 14`, `Community 15`, `Community 18`, `Community 19`, `Community 20`, `Community 22`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 28`, `Community 29`, `Community 30`, `Community 37`, `Community 40`, `Community 47`, `Community 55`?**
|
||||
_High betweenness centrality (0.377) - this node is a cross-community bridge._
|
||||
- **Why does `push()` connect `Community 2` to `Community 0`, `Community 1`, `Community 3`, `Community 4`, `Community 5`, `Community 7`, `Community 9`, `Community 10`, `Community 41`, `Community 11`, `Community 14`, `Community 16`, `Community 17`, `Community 20`, `Community 21`, `Community 25`?**
|
||||
_High betweenness centrality (0.125) - this node is a cross-community bridge._
|
||||
- **Why does `groupMineTasksByWorkOrder()` connect `Community 10` to `Community 0`, `Community 2`?**
|
||||
_High betweenness centrality (0.044) - this node is a cross-community bridge._
|
||||
- **Why does `get()` connect `Community 0` to `Community 1`, `Community 2`, `Community 4`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 19`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 30`, `Community 31`, `Community 32`, `Community 36`, `Community 40`, `Community 47`, `Community 55`, `Community 56`?**
|
||||
_High betweenness centrality (0.364) - this node is a cross-community bridge._
|
||||
- **Why does `push()` connect `Community 7` to `Community 0`, `Community 33`, `Community 2`, `Community 1`, `Community 4`, `Community 5`, `Community 6`, `Community 9`, `Community 10`, `Community 13`, `Community 14`, `Community 16`, `Community 18`, `Community 21`, `Community 23`, `Community 24`, `Community 26`?**
|
||||
_High betweenness centrality (0.146) - this node is a cross-community bridge._
|
||||
- **Why does `groupMineTasksByWorkOrder()` connect `Community 10` to `Community 0`, `Community 6`, `Community 7`?**
|
||||
_High betweenness centrality (0.037) - this node is a cross-community bridge._
|
||||
- **Are the 258 inferred relationships involving `get()` (e.g. with `buildNodeCodePathFromFlat()` and `collectLeafFacilityNodesInTreeOrder()`) actually correct?**
|
||||
_`get()` has 258 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 51 inferred relationships involving `push()` (e.g. with `collectLeafFacilityNodesInTreeOrder()` and `groupMineTasksByWorkOrder()`) actually correct?**
|
||||
|
||||
@@ -57,12 +57,12 @@
|
||||
</div>
|
||||
<div id="legend"></div>
|
||||
</div>
|
||||
<div id="stats">2452 nodes · 3380 edges · 302 communities</div>
|
||||
<div id="stats">2481 nodes · 3433 edges · 302 communities</div>
|
||||
</div>
|
||||
<script>
|
||||
const RAW_NODES = [{"id": "app_vue", "label": "App.vue", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "App.vue", "community": 46, "community_name": "Community 46", "source_file": "App.vue", "file_type": "code", "degree": 3}, {"id": "src_app_refreshbuttonautoicons", "label": "refreshButtonAutoIcons()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshButtonAutoIcons()", "community": 46, "community_name": "Community 46", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "src_app_refreshpaneltitleicons", "label": "refreshPanelTitleIcons()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshPanelTitleIcons()", "community": 46, "community_name": "Community 46", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "main_ts", "label": "main.ts", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "main.ts", "community": 46, "community_name": "Community 46", "source_file": "main.ts", "file_type": "code", "degree": 4}, {"id": "src_main_masksecret", "label": "maskSecret()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "maskSecret()", "community": 46, "community_name": "Community 46", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "src_main_logapicryptobootinfo", "label": "logApiCryptoBootInfo()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "logApiCryptoBootInfo()", "community": 46, "community_name": "Community 46", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "env_d_ts", "label": "env.d.ts", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "env.d.ts", "community": 90, "community_name": "Community 90", "source_file": "env.d.ts", "file_type": "code", "degree": 0}, {"id": "shims_loose_d_ts", "label": "shims-loose.d.ts", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "shims-loose.d.ts", "community": 91, "community_name": "Community 91", "source_file": "shims-loose.d.ts", "file_type": "code", "degree": 0}, {"id": "directives_index_ts", "label": "index.ts", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "index.ts", "community": 27, "community_name": "Community 27", "source_file": "directives/index.ts", "file_type": "code", "degree": 1}, {"id": "directives_index_setupglobdirectives", "label": "setupGlobDirectives()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "setupGlobDirectives()", "community": 27, "community_name": "Community 27", "source_file": "directives/index.ts", "file_type": "code", "degree": 5}, {"id": "directives_core_roles_ts", "label": "roles.ts", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "roles.ts", "community": 27, "community_name": "Community 27", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 3}, {"id": "core_roles_checkrolepermission", "label": "checkRolePermission()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "checkRolePermission()", "community": 27, "community_name": "Community 27", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_removeelement", "label": "removeElement()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "removeElement()", "community": 27, "community_name": "Community 27", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_setuprolesdirective", "laLine truncated
|
||||
const RAW_EDGES = [{"from": "app_vue", "to": "src_app_refreshbuttonautoicons", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_vue", "to": "src_app_refreshpaneltitleicons", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_vue", "to": "main_ts", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "utils_sys_console_ts", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "src_main_masksecret", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "src_main_logapicryptobootinfo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_main_masksecret", "to": "src_main_logapicryptobootinfo", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_index_ts", "to": "directives_index_setupglobdirectives", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_index_setupglobdirectives", "to": "core_auth_setupauthdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "core_roles_setuprolesdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "business_highlight_setuphighlightdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "business_ripple_setuprippledirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_core_roles_ts", "to": "core_roles_checkrolepermission", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_roles_ts", "to": "core_roles_removeelement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_roles_ts", "to": "core_roles_setuprolesdirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_roles_checkrolepermission", "to": "core_roles_removeelement", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_checkauthpermission", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_removeelement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_setupauthdirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_checkauthpermission", "to": "core_auth_removeelement", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_ripple_ts", "to": "business_ripple_setuprippledirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_highlightcode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_insertlinenumbers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_addcopybutton", "label": "contains", "title": "contains [EXTRACTED]", "dLine truncated
|
||||
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 367}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 122}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 114}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 104}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 101}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 89}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 85}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 72}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 59}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 55}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 49}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 48}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 48}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 47}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 45}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 43}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 42}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 41}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 41}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 41}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 38}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 36}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 32}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 30}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 28}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 28}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 24}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 22}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 22}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 19}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 19}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 18}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 18}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 17}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 17}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 16}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 15}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 15}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 13}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 12}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 12}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 9}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 9}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 9}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 8}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 8}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 7}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 7}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 6}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 6}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 5}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 5}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 5}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 4}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 4}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 4}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 4}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 4}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 3}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 3}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 3}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 3}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 3}, {"cid": 63, "color": "#76B7B2", "label": "Community 63", "count": 3}, {"cid": 64, "color": "#59A14F", "label": "Community 64", "count": 3}, {"cid": 65, "color": "#EDC948", "label": "Community 65", "count": 3}, {"cid": 66, "color": "#B07AA1", "label": "Community 66", "count": 2}, {"cid": 67, "color": "#FF9DA7", "label": "Community 67", "count": 2}, {"cid": 68, "color": "#9C755F", "label": "Community 68", "count": 2}, {"cid": 69, "color": "#BAB0AC", "label": "Community 69", "count": 2}, {"cid": 70, "color": "#4E79A7", "label": "Community 70", Line truncated
|
||||
const RAW_NODES = [{"id": "app_vue", "label": "App.vue", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "App.vue", "community": 46, "community_name": "Community 46", "source_file": "App.vue", "file_type": "code", "degree": 3}, {"id": "src_app_refreshbuttonautoicons", "label": "refreshButtonAutoIcons()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshButtonAutoIcons()", "community": 46, "community_name": "Community 46", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "src_app_refreshpaneltitleicons", "label": "refreshPanelTitleIcons()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshPanelTitleIcons()", "community": 46, "community_name": "Community 46", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "main_ts", "label": "main.ts", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "main.ts", "community": 46, "community_name": "Community 46", "source_file": "main.ts", "file_type": "code", "degree": 4}, {"id": "src_main_masksecret", "label": "maskSecret()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "maskSecret()", "community": 46, "community_name": "Community 46", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "src_main_logapicryptobootinfo", "label": "logApiCryptoBootInfo()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "logApiCryptoBootInfo()", "community": 46, "community_name": "Community 46", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "env_d_ts", "label": "env.d.ts", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "env.d.ts", "community": 91, "community_name": "Community 91", "source_file": "env.d.ts", "file_type": "code", "degree": 0}, {"id": "shims_loose_d_ts", "label": "shims-loose.d.ts", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "shims-loose.d.ts", "community": 92, "community_name": "Community 92", "source_file": "shims-loose.d.ts", "file_type": "code", "degree": 0}, {"id": "directives_index_ts", "label": "index.ts", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "index.ts", "community": 29, "community_name": "Community 29", "source_file": "directives/index.ts", "file_type": "code", "degree": 1}, {"id": "directives_index_setupglobdirectives", "label": "setupGlobDirectives()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "setupGlobDirectives()", "community": 29, "community_name": "Community 29", "source_file": "directives/index.ts", "file_type": "code", "degree": 5}, {"id": "directives_core_roles_ts", "label": "roles.ts", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "roles.ts", "community": 29, "community_name": "Community 29", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 3}, {"id": "core_roles_checkrolepermission", "label": "checkRolePermission()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "checkRolePermission()", "community": 29, "community_name": "Community 29", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_removeelement", "label": "removeElement()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "removeElement()", "community": 29, "community_name": "Community 29", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_setuprolesdirective", "laLine truncated
|
||||
const RAW_EDGES = [{"from": "app_vue", "to": "src_app_refreshbuttonautoicons", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_vue", "to": "src_app_refreshpaneltitleicons", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_vue", "to": "main_ts", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "utils_sys_console_ts", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "src_main_masksecret", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "src_main_logapicryptobootinfo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_main_masksecret", "to": "src_main_logapicryptobootinfo", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_index_ts", "to": "directives_index_setupglobdirectives", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_index_setupglobdirectives", "to": "core_auth_setupauthdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "core_roles_setuprolesdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "business_highlight_setuphighlightdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "business_ripple_setuprippledirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_core_roles_ts", "to": "core_roles_checkrolepermission", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_roles_ts", "to": "core_roles_removeelement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_roles_ts", "to": "core_roles_setuprolesdirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_roles_checkrolepermission", "to": "core_roles_removeelement", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_checkauthpermission", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_removeelement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_setupauthdirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_checkauthpermission", "to": "core_auth_removeelement", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_ripple_ts", "to": "business_ripple_setuprippledirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_highlightcode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_insertlinenumbers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_addcopybutton", "label": "contains", "title": "contains [EXTRACTED]", "dLine truncated
|
||||
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 375}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 104}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 98}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 96}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 91}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 89}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 76}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 74}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 59}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 57}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 54}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 51}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 50}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 50}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 48}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 48}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 46}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 43}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 42}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 41}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 40}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 39}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 37}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 36}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 35}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 32}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 29}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 28}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 24}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 22}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 22}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 19}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 18}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 17}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 17}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 16}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 15}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 14}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 13}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 12}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 12}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 10}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 9}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 9}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 8}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 8}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 7}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 7}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 6}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 6}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 5}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 5}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 5}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 4}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 4}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 4}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 4}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 4}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 4}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 3}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 3}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 3}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 3}, {"cid": 63, "color": "#76B7B2", "label": "Community 63", "count": 3}, {"cid": 64, "color": "#59A14F", "label": "Community 64", "count": 3}, {"cid": 65, "color": "#EDC948", "label": "Community 65", "count": 3}, {"cid": 66, "color": "#B07AA1", "label": "Community 66", "count": 3}, {"cid": 67, "color": "#FF9DA7", "label": "Community 67", "count": 2}, {"cid": 68, "color": "#9C755F", "label": "Community 68", "count": 2}, {"cid": 69, "color": "#BAB0AC", "label": "Community 69", "count": 2}, {"cid": 70, "color": "#4E79A7", "label": "Community 70", "cLine truncated
|
||||
|
||||
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
|
||||
function esc(s) {
|
||||
|
||||
+3709
-2623
File diff suppressed because it is too large.
Load diff
@@ -17,12 +17,12 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/common/index.ts": 1781272556.3597305,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/directive/directive.d.ts": 1781272556.3601494,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/api/api.d.ts": 1781272556.3606477,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1781563255.2234228,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1781536825.1821399,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1781569153.182714,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1781569059.7134671,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/store/index.ts": 1781272556.364766,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/router/index.ts": 1781272556.3652694,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/locales/index.ts": 1781272556.3657222,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/config/pilot-biz-type.ts": 1781272556.366607,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/config/pilot-biz-type.ts": 1781566346.140546,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/config/setting.ts": 1781406298.257571,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/config/index.ts": 1781272556.3676412,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/config/modules/component.ts": 1781272556.368142,
|
||||
@@ -53,9 +53,10 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/status-tag-registry.ts": 1781347192.2717943,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/fetch-paged-list.ts": 1781272556.3903377,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/sort-order.ts": 1781272556.3913012,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts": 1781272556.3942027,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts": 1781566346.7618802,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-work-order-groups.ts": 1781272556.394584,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/equipment-select.ts": 1781524048.96866,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts": 1781566916.7893076,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/copy-text.ts": 1781272556.4018052,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/tree-path.ts": 1781272556.402468,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/mask-sensitive.ts": 1781272556.4029639,
|
||||
@@ -66,6 +67,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-labels.ts": 1781272556.4115942,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/process-material-ui.ts": 1781528129.339137,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-fq-params-change.ts": 1781432317.6688812,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts": 1781568124.0892382,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/loginRsa.ts": 1781272556.4129546,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-pay-mode-switch.ts": 1781431995.482862,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-installment.ts": 1781432316.9136086,
|
||||
@@ -189,8 +191,9 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/protocol-finance-confirm-fields/index.vue": 1781272556.6253412,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/protocol-finance-confirm-fields/finance-attachments.ts": 1781272556.6256514,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/qc-task-view-dialog/index.vue": 1781525380.5324602,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue": 1781568131.9049053,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/dialog-form-body/index.vue": 1781272556.6276903,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-submit-readonly/index.vue": 1781566120.7731829,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-submit-readonly/index.vue": 1781566692.993364,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-qc-info-cards/index.vue": 1781536755.5155966,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/order-operate-local-dialog/index.vue": 1781272556.6297834,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/product-view-dialog/index.vue": 1781563767.2879,
|
||||
@@ -264,7 +267,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/my-material-usage/index.vue": 1781518736.690082,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/index.vue": 1781272556.6752698,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolStatusChangeDialog.vue": 1781440943.514069,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue": 1781536837.0510278,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue": 1781569321.668998,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolAttachmentReadonly.vue": 1781272556.6854682,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue": 1781439930.5744984,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolAuditDialog.vue": 1781440939.3081548,
|
||||
@@ -280,14 +283,14 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/StorageCertTab.vue": 1781563767.3196464,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/FullmoonTodoTab.vue": 1781563767.3177865,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/ProtocolAuditTab.vue": 1781438840.3568094,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue": 1781563767.3183227,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue": 1781568168.6100461,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/index.vue": 1781563767.3149889,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/MaterialUsageTab.vue": 1781503550.8574874,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/MaterialStockCheckTab.vue": 1781563767.3140159,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/fullmoon-todo/index.vue": 1781272556.719875,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/storage-entry-info/index.vue": 1781272556.7201529,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/index.vue": 1781519563.5558412,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue": 1781440636.1841729,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/index.vue": 1781568150.9471092,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue": 1781568153.9830499,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material-stock-log/index.vue": 1781346115.5701284,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/outside/Iframe.vue": 1781272556.7246568,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/demo/index.vue": 1781272556.7266567,
|
||||
@@ -416,10 +419,10 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-institution/index.vue": 1781563767.334401,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-institution/CheckupPackagePanel.vue": 1781563767.3335872,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/index.vue": 1781272556.9129293,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue": 1781563767.3379564,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleViewDialog.vue": 1781272556.9170914,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue": 1781563767.3382921,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue": 1781563767.3388784,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue": 1781566691.3874958,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleViewDialog.vue": 1781566525.5529733,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue": 1781566676.0091887,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue": 1781566575.2629325,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/index.vue": 1781272556.9223943,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnTable.vue": 1781272556.9230614,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnDialog.vue": 1781563767.3295007,
|
||||
@@ -427,20 +430,20 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelViewDialog.vue": 1781563767.3317409,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue": 1781563767.3310668,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-refund-confirm/index.vue": 1781272556.946893,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue": 1781519563.7296002,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue": 1781440938.3502288,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue": 1781272556.9554524,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseViewDialog.vue": 1781272556.9581716,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue": 1781567163.924653,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue": 1781567168.9172702,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue": 1781566364.5341365,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseViewDialog.vue": 1781566654.06168,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewDialog.vue": 1781563767.3399522,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue": 1781563767.3396003,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue": 1781566437.9508846,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/index.vue": 1781562919.470491,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue": 1781563767.3412404,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/PilotApplicationTab.vue": 1781272557.1928792,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue": 1781565608.9787478,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue": 1781272557.3715181,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue": 1781563767.3418198,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue": 1781566821.0961015,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue": 1781566659.2158477,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue": 1781566354.4880795,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/CheckupManagementTab.vue": 1781435201.7785301,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ClinicalPaymentTab.vue": 1781563767.3427444,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ClinicalPaymentTab.vue": 1781566977.5142796,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-price/index.vue": 1781272557.4568446,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/index.vue": 1781272557.4618897,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupReserveItemsTable.vue": 1781272557.4705725,
|
||||
|
||||
@@ -0,0 +1,517 @@
|
||||
<!-- 缴退费确认流程(纵向倒序时间线 + 独立操作区) -->
|
||||
<template>
|
||||
<div class="clinical-payment-confirm-timeline">
|
||||
<div v-if="showBasicSummary && isProtocolFlow" class="payment-basic-summary">
|
||||
<dl class="payment-basic-summary__grid">
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>协议状态</dt>
|
||||
<dd>
|
||||
<el-tag
|
||||
:type="protocolStatusTagType(String(detail?.protocolStatus || ''))"
|
||||
size="small"
|
||||
>
|
||||
{{ protocolStatusLabel(String(detail?.protocolStatus || '')) }}
|
||||
</el-tag>
|
||||
</dd>
|
||||
</div>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>客户姓名</dt>
|
||||
<dd>{{ dash(detail?.motherName) }}</dd>
|
||||
</div>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>身份证号</dt>
|
||||
<dd>{{ maskIdCard(String(detail?.motherIdCard || '')) }}</dd>
|
||||
</div>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>新生儿姓名</dt>
|
||||
<dd>{{ dash(detail?.newbornName) }}</dd>
|
||||
</div>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>缴费方式</dt>
|
||||
<dd>{{ protocolPayModeLabel(String(detail?.payMode || '')) }}</dd>
|
||||
</div>
|
||||
<div v-if="detail?.payMode === 'fq'" class="payment-basic-summary__item">
|
||||
<dt>分期期序号</dt>
|
||||
<dd>{{ dash(detail?.installmentNo) }}</dd>
|
||||
</div>
|
||||
<div v-if="detail?.payMode === 'fq'" class="payment-basic-summary__item">
|
||||
<dt>应缴费时间</dt>
|
||||
<dd>{{ formatPaymentDueDate(detail?.installmentDueDate) }}</dd>
|
||||
</div>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>应缴金额(元)</dt>
|
||||
<dd>{{ formatProtocolAmount(detail?.dueAmount) }}</dd>
|
||||
</div>
|
||||
<div v-if="showPayStatus" class="payment-basic-summary__item">
|
||||
<dt>缴费状态</dt>
|
||||
<dd>
|
||||
<el-tag :type="protocolPayStatusTagType(String(detail?.payStatus || ''))" size="small">
|
||||
{{ protocolPayStatusLabel(String(detail?.payStatus || '')) }}
|
||||
</el-tag>
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
<div v-else-if="showBasicSummary" class="payment-basic-summary">
|
||||
<dl class="payment-basic-summary__grid">
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>申请单号</dt>
|
||||
<dd>{{ dash(detail?.applicationNo) }}</dd>
|
||||
</div>
|
||||
<template v-if="isBasicExperiment">
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>课题名称</dt>
|
||||
<dd>{{ dash(detail?.projectTitle) }}</dd>
|
||||
</div>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>客户名称</dt>
|
||||
<dd>{{ dash(detail?.customerName) }}</dd>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>患者姓名</dt>
|
||||
<dd>{{ dash(detail?.patientName) }}</dd>
|
||||
</div>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>渠道名称</dt>
|
||||
<dd>{{ dash(detail?.channelName) }}</dd>
|
||||
</div>
|
||||
</template>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>细胞类型/规格</dt>
|
||||
<dd>{{ dash(detail?.cellTypeSpec) }}</dd>
|
||||
</div>
|
||||
<div class="payment-basic-summary__item">
|
||||
<dt>{{ pickupTimeLabel }}</dt>
|
||||
<dd>{{ dash(detail?.infusionTime) }}</dd>
|
||||
</div>
|
||||
<div v-if="showPayStatus" class="payment-basic-summary__item">
|
||||
<dt>缴费状态</dt>
|
||||
<dd>
|
||||
<el-tag :type="payStatusTagType(String(detail?.payStatus || ''))" size="small">
|
||||
{{ payStatusLabel(String(detail?.payStatus || '')) }}
|
||||
</el-tag>
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div class="v-timeline">
|
||||
<div
|
||||
v-for="(step, index) in displaySteps"
|
||||
:key="step.key"
|
||||
class="v-timeline-item"
|
||||
:class="[
|
||||
`v-timeline-item--${step.state}`,
|
||||
{ 'v-timeline-item--last': index === displaySteps.length - 1 }
|
||||
]"
|
||||
>
|
||||
<div class="v-timeline-item__rail">
|
||||
<div class="v-timeline-item__dot">
|
||||
<span v-if="step.state === 'done'">✓</span>
|
||||
<span v-else-if="step.state === 'current'">●</span>
|
||||
<span v-else>○</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="index < displaySteps.length - 1"
|
||||
class="v-timeline-item__line"
|
||||
:class="{ 'v-timeline-item__line--done': step.state === 'done' }"
|
||||
/>
|
||||
</div>
|
||||
<div class="v-timeline-item__body">
|
||||
<div class="v-timeline-item__head">
|
||||
<h4 class="v-timeline-item__title">{{ step.title }}</h4>
|
||||
<el-tag v-if="step.state === 'current'" type="warning" size="small">进行中</el-tag>
|
||||
<el-tag v-else-if="step.state === 'done'" type="success" size="small">已完成</el-tag>
|
||||
<span v-else class="v-timeline-item__pending">待处理</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="step.state !== 'pending' && step.time && step.time !== '—'"
|
||||
class="v-timeline-item__time"
|
||||
>
|
||||
{{ step.time }}
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="showStepContent(step)"
|
||||
class="v-timeline-item__content"
|
||||
:class="{ 'v-timeline-item__content--current': step.state === 'current' }"
|
||||
>
|
||||
<dl class="v-timeline-fields">
|
||||
<div
|
||||
v-for="field in visibleFields(step)"
|
||||
:key="field.label"
|
||||
class="v-timeline-field"
|
||||
:class="{
|
||||
'v-timeline-field--full': field.multiline || field.slot === 'attachments'
|
||||
}"
|
||||
>
|
||||
<dt>{{ field.label }}</dt>
|
||||
<dd v-if="field.slot === 'attachments'">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="attachmentFiles(field.attachmentUrls)"
|
||||
@download="(f) => emit('download', f)"
|
||||
/>
|
||||
</dd>
|
||||
<dd v-else :class="{ 'v-timeline-field__multiline': field.multiline }">
|
||||
{{ field.value }}
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
<p v-else-if="step.state === 'pending'" class="v-timeline-item__placeholder">
|
||||
尚未到达此环节
|
||||
</p>
|
||||
<p
|
||||
v-else-if="step.state === 'current' && hasActionPanel"
|
||||
class="v-timeline-item__placeholder v-timeline-item__placeholder--hint"
|
||||
>
|
||||
请在下方操作区填写确认信息
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="$slots['action-panel']" class="action-panel">
|
||||
<slot name="action-panel" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, useSlots } from 'vue'
|
||||
import ProtocolAttachmentReadonly from '@/views/cell-storage/protocol/ProtocolAttachmentReadonly.vue'
|
||||
import { getPilotBizConfig } from '@/config/pilot-biz-type'
|
||||
import { maskIdCard } from '@/utils/mask-sensitive'
|
||||
import { payStatusLabel, payStatusTagType } from '@/utils/status-tag-registry'
|
||||
import {
|
||||
buildPaymentFlowSteps,
|
||||
type PaymentFlowStep,
|
||||
type PaymentFlowStepKey
|
||||
} from '@/utils/clinical-payment-flow-steps'
|
||||
import { buildProtocolPaymentFlowSteps } from '@/utils/protocol-payment-flow-steps'
|
||||
import {
|
||||
formatPaymentDueDate,
|
||||
payModeLabel,
|
||||
payStatusLabel as protocolPayStatusLabel,
|
||||
payStatusTagType as protocolPayStatusTagType,
|
||||
protocolStatusLabel,
|
||||
protocolStatusTagType
|
||||
} from '@/utils/protocol-payment-labels'
|
||||
import { formatMoneyDisplay } from '@/utils/money-format'
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
detail?: Record<string, unknown> | null
|
||||
activeStepKey?: PaymentFlowStepKey
|
||||
showBasicSummary?: boolean
|
||||
showPayStatus?: boolean
|
||||
flowVariant?: 'clinical' | 'protocol'
|
||||
}>(),
|
||||
{
|
||||
showBasicSummary: true,
|
||||
showPayStatus: false,
|
||||
flowVariant: 'clinical'
|
||||
}
|
||||
)
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'download', file: Record<string, unknown>): void
|
||||
}>()
|
||||
|
||||
const slots = useSlots()
|
||||
|
||||
const hasActionPanel = computed(() => Boolean(slots['action-panel']))
|
||||
|
||||
function dash(v: unknown) {
|
||||
if (v == null || v === '') return '—'
|
||||
return String(v)
|
||||
}
|
||||
|
||||
function attachmentFiles(urlField?: string) {
|
||||
const urls = String(urlField || '')
|
||||
if (!urls.trim()) return []
|
||||
return urls
|
||||
.split(',')
|
||||
.map((u, i) => {
|
||||
const url = u.trim()
|
||||
if (!url) return null
|
||||
const name = url.includes('/') ? url.split('/').pop() || `附件${i + 1}` : url
|
||||
return { id: `url_${i}`, fileUrl: url, fileName: name }
|
||||
})
|
||||
.filter(Boolean) as Array<Record<string, unknown>>
|
||||
}
|
||||
|
||||
function visibleFields(step: PaymentFlowStep) {
|
||||
return step.fields.filter(
|
||||
(field) => field.slot !== 'attachments' || attachmentFiles(field.attachmentUrls).length
|
||||
)
|
||||
}
|
||||
|
||||
function showStepContent(step: PaymentFlowStep) {
|
||||
if (step.state === 'pending') return false
|
||||
if (step.state === 'current' && hasActionPanel.value) return false
|
||||
return visibleFields(step).length > 0
|
||||
}
|
||||
|
||||
const isProtocolFlow = computed(() => props.flowVariant === 'protocol')
|
||||
|
||||
const isBasicExperiment = computed(
|
||||
() => String(props.detail?.bizType || '') === 'basic_experiment'
|
||||
)
|
||||
|
||||
const pickupTimeLabel = computed(() =>
|
||||
getPilotBizConfig(String(props.detail?.bizType || '')).pickupTimeLabel
|
||||
)
|
||||
|
||||
function protocolPayModeLabel(mode: string) {
|
||||
const label = payModeLabel(mode)
|
||||
return label || '—'
|
||||
}
|
||||
|
||||
function formatProtocolAmount(v: unknown) {
|
||||
if (v == null || v === '') return '—'
|
||||
return '¥' + formatMoneyDisplay(v)
|
||||
}
|
||||
|
||||
const steps = computed(() =>
|
||||
isProtocolFlow.value
|
||||
? buildProtocolPaymentFlowSteps(props.detail, props.activeStepKey)
|
||||
: buildPaymentFlowSteps(props.detail, props.activeStepKey)
|
||||
)
|
||||
|
||||
/** 倒序:最新环节在上,最早环节在下 */
|
||||
const displaySteps = computed(() => [...steps.value].reverse())
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.clinical-payment-confirm-timeline {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.payment-basic-summary {
|
||||
margin-bottom: 20px;
|
||||
padding: 14px 16px;
|
||||
border: 1px solid var(--mint-border, #e2e8f0);
|
||||
border-radius: 10px;
|
||||
background: #f8fafc;
|
||||
}
|
||||
|
||||
.payment-basic-summary__grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 12px 20px;
|
||||
margin: 0;
|
||||
|
||||
@media (min-width: 720px) {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
.payment-basic-summary__item {
|
||||
min-width: 0;
|
||||
|
||||
dt {
|
||||
margin: 0 0 4px;
|
||||
font-size: 12px;
|
||||
color: var(--mint-text-muted, #64748b);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
color: var(--mint-text, #334155);
|
||||
line-height: 1.5;
|
||||
word-break: break-word;
|
||||
}
|
||||
}
|
||||
|
||||
.v-timeline {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
.v-timeline-item {
|
||||
display: flex;
|
||||
gap: 14px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.v-timeline-item__rail {
|
||||
position: relative;
|
||||
width: 20px;
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.v-timeline-item__dot {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-top: 4px;
|
||||
border-radius: 50%;
|
||||
border: 2px solid #cbd5e1;
|
||||
background: #fff;
|
||||
flex-shrink: 0;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
color: #94a3b8;
|
||||
}
|
||||
|
||||
.v-timeline-item__line {
|
||||
flex: 1;
|
||||
width: 2px;
|
||||
min-height: 20px;
|
||||
margin-top: 4px;
|
||||
background: #e2e8f0;
|
||||
border-radius: 1px;
|
||||
}
|
||||
|
||||
.v-timeline-item--done .v-timeline-item__dot {
|
||||
border-color: var(--primary, #10b981);
|
||||
background: var(--primary, #10b981);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.v-timeline-item--done .v-timeline-item__line--done {
|
||||
background: #a7f3d0;
|
||||
}
|
||||
|
||||
.v-timeline-item--current .v-timeline-item__dot {
|
||||
border-color: #d97706;
|
||||
background: #fff;
|
||||
color: #d97706;
|
||||
box-shadow: 0 0 0 4px rgb(217 119 6 / 12%);
|
||||
}
|
||||
|
||||
.v-timeline-item__body {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.v-timeline-item--last .v-timeline-item__body {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.v-timeline-item__head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.v-timeline-item__title {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: var(--mint-text, #334155);
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.v-timeline-item--done .v-timeline-item__title {
|
||||
color: #065f46;
|
||||
}
|
||||
|
||||
.v-timeline-item--current .v-timeline-item__title {
|
||||
color: #b45309;
|
||||
}
|
||||
|
||||
.v-timeline-item__pending {
|
||||
font-size: 12px;
|
||||
color: var(--mint-text-muted, #94a3b8);
|
||||
}
|
||||
|
||||
.v-timeline-item__time {
|
||||
margin-bottom: 8px;
|
||||
font-size: 12px;
|
||||
color: var(--mint-text-muted, #64748b);
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.v-timeline-item__content {
|
||||
padding: 12px 14px;
|
||||
border: 1px solid var(--mint-border, #e2e8f0);
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.v-timeline-item__content--current {
|
||||
border-color: #fde68a;
|
||||
background: #fffbeb;
|
||||
}
|
||||
|
||||
.v-timeline-item__placeholder {
|
||||
margin: 0;
|
||||
font-size: 13px;
|
||||
color: var(--mint-text-muted, #94a3b8);
|
||||
line-height: 1.5;
|
||||
|
||||
&--hint {
|
||||
color: #b45309;
|
||||
}
|
||||
}
|
||||
|
||||
.v-timeline-fields {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 10px 16px;
|
||||
margin: 0;
|
||||
|
||||
@media (max-width: 560px) {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.v-timeline-field {
|
||||
min-width: 0;
|
||||
|
||||
dt {
|
||||
margin: 0 0 4px;
|
||||
font-size: 12px;
|
||||
color: var(--mint-text-muted, #64748b);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
color: var(--mint-text, #334155);
|
||||
line-height: 1.5;
|
||||
word-break: break-word;
|
||||
}
|
||||
}
|
||||
|
||||
.v-timeline-field--full {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.v-timeline-field__multiline {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.action-panel {
|
||||
margin-top: 16px;
|
||||
padding: 16px;
|
||||
border: 1px solid #fde68a;
|
||||
border-radius: 10px;
|
||||
background: #fffbeb;
|
||||
|
||||
:deep(.detail-section-title) {
|
||||
margin: 0 0 12px;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: var(--mint-text, #334155);
|
||||
line-height: 1.4;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_payment_confirm_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/index.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationviewdialog_vue", "label": "ApplicationViewDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1"}, {"id": "pilot_application_applicationviewdialog_for", "label": "for()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1082"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationviewdialog_vue", "target": "pilot_application_applicationviewdialog_for", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1082", "weight": 1.0}], "raw_calls": [{"caller_nid": "pilot_application_applicationviewdialog_for", "callee": "trim", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1083"}, {"caller_nid": "pilot_application_applicationviewdialog_for", "callee": "Number", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1086"}, {"caller_nid": "pilot_application_applicationviewdialog_for", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1087"}, {"caller_nid": "pilot_application_applicationviewdialog_for", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1089"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_submit_readonly_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-submit-readonly/index.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_clinical_payment_confirm_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L1"}, {"id": "clinical_payment_confirm_index_formattabbadgecount", "label": "formatTabBadgeCount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L637"}, {"id": "clinical_payment_confirm_index_formatamount", "label": "formatAmount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L675"}, {"id": "clinical_payment_confirm_index_fullfileurl", "label": "fullFileUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L680"}, {"id": "clinical_payment_confirm_index_isimageurl", "label": "isImageUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L686"}, {"id": "clinical_payment_confirm_index_pendingcardtitle", "label": "pendingCardTitle()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L712"}, {"id": "clinical_payment_confirm_index_buildpendingparams", "label": "buildPendingParams()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L719"}, {"id": "clinical_payment_confirm_index_buildconfirmedparams", "label": "buildConfirmedParams()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L728"}, {"id": "clinical_payment_confirm_index_loadtabpendingcounts", "label": "loadTabPendingCounts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L737"}, {"id": "clinical_payment_confirm_index_loadpending", "label": "loadPending()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L751"}, {"id": "clinical_payment_confirm_index_loadconfirmed", "label": "loadConfirmed()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L762"}, {"id": "clinical_payment_confirm_index_loadall", "label": "loadAll()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L773"}, {"id": "clinical_payment_confirm_index_handlependingsearch", "label": "handlePendingSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L777"}, {"id": "clinical_payment_confirm_index_handlependingreset", "label": "handlePendingReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L782"}, {"id": "clinical_payment_confirm_index_handleconfirmedsearch", "label": "handleConfirmedSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L788"}, {"id": "clinical_payment_confirm_index_handleconfirmedreset", "label": "handleConfirmedReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L793"}, {"id": "clinical_payment_confirm_index_openconfirm", "label": "openConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L799"}, {"id": "clinical_payment_confirm_index_openviewconfirm", "label": "openViewConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L807"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_clinical_payment_confirm_index_vue", "target": "clinical_payment_confirm_index_formattabbadgecount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L1"}, {"id": "outbound_release_review_index_formatlocaldate", "label": "formatLocalDate()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L281"}, {"id": "outbound_release_review_index_handleselectionchange", "label": "handleSelectionChange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L308"}, {"id": "outbound_release_review_index_loaddata", "label": "loadData()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L314"}, {"id": "outbound_release_review_index_handlesearch", "label": "handleSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L333"}, {"id": "outbound_release_review_index_handlereset", "label": "handleReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L338"}, {"id": "outbound_release_review_index_handleview", "label": "handleView()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L349"}, {"id": "outbound_release_review_index_openreviewdialog", "label": "openReviewDialog()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L357"}, {"id": "outbound_release_review_index_onreviewsubmitted", "label": "onReviewSubmitted()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L367"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_index_vue", "target": "outbound_release_review_index_formatlocaldate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L281", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_index_vue", "target": "outbound_release_review_index_handleselectionchange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_index_vue", "target": "outbound_release_review_index_loaddata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L314", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_index_vue", "target": "outbound_release_review_index_handlesearch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L333", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_index_vue", "target": "outbound_release_review_index_handlereset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L338", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_index_vue", "target": "outbound_release_review_index_handleview", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "L349", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_index_vue", "target": "outbound_release_review_index_openreviewdialog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue", "source_location": "Line 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": "L1454"}, {"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": "L2498"}], "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": "L1454", "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": "L2498", "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": "L1455"}, {"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": "L2572"}]}
|
||||
+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_outbound_release_review_outboundreleasematerialdialog_vue", "label": "OutboundReleaseMaterialDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_clinical_payment_confirm_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L1"}, {"id": "clinical_payment_confirm_index_formattabbadgecount", "label": "formatTabBadgeCount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L636"}, {"id": "clinical_payment_confirm_index_formatamount", "label": "formatAmount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L674"}, {"id": "clinical_payment_confirm_index_fullfileurl", "label": "fullFileUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L679"}, {"id": "clinical_payment_confirm_index_isimageurl", "label": "isImageUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L685"}, {"id": "clinical_payment_confirm_index_pendingcardtitle", "label": "pendingCardTitle()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L711"}, {"id": "clinical_payment_confirm_index_buildpendingparams", "label": "buildPendingParams()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L718"}, {"id": "clinical_payment_confirm_index_buildconfirmedparams", "label": "buildConfirmedParams()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L727"}, {"id": "clinical_payment_confirm_index_loadtabpendingcounts", "label": "loadTabPendingCounts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L736"}, {"id": "clinical_payment_confirm_index_loadpending", "label": "loadPending()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L750"}, {"id": "clinical_payment_confirm_index_loadconfirmed", "label": "loadConfirmed()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L761"}, {"id": "clinical_payment_confirm_index_loadall", "label": "loadAll()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L772"}, {"id": "clinical_payment_confirm_index_handlependingsearch", "label": "handlePendingSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L776"}, {"id": "clinical_payment_confirm_index_handlependingreset", "label": "handlePendingReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L781"}, {"id": "clinical_payment_confirm_index_handleconfirmedsearch", "label": "handleConfirmedSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L787"}, {"id": "clinical_payment_confirm_index_handleconfirmedreset", "label": "handleConfirmedReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L792"}, {"id": "clinical_payment_confirm_index_openconfirm", "label": "openConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L798"}, {"id": "clinical_payment_confirm_index_openviewconfirm", "label": "openViewConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue", "source_location": "L806"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_clinical_payment_confirm_index_vue", "target": "clinical_payment_confirm_index_formattabbadgecount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_protocol_payment_flow_steps_ts", "label": "protocol-payment-flow-steps.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L1"}, {"id": "utils_protocol_payment_flow_steps_dash", "label": "dash()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L10"}, {"id": "utils_protocol_payment_flow_steps_formatamount", "label": "formatAmount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L15"}, {"id": "utils_protocol_payment_flow_steps_resolveattachmenturls", "label": "resolveAttachmentUrls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L22"}, {"id": "utils_protocol_payment_flow_steps_hasreceiptsubmit", "label": "hasReceiptSubmit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L37"}, {"id": "utils_protocol_payment_flow_steps_hasfinancereceipt", "label": "hasFinanceReceipt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L42"}, {"id": "utils_protocol_payment_flow_steps_hasrefundsubmit", "label": "hasRefundSubmit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L47"}, {"id": "utils_protocol_payment_flow_steps_hasfinancerefund", "label": "hasFinanceRefund()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L52"}, {"id": "utils_protocol_payment_flow_steps_resolvestepstate", "label": "resolveStepState()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L57"}, {"id": "utils_protocol_payment_flow_steps_receiptsubmittime", "label": "receiptSubmitTime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L75"}, {"id": "utils_protocol_payment_flow_steps_financereceipttime", "label": "financeReceiptTime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L82"}, {"id": "utils_protocol_payment_flow_steps_refundsubmittime", "label": "refundSubmitTime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L88"}, {"id": "utils_protocol_payment_flow_steps_refundfinancetime", "label": "refundFinanceTime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L95"}, {"id": "utils_protocol_payment_flow_steps_buildprotocolpaymentflowsteps", "label": "buildProtocolPaymentFlowSteps()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L101"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_protocol_payment_flow_steps_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_protocol_payment_flow_steps_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_protocol_payment_labels", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_protocol_payment_flow_steps_ts", "target": "utils_protocol_payment_flow_steps_dash", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_protocol_payment_flow_steps_ts", "target": "utils_protocol_payment_flow_steps_formatamount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-flow-steps.ts", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_pLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_clinical_payment_confirm_refundconfirmtab_vue", "label": "RefundConfirmTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L1"}, {"id": "clinical_payment_confirm_refundconfirmtab_formatamount", "label": "formatAmount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L627"}, {"id": "clinical_payment_confirm_refundconfirmtab_fullfileurl", "label": "fullFileUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L632"}, {"id": "clinical_payment_confirm_refundconfirmtab_isimageurl", "label": "isImageUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L638"}, {"id": "clinical_payment_confirm_refundconfirmtab_pendingcardtitle", "label": "pendingCardTitle()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L664"}, {"id": "clinical_payment_confirm_refundconfirmtab_buildpendingparams", "label": "buildPendingParams()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L671"}, {"id": "clinical_payment_confirm_refundconfirmtab_buildconfirmedparams", "label": "buildConfirmedParams()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L680"}, {"id": "clinical_payment_confirm_refundconfirmtab_loadpending", "label": "loadPending()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L689"}, {"id": "clinical_payment_confirm_refundconfirmtab_loadconfirmed", "label": "loadConfirmed()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L700"}, {"id": "clinical_payment_confirm_refundconfirmtab_loadall", "label": "loadAll()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L711"}, {"id": "clinical_payment_confirm_refundconfirmtab_handlependingsearch", "label": "handlePendingSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L715"}, {"id": "clinical_payment_confirm_refundconfirmtab_handlependingreset", "label": "handlePendingReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L720"}, {"id": "clinical_payment_confirm_refundconfirmtab_handleconfirmedsearch", "label": "handleConfirmedSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L726"}, {"id": "clinical_payment_confirm_refundconfirmtab_handleconfirmedreset", "label": "handleConfirmedReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L731"}, {"id": "clinical_payment_confirm_refundconfirmtab_openconfirm", "label": "openConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L737"}, {"id": "clinical_payment_confirm_refundconfirmtab_openviewconfirm", "label": "openViewConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L745"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_clinical_payment_confirm_refundconfirmtab_vue", "target": "clinical_payment_confirm_refundconfirmtab_formatamount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_vieLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_types_import_components_d_ts", "label": "components.d.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_infusionschedulehandoverdialog_vue", "label": "InfusionScheduleHandoverDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L1"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_formatnowdatetime", "label": "formatNowDatetime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L296"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_formathandoveruserlabel", "label": "formatHandoverUserLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L302"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_applydefaulthandoveruser", "label": "applyDefaultHandoverUser()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L312"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_resethandoverform", "label": "resetHandoverForm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L331"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_fullfileurl", "label": "fullFileUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L344"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_isimagefile", "label": "isImageFile()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L352"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_isvideofile", "label": "isVideoFile()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L362"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_parseattachmenturls", "label": "parseAttachmentUrls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L372"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_removeattachment", "label": "removeAttachment()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L386"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_handlepreviewattachment", "label": "handlePreviewAttachment()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L390"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_handledownloadattachment", "label": "handleDownloadAttachment()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L397"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_remotesearchhandoverusers", "label": "remoteSearchHandoverUsers()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L437"}, {"id": "infusion_schedule_management_infusionschedulehandoverdialog_onhandoveruserchange", "label": "onHandoverUserChange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L466"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_infusionschedulehandoverdialog_vue", "target": "icons_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue", "source_location": "L219", "weight": 1.0}, {"sourLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps_ts", "label": "clinical-payment-flow-steps.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L1"}, {"id": "utils_clinical_payment_flow_steps_dash", "label": "dash()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L25"}, {"id": "utils_clinical_payment_flow_steps_formatamount", "label": "formatAmount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L30"}, {"id": "utils_clinical_payment_flow_steps_hasreceiptsubmit", "label": "hasReceiptSubmit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L37"}, {"id": "utils_clinical_payment_flow_steps_hasfinancereceipt", "label": "hasFinanceReceipt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L42"}, {"id": "utils_clinical_payment_flow_steps_hasrefundsubmit", "label": "hasRefundSubmit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L47"}, {"id": "utils_clinical_payment_flow_steps_hasfinancerefund", "label": "hasFinanceRefund()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L52"}, {"id": "utils_clinical_payment_flow_steps_resolvestepstate", "label": "resolveStepState()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L57"}, {"id": "utils_clinical_payment_flow_steps_receiptsubmittime", "label": "receiptSubmitTime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L79"}, {"id": "utils_clinical_payment_flow_steps_buildpaymentflowsteps", "label": "buildPaymentFlowSteps()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L86"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps_ts", "target": "utils_clinical_payment_flow_steps_dash", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps_ts", "target": "utils_clinical_payment_flow_steps_formatamount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps_ts", "target": "utils_clinical_payment_flow_steps_hasreceiptsubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps_ts", "target": "utils_clinical_payment_flow_steps_hasfinancereceipt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps_ts", "target": "utils_clinical_payment_flow_steps_hasrefundsubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps_ts", "target": "utils_clinical_payment_flow_steps_hasfinancerefund", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps_ts", "target": "utils_clinical_payment_flow_steps_resolvestepstate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "label": "outbound-qc-pilot-view-sections.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L1"}, {"id": "utils_outbound_qc_pilot_view_sections_buildbasicexperimentapplicationfields", "label": "buildBasicExperimentApplicationFields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L40"}, {"id": "utils_outbound_qc_pilot_view_sections_builddefaultapplicationfields", "label": "buildDefaultApplicationFields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L55"}, {"id": "utils_outbound_qc_pilot_view_sections_buildoutboundpilotcontextsections", "label": "buildOutboundPilotContextSections()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L75"}, {"id": "utils_outbound_qc_pilot_view_sections_resolveoutboundviewvariant", "label": "resolveOutboundViewVariant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L188"}, {"id": "utils_outbound_qc_pilot_view_sections_isoutboundpilotserviceqctask", "label": "isOutboundPilotServiceQcTask()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L195"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_qc_work_order", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_system_view_dialog_index_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_mask_sensitive", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_status_tag_registry", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "utils_outbound_qc_pilot_view_sections_buildbasicexperimentapplicationfields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L40", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "utils_outbound_qc_pilot_view_sections_builddefaultapplicationfields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "utils_outbound_qc_pilot_view_sections_buildoutboundpilotcontextsections", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "utils_outbound_qc_pilot_view_sections_resolveoutboundviewvariant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts", "source_location": "L188", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_outbound_qc_pilot_view_sections_ts", "target": "utils_outbound_qc_pilot_view_sections_isoutboundpilotserviceqctask", "relaLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_protocol_protocolviewdialog_vue", "label": "ProtocolViewDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1"}, {"id": "protocol_protocolviewdialog_fullmoontodostatuslabel", "label": "fullmoonTodoStatusLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1334"}, {"id": "protocol_protocolviewdialog_fullmoontodostatustagtype", "label": "fullmoonTodoStatusTagType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1338"}, {"id": "protocol_protocolviewdialog_insurancesubscribedlabel", "label": "insuranceSubscribedLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1342"}, {"id": "protocol_protocolviewdialog_insurancesubscribedtagtype", "label": "insuranceSubscribedTagType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1346"}, {"id": "protocol_protocolviewdialog_fmtmoney", "label": "fmtMoney()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1351"}, {"id": "protocol_protocolviewdialog_storagecertmakestatuslabel", "label": "storageCertMakeStatusLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1356"}, {"id": "protocol_protocolviewdialog_storagecertmakestatustagtype", "label": "storageCertMakeStatusTagType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1360"}, {"id": "protocol_protocolviewdialog_dash", "label": "dash()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1420"}, {"id": "protocol_protocolviewdialog_formatmetric", "label": "formatMetric()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1425"}, {"id": "protocol_protocolviewdialog_formatymd", "label": "formatYmd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1431"}, {"id": "protocol_protocolviewdialog_formatinstallmentamounts", "label": "formatInstallmentAmounts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1437"}, {"id": "protocol_protocolviewdialog_formatym", "label": "formatYm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1442"}, {"id": "protocol_protocolviewdialog_paydetailcolorclass", "label": "payDetailColorClass()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1448"}, {"id": "protocol_protocolviewdialog_isreceiptfinanceconfirmed", "label": "isReceiptFinanceConfirmed()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1456"}, {"id": "protocol_protocolviewdialog_financeconfirmattachmentfiles", "label": "financeConfirmAttachmentFiles()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1732"}, {"id": "protocol_protocolviewdialog_refundattachmentfiles", "label": "refundAttachmentFiles()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1739"}, {"id": "protocol_protocolviewdialog_refundfinanceconfirmattachmentfiles", "label": "refundFinanceConfirmAttachmentFiles()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1746"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_protocol_protocolviewdialog_vue", "target": "icons_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/weLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_protocol_audit_paymentinfotab_vue", "label": "PaymentInfoTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L1"}, {"id": "clinical_payment_confirm_timeline_index_showstepcontent", "label": "showStepContent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L188"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "target": "clinical_payment_confirm_timeline_index_showstepcontent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L188", "weight": 1.0}], "raw_calls": [{"caller_nid": "clinical_payment_confirm_timeline_index_showstepcontent", "callee": "visibleFields", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L191"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_protocol_protocolviewdialog_vue", "label": "ProtocolViewDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1"}, {"id": "protocol_protocolviewdialog_fullmoontodostatuslabel", "label": "fullmoonTodoStatusLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1167"}, {"id": "protocol_protocolviewdialog_fullmoontodostatustagtype", "label": "fullmoonTodoStatusTagType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1171"}, {"id": "protocol_protocolviewdialog_insurancesubscribedlabel", "label": "insuranceSubscribedLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1175"}, {"id": "protocol_protocolviewdialog_insurancesubscribedtagtype", "label": "insuranceSubscribedTagType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1179"}, {"id": "protocol_protocolviewdialog_fmtmoney", "label": "fmtMoney()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1184"}, {"id": "protocol_protocolviewdialog_storagecertmakestatuslabel", "label": "storageCertMakeStatusLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1189"}, {"id": "protocol_protocolviewdialog_storagecertmakestatustagtype", "label": "storageCertMakeStatusTagType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1193"}, {"id": "protocol_protocolviewdialog_dash", "label": "dash()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1253"}, {"id": "protocol_protocolviewdialog_formatmetric", "label": "formatMetric()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1258"}, {"id": "protocol_protocolviewdialog_formatymd", "label": "formatYmd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1264"}, {"id": "protocol_protocolviewdialog_formatinstallmentamounts", "label": "formatInstallmentAmounts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1270"}, {"id": "protocol_protocolviewdialog_formatym", "label": "formatYm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1275"}, {"id": "protocol_protocolviewdialog_paydetailcolorclass", "label": "payDetailColorClass()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1281"}, {"id": "protocol_protocolviewdialog_buildoverviewtimelinesteps", "label": "buildOverviewTimelineSteps()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1299"}, {"id": "protocol_protocolviewdialog_timelineconnectorstyle", "label": "timelineConnectorStyle()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1371"}, {"id": "protocol_protocolviewdialog_auditordisplay", "label": "auditorDisplay()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1377"}, {"id": "protocol_protocolviewdialog_sampletypename", "label": "sampleTypeName()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1383"}, {"id": "protocol_protocolviewdialog_unitname", "label": "unitName()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue", "source_location": "L1387"}, {"id": "protocol_protocolviewdialog_ensureunitsinoptions", "label": "ensureUnitsInOLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationviewdialog_vue", "label": "ApplicationViewDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1"}, {"id": "pilot_application_applicationviewdialog_for", "label": "for()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1082"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_applicationviewdialog_vue", "target": "pilot_application_applicationviewdialog_for", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1082", "weight": 1.0}], "raw_calls": [{"caller_nid": "pilot_application_applicationviewdialog_for", "callee": "trim", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1083"}, {"caller_nid": "pilot_application_applicationviewdialog_for", "callee": "Number", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1086"}, {"caller_nid": "pilot_application_applicationviewdialog_for", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1087"}, {"caller_nid": "pilot_application_applicationviewdialog_for", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue", "source_location": "L1089"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_protocol_protocolattachmentreadonly_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_config_pilot_biz_type", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L118", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_status_tag_registry", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L119", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_clinical_payment_flow_steps", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L120", "weight": 1.0}], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_clinicalpaymenttab_vue", "label": "ClinicalPaymentTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ClinicalPaymentTab.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_schedulecanceldialog_vue", "label": "ScheduleCancelDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L1"}, {"id": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "label": "handleSubmit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L67"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_schedulecanceldialog_vue", "target": "element_plus", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_schedulecanceldialog_vue", "target": "icons_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L48", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_schedulecanceldialog_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_admin", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_schedulecanceldialog_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_config_pilot_biz_type", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L50", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_schedulecanceldialog_vue", "target": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L67", "weight": 1.0}], "raw_calls": [{"caller_nid": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "callee": "trim", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L68"}, {"caller_nid": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "callee": "warning", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L69"}, {"caller_nid": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "callee": "updateInfusionScheduleStatus", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L74"}, {"caller_nid": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "callee": "trim", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L77"}, {"caller_nid": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "callee": "success", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L79"}, {"caller_nid": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "callee": "emit", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L80"}, {"caller_nid": "infusion_schedule_management_schedulecanceldialog_handlesubmit", "callee": "emit", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue", "source_location": "L81"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_clinical_payment_confirm_refundconfirmtab_vue", "label": "RefundConfirmTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L1"}, {"id": "clinical_payment_confirm_refundconfirmtab_formatamount", "label": "formatAmount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L628"}, {"id": "clinical_payment_confirm_refundconfirmtab_fullfileurl", "label": "fullFileUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L633"}, {"id": "clinical_payment_confirm_refundconfirmtab_isimageurl", "label": "isImageUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L639"}, {"id": "clinical_payment_confirm_refundconfirmtab_pendingcardtitle", "label": "pendingCardTitle()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L665"}, {"id": "clinical_payment_confirm_refundconfirmtab_buildpendingparams", "label": "buildPendingParams()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L672"}, {"id": "clinical_payment_confirm_refundconfirmtab_buildconfirmedparams", "label": "buildConfirmedParams()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L681"}, {"id": "clinical_payment_confirm_refundconfirmtab_loadpending", "label": "loadPending()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L690"}, {"id": "clinical_payment_confirm_refundconfirmtab_loadconfirmed", "label": "loadConfirmed()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L701"}, {"id": "clinical_payment_confirm_refundconfirmtab_loadall", "label": "loadAll()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L712"}, {"id": "clinical_payment_confirm_refundconfirmtab_handlependingsearch", "label": "handlePendingSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L716"}, {"id": "clinical_payment_confirm_refundconfirmtab_handlependingreset", "label": "handlePendingReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L721"}, {"id": "clinical_payment_confirm_refundconfirmtab_handleconfirmedsearch", "label": "handleConfirmedSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L727"}, {"id": "clinical_payment_confirm_refundconfirmtab_handleconfirmedreset", "label": "handleConfirmedReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L732"}, {"id": "clinical_payment_confirm_refundconfirmtab_openconfirm", "label": "openConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L738"}, {"id": "clinical_payment_confirm_refundconfirmtab_openviewconfirm", "label": "openViewConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L746"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_clinical_payment_confirm_refundconfirmtab_vue", "target": "clinical_payment_confirm_refundconfirmtab_formatamount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue", "source_location": "L628", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_vieLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_types_import_components_d_ts", "label": "components.d.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_config_pilot_biz_type_ts", "label": "pilot-biz-type.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/config/pilot-biz-type.ts", "source_location": "L1"}, {"id": "config_pilot_biz_type_getpilotbizconfig", "label": "getPilotBizConfig()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/config/pilot-biz-type.ts", "source_location": "L83"}, {"id": "config_pilot_biz_type_resolvepilotbiztype", "label": "resolvePilotBizType()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/config/pilot-biz-type.ts", "source_location": "L88"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_config_pilot_biz_type_ts", "target": "config_pilot_biz_type_getpilotbizconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/config/pilot-biz-type.ts", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_config_pilot_biz_type_ts", "target": "config_pilot_biz_type_resolvepilotbiztype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/config/pilot-biz-type.ts", "source_location": "L88", "weight": 1.0}], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_payment_confirm_refundconfirmtab_vue", "label": "RefundConfirmTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_outbound_release_review_outboundreleaseviewdialog_vue", "label": "OutboundReleaseViewDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseViewDialog.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_scheduleeditdialog_vue", "label": "ScheduleEditDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L1"}, {"id": "infusion_schedule_management_scheduleeditdialog", "label": "'\u672a\u5173\u8054\u4e2d\u8bd5\u670d\u52a1\u7533\u8bf7\u5355\uff0c\u65e0\u6cd5\u52a0\u8f7d\u53ef\u9009\u7ec6\u80de\u9879\u76ee\u3002'()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L548"}, {"id": "infusion_schedule_management_scheduleeditdialog_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L553"}, {"id": "infusion_schedule_management_scheduleeditdialog_synccellproductfromoption", "label": "syncCellProductFromOption()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L955"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_scheduleeditdialog_vue", "target": "infusion_schedule_management_scheduleeditdialog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L548", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_scheduleeditdialog_vue", "target": "infusion_schedule_management_scheduleeditdialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L553", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_scheduleeditdialog_vue", "target": "infusion_schedule_management_scheduleeditdialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L831", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_scheduleeditdialog_vue", "target": "infusion_schedule_management_scheduleeditdialog_synccellproductfromoption", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L955", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_scheduleeditdialog_vue", "target": "infusion_schedule_management_scheduleeditdialog_if", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L1356", "weight": 1.0}], "raw_calls": [{"caller_nid": "infusion_schedule_management_scheduleeditdialog_synccellproductfromoption", "callee": "enrichProjectNameFields", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L957"}, {"caller_nid": "infusion_schedule_management_scheduleeditdialog_if", "callee": "warning", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue", "source_location": "L1357"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_pilot_application_infusionscheduletab_vue", "label": "InfusionScheduleTab.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L1"}, {"id": "pilot_application_infusionscheduletab_getdefaulttimerange", "label": "getDefaultTimeRange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L419"}, {"id": "pilot_application_infusionscheduletab_handleselectionchange", "label": "handleSelectionChange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L441"}, {"id": "pilot_application_infusionscheduletab_isinfusionthisweek", "label": "isInfusionThisWeek()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L446"}, {"id": "pilot_application_infusionscheduletab_handleview", "label": "handleView()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L544"}, {"id": "pilot_application_infusionscheduletab_getinfusionstatus", "label": "getInfusionStatus()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L549"}, {"id": "pilot_application_infusionscheduletab_caneditschedule", "label": "canEditSchedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L552"}, {"id": "pilot_application_infusionscheduletab_canconfirmschedule", "label": "canConfirmSchedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L558"}, {"id": "pilot_application_infusionscheduletab_cancancelschedule", "label": "canCancelSchedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L561"}, {"id": "pilot_application_infusionscheduletab_cancompleteschedule", "label": "canCompleteSchedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L564"}, {"id": "pilot_application_infusionscheduletab_canshowhandover", "label": "canShowHandover()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L566"}, {"id": "pilot_application_infusionscheduletab_hasprimaryscheduleactions", "label": "hasPrimaryScheduleActions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L569"}, {"id": "pilot_application_infusionscheduletab_hasmorescheduleactions", "label": "hasMoreScheduleActions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L576"}, {"id": "pilot_application_infusionscheduletab_handledropdowncommand", "label": "handleDropdownCommand()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L583"}, {"id": "pilot_application_infusionscheduletab_handlehandover", "label": "handleHandover()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L594"}, {"id": "pilot_application_infusionscheduletab_buildcompleteconfirmmessage", "label": "buildCompleteConfirmMessage()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L600"}, {"id": "pilot_application_infusionscheduletab_handleconfirm", "label": "handleConfirm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue", "source_location": "L632"}, {"id": "pilot_application_infusionscheduletab_handlecomplete", "label": "handleComplete()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_pilot_service_infusion_schedule_management_scheduleviewdialog_vue", "label": "ScheduleViewDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleViewDialog.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L1"}, {"id": "clinical_payment_confirm_timeline_index_showstepcontent", "label": "showStepContent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L252"}, {"id": "clinical_payment_confirm_timeline_index_protocolpaymodelabel", "label": "protocolPayModeLabel()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L268"}, {"id": "clinical_payment_confirm_timeline_index_formatprotocolamount", "label": "formatProtocolAmount()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L273"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "target": "clinical_payment_confirm_timeline_index_showstepcontent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L252", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "target": "clinical_payment_confirm_timeline_index_protocolpaymodelabel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L268", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_clinical_payment_confirm_timeline_index_vue", "target": "clinical_payment_confirm_timeline_index_formatprotocolamount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L273", "weight": 1.0}], "raw_calls": [{"caller_nid": "clinical_payment_confirm_timeline_index_showstepcontent", "callee": "visibleFields", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L255"}, {"caller_nid": "clinical_payment_confirm_timeline_index_protocolpaymodelabel", "callee": "payModeLabel", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L269"}, {"caller_nid": "clinical_payment_confirm_timeline_index_formatprotocolamount", "callee": "formatMoneyDisplay", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue", "source_location": "L275"}]}
|
||||
@@ -0,0 +1,157 @@
|
||||
export type PaymentFlowStepKey =
|
||||
| 'receipt-submit'
|
||||
| 'finance-receipt'
|
||||
| 'refund-submit'
|
||||
| 'finance-refund'
|
||||
|
||||
export type PaymentFlowStepState = 'pending' | 'done' | 'current'
|
||||
|
||||
export interface PaymentFlowStepField {
|
||||
label: string
|
||||
value: string
|
||||
multiline?: boolean
|
||||
slot?: 'attachments'
|
||||
attachmentUrls?: string
|
||||
}
|
||||
|
||||
export interface PaymentFlowStep {
|
||||
key: PaymentFlowStepKey
|
||||
title: string
|
||||
state: PaymentFlowStepState
|
||||
time: string
|
||||
fields: PaymentFlowStepField[]
|
||||
}
|
||||
|
||||
function dash(v: unknown) {
|
||||
if (v == null || v === '') return '—'
|
||||
return String(v)
|
||||
}
|
||||
|
||||
function formatAmount(v: unknown) {
|
||||
if (v == null || v === '') return '—'
|
||||
const n = Number(v)
|
||||
if (Number.isNaN(n)) return '—'
|
||||
return `¥${n.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
|
||||
}
|
||||
|
||||
function hasReceiptSubmit(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
return ['jfqrz', 'yjf', 'tfqrz', 'ytf'].includes(status)
|
||||
}
|
||||
|
||||
function hasFinanceReceipt(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
return ['yjf', 'tfqrz', 'ytf'].includes(status) || Boolean(detail.financeConfirmTime)
|
||||
}
|
||||
|
||||
function hasRefundSubmit(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
return ['tfqrz', 'ytf'].includes(status) || Boolean(detail.refundApplyTime)
|
||||
}
|
||||
|
||||
function hasFinanceRefund(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
return status === 'ytf' || Boolean(detail.refundFinanceConfirmTime)
|
||||
}
|
||||
|
||||
function resolveStepState(
|
||||
key: PaymentFlowStepKey,
|
||||
detail: Record<string, unknown>,
|
||||
activeStepKey?: PaymentFlowStepKey
|
||||
): PaymentFlowStepState {
|
||||
if (activeStepKey === key) return 'current'
|
||||
|
||||
const doneMap: Record<PaymentFlowStepKey, boolean> = {
|
||||
'receipt-submit': hasReceiptSubmit(detail),
|
||||
'finance-receipt': hasFinanceReceipt(detail),
|
||||
'refund-submit': hasRefundSubmit(detail),
|
||||
'finance-refund': hasFinanceRefund(detail)
|
||||
}
|
||||
|
||||
if (doneMap[key]) {
|
||||
if (activeStepKey === key) return 'current'
|
||||
return 'done'
|
||||
}
|
||||
|
||||
return 'pending'
|
||||
}
|
||||
|
||||
function receiptSubmitTime(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
if (status === 'jfqrz') return dash(detail.updateTime)
|
||||
if (hasFinanceReceipt(detail) && detail.transferTime) return dash(detail.transferTime)
|
||||
return '—'
|
||||
}
|
||||
|
||||
export function buildPaymentFlowSteps(
|
||||
detail: Record<string, unknown> | null | undefined,
|
||||
activeStepKey?: PaymentFlowStepKey
|
||||
): PaymentFlowStep[] {
|
||||
const d = detail || {}
|
||||
const steps: PaymentFlowStep[] = [
|
||||
{
|
||||
key: 'receipt-submit',
|
||||
title: '缴费确认信息',
|
||||
state: resolveStepState('receipt-submit', d, activeStepKey),
|
||||
time: receiptSubmitTime(d),
|
||||
fields: [
|
||||
{ label: '缴费金额(元)', value: formatAmount(d.paymentAmount ?? d.amount) },
|
||||
{ label: '备注', value: dash(d.remark), multiline: true },
|
||||
{
|
||||
label: '转账凭证',
|
||||
value: '',
|
||||
slot: 'attachments',
|
||||
attachmentUrls: String(d.transferAttachments || '')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
key: 'finance-receipt',
|
||||
title: '缴费财务确认信息',
|
||||
state: resolveStepState('finance-receipt', d, activeStepKey),
|
||||
time: dash(d.financeConfirmTime),
|
||||
fields: [
|
||||
{ label: '财务备注', value: dash(d.financeRemark), multiline: true },
|
||||
{
|
||||
label: '财务确认附件',
|
||||
value: '',
|
||||
slot: 'attachments',
|
||||
attachmentUrls: String(d.financeConfirmAttachments || '')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
key: 'refund-submit',
|
||||
title: '退费确认信息',
|
||||
state: resolveStepState('refund-submit', d, activeStepKey),
|
||||
time: dash(d.refundApplyTime),
|
||||
fields: [
|
||||
{ label: '退费金额(元)', value: formatAmount(d.refundAmount) },
|
||||
{ label: '退费备注', value: dash(d.refundRemark), multiline: true },
|
||||
{
|
||||
label: '退费附件',
|
||||
value: '',
|
||||
slot: 'attachments',
|
||||
attachmentUrls: String(d.refundAttachments || '')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
key: 'finance-refund',
|
||||
title: '退费财务确认信息',
|
||||
state: resolveStepState('finance-refund', d, activeStepKey),
|
||||
time: dash(d.refundFinanceConfirmTime),
|
||||
fields: [
|
||||
{ label: '财务备注', value: dash(d.refundFinanceRemark), multiline: true },
|
||||
{
|
||||
label: '财务确认附件',
|
||||
value: '',
|
||||
slot: 'attachments',
|
||||
attachmentUrls: String(d.refundFinanceConfirmAttachments || '')
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
return steps
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
import {
|
||||
type PaymentFlowStep,
|
||||
type PaymentFlowStepKey,
|
||||
type PaymentFlowStepState
|
||||
} from '@/utils/clinical-payment-flow-steps'
|
||||
import { transferTypeLabel } from '@/utils/protocol-payment-labels'
|
||||
|
||||
export type { PaymentFlowStep, PaymentFlowStepKey, PaymentFlowStepState }
|
||||
|
||||
function dash(v: unknown) {
|
||||
if (v == null || v === '') return '—'
|
||||
return String(v)
|
||||
}
|
||||
|
||||
function formatAmount(v: unknown) {
|
||||
if (v == null || v === '') return '—'
|
||||
const n = Number(v)
|
||||
if (Number.isNaN(n)) return '—'
|
||||
return `¥${n.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
|
||||
}
|
||||
|
||||
function resolveAttachmentUrls(
|
||||
detail: Record<string, unknown>,
|
||||
urlField: string,
|
||||
filesField: string
|
||||
): string {
|
||||
const urls = String(detail[urlField] || '')
|
||||
if (urls.trim()) return urls
|
||||
const files = detail[filesField]
|
||||
if (!Array.isArray(files)) return ''
|
||||
return files
|
||||
.map((f) => String((f as Record<string, unknown>).fileUrl || '').trim())
|
||||
.filter(Boolean)
|
||||
.join(',')
|
||||
}
|
||||
|
||||
function hasReceiptSubmit(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
return ['jfqrz', 'yjf', 'tfqrz', 'ytf'].includes(status)
|
||||
}
|
||||
|
||||
function hasFinanceReceipt(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
return ['yjf', 'tfqrz', 'ytf'].includes(status)
|
||||
}
|
||||
|
||||
function hasRefundSubmit(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
return ['tfqrz', 'ytf'].includes(status)
|
||||
}
|
||||
|
||||
function hasFinanceRefund(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
return status === 'ytf'
|
||||
}
|
||||
|
||||
function resolveStepState(
|
||||
key: PaymentFlowStepKey,
|
||||
detail: Record<string, unknown>,
|
||||
activeStepKey?: PaymentFlowStepKey
|
||||
): PaymentFlowStepState {
|
||||
if (activeStepKey === key) return 'current'
|
||||
|
||||
const doneMap: Record<PaymentFlowStepKey, boolean> = {
|
||||
'receipt-submit': hasReceiptSubmit(detail),
|
||||
'finance-receipt': hasFinanceReceipt(detail),
|
||||
'refund-submit': hasRefundSubmit(detail),
|
||||
'finance-refund': hasFinanceRefund(detail)
|
||||
}
|
||||
|
||||
if (doneMap[key]) return 'done'
|
||||
return 'pending'
|
||||
}
|
||||
|
||||
function receiptSubmitTime(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
if (status === 'jfqrz') return dash(detail.updateTime)
|
||||
if (hasFinanceReceipt(detail) && detail.transferTime) return dash(detail.transferTime)
|
||||
return '—'
|
||||
}
|
||||
|
||||
function financeReceiptTime(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
if (status === 'jfqrz' || status === 'dfj') return '—'
|
||||
return dash(detail.financeConfirmTime || detail.updateTime)
|
||||
}
|
||||
|
||||
function refundSubmitTime(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
if (!['tfqrz', 'ytf'].includes(status)) return '—'
|
||||
if (status === 'tfqrz') return dash(detail.updateTime)
|
||||
return dash(detail.refundApplyTime || detail.updateTime)
|
||||
}
|
||||
|
||||
function refundFinanceTime(detail: Record<string, unknown>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
if (status !== 'ytf') return '—'
|
||||
return dash(detail.refundFinanceConfirmTime || detail.updateTime)
|
||||
}
|
||||
|
||||
export function buildProtocolPaymentFlowSteps(
|
||||
detail: Record<string, unknown> | null | undefined,
|
||||
activeStepKey?: PaymentFlowStepKey
|
||||
): PaymentFlowStep[] {
|
||||
const d = detail || {}
|
||||
const transferUrls = resolveAttachmentUrls(d, 'transferAttachments', 'attachments')
|
||||
const financeUrls = resolveAttachmentUrls(
|
||||
d,
|
||||
'financeConfirmAttachments',
|
||||
'financeConfirmAttachmentFiles'
|
||||
)
|
||||
const refundUrls = resolveAttachmentUrls(d, 'refundAttachments', 'refundAttachmentFiles')
|
||||
const refundFinanceUrls = resolveAttachmentUrls(
|
||||
d,
|
||||
'refundFinanceConfirmAttachments',
|
||||
'refundFinanceConfirmAttachmentFiles'
|
||||
)
|
||||
|
||||
return [
|
||||
{
|
||||
key: 'receipt-submit',
|
||||
title: '缴费确认信息',
|
||||
state: resolveStepState('receipt-submit', d, activeStepKey),
|
||||
time: receiptSubmitTime(d),
|
||||
fields: [
|
||||
{ label: '转账方式', value: transferTypeLabel(String(d.transferType || '')) || '—' },
|
||||
{ label: '实缴金额(元)', value: formatAmount(d.transferAmount) },
|
||||
{ label: '转账时间', value: dash(d.transferTime) },
|
||||
{ label: '备注', value: dash(d.remark), multiline: true },
|
||||
{
|
||||
label: '转账凭证',
|
||||
value: '',
|
||||
slot: 'attachments',
|
||||
attachmentUrls: transferUrls
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
key: 'finance-receipt',
|
||||
title: '缴费财务确认信息',
|
||||
state: resolveStepState('finance-receipt', d, activeStepKey),
|
||||
time: financeReceiptTime(d),
|
||||
fields: [
|
||||
{ label: '财务备注', value: dash(d.financeRemark), multiline: true },
|
||||
{
|
||||
label: '财务确认附件',
|
||||
value: '',
|
||||
slot: 'attachments',
|
||||
attachmentUrls: financeUrls
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
key: 'refund-submit',
|
||||
title: '退费确认信息',
|
||||
state: resolveStepState('refund-submit', d, activeStepKey),
|
||||
time: refundSubmitTime(d),
|
||||
fields: [
|
||||
{ label: '退费金额(元)', value: formatAmount(d.refundAmount) },
|
||||
{ label: '退费备注', value: dash(d.refundRemark), multiline: true },
|
||||
{
|
||||
label: '退费附件',
|
||||
value: '',
|
||||
slot: 'attachments',
|
||||
attachmentUrls: refundUrls
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
key: 'finance-refund',
|
||||
title: '退费财务确认信息',
|
||||
state: resolveStepState('finance-refund', d, activeStepKey),
|
||||
time: refundFinanceTime(d),
|
||||
fields: [
|
||||
{ label: '财务备注', value: dash(d.refundFinanceRemark), multiline: true },
|
||||
{
|
||||
label: '财务确认附件',
|
||||
value: '',
|
||||
slot: 'attachments',
|
||||
attachmentUrls: refundFinanceUrls
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -400,23 +400,23 @@
|
||||
destroy-on-close
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<ProtocolPaymentDetailReadonly
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
flow-variant="protocol"
|
||||
:detail="confirmRow"
|
||||
title="缴费明细(请核对)"
|
||||
show-refund-apply
|
||||
refund-apply-title="退费申请(请核对)"
|
||||
@preview="handleAttachmentPreview"
|
||||
active-step-key="finance-refund"
|
||||
@download="handleAttachmentDownload"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form">
|
||||
<ProtocolFinanceConfirmFields
|
||||
v-model:finance-remark="financeRemark"
|
||||
v-model:attachments="attachments"
|
||||
upload-folder="protocol-finance-refund"
|
||||
/>
|
||||
</el-form>
|
||||
>
|
||||
<template #action-panel>
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form">
|
||||
<ProtocolFinanceConfirmFields
|
||||
v-model:finance-remark="financeRemark"
|
||||
v-model:attachments="attachments"
|
||||
upload-folder="protocol-finance-refund"
|
||||
/>
|
||||
</el-form>
|
||||
</template>
|
||||
</ClinicalPaymentConfirmTimeline>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="dialogVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
@@ -439,35 +439,12 @@
|
||||
modal-class="protocol-dialog-mask"
|
||||
destroy-on-close
|
||||
>
|
||||
<ProtocolPaymentDetailReadonly
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
flow-variant="protocol"
|
||||
:detail="viewRow"
|
||||
title="缴费明细"
|
||||
show-refund-apply
|
||||
refund-apply-title="退费申请"
|
||||
@preview="handleAttachmentPreview"
|
||||
show-pay-status
|
||||
@download="handleAttachmentDownload"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{ viewRow?.updateTime || '-' }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.refundFinanceRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="viewFinanceAttachmentFiles"
|
||||
@preview="handleAttachmentPreview"
|
||||
@download="handleAttachmentDownload"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="viewDialogVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
@@ -479,7 +456,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, onMounted, computed } from 'vue'
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { Close, Check, RefreshLeft, Search, View } from '@element-plus/icons-vue'
|
||||
import {
|
||||
@@ -488,8 +465,7 @@
|
||||
fetchRefundConfirmSubmit
|
||||
} from '@/api/collection-protocol'
|
||||
import ProtocolFinanceConfirmFields from '@/components/business/protocol-finance-confirm-fields/index.vue'
|
||||
import ProtocolPaymentDetailReadonly from '@/components/business/protocol-payment-detail-readonly/index.vue'
|
||||
import ProtocolAttachmentReadonly from '../protocol/ProtocolAttachmentReadonly.vue'
|
||||
import ClinicalPaymentConfirmTimeline from '@/components/business/clinical-payment-confirm-timeline/index.vue'
|
||||
import {
|
||||
financeAttachmentsToUrlString,
|
||||
type FinanceAttachmentItem
|
||||
@@ -560,25 +536,6 @@
|
||||
|
||||
const minioBaseUrl = (import.meta.env.VITE_MINIO_BASE_URL || '').replace(/\/$/, '')
|
||||
|
||||
const viewFinanceAttachmentFiles = computed(() => {
|
||||
const row = viewRow.value
|
||||
if (!row) return []
|
||||
if (Array.isArray(row.refundFinanceConfirmAttachmentFiles)) {
|
||||
return row.refundFinanceConfirmAttachmentFiles as Array<Record<string, unknown>>
|
||||
}
|
||||
const urls = String(row.refundFinanceConfirmAttachments || '')
|
||||
if (!urls.trim()) return []
|
||||
return urls
|
||||
.split(',')
|
||||
.map((u, i) => {
|
||||
const url = u.trim()
|
||||
if (!url) return null
|
||||
const name = url.includes('/') ? url.split('/').pop() || `附件${i + 1}` : url
|
||||
return { id: `url_${i}`, fileUrl: url, fileName: name }
|
||||
})
|
||||
.filter(Boolean) as Array<Record<string, unknown>>
|
||||
})
|
||||
|
||||
function fullFileUrl(url: string) {
|
||||
if (!url) return ''
|
||||
if (/^https?:\/\//i.test(url)) return url
|
||||
|
||||
@@ -423,21 +423,23 @@
|
||||
destroy-on-close
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<ProtocolPaymentDetailReadonly
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
flow-variant="protocol"
|
||||
:detail="confirmRow"
|
||||
title="缴费明细(请核对)"
|
||||
@preview="handleAttachmentPreview"
|
||||
active-step-key="finance-receipt"
|
||||
@download="handleAttachmentDownload"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form">
|
||||
<ProtocolFinanceConfirmFields
|
||||
v-model:finance-remark="financeRemark"
|
||||
v-model:attachments="attachments"
|
||||
upload-folder="protocol-finance-receipt"
|
||||
/>
|
||||
</el-form>
|
||||
>
|
||||
<template #action-panel>
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form">
|
||||
<ProtocolFinanceConfirmFields
|
||||
v-model:finance-remark="financeRemark"
|
||||
v-model:attachments="attachments"
|
||||
upload-folder="protocol-finance-receipt"
|
||||
/>
|
||||
</el-form>
|
||||
</template>
|
||||
</ClinicalPaymentConfirmTimeline>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="dialogVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
@@ -465,33 +467,12 @@
|
||||
modal-class="protocol-dialog-mask"
|
||||
destroy-on-close
|
||||
>
|
||||
<ProtocolPaymentDetailReadonly
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
flow-variant="protocol"
|
||||
:detail="viewRow"
|
||||
title="缴费明细"
|
||||
@preview="handleAttachmentPreview"
|
||||
show-pay-status
|
||||
@download="handleAttachmentDownload"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{ viewRow?.updateTime || '-' }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.financeRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="viewFinanceAttachmentFiles"
|
||||
@preview="handleAttachmentPreview"
|
||||
@download="handleAttachmentDownload"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="viewDialogVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
@@ -507,7 +488,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, onMounted, computed } from 'vue'
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { Close, Check, RefreshLeft, Search, View } from '@element-plus/icons-vue'
|
||||
import {
|
||||
@@ -517,8 +498,7 @@
|
||||
fetchRefundConfirmList
|
||||
} from '@/api/collection-protocol'
|
||||
import ProtocolFinanceConfirmFields from '@/components/business/protocol-finance-confirm-fields/index.vue'
|
||||
import ProtocolPaymentDetailReadonly from '@/components/business/protocol-payment-detail-readonly/index.vue'
|
||||
import ProtocolAttachmentReadonly from '../protocol/ProtocolAttachmentReadonly.vue'
|
||||
import ClinicalPaymentConfirmTimeline from '@/components/business/clinical-payment-confirm-timeline/index.vue'
|
||||
import {
|
||||
financeAttachmentsToUrlString,
|
||||
type FinanceAttachmentItem
|
||||
@@ -597,25 +577,6 @@
|
||||
|
||||
const minioBaseUrl = (import.meta.env.VITE_MINIO_BASE_URL || '').replace(/\/$/, '')
|
||||
|
||||
const viewFinanceAttachmentFiles = computed(() => {
|
||||
const row = viewRow.value
|
||||
if (!row) return []
|
||||
if (Array.isArray(row.financeConfirmAttachmentFiles)) {
|
||||
return row.financeConfirmAttachmentFiles as Array<Record<string, unknown>>
|
||||
}
|
||||
const urls = String(row.financeConfirmAttachments || '')
|
||||
if (!urls.trim()) return []
|
||||
return urls
|
||||
.split(',')
|
||||
.map((u, i) => {
|
||||
const url = u.trim()
|
||||
if (!url) return null
|
||||
const name = url.includes('/') ? url.split('/').pop() || `附件${i + 1}` : url
|
||||
return { id: `url_${i}`, fileUrl: url, fileName: name }
|
||||
})
|
||||
.filter(Boolean) as Array<Record<string, unknown>>
|
||||
})
|
||||
|
||||
function fullFileUrl(url: string) {
|
||||
if (!url) return ''
|
||||
if (/^https?:\/\//i.test(url)) return url
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
:key="String(row.id)"
|
||||
class="payment-card"
|
||||
:class="{ 'payment-card--due-soon': isDueSoonCard(col.key, row) }"
|
||||
@dblclick="handleView(row)"
|
||||
@dblclick="handleViewProtocol(row)"
|
||||
>
|
||||
<div class="payment-card__head">
|
||||
<div class="payment-card__head-main">
|
||||
@@ -289,6 +289,30 @@
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
v-model="paymentDetailVisible"
|
||||
title="缴费信息详情"
|
||||
width="900px"
|
||||
class="dialog-form-layout"
|
||||
align-center
|
||||
append-to-body
|
||||
modal-class="protocol-dialog-mask"
|
||||
destroy-on-close
|
||||
>
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
flow-variant="protocol"
|
||||
:detail="paymentDetailRow"
|
||||
show-pay-status
|
||||
@download="handlePaymentDetailDownload"
|
||||
/>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="paymentDetailVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
关闭
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<ProtocolViewDialog
|
||||
v-model="viewVisible"
|
||||
:protocol-id="viewProtocolId"
|
||||
@@ -316,6 +340,8 @@
|
||||
ArrowUp
|
||||
} from '@element-plus/icons-vue'
|
||||
import ProtocolViewDialog from '../protocol/ProtocolViewDialog.vue'
|
||||
import ClinicalPaymentConfirmTimeline from '@/components/business/clinical-payment-confirm-timeline/index.vue'
|
||||
import { downloadAttachmentFile } from '@/utils/download-attachment'
|
||||
import {
|
||||
fetchPaymentDetailList,
|
||||
fetchSubmitReceiptFinance,
|
||||
@@ -391,6 +417,8 @@
|
||||
const viewVisible = ref(false)
|
||||
const viewProtocolId = ref<string | null>(null)
|
||||
const viewRow = ref<CollectionProtocolRow | null>(null)
|
||||
const paymentDetailVisible = ref(false)
|
||||
const paymentDetailRow = ref<Record<string, unknown> | null>(null)
|
||||
const refundDialogVisible = ref(false)
|
||||
const refundSubmitLoading = ref(false)
|
||||
const refundTargetIds = ref<string[]>([])
|
||||
@@ -487,7 +515,16 @@
|
||||
return mode || '—'
|
||||
}
|
||||
|
||||
function handlePaymentDetailDownload(file: Record<string, unknown>) {
|
||||
downloadAttachmentFile(file, { fullFileUrl })
|
||||
}
|
||||
|
||||
function handleView(row: Record<string, unknown>) {
|
||||
paymentDetailRow.value = { ...row }
|
||||
paymentDetailVisible.value = true
|
||||
}
|
||||
|
||||
function handleViewProtocol(row: Record<string, unknown>) {
|
||||
const pid = String(row.collectionProtocolId || '')
|
||||
if (!pid) {
|
||||
ElMessage.warning('缺少关联协议单,无法查看')
|
||||
|
||||
@@ -813,13 +813,12 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- Mini flow: progress track + detail cards below -->
|
||||
<!-- Mini flow: 正向横向进度条 + 下方详情卡片 -->
|
||||
<template
|
||||
v-for="flowSteps in [buildMiniFlowSteps(detail)]"
|
||||
:key="`${detail.id || dIdx}-flow`"
|
||||
>
|
||||
<div v-if="flowSteps.length" class="flow-section">
|
||||
<!-- Progress track -->
|
||||
<div class="mini-flow">
|
||||
<template v-for="(step, sIdx) in flowSteps" :key="`c-${step.key}`">
|
||||
<div
|
||||
@@ -838,7 +837,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Detail cards: only for nodes that carry business data -->
|
||||
<div class="flow-detail-cards">
|
||||
<template v-for="step in flowSteps" :key="`d-${step.key}`">
|
||||
<div
|
||||
@@ -856,7 +854,6 @@
|
||||
</div>
|
||||
<div class="flow-detail-card__body">
|
||||
<template v-if="step.key === 'pay'">
|
||||
<!-- 缴费确认 -->
|
||||
<div class="flow-detail-card__kv">
|
||||
<span class="flow-detail-card__label">确认状态</span>
|
||||
<span class="flow-detail-card__value"
|
||||
@@ -882,7 +879,6 @@
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="step.key === 'receipt-finance'">
|
||||
<!-- 财务确认:jfqrz 为待财务确认,updateTime 为提交财务时间非确认时间 -->
|
||||
<div class="flow-detail-card__kv">
|
||||
<span class="flow-detail-card__label">确认状态</span>
|
||||
<span class="flow-detail-card__value">
|
||||
@@ -931,7 +927,6 @@
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="step.key === 'refund-apply'">
|
||||
<!-- 退费申请 -->
|
||||
<div class="flow-detail-card__kv">
|
||||
<span class="flow-detail-card__label">退费金额(元)</span>
|
||||
<span
|
||||
@@ -962,7 +957,6 @@
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="step.key === 'refund-finance'">
|
||||
<!-- 退费确认(已退费) -->
|
||||
<div class="flow-detail-card__kv">
|
||||
<span class="flow-detail-card__label">确认状态</span>
|
||||
<span class="flow-detail-card__value"
|
||||
@@ -1471,7 +1465,6 @@
|
||||
dotIcon: string
|
||||
labelClass: string
|
||||
connectorToNext?: string
|
||||
/** 是否渲染详情卡片 */
|
||||
hasDetailCard?: boolean
|
||||
}
|
||||
|
||||
@@ -1481,10 +1474,9 @@
|
||||
|
||||
const steps: MiniFlowStep[] = []
|
||||
|
||||
// ──── 节点1: 缴费确认(详情卡:转账时间 + 凭证) ────
|
||||
steps.push({
|
||||
key: 'pay',
|
||||
label: '缴费确认',
|
||||
label: '缴费确认信息',
|
||||
dotClass: 'done',
|
||||
dotIcon: '✓',
|
||||
labelClass: 'done',
|
||||
@@ -1492,11 +1484,10 @@
|
||||
hasDetailCard: true
|
||||
})
|
||||
|
||||
// ──── 节点2: 财务确认(始终有详情卡) ────
|
||||
if (s === 'jfqrz') {
|
||||
steps.push({
|
||||
key: 'receipt-finance',
|
||||
label: '财务确认',
|
||||
label: '缴费财务确认信息',
|
||||
dotClass: 'current-amber',
|
||||
dotIcon: '●',
|
||||
labelClass: 'current-amber',
|
||||
@@ -1505,7 +1496,7 @@
|
||||
} else {
|
||||
steps.push({
|
||||
key: 'receipt-finance',
|
||||
label: '财务确认',
|
||||
label: '缴费财务确认信息',
|
||||
dotClass: 'done',
|
||||
dotIcon: '✓',
|
||||
labelClass: 'done',
|
||||
@@ -1514,11 +1505,10 @@
|
||||
})
|
||||
}
|
||||
|
||||
// ──── 节点3: 退费申请(始终有详情卡) ────
|
||||
if (s === 'tfqrz' || s === 'ytf') {
|
||||
steps.push({
|
||||
key: 'refund-apply',
|
||||
label: '退费申请',
|
||||
label: '退费确认信息',
|
||||
dotClass: s === 'tfqrz' ? 'current-amber' : 'done',
|
||||
dotIcon: s === 'tfqrz' ? '●' : '✓',
|
||||
labelClass: s === 'tfqrz' ? 'current-amber' : 'done',
|
||||
@@ -1527,11 +1517,10 @@
|
||||
})
|
||||
}
|
||||
|
||||
// ──── 节点4: 退费确认(已退费有详情卡,待处理无) ────
|
||||
if (s === 'tfqrz') {
|
||||
steps.push({
|
||||
key: 'refund-finance',
|
||||
label: '退费确认',
|
||||
label: '退费财务确认信息',
|
||||
dotClass: 'pending-gray',
|
||||
dotIcon: '○',
|
||||
labelClass: 'pending-gray',
|
||||
@@ -1540,7 +1529,7 @@
|
||||
} else if (s === 'ytf') {
|
||||
steps.push({
|
||||
key: 'refund-finance',
|
||||
label: '退费确认',
|
||||
label: '退费财务确认信息',
|
||||
dotClass: 'done-red',
|
||||
dotIcon: '✓',
|
||||
labelClass: 'done-red',
|
||||
@@ -1548,7 +1537,6 @@
|
||||
})
|
||||
}
|
||||
|
||||
// 最后一个节点不需要 connectorToNext
|
||||
if (steps.length) {
|
||||
delete steps[steps.length - 1].connectorToNext
|
||||
}
|
||||
@@ -1775,100 +1763,6 @@
|
||||
.filter(Boolean) as Array<Record<string, any>>
|
||||
}
|
||||
|
||||
function hasFinanceRemark(detail: Record<string, any>) {
|
||||
return String(detail.financeRemark || '').trim() !== ''
|
||||
}
|
||||
|
||||
function hasFinanceConfirmAttachments(detail: Record<string, any>) {
|
||||
return financeConfirmAttachmentFiles(detail).length > 0
|
||||
}
|
||||
|
||||
function hasRefundApplyInfo(detail: Record<string, any>) {
|
||||
const amount = detail.refundAmount
|
||||
const hasAmount = amount != null && amount !== '' && Number(amount) > 0
|
||||
return (
|
||||
hasAmount ||
|
||||
String(detail.refundRemark || '').trim() !== '' ||
|
||||
refundAttachmentFiles(detail).length > 0
|
||||
)
|
||||
}
|
||||
|
||||
/** 缴费财务确认:已缴费或退费确认中,且已有财务确认字段 */
|
||||
function showPaymentFinanceConfirm(detail: Record<string, any>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
if (status === 'ytf') return false
|
||||
if (status !== 'yjf' && status !== 'tfqrz') return false
|
||||
return hasFinanceRemark(detail) || hasFinanceConfirmAttachments(detail)
|
||||
}
|
||||
|
||||
/** 退费确认申请:发起退费时填写 */
|
||||
function showRefundApply(detail: Record<string, any>) {
|
||||
const status = String(detail.payStatus || '')
|
||||
if (status !== 'tfqrz' && status !== 'ytf') return false
|
||||
return hasRefundApplyInfo(detail)
|
||||
}
|
||||
|
||||
function hasRefundFinanceRemark(detail: Record<string, any>) {
|
||||
return String(detail.refundFinanceRemark || '').trim() !== ''
|
||||
}
|
||||
|
||||
function hasRefundFinanceConfirmAttachments(detail: Record<string, any>) {
|
||||
return refundFinanceConfirmAttachmentFiles(detail).length > 0
|
||||
}
|
||||
|
||||
/** 财务退费确认:已退费时展示的财务确认信息 */
|
||||
function showRefundFinanceConfirm(detail: Record<string, any>) {
|
||||
if (String(detail.payStatus || '') !== 'ytf') return false
|
||||
return hasRefundFinanceRemark(detail) || hasRefundFinanceConfirmAttachments(detail)
|
||||
}
|
||||
|
||||
interface PaymentFlowNode {
|
||||
key: string
|
||||
title: string
|
||||
remarkLabel: string
|
||||
attachmentLabel: string
|
||||
remark?: unknown
|
||||
amount?: unknown
|
||||
attachments: Array<Record<string, any>>
|
||||
}
|
||||
|
||||
/** 缴费明细 — 财务/退费流程横向节点(按业务顺序) */
|
||||
function buildPaymentFlowNodes(detail: Record<string, any>): PaymentFlowNode[] {
|
||||
const nodes: PaymentFlowNode[] = []
|
||||
if (showPaymentFinanceConfirm(detail)) {
|
||||
nodes.push({
|
||||
key: 'receipt-finance',
|
||||
title: '缴费财务确认',
|
||||
remarkLabel: '财务备注',
|
||||
attachmentLabel: '财务附件',
|
||||
remark: detail.financeRemark,
|
||||
attachments: financeConfirmAttachmentFiles(detail)
|
||||
})
|
||||
}
|
||||
if (showRefundApply(detail)) {
|
||||
nodes.push({
|
||||
key: 'refund-apply',
|
||||
title: '退费确认申请',
|
||||
remarkLabel: '退费备注',
|
||||
attachmentLabel: '退费附件',
|
||||
remark: detail.refundRemark,
|
||||
amount: detail.refundAmount,
|
||||
attachments: refundAttachmentFiles(detail)
|
||||
})
|
||||
}
|
||||
if (showRefundFinanceConfirm(detail)) {
|
||||
nodes.push({
|
||||
key: 'refund-finance',
|
||||
title: '财务退费确认',
|
||||
remarkLabel: '财务备注',
|
||||
attachmentLabel: '财务附件',
|
||||
remark: detail.refundFinanceRemark,
|
||||
attachments: refundFinanceConfirmAttachmentFiles(detail)
|
||||
})
|
||||
}
|
||||
return nodes
|
||||
}
|
||||
|
||||
function fullFileUrl(suffix: string) {
|
||||
if (!suffix) return ''
|
||||
if (suffix.startsWith('http://') || suffix.startsWith('https://') || suffix.startsWith('/'))
|
||||
@@ -2753,7 +2647,7 @@
|
||||
font-size: 10px;
|
||||
margin-top: 6px;
|
||||
text-align: center;
|
||||
max-width: 80px;
|
||||
max-width: 96px;
|
||||
line-height: 1.3;
|
||||
|
||||
&.done {
|
||||
|
||||
@@ -327,79 +327,157 @@
|
||||
destroy-on-close
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
:detail="confirmRow"
|
||||
mode="refund"
|
||||
title="退费申请信息(请核对)"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form
|
||||
ref="confirmFormRef"
|
||||
:model="confirmForm"
|
||||
label-position="top"
|
||||
class="biz-dialog-form"
|
||||
>
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="财务确认退费备注" class="form-col-span-2">
|
||||
<el-input
|
||||
v-model="confirmForm.financeRemark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="选填"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" class="form-col-span-2">
|
||||
<div class="attachment-upload">
|
||||
<div class="attachment-list">
|
||||
<el-upload
|
||||
:auto-upload="false"
|
||||
:show-file-list="false"
|
||||
:multiple="true"
|
||||
accept="image/*,video/*,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.zip,.rar"
|
||||
@change="handleConfirmAttachmentChange"
|
||||
>
|
||||
<div class="upload-card">
|
||||
<el-icon :size="22" color="#047857"><Plus /></el-icon>
|
||||
<span class="upload-card-text">上传附件</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div
|
||||
v-for="(file, fIdx) in confirmForm.attachments"
|
||||
:key="file.id || fIdx"
|
||||
class="attachment-item"
|
||||
:class="{ 'is-uploading': file._uploading }"
|
||||
>
|
||||
<div class="attachment-preview">
|
||||
<template v-if="file.fileUrl && isImageUrl(file.fileUrl)">
|
||||
<img :src="fullFileUrl(file.fileUrl)" :alt="file.fileName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="attachment-preview__icon attachment-preview__icon--doc">
|
||||
<el-icon :size="28"><Document /></el-icon>
|
||||
<template v-if="isBasicExperiment">
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
:detail="confirmRow"
|
||||
active-step-key="finance-refund"
|
||||
@download="handleDownloadFile"
|
||||
>
|
||||
<template #action-panel>
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form
|
||||
ref="confirmFormRef"
|
||||
:model="confirmForm"
|
||||
label-position="top"
|
||||
class="biz-dialog-form"
|
||||
>
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="财务确认退费备注" class="form-col-span-2">
|
||||
<el-input
|
||||
v-model="confirmForm.financeRemark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="选填"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" class="form-col-span-2">
|
||||
<div class="attachment-upload">
|
||||
<div class="attachment-list">
|
||||
<el-upload
|
||||
:auto-upload="false"
|
||||
:show-file-list="false"
|
||||
:multiple="true"
|
||||
accept="image/*,video/*,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.zip,.rar"
|
||||
@change="handleConfirmAttachmentChange"
|
||||
>
|
||||
<div class="upload-card">
|
||||
<el-icon :size="22" color="#047857"><Plus /></el-icon>
|
||||
<span class="upload-card-text">上传附件</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div
|
||||
v-for="(file, fIdx) in confirmForm.attachments"
|
||||
:key="file.id || fIdx"
|
||||
class="attachment-item"
|
||||
:class="{ 'is-uploading': file._uploading }"
|
||||
>
|
||||
<div class="attachment-preview">
|
||||
<template v-if="file.fileUrl && isImageUrl(file.fileUrl)">
|
||||
<img :src="fullFileUrl(file.fileUrl)" :alt="file.fileName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="attachment-preview__icon attachment-preview__icon--doc">
|
||||
<el-icon :size="28"><Document /></el-icon>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="attachment-footer">
|
||||
<span class="attachment-name" :title="file.fileName">{{
|
||||
file.fileName
|
||||
}}</span>
|
||||
<el-icon
|
||||
class="action-btn"
|
||||
title="删除"
|
||||
@click="removeConfirmAttachment(fIdx)"
|
||||
>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<p class="form-tip">支持图片、文档等,多个附件将一并提交。</p>
|
||||
</div>
|
||||
<div class="attachment-footer">
|
||||
<span class="attachment-name" :title="file.fileName">{{
|
||||
file.fileName
|
||||
}}</span>
|
||||
<el-icon
|
||||
class="action-btn"
|
||||
title="删除"
|
||||
@click="removeConfirmAttachment(fIdx)"
|
||||
>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
</ClinicalPaymentConfirmTimeline>
|
||||
</template>
|
||||
<template v-else>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
:detail="confirmRow"
|
||||
mode="refund"
|
||||
title="退费申请信息(请核对)"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form
|
||||
ref="confirmFormRef"
|
||||
:model="confirmForm"
|
||||
label-position="top"
|
||||
class="biz-dialog-form"
|
||||
>
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="财务确认退费备注" class="form-col-span-2">
|
||||
<el-input
|
||||
v-model="confirmForm.financeRemark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="选填"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" class="form-col-span-2">
|
||||
<div class="attachment-upload">
|
||||
<div class="attachment-list">
|
||||
<el-upload
|
||||
:auto-upload="false"
|
||||
:show-file-list="false"
|
||||
:multiple="true"
|
||||
accept="image/*,video/*,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.zip,.rar"
|
||||
@change="handleConfirmAttachmentChange"
|
||||
>
|
||||
<div class="upload-card">
|
||||
<el-icon :size="22" color="#047857"><Plus /></el-icon>
|
||||
<span class="upload-card-text">上传附件</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div
|
||||
v-for="(file, fIdx) in confirmForm.attachments"
|
||||
:key="file.id || fIdx"
|
||||
class="attachment-item"
|
||||
:class="{ 'is-uploading': file._uploading }"
|
||||
>
|
||||
<div class="attachment-preview">
|
||||
<template v-if="file.fileUrl && isImageUrl(file.fileUrl)">
|
||||
<img :src="fullFileUrl(file.fileUrl)" :alt="file.fileName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="attachment-preview__icon attachment-preview__icon--doc">
|
||||
<el-icon :size="28"><Document /></el-icon>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="attachment-footer">
|
||||
<span class="attachment-name" :title="file.fileName">{{
|
||||
file.fileName
|
||||
}}</span>
|
||||
<el-icon
|
||||
class="action-btn"
|
||||
title="删除"
|
||||
@click="removeConfirmAttachment(fIdx)"
|
||||
>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="form-tip">支持图片、文档等,多个附件将一并提交。</p>
|
||||
</div>
|
||||
<p class="form-tip">支持图片、文档等,多个附件将一并提交。</p>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="dialogVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
@@ -428,34 +506,41 @@
|
||||
modal-class="protocol-dialog-mask"
|
||||
destroy-on-close
|
||||
>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
v-if="isBasicExperiment"
|
||||
:detail="viewRow"
|
||||
mode="refund"
|
||||
title="退费申请信息"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{
|
||||
viewRow?.refundFinanceConfirmTime || viewRow?.updateTime || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.refundFinanceRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="viewAttachmentFiles"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<template v-else>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
:detail="viewRow"
|
||||
mode="refund"
|
||||
title="退费申请信息"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{
|
||||
viewRow?.refundFinanceConfirmTime || viewRow?.updateTime || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.refundFinanceRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="viewAttachmentFiles"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="viewDialogVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
@@ -487,6 +572,7 @@
|
||||
} from '@/api/business'
|
||||
import { fetchUploadAttachment } from '@/api/business'
|
||||
import ClinicalPaymentSubmitReadonly from '@/components/business/clinical-payment-submit-readonly/index.vue'
|
||||
import ClinicalPaymentConfirmTimeline from '@/components/business/clinical-payment-confirm-timeline/index.vue'
|
||||
import ProtocolAttachmentReadonly from '@/views/cell-storage/protocol/ProtocolAttachmentReadonly.vue'
|
||||
import { formatMoneyDisplay } from '@/utils/money-format'
|
||||
import { getPilotBizConfig, resolvePilotBizType } from '@/config/pilot-biz-type'
|
||||
@@ -651,14 +737,14 @@
|
||||
|
||||
function openConfirm(row: Record<string, unknown>) {
|
||||
currentDetailId.value = String(row.id)
|
||||
confirmRow.value = row
|
||||
confirmRow.value = { ...row, bizType: row.bizType || resolvePilotBizType(props.bizType) }
|
||||
confirmForm.financeRemark = ''
|
||||
confirmForm.attachments = []
|
||||
dialogVisible.value = true
|
||||
}
|
||||
|
||||
function openViewConfirm(row: Record<string, unknown>) {
|
||||
viewRow.value = row
|
||||
viewRow.value = { ...row, bizType: row.bizType || resolvePilotBizType(props.bizType) }
|
||||
viewDialogVisible.value = true
|
||||
}
|
||||
|
||||
|
||||
@@ -355,80 +355,159 @@
|
||||
destroy-on-close
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
:detail="confirmRow"
|
||||
mode="receipt"
|
||||
title="缴费明细(请核对)"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form
|
||||
ref="confirmFormRef"
|
||||
:model="confirmForm"
|
||||
:rules="confirmFormRules"
|
||||
label-position="top"
|
||||
class="biz-dialog-form"
|
||||
>
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="财务确认收款备注" prop="financeRemark" class="form-col-span-2">
|
||||
<el-input
|
||||
v-model="confirmForm.financeRemark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="选填"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" class="form-col-span-2">
|
||||
<div class="attachment-upload">
|
||||
<div class="attachment-list">
|
||||
<el-upload
|
||||
:auto-upload="false"
|
||||
:show-file-list="false"
|
||||
:multiple="true"
|
||||
accept="image/*,video/*,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.zip,.rar"
|
||||
@change="handleConfirmAttachmentChange"
|
||||
>
|
||||
<div class="upload-card">
|
||||
<el-icon :size="22" color="#047857"><Plus /></el-icon>
|
||||
<span class="upload-card-text">上传附件</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div
|
||||
v-for="(file, fIdx) in confirmForm.attachments"
|
||||
:key="file.id || fIdx"
|
||||
class="attachment-item"
|
||||
:class="{ 'is-uploading': file._uploading }"
|
||||
>
|
||||
<div class="attachment-preview">
|
||||
<template v-if="file.fileUrl && isImageUrl(file.fileUrl)">
|
||||
<img :src="fullFileUrl(file.fileUrl)" :alt="file.fileName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="attachment-preview__icon attachment-preview__icon--doc">
|
||||
<el-icon :size="28"><Document /></el-icon>
|
||||
<template v-if="isBasicExperiment">
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
:detail="confirmRow"
|
||||
active-step-key="finance-receipt"
|
||||
@download="handleDownloadFile"
|
||||
>
|
||||
<template #action-panel>
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form
|
||||
ref="confirmFormRef"
|
||||
:model="confirmForm"
|
||||
:rules="confirmFormRules"
|
||||
label-position="top"
|
||||
class="biz-dialog-form"
|
||||
>
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="财务确认收款备注" prop="financeRemark" class="form-col-span-2">
|
||||
<el-input
|
||||
v-model="confirmForm.financeRemark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="选填"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" class="form-col-span-2">
|
||||
<div class="attachment-upload">
|
||||
<div class="attachment-list">
|
||||
<el-upload
|
||||
:auto-upload="false"
|
||||
:show-file-list="false"
|
||||
:multiple="true"
|
||||
accept="image/*,video/*,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.zip,.rar"
|
||||
@change="handleConfirmAttachmentChange"
|
||||
>
|
||||
<div class="upload-card">
|
||||
<el-icon :size="22" color="#047857"><Plus /></el-icon>
|
||||
<span class="upload-card-text">上传附件</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div
|
||||
v-for="(file, fIdx) in confirmForm.attachments"
|
||||
:key="file.id || fIdx"
|
||||
class="attachment-item"
|
||||
:class="{ 'is-uploading': file._uploading }"
|
||||
>
|
||||
<div class="attachment-preview">
|
||||
<template v-if="file.fileUrl && isImageUrl(file.fileUrl)">
|
||||
<img :src="fullFileUrl(file.fileUrl)" :alt="file.fileName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="attachment-preview__icon attachment-preview__icon--doc">
|
||||
<el-icon :size="28"><Document /></el-icon>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="attachment-footer">
|
||||
<span class="attachment-name" :title="file.fileName">{{
|
||||
file.fileName
|
||||
}}</span>
|
||||
<el-icon
|
||||
class="action-btn"
|
||||
title="删除"
|
||||
@click="removeConfirmAttachment(fIdx)"
|
||||
>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<p class="form-tip">支持图片、文档等,多个附件将一并提交。</p>
|
||||
</div>
|
||||
<div class="attachment-footer">
|
||||
<span class="attachment-name" :title="file.fileName">{{
|
||||
file.fileName
|
||||
}}</span>
|
||||
<el-icon
|
||||
class="action-btn"
|
||||
title="删除"
|
||||
@click="removeConfirmAttachment(fIdx)"
|
||||
>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
</ClinicalPaymentConfirmTimeline>
|
||||
</template>
|
||||
<template v-else>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
:detail="confirmRow"
|
||||
mode="receipt"
|
||||
title="缴费明细(请核对)"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认</h4>
|
||||
<el-form
|
||||
ref="confirmFormRef"
|
||||
:model="confirmForm"
|
||||
:rules="confirmFormRules"
|
||||
label-position="top"
|
||||
class="biz-dialog-form"
|
||||
>
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="财务确认收款备注" prop="financeRemark" class="form-col-span-2">
|
||||
<el-input
|
||||
v-model="confirmForm.financeRemark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="选填"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" class="form-col-span-2">
|
||||
<div class="attachment-upload">
|
||||
<div class="attachment-list">
|
||||
<el-upload
|
||||
:auto-upload="false"
|
||||
:show-file-list="false"
|
||||
:multiple="true"
|
||||
accept="image/*,video/*,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.zip,.rar"
|
||||
@change="handleConfirmAttachmentChange"
|
||||
>
|
||||
<div class="upload-card">
|
||||
<el-icon :size="22" color="#047857"><Plus /></el-icon>
|
||||
<span class="upload-card-text">上传附件</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div
|
||||
v-for="(file, fIdx) in confirmForm.attachments"
|
||||
:key="file.id || fIdx"
|
||||
class="attachment-item"
|
||||
:class="{ 'is-uploading': file._uploading }"
|
||||
>
|
||||
<div class="attachment-preview">
|
||||
<template v-if="file.fileUrl && isImageUrl(file.fileUrl)">
|
||||
<img :src="fullFileUrl(file.fileUrl)" :alt="file.fileName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="attachment-preview__icon attachment-preview__icon--doc">
|
||||
<el-icon :size="28"><Document /></el-icon>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="attachment-footer">
|
||||
<span class="attachment-name" :title="file.fileName">{{
|
||||
file.fileName
|
||||
}}</span>
|
||||
<el-icon
|
||||
class="action-btn"
|
||||
title="删除"
|
||||
@click="removeConfirmAttachment(fIdx)"
|
||||
>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="form-tip">支持图片、文档等,多个附件将一并提交。</p>
|
||||
</div>
|
||||
<p class="form-tip">支持图片、文档等,多个附件将一并提交。</p>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="dialogVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
@@ -457,34 +536,41 @@
|
||||
modal-class="protocol-dialog-mask"
|
||||
destroy-on-close
|
||||
>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
v-if="isBasicExperiment"
|
||||
:detail="viewRow"
|
||||
mode="receipt"
|
||||
title="缴费明细"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{
|
||||
viewRow?.financeConfirmTime || viewRow?.updateTime || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.financeRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="viewAttachmentFiles"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<template v-else>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
:detail="viewRow"
|
||||
mode="receipt"
|
||||
title="缴费明细"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{
|
||||
viewRow?.financeConfirmTime || viewRow?.updateTime || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.financeRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="viewAttachmentFiles"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="viewDialogVisible = false">
|
||||
<el-icon><Close /></el-icon>
|
||||
@@ -518,6 +604,7 @@
|
||||
} from '@element-plus/icons-vue'
|
||||
import RefundConfirmTab from './RefundConfirmTab.vue'
|
||||
import ClinicalPaymentSubmitReadonly from '@/components/business/clinical-payment-submit-readonly/index.vue'
|
||||
import ClinicalPaymentConfirmTimeline from '@/components/business/clinical-payment-confirm-timeline/index.vue'
|
||||
import ProtocolAttachmentReadonly from '@/views/cell-storage/protocol/ProtocolAttachmentReadonly.vue'
|
||||
import {
|
||||
confirmClinicalReceipt,
|
||||
@@ -711,14 +798,14 @@
|
||||
|
||||
function openConfirm(row: Record<string, unknown>) {
|
||||
currentDetailId.value = String(row.id)
|
||||
confirmRow.value = row
|
||||
confirmRow.value = { ...row, bizType: row.bizType || effectiveBizType.value }
|
||||
confirmForm.financeRemark = ''
|
||||
confirmForm.attachments = []
|
||||
dialogVisible.value = true
|
||||
}
|
||||
|
||||
function openViewConfirm(row: Record<string, unknown>) {
|
||||
viewRow.value = row
|
||||
viewRow.value = { ...row, bizType: row.bizType || effectiveBizType.value }
|
||||
viewDialogVisible.value = true
|
||||
}
|
||||
|
||||
|
||||
@@ -933,7 +933,7 @@
|
||||
}
|
||||
tabs.push({
|
||||
key: 'infusion',
|
||||
label: viewBizConfig.value.planLabel
|
||||
label: cfg.planLabel
|
||||
})
|
||||
return tabs
|
||||
})
|
||||
|
||||
@@ -404,60 +404,69 @@
|
||||
modal-class="protocol-dialog-mask"
|
||||
destroy-on-close
|
||||
>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
:detail="viewRow"
|
||||
mode="full"
|
||||
show-pay-status
|
||||
title="基本信息与提交信息"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<template v-if="showFinanceReceiptInView">
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认收款信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{
|
||||
viewRow?.financeConfirmTime || viewRow?.updateTime || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.financeRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="financeReceiptAttachmentFiles"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<template v-if="isBasicExperiment">
|
||||
<ClinicalPaymentConfirmTimeline
|
||||
:detail="viewRow"
|
||||
show-pay-status
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="showFinanceRefundInView">
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认退费信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{
|
||||
viewRow?.refundFinanceConfirmTime || viewRow?.updateTime || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.refundFinanceRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="financeRefundAttachmentFiles"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<template v-else>
|
||||
<ClinicalPaymentSubmitReadonly
|
||||
:detail="viewRow"
|
||||
mode="full"
|
||||
show-pay-status
|
||||
title="基本信息与提交信息"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
<template v-if="showFinanceReceiptInView">
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认收款信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{
|
||||
viewRow?.financeConfirmTime || viewRow?.updateTime || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.financeRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="financeReceiptAttachmentFiles"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
<template v-if="showFinanceRefundInView">
|
||||
<div class="form-section-divider" />
|
||||
<h4 class="detail-section-title">财务确认退费信息</h4>
|
||||
<el-form label-position="top" class="biz-dialog-form view-confirm-form">
|
||||
<div class="form-grid-2">
|
||||
<el-form-item label="确认时间" class="form-col-span-2">
|
||||
<span class="view-field-text">{{
|
||||
viewRow?.refundFinanceConfirmTime || viewRow?.updateTime || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务备注" class="form-col-span-2">
|
||||
<span class="view-field-text view-field-text--multiline">{{
|
||||
viewRow?.refundFinanceRemark || '—'
|
||||
}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="财务确认附件" class="form-col-span-2">
|
||||
<ProtocolAttachmentReadonly
|
||||
:files="financeRefundAttachmentFiles"
|
||||
@download="handleDownloadFile"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
</template>
|
||||
<template #footer>
|
||||
<el-button class="btn-ghost" @click="viewDialogVisible = false">
|
||||
@@ -491,6 +500,7 @@
|
||||
fetchUploadAttachment
|
||||
} from '@/api/business'
|
||||
import ClinicalPaymentSubmitReadonly from '@/components/business/clinical-payment-submit-readonly/index.vue'
|
||||
import ClinicalPaymentConfirmTimeline from '@/components/business/clinical-payment-confirm-timeline/index.vue'
|
||||
import ProtocolAttachmentReadonly from '@/views/cell-storage/protocol/ProtocolAttachmentReadonly.vue'
|
||||
import { formatMoneyDisplay } from '@/utils/money-format'
|
||||
import {
|
||||
@@ -877,7 +887,7 @@
|
||||
}
|
||||
|
||||
function handleView(row: Record<string, unknown>) {
|
||||
viewRow.value = row
|
||||
viewRow.value = { ...row, bizType: row.bizType || resolvePilotBizType(props.bizType) }
|
||||
viewDialogVisible.value = true
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user