feat(i18n): migrate lab, inspection, report, medication, data dictionary pages to vue-i18n (676 keys)
This commit is contained in:
@@ -2021,7 +2021,12 @@
|
|||||||
},
|
},
|
||||||
"emr": {
|
"emr": {
|
||||||
"timeliness": {
|
"timeliness": {
|
||||||
"stats": { "pending": "Pending", "completed": "Completed", "overdue": "Overdue", "rate": "Completion Rate" },
|
"stats": {
|
||||||
|
"pending": "Pending",
|
||||||
|
"completed": "Completed",
|
||||||
|
"overdue": "Overdue",
|
||||||
|
"rate": "Completion Rate"
|
||||||
|
},
|
||||||
"department": "Department",
|
"department": "Department",
|
||||||
"emrTypeLabel": "EMR Type",
|
"emrTypeLabel": "EMR Type",
|
||||||
"statusLabel": "Status",
|
"statusLabel": "Status",
|
||||||
@@ -2032,8 +2037,17 @@
|
|||||||
"requiredHours": "Required Hours(h)",
|
"requiredHours": "Required Hours(h)",
|
||||||
"deadline": "Deadline",
|
"deadline": "Deadline",
|
||||||
"actualCompleteTime": "Actual Complete Time",
|
"actualCompleteTime": "Actual Complete Time",
|
||||||
"emrType": { "admission": "Admission Record", "firstCourse": "First Course", "dailyCourse": "Daily Course", "discharge": "Discharge Record" },
|
"emrType": {
|
||||||
"status": { "pending": "Pending", "completed": "Completed", "overdue": "Overdue" }
|
"admission": "Admission Record",
|
||||||
|
"firstCourse": "First Course",
|
||||||
|
"dailyCourse": "Daily Course",
|
||||||
|
"discharge": "Discharge Record"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"pending": "Pending",
|
||||||
|
"completed": "Completed",
|
||||||
|
"overdue": "Overdue"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"sync": {
|
"sync": {
|
||||||
"title": "EMR Data Sync",
|
"title": "EMR Data Sync",
|
||||||
@@ -3273,5 +3287,739 @@
|
|||||||
"inputPatientId": "Enter patient ID",
|
"inputPatientId": "Enter patient ID",
|
||||||
"inputRecordId": "Enter record ID"
|
"inputRecordId": "Enter record ID"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"lab": {
|
||||||
|
"eqa": {
|
||||||
|
"title": "External Quality Assessment",
|
||||||
|
"totalRecords": "Total {n}",
|
||||||
|
"qualified": "Qualified {n}",
|
||||||
|
"unqualified": "Unqualified {n}",
|
||||||
|
"inputTitle": "Record EQA",
|
||||||
|
"assessmentName": "Assessment Name",
|
||||||
|
"assessmentNamePlaceholder": "e.g. 2026 Q1 Biochemistry",
|
||||||
|
"assessmentOrg": "Organization",
|
||||||
|
"year": "Year",
|
||||||
|
"quarter": "Quarter",
|
||||||
|
"sampleCode": "Sample Code",
|
||||||
|
"testItem": "Test Item",
|
||||||
|
"targetValue": "Target Value",
|
||||||
|
"actualValue": "Actual Value",
|
||||||
|
"operator": "Operator",
|
||||||
|
"submit": "Submit",
|
||||||
|
"resultTitle": "EQA Results",
|
||||||
|
"queryPlaceholder": "Assessment Name",
|
||||||
|
"query": "Query",
|
||||||
|
"printReport": "Print Report",
|
||||||
|
"deviationRate": "Deviation %",
|
||||||
|
"judgment": "Judgment",
|
||||||
|
"qualifiedResult": "Qualified",
|
||||||
|
"unqualifiedResult": "Unqualified",
|
||||||
|
"reportTitle": "EQA Report",
|
||||||
|
"yearQuarter": "Year/Quarter",
|
||||||
|
"reportDate": "Report Date",
|
||||||
|
"pleaseFillRequired": "Please fill in assessment name and test item",
|
||||||
|
"submitSuccessQualified": "Submitted, Judgment: Qualified",
|
||||||
|
"submitSuccessUnqualified": "Submitted, Judgment: Unqualified",
|
||||||
|
"submitSuccess": "Submitted successfully",
|
||||||
|
"noDataToPrint": "No data to print"
|
||||||
|
},
|
||||||
|
"qc": {
|
||||||
|
"title": "Internal Quality Control",
|
||||||
|
"totalRecords": "Total {n}",
|
||||||
|
"passed": "Passed {n}",
|
||||||
|
"failed": "Failed {n}",
|
||||||
|
"inputTitle": "Record QC Data",
|
||||||
|
"qcItem": "QC Item",
|
||||||
|
"qcItemPlaceholder": "e.g. ALT, GLU",
|
||||||
|
"instrument": "Instrument",
|
||||||
|
"instrumentPlaceholder": "Instrument Name",
|
||||||
|
"targetValue": "Target Value",
|
||||||
|
"actualValue": "Actual Value",
|
||||||
|
"qcDate": "QC Date",
|
||||||
|
"operator": "Operator",
|
||||||
|
"remarks": "Remarks",
|
||||||
|
"runWestgard": "Run Westgard",
|
||||||
|
"chartTitle": "QC Chart",
|
||||||
|
"queryItemPlaceholder": "QC Item",
|
||||||
|
"resultFilter": "Result",
|
||||||
|
"pass": "Pass",
|
||||||
|
"outOfControl": "Out of Control",
|
||||||
|
"resultListTitle": "QC Results",
|
||||||
|
"sdValue": "SD",
|
||||||
|
"cvRate": "CV%",
|
||||||
|
"westgardRule": "Westgard Rule",
|
||||||
|
"date": "Date",
|
||||||
|
"pleaseFillRequired": "Please fill in QC item and actual value",
|
||||||
|
"westgardPass": "Westgard: ",
|
||||||
|
"westgardFail": "Westgard: ",
|
||||||
|
"actualValueLegend": "Actual",
|
||||||
|
"targetValueLegend": "Target",
|
||||||
|
"yAxisName": "Value"
|
||||||
|
},
|
||||||
|
"history": {
|
||||||
|
"title": "Lab History Comparison",
|
||||||
|
"query": "Query",
|
||||||
|
"exportReport": "Export Report",
|
||||||
|
"patientId": "Patient ID",
|
||||||
|
"patientIdPlaceholder": "Enter Patient ID",
|
||||||
|
"testItem": "Test Item",
|
||||||
|
"testItemPlaceholder": "e.g. Glucose, CBC",
|
||||||
|
"dateRange": "Date Range",
|
||||||
|
"startPlaceholder": "Start",
|
||||||
|
"endPlaceholder": "End",
|
||||||
|
"trendTitle": "Test Trends",
|
||||||
|
"queryFirst": "Please query patient data first",
|
||||||
|
"abnormalTitle": "Abnormal Statistics",
|
||||||
|
"detailTitle": "Test Results Detail",
|
||||||
|
"seqNo": "No.",
|
||||||
|
"result": "Result",
|
||||||
|
"unit": "Unit",
|
||||||
|
"refRange": "Reference Range",
|
||||||
|
"abnormal": "Abnormal",
|
||||||
|
"normal": "Normal",
|
||||||
|
"testDate": "Test Date",
|
||||||
|
"department": "Department",
|
||||||
|
"reportTime": "Report Time",
|
||||||
|
"totalItems": "Total Items",
|
||||||
|
"normalItems": "Normal",
|
||||||
|
"abnormalItems": "Abnormal",
|
||||||
|
"abnormalRate": "Abnormal Rate",
|
||||||
|
"testCount": "Test Count",
|
||||||
|
"highestAbnormal": "Most Abnormal",
|
||||||
|
"highItems": "{n} high",
|
||||||
|
"none": "None",
|
||||||
|
"highCategory": "High(H)",
|
||||||
|
"lowCategory": "Low(L)",
|
||||||
|
"otherAbnormal": "Other",
|
||||||
|
"exportInDev": "Export feature in development",
|
||||||
|
"items": "items"
|
||||||
|
},
|
||||||
|
"enhanced": {
|
||||||
|
"title": "Lab System Enhanced",
|
||||||
|
"iqcTab": "Internal QC",
|
||||||
|
"eqaTab": "External EQA",
|
||||||
|
"totalTests": "Total Tests",
|
||||||
|
"qualified": "Qualified",
|
||||||
|
"outOfControl": "Out of Control",
|
||||||
|
"addRecord": "Add Record",
|
||||||
|
"instrument": "Instrument",
|
||||||
|
"qcItem": "QC Item",
|
||||||
|
"qcDate": "QC Date",
|
||||||
|
"targetValue": "Target",
|
||||||
|
"actualValue": "Actual",
|
||||||
|
"rule": "Rule",
|
||||||
|
"result": "Result",
|
||||||
|
"qualifiedResult": "Qualified",
|
||||||
|
"outOfControlResult": "Out of Control",
|
||||||
|
"assessmentProject": "Assessment",
|
||||||
|
"assessmentOrg": "Organization",
|
||||||
|
"testItem": "Test Item",
|
||||||
|
"deviationRate": "Deviation %",
|
||||||
|
"addSuccess": "Added successfully"
|
||||||
|
},
|
||||||
|
"appointment": {
|
||||||
|
"title": "Exam Appointment Queue",
|
||||||
|
"patientPlaceholder": "Patient",
|
||||||
|
"statusPlaceholder": "Status",
|
||||||
|
"query": "Query",
|
||||||
|
"newAppointment": "New Appointment",
|
||||||
|
"queueNumber": "Queue#",
|
||||||
|
"patient": "Patient",
|
||||||
|
"examName": "Exam",
|
||||||
|
"appointDate": "Date",
|
||||||
|
"timeSlot": "Time Slot",
|
||||||
|
"room": "Room",
|
||||||
|
"status": "Status",
|
||||||
|
"appointed": "Appointed",
|
||||||
|
"checkedIn": "Checked In",
|
||||||
|
"examining": "Examining",
|
||||||
|
"completed": "Completed",
|
||||||
|
"operation": "Action",
|
||||||
|
"checkin": "Check In",
|
||||||
|
"start": "Start",
|
||||||
|
"complete": "Complete",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"dialogTitle": "New Appointment",
|
||||||
|
"patientId": "Patient ID",
|
||||||
|
"encounterId": "Encounter ID",
|
||||||
|
"patientName": "Patient Name",
|
||||||
|
"timeSlotPlaceholder": "e.g. AM/PM",
|
||||||
|
"appointBtn": "Appoint",
|
||||||
|
"appointSuccess": "Appointment created",
|
||||||
|
"checkinSuccess": "Checked in",
|
||||||
|
"startSuccess": "Exam started",
|
||||||
|
"completeSuccess": "Exam completed",
|
||||||
|
"cancelSuccess": "Cancelled"
|
||||||
|
},
|
||||||
|
"icd10": {
|
||||||
|
"title": "ICD-10 Diagnosis Codes",
|
||||||
|
"keywordPlaceholder": "Code/Name/Pinyin",
|
||||||
|
"query": "Query",
|
||||||
|
"add": "Add",
|
||||||
|
"code": "Code",
|
||||||
|
"diagnosisName": "Diagnosis",
|
||||||
|
"category": "Category",
|
||||||
|
"pinyin": "Pinyin",
|
||||||
|
"operation": "Action",
|
||||||
|
"edit": "Edit",
|
||||||
|
"deleteConfirm": "Confirm delete?",
|
||||||
|
"delete": "Delete",
|
||||||
|
"saveSuccess": "Saved successfully",
|
||||||
|
"deleted": "Deleted",
|
||||||
|
"name": "Name"
|
||||||
|
},
|
||||||
|
"pathway": {
|
||||||
|
"title": "Clinical Pathway Management",
|
||||||
|
"refreshStats": "Refresh Stats",
|
||||||
|
"pathwayCount": "Pathways",
|
||||||
|
"entryCount": "Entries",
|
||||||
|
"completedCount": "Completed",
|
||||||
|
"variationCount": "Variations",
|
||||||
|
"completionRate": "Completion",
|
||||||
|
"pathwayName": "Pathway",
|
||||||
|
"diseaseCode": "Disease Code",
|
||||||
|
"diseaseName": "Disease",
|
||||||
|
"department": "Department",
|
||||||
|
"avgDays": "Avg Days",
|
||||||
|
"avgCost": "Avg Cost",
|
||||||
|
"version": "Version",
|
||||||
|
"operation": "Action",
|
||||||
|
"enterPathway": "Enter",
|
||||||
|
"enterDialogTitle": "Enter Pathway",
|
||||||
|
"pathway": "Pathway",
|
||||||
|
"patientId": "Patient ID",
|
||||||
|
"encounterId": "Encounter ID",
|
||||||
|
"patientName": "Patient Name",
|
||||||
|
"expectedDays": "Expected Days",
|
||||||
|
"expectedCost": "Expected Cost",
|
||||||
|
"confirmEnter": "Confirm",
|
||||||
|
"enterSuccess": "Entered pathway"
|
||||||
|
},
|
||||||
|
"radiology": {
|
||||||
|
"title": "Radiology Report",
|
||||||
|
"statusPlaceholder": "Status",
|
||||||
|
"query": "Query",
|
||||||
|
"newReport": "New Report",
|
||||||
|
"patient": "Patient",
|
||||||
|
"exam": "Exam",
|
||||||
|
"type": "Type",
|
||||||
|
"findings": "Findings",
|
||||||
|
"impression": "Impression",
|
||||||
|
"reporter": "Reporter",
|
||||||
|
"status": "Status",
|
||||||
|
"draft": "Draft",
|
||||||
|
"reported": "Reported",
|
||||||
|
"audited": "Audited",
|
||||||
|
"operation": "Action",
|
||||||
|
"submit": "Submit",
|
||||||
|
"audit": "Audit",
|
||||||
|
"dialogTitle": "New Radiology Report",
|
||||||
|
"applyId": "Apply ID",
|
||||||
|
"encounterId": "Encounter ID",
|
||||||
|
"patientName": "Patient Name",
|
||||||
|
"examName": "Exam Name",
|
||||||
|
"reportType": "Report Type",
|
||||||
|
"reportTypePlaceholder": "e.g. X-ray/CT/MRI",
|
||||||
|
"conclusion": "Conclusion",
|
||||||
|
"reportDoctor": "Report Doctor",
|
||||||
|
"saveSuccess": "Saved successfully",
|
||||||
|
"submitted": "Submitted",
|
||||||
|
"auditedSuccess": "Audited",
|
||||||
|
"auditDoctor": "Audit Doctor",
|
||||||
|
"auditReport": "Audit Report"
|
||||||
|
},
|
||||||
|
"refRange": {
|
||||||
|
"title": "Reference Range",
|
||||||
|
"itemCodePlaceholder": "Item Code",
|
||||||
|
"genderPlaceholder": "Gender",
|
||||||
|
"male": "Male",
|
||||||
|
"female": "Female",
|
||||||
|
"query": "Query",
|
||||||
|
"add": "Add",
|
||||||
|
"code": "Code",
|
||||||
|
"name": "Name",
|
||||||
|
"gender": "Gender",
|
||||||
|
"ageMin": "Min Age",
|
||||||
|
"ageMax": "Max Age",
|
||||||
|
"lowValue": "Lower",
|
||||||
|
"highValue": "Upper",
|
||||||
|
"unit": "Unit",
|
||||||
|
"criticalLow": "Critical Low",
|
||||||
|
"criticalHigh": "Critical High",
|
||||||
|
"operation": "Action",
|
||||||
|
"edit": "Edit",
|
||||||
|
"deleteConfirm": "Confirm delete?",
|
||||||
|
"delete": "Delete",
|
||||||
|
"universal": "All",
|
||||||
|
"ageRange": "Age Range",
|
||||||
|
"refLow": "Ref Lower",
|
||||||
|
"refHigh": "Ref Upper",
|
||||||
|
"saveSuccess": "Saved successfully",
|
||||||
|
"deleted": "Deleted"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"groupRec": {
|
||||||
|
"dataQuery": "Data Query",
|
||||||
|
"patientOrItemPlaceholder": "Patient/Item Name",
|
||||||
|
"createTime": "Create Time",
|
||||||
|
"startDate": "Start Date",
|
||||||
|
"endDate": "End Date",
|
||||||
|
"search": "Search",
|
||||||
|
"reset": "Reset",
|
||||||
|
"sampleReceive": "Sample Receive",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"printBarcode": "Print Barcode",
|
||||||
|
"sampleName": "Sample Name",
|
||||||
|
"sampleVolume": "Sample Volume",
|
||||||
|
"sampleStatus": "Sample Status",
|
||||||
|
"collected": "Collected",
|
||||||
|
"pendingCollection": "Pending",
|
||||||
|
"received": "Received",
|
||||||
|
"receiveTime": "Receive Time",
|
||||||
|
"itemName": "Item Name",
|
||||||
|
"patientName": "Patient Name",
|
||||||
|
"gender": "Gender",
|
||||||
|
"pendingReceive": "Pending",
|
||||||
|
"receivedStatus": "Received",
|
||||||
|
"orderingDoctor": "Ordering Doctor",
|
||||||
|
"orderingTime": "Ordering Time",
|
||||||
|
"operationSuccess": "Operation successful"
|
||||||
|
},
|
||||||
|
"instrument": {
|
||||||
|
"typeCatalog": "Instrument Types",
|
||||||
|
"all": "All",
|
||||||
|
"instrumentName": "Instrument",
|
||||||
|
"nameCodePlaceholder": "Name/Code/",
|
||||||
|
"status": "Status",
|
||||||
|
"add": "Add",
|
||||||
|
"disable": "Disable",
|
||||||
|
"enable": "Enable",
|
||||||
|
"query": "Query",
|
||||||
|
"instrumentCode": "Code",
|
||||||
|
"instrumentNameCol": "Name",
|
||||||
|
"mainCode": "Main Code",
|
||||||
|
"type": "Type",
|
||||||
|
"model": "Model",
|
||||||
|
"manufacturer": "Manufacturer",
|
||||||
|
"serialNumber": "Serial No.",
|
||||||
|
"purchasingCompany": "Purchaser",
|
||||||
|
"contactPerson": "Contact",
|
||||||
|
"purchaseDate": "Purchase Date",
|
||||||
|
"originalPrice": "Original Price",
|
||||||
|
"transactionPrice": "Transaction Price",
|
||||||
|
"installationDate": "Install Date",
|
||||||
|
"installationPerson": "Installer",
|
||||||
|
"maintenancePerson": "Maintainer",
|
||||||
|
"useDepartment": "Department",
|
||||||
|
"identificationPerson": "Identifier",
|
||||||
|
"recordedTemperature": "Temperature",
|
||||||
|
"accessories": "Accessories",
|
||||||
|
"instrumentStatus": "Status",
|
||||||
|
"damageReportDate": "Damage Date",
|
||||||
|
"recheckable": "Recheckable",
|
||||||
|
"usageStatus": "Usage",
|
||||||
|
"decommissionReason": "Decommission Reason",
|
||||||
|
"remarks": "Remarks",
|
||||||
|
"operation": "Action",
|
||||||
|
"edit": "Edit",
|
||||||
|
"confirmEnable": "Confirm enable?",
|
||||||
|
"enableSuccess": "Enabled successfully",
|
||||||
|
"confirmDisable": "Confirm disable?",
|
||||||
|
"disableSuccess": "Disabled successfully",
|
||||||
|
"addTitle": "Add",
|
||||||
|
"editTitle": "Edit"
|
||||||
|
},
|
||||||
|
"lisConfig": {
|
||||||
|
"testItem": "Test Items",
|
||||||
|
"nameCodePlaceholder": "Name/Code",
|
||||||
|
"query": "Query",
|
||||||
|
"saveConfig": "Save Config",
|
||||||
|
"itemName": "Item Name",
|
||||||
|
"consumableName": "Consumable",
|
||||||
|
"consumablePlaceholder": "Enter consumable name",
|
||||||
|
"add": "Add",
|
||||||
|
"delete": "Delete",
|
||||||
|
"sampleName": "Sample Name",
|
||||||
|
"samplePlaceholder": "Enter sample name",
|
||||||
|
"quantity": "Quantity",
|
||||||
|
"quantityPlaceholder": "Enter quantity",
|
||||||
|
"unit": "Unit",
|
||||||
|
"unitPlaceholder": "Enter unit",
|
||||||
|
"observationName": "Observation",
|
||||||
|
"observationCode": "Obs Code",
|
||||||
|
"observationPlaceholder": "Enter observation name",
|
||||||
|
"saveSuccess": "Saved successfully",
|
||||||
|
"duplicateMaterial": "Duplicate material!",
|
||||||
|
"duplicateSample": "Duplicate sample!",
|
||||||
|
"duplicateObservation": "Duplicate observation!"
|
||||||
|
},
|
||||||
|
"observation": {
|
||||||
|
"typeCatalog": "Observation Types",
|
||||||
|
"all": "All",
|
||||||
|
"definitionName": "Definition",
|
||||||
|
"nameCodePlaceholder": "Name/Code",
|
||||||
|
"status": "Status",
|
||||||
|
"add": "Add",
|
||||||
|
"disable": "Disable",
|
||||||
|
"enable": "Enable",
|
||||||
|
"query": "Query",
|
||||||
|
"observationName": "Name",
|
||||||
|
"observationCode": "Code",
|
||||||
|
"observationType": "Type",
|
||||||
|
"refRange": "Ref Range",
|
||||||
|
"instrument": "Instrument",
|
||||||
|
"statusCol": "Status",
|
||||||
|
"operation": "Action",
|
||||||
|
"edit": "Edit",
|
||||||
|
"confirmEnable": "Confirm enable?",
|
||||||
|
"enableSuccess": "Enabled successfully",
|
||||||
|
"confirmDisable": "Confirm disable?",
|
||||||
|
"disableSuccess": "Disabled successfully",
|
||||||
|
"addTitle": "Add",
|
||||||
|
"editTitle": "Edit"
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"dataQuery": "Data Query",
|
||||||
|
"patientOrItemPlaceholder": "Patient/Item Name",
|
||||||
|
"createTime": "Create Time",
|
||||||
|
"startDate": "Start Date",
|
||||||
|
"endDate": "End Date",
|
||||||
|
"search": "Search",
|
||||||
|
"reset": "Reset",
|
||||||
|
"name": "Name",
|
||||||
|
"result": "Result",
|
||||||
|
"sample": "Sample",
|
||||||
|
"refRange": "Ref Range",
|
||||||
|
"observer": "Observer",
|
||||||
|
"observationTime": "Obs Time",
|
||||||
|
"itemName": "Item Name",
|
||||||
|
"patientName": "Patient Name",
|
||||||
|
"gender": "Gender",
|
||||||
|
"orderingDoctor": "Doctor",
|
||||||
|
"orderingTime": "Order Time",
|
||||||
|
"operation": "Action",
|
||||||
|
"printReport": "Print Report"
|
||||||
|
},
|
||||||
|
"sampleCollection": {
|
||||||
|
"dataQuery": "Data Query",
|
||||||
|
"patientOrItemPlaceholder": "Patient/Item Name",
|
||||||
|
"createTime": "Create Time",
|
||||||
|
"startDate": "Start Date",
|
||||||
|
"endDate": "End Date",
|
||||||
|
"search": "Search",
|
||||||
|
"reset": "Reset",
|
||||||
|
"collect": "Collect",
|
||||||
|
"mergeTube": "Merge",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"printBarcode": "Print Barcode",
|
||||||
|
"sampleName": "Sample Name",
|
||||||
|
"sampleVolume": "Sample Volume",
|
||||||
|
"collectionStatus": "Status",
|
||||||
|
"collected": "Collected",
|
||||||
|
"pendingCollection": "Pending",
|
||||||
|
"collectionTime": "Collection Time",
|
||||||
|
"itemName": "Item Name",
|
||||||
|
"patientName": "Patient Name",
|
||||||
|
"gender": "Gender",
|
||||||
|
"sampleStatus": "Sample Status",
|
||||||
|
"pendingCollect": "Pending",
|
||||||
|
"collectedStatus": "Collected",
|
||||||
|
"orderingDoctor": "Doctor",
|
||||||
|
"orderingTime": "Order Time",
|
||||||
|
"operationSuccess": "Operation successful"
|
||||||
|
},
|
||||||
|
"sampleType": {
|
||||||
|
"typeCatalog": "Sample Types",
|
||||||
|
"all": "All",
|
||||||
|
"sampleName": "Sample",
|
||||||
|
"nameCodePlaceholder": "Name/Brand/English/Code/Pinyin",
|
||||||
|
"status": "Status",
|
||||||
|
"addNewSample": "Add Sample",
|
||||||
|
"disable": "Disable",
|
||||||
|
"enable": "Enable",
|
||||||
|
"query": "Query",
|
||||||
|
"sampleType": "Type",
|
||||||
|
"sampleNameCol": "Name",
|
||||||
|
"customCode": "Custom Code",
|
||||||
|
"typeOrder": "Type Order",
|
||||||
|
"externalCode": "External Code",
|
||||||
|
"serialNumber": "Seq No.",
|
||||||
|
"globalType": "Global Type",
|
||||||
|
"pinyin": "Pinyin",
|
||||||
|
"wubi": "Wubi",
|
||||||
|
"specimenClass": "Class",
|
||||||
|
"extendedType": "Extended Type",
|
||||||
|
"whonetCode": "WHONET Code",
|
||||||
|
"statusCol": "Status",
|
||||||
|
"operation": "Action",
|
||||||
|
"edit": "Edit",
|
||||||
|
"confirmEnable": "Confirm enable?",
|
||||||
|
"enableSuccess": "Enabled successfully",
|
||||||
|
"confirmDisable": "Confirm disable?",
|
||||||
|
"disableSuccess": "Disabled successfully",
|
||||||
|
"addTitle": "Add",
|
||||||
|
"editTitle": "Edit"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"biDashboard": {
|
||||||
|
"title": "BI Decision Report",
|
||||||
|
"reportType": "Report Type",
|
||||||
|
"generateReport": "Generate Report",
|
||||||
|
"reportData": "Report Data",
|
||||||
|
"date": "Date",
|
||||||
|
"department": "Department",
|
||||||
|
"revenue": "Revenue(10K)",
|
||||||
|
"cost": "Cost(10K)",
|
||||||
|
"patientCount": "Patients",
|
||||||
|
"monthlyTrend": "Monthly Revenue & Cost Trend",
|
||||||
|
"month": "Month",
|
||||||
|
"departmentRevenue": "Department Revenue Distribution",
|
||||||
|
"totalRevenue": "Total Revenue(10K)",
|
||||||
|
"totalCost": "Total Cost(10K)",
|
||||||
|
"totalProfit": "Total Profit(10K)",
|
||||||
|
"totalPatients": "Total Patients",
|
||||||
|
"totalRecords": "Total Records",
|
||||||
|
"cmiValue": "CMI Value",
|
||||||
|
"generateSuccess": "Report generated successfully",
|
||||||
|
"generateFailed": "Generation failed"
|
||||||
|
},
|
||||||
|
"dimension": {
|
||||||
|
"title": "Multi-Dimension Report",
|
||||||
|
"queryConditions": "Query Conditions",
|
||||||
|
"dimension": "Dimension",
|
||||||
|
"byStatus": "By QC Status",
|
||||||
|
"byDrg": "By DRG Group",
|
||||||
|
"byDiagnosis": "By Primary Diagnosis",
|
||||||
|
"startDate": "Start Date",
|
||||||
|
"endDate": "End Date",
|
||||||
|
"search": "Search",
|
||||||
|
"totalCases": "Total Cases",
|
||||||
|
"totalCost": "Total Cost",
|
||||||
|
"avgCost": "Average Cost",
|
||||||
|
"detail": " Detail",
|
||||||
|
"caseCount": "Cases",
|
||||||
|
"avgLosDays": "Avg Length of Stay",
|
||||||
|
"dayUnit": " days",
|
||||||
|
"loadFailed": "Load failed",
|
||||||
|
"unknownError": "Unknown error"
|
||||||
|
},
|
||||||
|
"dashboard": {
|
||||||
|
"title": "Visual Dashboard",
|
||||||
|
"dashboardType": "Dashboard Type",
|
||||||
|
"overview": "Operations Overview",
|
||||||
|
"finance": "Financial Analysis",
|
||||||
|
"patient": "Patient Statistics",
|
||||||
|
"refresh": "Refresh",
|
||||||
|
"totalRevenue": "Total Revenue(10K)",
|
||||||
|
"totalProfit": "Total Profit(10K)",
|
||||||
|
"totalPatients": "Total Patients",
|
||||||
|
"drgCases": "DRG Cases",
|
||||||
|
"totalCost": "Total Cost(10K)",
|
||||||
|
"latestCmi": "Latest CMI",
|
||||||
|
"costControlRate": "Cost Control Rate",
|
||||||
|
"totalRecords": "Total Records",
|
||||||
|
"chartData": "Chart Data",
|
||||||
|
"monthlyTrend": "Monthly Revenue & Cost Trend",
|
||||||
|
"month": "Month",
|
||||||
|
"revenue": "Revenue(10K)",
|
||||||
|
"cost": "Cost(10K)",
|
||||||
|
"departmentRevenue": "Department Revenue Distribution",
|
||||||
|
"department": "Department",
|
||||||
|
"drgTrend": "DRG Performance Trend",
|
||||||
|
"cmiValue": "CMI Value",
|
||||||
|
"costControlRateCol": "Cost Control Rate(%)",
|
||||||
|
"caseCount": "Cases"
|
||||||
|
},
|
||||||
|
"analytics": {
|
||||||
|
"title": "Business Analytics Report",
|
||||||
|
"exportExcel": "Export Excel",
|
||||||
|
"department": "Department",
|
||||||
|
"departmentName": "Department Name",
|
||||||
|
"startDate": "Start Date",
|
||||||
|
"endDate": "End Date",
|
||||||
|
"search": "Search",
|
||||||
|
"reset": "Reset",
|
||||||
|
"summaryData": "Summary Data",
|
||||||
|
"totalRecords": "Total Records",
|
||||||
|
"totalRevenue": "Total Revenue(10K)",
|
||||||
|
"totalCost": "Total Cost(10K)",
|
||||||
|
"totalProfit": "Total Profit(10K)",
|
||||||
|
"totalPatients": "Total Patients",
|
||||||
|
"profitRate": "Profit Rate",
|
||||||
|
"detailData": "Detail Data",
|
||||||
|
"date": "Date",
|
||||||
|
"revenue": "Revenue(10K)",
|
||||||
|
"cost": "Cost(10K)",
|
||||||
|
"profit": "Profit(10K)",
|
||||||
|
"patientCount": "Patients",
|
||||||
|
"bedCount": "Beds",
|
||||||
|
"bedOccupancyRate": "Bed Occupancy(%)",
|
||||||
|
"avgStayDays": "Avg Stay Days",
|
||||||
|
"avgCost": "Avg Cost(10K)",
|
||||||
|
"queryFailed": "Query failed",
|
||||||
|
"exportSuccess": "Exported {count} records, please check the data",
|
||||||
|
"exportFailed": "Export failed"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"medication": {
|
||||||
|
"dayEnd": {
|
||||||
|
"queryDate": "Query Date:",
|
||||||
|
"startDate": "Start Date",
|
||||||
|
"endDate": "End Date",
|
||||||
|
"settlementType": "Settlement Type:",
|
||||||
|
"daily": "Daily",
|
||||||
|
"weekly": "Weekly",
|
||||||
|
"monthly": "Monthly",
|
||||||
|
"search": "Search",
|
||||||
|
"print": "Print",
|
||||||
|
"add": "Add",
|
||||||
|
"edit": "Edit",
|
||||||
|
"delete": "Delete",
|
||||||
|
"export": "Export",
|
||||||
|
"settlementNo": "Settlement No",
|
||||||
|
"settlementDate": "Settlement Date",
|
||||||
|
"settlementTypeCol": "Settlement Type",
|
||||||
|
"settlementStatus": "Status",
|
||||||
|
"totalAmount": "Total Amount",
|
||||||
|
"operator": "Operator",
|
||||||
|
"operationTime": "Operation Time",
|
||||||
|
"operation": "Action",
|
||||||
|
"view": "View",
|
||||||
|
"addTitle": "Add Day-End Settlement",
|
||||||
|
"editTitle": "Edit Day-End Settlement",
|
||||||
|
"settlementNoRequired": "Settlement number is required",
|
||||||
|
"settlementDateRequired": "Settlement date is required",
|
||||||
|
"settlementTypeRequired": "Settlement type is required",
|
||||||
|
"totalAmountRequired": "Total amount is required",
|
||||||
|
"inputSettlementNo": "Enter settlement number",
|
||||||
|
"selectSettlementDate": "Select settlement date",
|
||||||
|
"selectSettlementType": "Select settlement type",
|
||||||
|
"inputTotalAmount": "Enter total amount",
|
||||||
|
"remark": "Remark",
|
||||||
|
"inputContent": "Enter content",
|
||||||
|
"confirm": "OK",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"confirmDelete": "Confirm to delete settlement \"{id}\"?",
|
||||||
|
"editSuccess": "Updated successfully",
|
||||||
|
"addSuccess": "Added successfully",
|
||||||
|
"deleteSuccess": "Deleted successfully",
|
||||||
|
"printNotImplemented": "Print feature not yet implemented",
|
||||||
|
"viewNotImplemented": "View feature not yet implemented",
|
||||||
|
"getListFailed": "Failed to get settlement list:"
|
||||||
|
},
|
||||||
|
"purchase": {
|
||||||
|
"documentNo": "Document No",
|
||||||
|
"approvalStatus": "Approval Status",
|
||||||
|
"documentType": "Document Type",
|
||||||
|
"supplier": "Supplier",
|
||||||
|
"handler": "Handler",
|
||||||
|
"queryTime": "Query Time:",
|
||||||
|
"startDate": "Start Date",
|
||||||
|
"endDate": "End Date",
|
||||||
|
"purchaseInbound": "Purchase Inbound",
|
||||||
|
"delete": "Delete",
|
||||||
|
"search": "Search",
|
||||||
|
"reset": "Reset",
|
||||||
|
"returnStatus": "Return Status",
|
||||||
|
"creator": "Creator",
|
||||||
|
"approver": "Approver",
|
||||||
|
"createTime": "Create Time",
|
||||||
|
"approvalTime": "Approval Time",
|
||||||
|
"operation": "Action",
|
||||||
|
"detail": "Detail",
|
||||||
|
"edit": "Edit",
|
||||||
|
"returnGoods": "Return",
|
||||||
|
"submitApproval": "Submit Approval",
|
||||||
|
"withdrawApproval": "Withdraw Approval",
|
||||||
|
"returned": "Returned",
|
||||||
|
"submitApprovalSuccess": "Approval submitted successfully",
|
||||||
|
"withdrawApprovalSuccess": "Approval withdrawn successfully",
|
||||||
|
"approvedCannotDelete": "Approved records cannot be deleted",
|
||||||
|
"confirmDeleteData": "Confirm to delete the above data?",
|
||||||
|
"deleteSuccess": "Deleted successfully"
|
||||||
|
},
|
||||||
|
"bill": {
|
||||||
|
"documentNo": "Document No",
|
||||||
|
"approvalStatus": "Approval Status",
|
||||||
|
"documentType": "Document Type",
|
||||||
|
"handler": "Handler",
|
||||||
|
"supplier": "Supplier",
|
||||||
|
"targetWarehouse": "Target Warehouse",
|
||||||
|
"totalAmount": "Total Amount",
|
||||||
|
"currencyUnit": "CNY",
|
||||||
|
"applicant": "Applicant",
|
||||||
|
"applyTime": "Apply Time",
|
||||||
|
"approver": "Approver",
|
||||||
|
"approvalTime": "Approval Time",
|
||||||
|
"operation": "Action",
|
||||||
|
"approve": "Approve",
|
||||||
|
"view": "View",
|
||||||
|
"export": "Export",
|
||||||
|
"reset": "Reset",
|
||||||
|
"search": "Search",
|
||||||
|
"selectApplyDate": "Select apply date",
|
||||||
|
"operationSuccess": "Operation successful"
|
||||||
|
},
|
||||||
|
"pharmacy": {
|
||||||
|
"selectWarehouse": "Select warehouse",
|
||||||
|
"selectStartTime": "Select start time",
|
||||||
|
"selectEndTime": "Select end time",
|
||||||
|
"search": "Search",
|
||||||
|
"reset": "Reset",
|
||||||
|
"warehouse": "Warehouse",
|
||||||
|
"initialAmount": "Initial Amount",
|
||||||
|
"finalAmount": "Final Amount",
|
||||||
|
"expectedFinalAmount": "Expected Final Amount",
|
||||||
|
"offsetAmount": "Offset",
|
||||||
|
"purchaseInAmount": "Purchase Inbound Amount",
|
||||||
|
"purchaseInDocs": "Purchase Inbound Docs",
|
||||||
|
"purchaseOutAmount": "Purchase Outbound Amount",
|
||||||
|
"purchaseOutDocs": "Purchase Outbound Docs",
|
||||||
|
"requisitionOutAmount": "Requisition Out Amount",
|
||||||
|
"requisitionOutDocs": "Requisition Out Docs",
|
||||||
|
"requisitionReturnAmount": "Requisition Return Amount",
|
||||||
|
"requisitionReturnDocs": "Requisition Return Docs",
|
||||||
|
"transferInAmount": "Transfer In Amount",
|
||||||
|
"transferInDocs": "Transfer In Docs",
|
||||||
|
"transferOutAmount": "Transfer Out Amount",
|
||||||
|
"transferOutDocs": "Transfer Out Docs",
|
||||||
|
"stocktakeAmount": "Stocktake P&L Amount",
|
||||||
|
"stocktakeDocs": "Stocktake P&L Docs",
|
||||||
|
"lossAmount": "Loss Amount",
|
||||||
|
"lossDocs": "Loss Docs",
|
||||||
|
"drugIssueAmount": "Drug Issue Amount",
|
||||||
|
"getReconciliationFailed": "Failed to get reconciliation data",
|
||||||
|
"getWarehouseFailed": "Failed to get warehouse data",
|
||||||
|
"unknownError": "Unknown error",
|
||||||
|
"invalidPageIndex": "Invalid page index"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"datadict": {
|
||||||
|
"drugPricing": "Drug Pricing",
|
||||||
|
"instrumentPricing": "Instrument Pricing",
|
||||||
|
"activityPricing": "Activity Pricing",
|
||||||
|
"financialCategory": "Financial Category",
|
||||||
|
"selectFinancialCategory": "Select financial category",
|
||||||
|
"status": "Status",
|
||||||
|
"selectStatus": "Select status",
|
||||||
|
"name": "Name",
|
||||||
|
"nameCodePinyin": "Name/Code/Pinyin",
|
||||||
|
"itemName": "Item Name",
|
||||||
|
"department": "Department",
|
||||||
|
"insuranceCategory": "Insurance Category",
|
||||||
|
"basePrice": "Base Price",
|
||||||
|
"detailCount": "Detail Count",
|
||||||
|
"operation": "Action",
|
||||||
|
"edit": "Edit",
|
||||||
|
"condition": "Condition",
|
||||||
|
"price": "Price",
|
||||||
|
"editPricing": "Edit Item Pricing",
|
||||||
|
"detailTitle": "Detail",
|
||||||
|
"operationSuccess": "Operation successful",
|
||||||
|
"confirm": "OK",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"confirmBeforeSubmit": "Please confirm before submitting"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2021,7 +2021,12 @@
|
|||||||
},
|
},
|
||||||
"emr": {
|
"emr": {
|
||||||
"timeliness": {
|
"timeliness": {
|
||||||
"stats": { "pending": "Chờ hoàn thành", "completed": "Đã hoàn thành", "overdue": "Quá hạn", "rate": "Tỷ lệ hoàn thành" },
|
"stats": {
|
||||||
|
"pending": "Chờ hoàn thành",
|
||||||
|
"completed": "Đã hoàn thành",
|
||||||
|
"overdue": "Quá hạn",
|
||||||
|
"rate": "Tỷ lệ hoàn thành"
|
||||||
|
},
|
||||||
"department": "Khoa",
|
"department": "Khoa",
|
||||||
"emrTypeLabel": "Loại bệnh án",
|
"emrTypeLabel": "Loại bệnh án",
|
||||||
"statusLabel": "Trạng thái",
|
"statusLabel": "Trạng thái",
|
||||||
@@ -2032,8 +2037,17 @@
|
|||||||
"requiredHours": "Thời gian yêu cầu(h)",
|
"requiredHours": "Thời gian yêu cầu(h)",
|
||||||
"deadline": "Hạn chót",
|
"deadline": "Hạn chót",
|
||||||
"actualCompleteTime": "Thời gian hoàn thành thực tế",
|
"actualCompleteTime": "Thời gian hoàn thành thực tế",
|
||||||
"emrType": { "admission": "Bệnh án nhập viện", "firstCourse": "Diễn biến đầu", "dailyCourse": "Diễn biến hàng ngày", "discharge": "Bệnh án ra viện" },
|
"emrType": {
|
||||||
"status": { "pending": "Chờ hoàn thành", "completed": "Đã hoàn thành", "overdue": "Quá hạn" }
|
"admission": "Bệnh án nhập viện",
|
||||||
|
"firstCourse": "Diễn biến đầu",
|
||||||
|
"dailyCourse": "Diễn biến hàng ngày",
|
||||||
|
"discharge": "Bệnh án ra viện"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"pending": "Chờ hoàn thành",
|
||||||
|
"completed": "Đã hoàn thành",
|
||||||
|
"overdue": "Quá hạn"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"sync": {
|
"sync": {
|
||||||
"title": "Đồng bộ dữ liệu EMR",
|
"title": "Đồng bộ dữ liệu EMR",
|
||||||
@@ -3273,5 +3287,739 @@
|
|||||||
"inputPatientId": "Nhập mã BN",
|
"inputPatientId": "Nhập mã BN",
|
||||||
"inputRecordId": "Nhập mã biên bản"
|
"inputRecordId": "Nhập mã biên bản"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"lab": {
|
||||||
|
"eqa": {
|
||||||
|
"title": "Quản lý đánh giá chất lượng ngoại viện",
|
||||||
|
"totalRecords": "Tổng {n}",
|
||||||
|
"qualified": "Đạt {n}",
|
||||||
|
"unqualified": "Không đạt {n}",
|
||||||
|
"inputTitle": "Ghi nhận EQA",
|
||||||
|
"assessmentName": "Tên đánh giá",
|
||||||
|
"assessmentNamePlaceholder": "VD: Sinh hóa Q1/2026",
|
||||||
|
"assessmentOrg": "Tổ chức",
|
||||||
|
"year": "Năm",
|
||||||
|
"quarter": "Quý",
|
||||||
|
"sampleCode": "Mã mẫu",
|
||||||
|
"testItem": "Chỉ số xét nghiệm",
|
||||||
|
"targetValue": "Giá trị mục tiêu",
|
||||||
|
"actualValue": "Giá trị thực tế",
|
||||||
|
"operator": "Người thực hiện",
|
||||||
|
"submit": "Gửi",
|
||||||
|
"resultTitle": "Kết quả EQA",
|
||||||
|
"queryPlaceholder": "Tên đánh giá",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"printReport": "In báo cáo",
|
||||||
|
"deviationRate": "Sai lệch %",
|
||||||
|
"judgment": "Kết luận",
|
||||||
|
"qualifiedResult": "Đạt",
|
||||||
|
"unqualifiedResult": "Không đạt",
|
||||||
|
"reportTitle": "Báo cáo EQA",
|
||||||
|
"yearQuarter": "Năm/Quý",
|
||||||
|
"reportDate": "Ngày báo cáo",
|
||||||
|
"pleaseFillRequired": "Vui lòng điền tên đánh giá và chỉ số xét nghiệm",
|
||||||
|
"submitSuccessQualified": "Gửi thành công, Kết luận: Đạt",
|
||||||
|
"submitSuccessUnqualified": "Gửi thành công, Kết luận: Không đạt",
|
||||||
|
"submitSuccess": "Gửi thành công",
|
||||||
|
"noDataToPrint": "Không có dữ liệu để in"
|
||||||
|
},
|
||||||
|
"qc": {
|
||||||
|
"title": "Quản lý kiểm soát chất lượng nội viện",
|
||||||
|
"totalRecords": "Tổng {n}",
|
||||||
|
"passed": "Đạt {n}",
|
||||||
|
"failed": "Mất kiểm soát {n}",
|
||||||
|
"inputTitle": "Ghi nhận dữ liệu QC",
|
||||||
|
"qcItem": "Chỉ số QC",
|
||||||
|
"qcItemPlaceholder": "VD: ALT, GLU",
|
||||||
|
"instrument": "Thiết bị",
|
||||||
|
"instrumentPlaceholder": "Tên thiết bị",
|
||||||
|
"targetValue": "Giá trị mục tiêu",
|
||||||
|
"actualValue": "Giá trị thực tế",
|
||||||
|
"qcDate": "Ngày QC",
|
||||||
|
"operator": "Người thực hiện",
|
||||||
|
"remarks": "Ghi chú",
|
||||||
|
"runWestgard": "Chạy Westgard",
|
||||||
|
"chartTitle": "Biểu đồ QC",
|
||||||
|
"queryItemPlaceholder": "Chỉ số QC",
|
||||||
|
"resultFilter": "Kết quả",
|
||||||
|
"pass": "Đạt",
|
||||||
|
"outOfControl": "Mất kiểm soát",
|
||||||
|
"resultListTitle": "Danh sách kết quả QC",
|
||||||
|
"sdValue": "SD",
|
||||||
|
"cvRate": "CV%",
|
||||||
|
"westgardRule": "Quy tắc Westgard",
|
||||||
|
"date": "Ngày",
|
||||||
|
"pleaseFillRequired": "Vui lòng điền chỉ số QC và giá trị thực tế",
|
||||||
|
"westgardPass": "Westgard: ",
|
||||||
|
"westgardFail": "Westgard: ",
|
||||||
|
"actualValueLegend": "Thực tế",
|
||||||
|
"targetValueLegend": "Mục tiêu",
|
||||||
|
"yAxisName": "Giá trị"
|
||||||
|
},
|
||||||
|
"history": {
|
||||||
|
"title": "So sánh lịch sử xét nghiệm",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"exportReport": "Xuất báo cáo",
|
||||||
|
"patientId": "Mã bệnh nhân",
|
||||||
|
"patientIdPlaceholder": "Nhập mã bệnh nhân",
|
||||||
|
"testItem": "Chỉ số xét nghiệm",
|
||||||
|
"testItemPlaceholder": "VD: Glucose, CBC",
|
||||||
|
"dateRange": "Khoảng ngày",
|
||||||
|
"startPlaceholder": "Bắt đầu",
|
||||||
|
"endPlaceholder": "Kết thúc",
|
||||||
|
"trendTitle": "Xu hướng chỉ số",
|
||||||
|
"queryFirst": "Vui lòng tìm kiếm dữ liệu bệnh nhân trước",
|
||||||
|
"abnormalTitle": "Thống kê bất thường",
|
||||||
|
"detailTitle": "Chi tiết kết quả",
|
||||||
|
"seqNo": "STT",
|
||||||
|
"result": "Kết quả",
|
||||||
|
"unit": "Đơn vị",
|
||||||
|
"refRange": "Khoảng tham chiếu",
|
||||||
|
"abnormal": "Bất thường",
|
||||||
|
"normal": "Bình thường",
|
||||||
|
"testDate": "Ngày xét nghiệm",
|
||||||
|
"department": "Khoa",
|
||||||
|
"reportTime": "Thời gian báo cáo",
|
||||||
|
"totalItems": "Tổng chỉ số",
|
||||||
|
"normalItems": "Bình thường",
|
||||||
|
"abnormalItems": "Bất thường",
|
||||||
|
"abnormalRate": "Tỷ lệ bất thường",
|
||||||
|
"testCount": "Số lần xét nghiệm",
|
||||||
|
"highestAbnormal": "Bất thường cao nhất",
|
||||||
|
"highItems": "{n} cao",
|
||||||
|
"none": "Không",
|
||||||
|
"highCategory": "Cao(H)",
|
||||||
|
"lowCategory": "Thấp(L)",
|
||||||
|
"otherAbnormal": "Khác",
|
||||||
|
"exportInDev": "Chức năng xuất đang phát triển",
|
||||||
|
"items": "mục"
|
||||||
|
},
|
||||||
|
"enhanced": {
|
||||||
|
"title": "Hệ thống xét nghiệm nâng cao",
|
||||||
|
"iqcTab": "QC nội viện",
|
||||||
|
"eqaTab": "EQA ngoại viện",
|
||||||
|
"totalTests": "Tổng xét nghiệm",
|
||||||
|
"qualified": "Đạt",
|
||||||
|
"outOfControl": "Mất kiểm soát",
|
||||||
|
"addRecord": "Thêm bản ghi",
|
||||||
|
"instrument": "Thiết bị",
|
||||||
|
"qcItem": "Chỉ số QC",
|
||||||
|
"qcDate": "Ngày QC",
|
||||||
|
"targetValue": "Mục tiêu",
|
||||||
|
"actualValue": "Thực tế",
|
||||||
|
"rule": "Quy tắc",
|
||||||
|
"result": "Kết quả",
|
||||||
|
"qualifiedResult": "Đạt",
|
||||||
|
"outOfControlResult": "Mất kiểm soát",
|
||||||
|
"assessmentProject": "Đánh giá",
|
||||||
|
"assessmentOrg": "Tổ chức",
|
||||||
|
"testItem": "Chỉ số",
|
||||||
|
"deviationRate": "Sai lệch %",
|
||||||
|
"addSuccess": "Thêm thành công"
|
||||||
|
},
|
||||||
|
"appointment": {
|
||||||
|
"title": "Hàng đợi hẹn khám",
|
||||||
|
"patientPlaceholder": "Bệnh nhân",
|
||||||
|
"statusPlaceholder": "Trạng thái",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"newAppointment": "Tạo hẹn mới",
|
||||||
|
"queueNumber": "Số thứ tự",
|
||||||
|
"patient": "Bệnh nhân",
|
||||||
|
"examName": "Khám",
|
||||||
|
"appointDate": "Ngày hẹn",
|
||||||
|
"timeSlot": "Khung giờ",
|
||||||
|
"room": "Phòng",
|
||||||
|
"status": "Trạng thái",
|
||||||
|
"appointed": "Đã hẹn",
|
||||||
|
"checkedIn": "Đã check-in",
|
||||||
|
"examining": "Đang khám",
|
||||||
|
"completed": "Hoàn thành",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"checkin": "Check-in",
|
||||||
|
"start": "Bắt đầu",
|
||||||
|
"complete": "Hoàn thành",
|
||||||
|
"cancel": "Hủy",
|
||||||
|
"dialogTitle": "Tạo hẹn mới",
|
||||||
|
"patientId": "Mã BN",
|
||||||
|
"encounterId": "Mã lần khám",
|
||||||
|
"patientName": "Tên BN",
|
||||||
|
"timeSlotPlaceholder": "VD: Sáng/Chiều",
|
||||||
|
"appointBtn": "Hẹn",
|
||||||
|
"appointSuccess": "Tạo hẹn thành công",
|
||||||
|
"checkinSuccess": "Check-in thành công",
|
||||||
|
"startSuccess": "Bắt đầu khám",
|
||||||
|
"completeSuccess": "Khám hoàn thành",
|
||||||
|
"cancelSuccess": "Đã hủy"
|
||||||
|
},
|
||||||
|
"icd10": {
|
||||||
|
"title": "Mã chẩn đoán ICD-10",
|
||||||
|
"keywordPlaceholder": "Mã/Tên/Pinyin",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"add": "Thêm",
|
||||||
|
"code": "Mã",
|
||||||
|
"diagnosisName": "Chẩn đoán",
|
||||||
|
"category": "Phân loại",
|
||||||
|
"pinyin": "Pinyin",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"edit": "Sửa",
|
||||||
|
"deleteConfirm": "Xác nhận xóa?",
|
||||||
|
"delete": "Xóa",
|
||||||
|
"saveSuccess": "Lưu thành công",
|
||||||
|
"deleted": "Đã xóa",
|
||||||
|
"name": "Tên"
|
||||||
|
},
|
||||||
|
"pathway": {
|
||||||
|
"title": "Quản lý đường lâm sàng",
|
||||||
|
"refreshStats": "Làm mới thống kê",
|
||||||
|
"pathwayCount": "Số đường",
|
||||||
|
"entryCount": "Số vào đường",
|
||||||
|
"completedCount": "Hoàn thành",
|
||||||
|
"variationCount": "Biến thể",
|
||||||
|
"completionRate": "Tỷ lệ hoàn thành",
|
||||||
|
"pathwayName": "Tên đường",
|
||||||
|
"diseaseCode": "Mã bệnh",
|
||||||
|
"diseaseName": "Tên bệnh",
|
||||||
|
"department": "Khoa",
|
||||||
|
"avgDays": "Số ngày TB",
|
||||||
|
"avgCost": "Chi phí TB",
|
||||||
|
"version": "Phiên bản",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"enterPathway": "Vào đường",
|
||||||
|
"enterDialogTitle": "Vào đường lâm sàng",
|
||||||
|
"pathway": "Đường",
|
||||||
|
"patientId": "Mã BN",
|
||||||
|
"encounterId": "Mã lần khám",
|
||||||
|
"patientName": "Tên BN",
|
||||||
|
"expectedDays": "Số ngày dự kiến",
|
||||||
|
"expectedCost": "Chi phí dự kiến",
|
||||||
|
"confirmEnter": "Xác nhận",
|
||||||
|
"enterSuccess": "Vào đường thành công"
|
||||||
|
},
|
||||||
|
"radiology": {
|
||||||
|
"title": "Báo cáo hình ảnh",
|
||||||
|
"statusPlaceholder": "Trạng thái",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"newReport": "Tạo báo cáo",
|
||||||
|
"patient": "Bệnh nhân",
|
||||||
|
"exam": "Khám",
|
||||||
|
"type": "Loại",
|
||||||
|
"findings": "Phát hiện",
|
||||||
|
"impression": "Nhận định",
|
||||||
|
"reporter": "Báo cáo viên",
|
||||||
|
"status": "Trạng thái",
|
||||||
|
"draft": "Nháp",
|
||||||
|
"reported": "Đã báo cáo",
|
||||||
|
"audited": "Đã duyệt",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"submit": "Gửi",
|
||||||
|
"audit": "Duyệt",
|
||||||
|
"dialogTitle": "Tạo báo cáo hình ảnh",
|
||||||
|
"applyId": "Mã yêu cầu",
|
||||||
|
"encounterId": "Mã lần khám",
|
||||||
|
"patientName": "Tên BN",
|
||||||
|
"examName": "Tên khám",
|
||||||
|
"reportType": "Loại báo cáo",
|
||||||
|
"reportTypePlaceholder": "VD: X-ray/CT/MRI",
|
||||||
|
"conclusion": "Kết luận",
|
||||||
|
"reportDoctor": "Bác sĩ báo cáo",
|
||||||
|
"saveSuccess": "Lưu thành công",
|
||||||
|
"submitted": "Đã gửi",
|
||||||
|
"auditedSuccess": "Đã duyệt",
|
||||||
|
"auditDoctor": "Bác sĩ duyệt",
|
||||||
|
"auditReport": "Duyệt báo cáo"
|
||||||
|
},
|
||||||
|
"refRange": {
|
||||||
|
"title": "Khoảng tham chiếu",
|
||||||
|
"itemCodePlaceholder": "Mã chỉ số",
|
||||||
|
"genderPlaceholder": "Giới tính",
|
||||||
|
"male": "Nam",
|
||||||
|
"female": "Nữ",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"add": "Thêm",
|
||||||
|
"code": "Mã",
|
||||||
|
"name": "Tên",
|
||||||
|
"gender": "Giới tính",
|
||||||
|
"ageMin": "Tuổi tối thiểu",
|
||||||
|
"ageMax": "Tuổi tối đa",
|
||||||
|
"lowValue": "Dưới",
|
||||||
|
"highValue": "Trên",
|
||||||
|
"unit": "Đơn vị",
|
||||||
|
"criticalLow": "Nguy hiểm thấp",
|
||||||
|
"criticalHigh": "Nguy hiểm cao",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"edit": "Sửa",
|
||||||
|
"deleteConfirm": "Xác nhận xóa?",
|
||||||
|
"delete": "Xóa",
|
||||||
|
"universal": "Chung",
|
||||||
|
"ageRange": "Khoảng tuổi",
|
||||||
|
"refLow": "Tham chiếu dưới",
|
||||||
|
"refHigh": "Tham chiếu trên",
|
||||||
|
"saveSuccess": "Lưu thành công",
|
||||||
|
"deleted": "Đã xóa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"groupRec": {
|
||||||
|
"dataQuery": "Truy vấn dữ liệu",
|
||||||
|
"patientOrItemPlaceholder": "Tên BN/Tên chỉ số",
|
||||||
|
"createTime": "Thời gian tạo",
|
||||||
|
"startDate": "Ngày bắt đầu",
|
||||||
|
"endDate": "Ngày kết thúc",
|
||||||
|
"search": "Tìm kiếm",
|
||||||
|
"reset": "Đặt lại",
|
||||||
|
"sampleReceive": "Nhận mẫu",
|
||||||
|
"cancel": "Hủy",
|
||||||
|
"printBarcode": "In mã vạch",
|
||||||
|
"sampleName": "Tên mẫu",
|
||||||
|
"sampleVolume": "Số lượng mẫu",
|
||||||
|
"sampleStatus": "Trạng thái mẫu",
|
||||||
|
"collected": "Đã lấy",
|
||||||
|
"pendingCollection": "Chờ lấy",
|
||||||
|
"received": "Đã nhận",
|
||||||
|
"receiveTime": "Thời gian nhận",
|
||||||
|
"itemName": "Tên chỉ số",
|
||||||
|
"patientName": "Tên BN",
|
||||||
|
"gender": "Giới tính",
|
||||||
|
"pendingReceive": "Chờ nhận",
|
||||||
|
"receivedStatus": "Đã nhận",
|
||||||
|
"orderingDoctor": "Bác sĩ chỉ định",
|
||||||
|
"orderingTime": "Thời gian chỉ định",
|
||||||
|
"operationSuccess": "Thao tác thành công"
|
||||||
|
},
|
||||||
|
"instrument": {
|
||||||
|
"typeCatalog": "Loại thiết bị",
|
||||||
|
"all": "Tất cả",
|
||||||
|
"instrumentName": "Tên thiết bị",
|
||||||
|
"nameCodePlaceholder": "Tên/Mã/",
|
||||||
|
"status": "Trạng thái",
|
||||||
|
"add": "Thêm",
|
||||||
|
"disable": "Vô hiệu",
|
||||||
|
"enable": "Kích hoạt",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"instrumentCode": "Mã thiết bị",
|
||||||
|
"instrumentNameCol": "Tên thiết bị",
|
||||||
|
"mainCode": "Mã chính",
|
||||||
|
"type": "Loại",
|
||||||
|
"model": "Model",
|
||||||
|
"manufacturer": "Nhà sản xuất",
|
||||||
|
"serialNumber": "Số sê-ri",
|
||||||
|
"purchasingCompany": "Đơn vị mua",
|
||||||
|
"contactPerson": "Người liên hệ",
|
||||||
|
"purchaseDate": "Ngày mua",
|
||||||
|
"originalPrice": "Giá gốc",
|
||||||
|
"transactionPrice": "Giá giao dịch",
|
||||||
|
"installationDate": "Ngày lắp đặt",
|
||||||
|
"installationPerson": "Người lắp đặt",
|
||||||
|
"maintenancePerson": "Người bảo trì",
|
||||||
|
"useDepartment": "Khoa sử dụng",
|
||||||
|
"identificationPerson": "Người kiểm định",
|
||||||
|
"recordedTemperature": "Nhiệt độ",
|
||||||
|
"accessories": "Phụ kiện",
|
||||||
|
"instrumentStatus": "Trạng thái",
|
||||||
|
"damageReportDate": "Ngày báo hỏng",
|
||||||
|
"recheckable": "Có thể tái kiểm",
|
||||||
|
"usageStatus": "Tình trạng sử dụng",
|
||||||
|
"decommissionReason": "Lý do thanh lý",
|
||||||
|
"remarks": "Ghi chú",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"edit": "Sửa",
|
||||||
|
"confirmEnable": "Xác nhận kích hoạt?",
|
||||||
|
"enableSuccess": "Kích hoạt thành công",
|
||||||
|
"confirmDisable": "Xác nhận vô hiệu?",
|
||||||
|
"disableSuccess": "Vô hiệu thành công",
|
||||||
|
"addTitle": "Thêm",
|
||||||
|
"editTitle": "Sửa"
|
||||||
|
},
|
||||||
|
"lisConfig": {
|
||||||
|
"testItem": "Chỉ số xét nghiệm",
|
||||||
|
"nameCodePlaceholder": "Tên/Mã",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"saveConfig": "Lưu cấu hình",
|
||||||
|
"itemName": "Tên chỉ số",
|
||||||
|
"consumableName": "Vật tư tiêu hao",
|
||||||
|
"consumablePlaceholder": "Nhập tên vật tư",
|
||||||
|
"add": "Thêm",
|
||||||
|
"delete": "Xóa",
|
||||||
|
"sampleName": "Tên mẫu",
|
||||||
|
"samplePlaceholder": "Nhập tên mẫu",
|
||||||
|
"quantity": "Số lượng",
|
||||||
|
"quantityPlaceholder": "Nhập số lượng",
|
||||||
|
"unit": "Đơn vị",
|
||||||
|
"unitPlaceholder": "Nhập đơn vị",
|
||||||
|
"observationName": "Tên quan sát",
|
||||||
|
"observationCode": "Mã quan sát",
|
||||||
|
"observationPlaceholder": "Nhập tên quan sát",
|
||||||
|
"saveSuccess": "Lưu thành công",
|
||||||
|
"duplicateMaterial": "Vật tư đã tồn tại!",
|
||||||
|
"duplicateSample": "Mẫu đã tồn tại!",
|
||||||
|
"duplicateObservation": "Quan sát đã tồn tại!"
|
||||||
|
},
|
||||||
|
"observation": {
|
||||||
|
"typeCatalog": "Loại quan sát",
|
||||||
|
"all": "Tất cả",
|
||||||
|
"definitionName": "Tên định nghĩa",
|
||||||
|
"nameCodePlaceholder": "Tên/Mã",
|
||||||
|
"status": "Trạng thái",
|
||||||
|
"add": "Thêm",
|
||||||
|
"disable": "Vô hiệu",
|
||||||
|
"enable": "Kích hoạt",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"observationName": "Tên",
|
||||||
|
"observationCode": "Mã",
|
||||||
|
"observationType": "Loại",
|
||||||
|
"refRange": "Khoảng tham chiếu",
|
||||||
|
"instrument": "Thiết bị",
|
||||||
|
"statusCol": "Trạng thái",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"edit": "Sửa",
|
||||||
|
"confirmEnable": "Xác nhận kích hoạt?",
|
||||||
|
"enableSuccess": "Kích hoạt thành công",
|
||||||
|
"confirmDisable": "Xác nhận vô hiệu?",
|
||||||
|
"disableSuccess": "Vô hiệu thành công",
|
||||||
|
"addTitle": "Thêm",
|
||||||
|
"editTitle": "Sửa"
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"dataQuery": "Truy vấn dữ liệu",
|
||||||
|
"patientOrItemPlaceholder": "Tên BN/Tên chỉ số",
|
||||||
|
"createTime": "Thời gian tạo",
|
||||||
|
"startDate": "Ngày bắt đầu",
|
||||||
|
"endDate": "Ngày kết thúc",
|
||||||
|
"search": "Tìm kiếm",
|
||||||
|
"reset": "Đặt lại",
|
||||||
|
"name": "Tên",
|
||||||
|
"result": "Kết quả",
|
||||||
|
"sample": "Mẫu",
|
||||||
|
"refRange": "Khoảng tham chiếu",
|
||||||
|
"observer": "Người quan sát",
|
||||||
|
"observationTime": "Thời gian quan sát",
|
||||||
|
"itemName": "Tên chỉ số",
|
||||||
|
"patientName": "Tên BN",
|
||||||
|
"gender": "Giới tính",
|
||||||
|
"orderingDoctor": "Bác sĩ",
|
||||||
|
"orderingTime": "Thời gian chỉ định",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"printReport": "In báo cáo"
|
||||||
|
},
|
||||||
|
"sampleCollection": {
|
||||||
|
"dataQuery": "Truy vấn dữ liệu",
|
||||||
|
"patientOrItemPlaceholder": "Tên BN/Tên chỉ số",
|
||||||
|
"createTime": "Thời gian tạo",
|
||||||
|
"startDate": "Ngày bắt đầu",
|
||||||
|
"endDate": "Ngày kết thúc",
|
||||||
|
"search": "Tìm kiếm",
|
||||||
|
"reset": "Đặt lại",
|
||||||
|
"collect": "Lấy mẫu",
|
||||||
|
"mergeTube": "Gộp ống",
|
||||||
|
"cancel": "Hủy",
|
||||||
|
"printBarcode": "In mã vạch",
|
||||||
|
"sampleName": "Tên mẫu",
|
||||||
|
"sampleVolume": "Số lượng mẫu",
|
||||||
|
"collectionStatus": "Trạng thái",
|
||||||
|
"collected": "Đã lấy",
|
||||||
|
"pendingCollection": "Chờ lấy",
|
||||||
|
"collectionTime": "Thời gian lấy",
|
||||||
|
"itemName": "Tên chỉ số",
|
||||||
|
"patientName": "Tên BN",
|
||||||
|
"gender": "Giới tính",
|
||||||
|
"sampleStatus": "Trạng thái mẫu",
|
||||||
|
"pendingCollect": "Chờ lấy",
|
||||||
|
"collectedStatus": "Đã lấy",
|
||||||
|
"orderingDoctor": "Bác sĩ",
|
||||||
|
"orderingTime": "Thời gian chỉ định",
|
||||||
|
"operationSuccess": "Thao tác thành công"
|
||||||
|
},
|
||||||
|
"sampleType": {
|
||||||
|
"typeCatalog": "Loại mẫu",
|
||||||
|
"all": "Tất cả",
|
||||||
|
"sampleName": "Tên mẫu",
|
||||||
|
"nameCodePlaceholder": "Tên/Thương hiệu/Tiếng Anh/Mã/Pinyin",
|
||||||
|
"status": "Trạng thái",
|
||||||
|
"addNewSample": "Thêm mẫu mới",
|
||||||
|
"disable": "Vô hiệu",
|
||||||
|
"enable": "Kích hoạt",
|
||||||
|
"query": "Tìm kiếm",
|
||||||
|
"sampleType": "Loại",
|
||||||
|
"sampleNameCol": "Tên",
|
||||||
|
"customCode": "Mã tùy chỉnh",
|
||||||
|
"typeOrder": "Thứ tự loại",
|
||||||
|
"externalCode": "Mã ngoài",
|
||||||
|
"serialNumber": "Số thứ tự",
|
||||||
|
"globalType": "Loại toàn cầu",
|
||||||
|
"pinyin": "Pinyin",
|
||||||
|
"wubi": "Wubi",
|
||||||
|
"specimenClass": "Lớp mẫu",
|
||||||
|
"extendedType": "Loại mở rộng",
|
||||||
|
"whonetCode": "Mã WHONET",
|
||||||
|
"statusCol": "Trạng thái",
|
||||||
|
"operation": "Thao tác",
|
||||||
|
"edit": "Sửa",
|
||||||
|
"confirmEnable": "Xác nhận kích hoạt?",
|
||||||
|
"enableSuccess": "Kích hoạt thành công",
|
||||||
|
"confirmDisable": "Xác nhận vô hiệu?",
|
||||||
|
"disableSuccess": "Vô hiệu thành công",
|
||||||
|
"addTitle": "Thêm",
|
||||||
|
"editTitle": "Sửa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"biDashboard": {
|
||||||
|
"title": "Báo Cáo Quyết Định BI",
|
||||||
|
"reportType": "Loại Báo Cáo",
|
||||||
|
"generateReport": "Tạo Báo Cáo",
|
||||||
|
"reportData": "Dữ Liệu Báo Cáo",
|
||||||
|
"date": "Ngày",
|
||||||
|
"department": "Khoa",
|
||||||
|
"revenue": "Doanh Thu(10K)",
|
||||||
|
"cost": "Chi Phí(10K)",
|
||||||
|
"patientCount": "Bệnh Nhân",
|
||||||
|
"monthlyTrend": "Xu Hướng Doanh Thu & Chi Phí Hàng Tháng",
|
||||||
|
"month": "Tháng",
|
||||||
|
"departmentRevenue": "Phân Bố Doanh Thu Theo Khoa",
|
||||||
|
"totalRevenue": "Tổng Doanh Thu(10K)",
|
||||||
|
"totalCost": "Tổng Chi Phí(10K)",
|
||||||
|
"totalProfit": "Tổng Lợi Nhuận(10K)",
|
||||||
|
"totalPatients": "Tổng Bệnh Nhân",
|
||||||
|
"totalRecords": "Tổng Bản Ghi",
|
||||||
|
"cmiValue": "Giá Trị CMI",
|
||||||
|
"generateSuccess": "Tạo báo cáo thành công",
|
||||||
|
"generateFailed": "Tạo thất bại"
|
||||||
|
},
|
||||||
|
"dimension": {
|
||||||
|
"title": "Báo Cáo Đa Chiều",
|
||||||
|
"queryConditions": "Điều Kiện Truy Vấn",
|
||||||
|
"dimension": "Chiều",
|
||||||
|
"byStatus": "Theo Trạng Thái Kiểm Soát",
|
||||||
|
"byDrg": "Theo Nhóm DRG",
|
||||||
|
"byDiagnosis": "Theo Chẩn Đoán Chính",
|
||||||
|
"startDate": "Ngày Bắt Đầu",
|
||||||
|
"endDate": "Ngày Kết Thúc",
|
||||||
|
"search": "Tìm Kiếm",
|
||||||
|
"totalCases": "Tổng Ca Bệnh",
|
||||||
|
"totalCost": "Tổng Chi Phí",
|
||||||
|
"avgCost": "Chi Phí Trung Bình",
|
||||||
|
"detail": " Chi Tiết",
|
||||||
|
"caseCount": "Số Ca",
|
||||||
|
"avgLosDays": "TB Ngày Nằm Viện",
|
||||||
|
"dayUnit": " ngày",
|
||||||
|
"loadFailed": "Tải thất bại",
|
||||||
|
"unknownError": "Lỗi không xác định"
|
||||||
|
},
|
||||||
|
"dashboard": {
|
||||||
|
"title": "Bảng Điều Khiển Trực Quan",
|
||||||
|
"dashboardType": "Loại Bảng",
|
||||||
|
"overview": "Tổng Quan Vận Hành",
|
||||||
|
"finance": "Phân Tích Tài Chính",
|
||||||
|
"patient": "Thống Kê Bệnh Nhân",
|
||||||
|
"refresh": "Làm Mới",
|
||||||
|
"totalRevenue": "Tổng Doanh Thu(10K)",
|
||||||
|
"totalProfit": "Tổng Lợi Nhuận(10K)",
|
||||||
|
"totalPatients": "Tổng Bệnh Nhân",
|
||||||
|
"drgCases": "Ca DRG",
|
||||||
|
"totalCost": "Tổng Chi Phí(10K)",
|
||||||
|
"latestCmi": "CMI Mới Nhất",
|
||||||
|
"costControlRate": "Tỷ Lệ Kiểm Soát Chi Phí",
|
||||||
|
"totalRecords": "Tổng Bản Ghi",
|
||||||
|
"chartData": "Dữ Liệu Biểu Đồ",
|
||||||
|
"monthlyTrend": "Xu Hướng Doanh Thu & Chi Phí Hàng Tháng",
|
||||||
|
"month": "Tháng",
|
||||||
|
"revenue": "Doanh Thu(10K)",
|
||||||
|
"cost": "Chi Phí(10K)",
|
||||||
|
"departmentRevenue": "Phân Bố Doanh Thu Theo Khoa",
|
||||||
|
"department": "Khoa",
|
||||||
|
"drgTrend": "Xu Hướng Hiệu Suất DRG",
|
||||||
|
"cmiValue": "Giá Trị CMI",
|
||||||
|
"costControlRateCol": "Tỷ Lệ Kiểm Soát Chi Phí(%)",
|
||||||
|
"caseCount": "Số Ca"
|
||||||
|
},
|
||||||
|
"analytics": {
|
||||||
|
"title": "Báo Cáo Phân Tích Kinh Doanh",
|
||||||
|
"exportExcel": "Xuất Excel",
|
||||||
|
"department": "Khoa",
|
||||||
|
"departmentName": "Tên Khoa",
|
||||||
|
"startDate": "Ngày Bắt Đầu",
|
||||||
|
"endDate": "Ngày Kết Thúc",
|
||||||
|
"search": "Tìm Kiếm",
|
||||||
|
"reset": "Đặt Lại",
|
||||||
|
"summaryData": "Dữ Liệu Tổng Hợp",
|
||||||
|
"totalRecords": "Tổng Bản Ghi",
|
||||||
|
"totalRevenue": "Tổng Doanh Thu(10K)",
|
||||||
|
"totalCost": "Tổng Chi Phí(10K)",
|
||||||
|
"totalProfit": "Tổng Lợi Nhuận(10K)",
|
||||||
|
"totalPatients": "Tổng Bệnh Nhân",
|
||||||
|
"profitRate": "Tỷ Suất Lợi Nhuận",
|
||||||
|
"detailData": "Dữ Liệu Chi Tiết",
|
||||||
|
"date": "Ngày",
|
||||||
|
"revenue": "Doanh Thu(10K)",
|
||||||
|
"cost": "Chi Phí(10K)",
|
||||||
|
"profit": "Lợi Nhuận(10K)",
|
||||||
|
"patientCount": "Bệnh Nhân",
|
||||||
|
"bedCount": "Giường",
|
||||||
|
"bedOccupancyRate": "Tỷ Lệ Chiếm Giường(%)",
|
||||||
|
"avgStayDays": "TB Ngày Nằm Viện",
|
||||||
|
"avgCost": "Chi Phí TB(10K)",
|
||||||
|
"queryFailed": "Truy vấn thất bại",
|
||||||
|
"exportSuccess": "Đã xuất {count} bản ghi, vui lòng kiểm tra dữ liệu",
|
||||||
|
"exportFailed": "Xuất thất bại"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"medication": {
|
||||||
|
"dayEnd": {
|
||||||
|
"queryDate": "Ngày Truy Vấn:",
|
||||||
|
"startDate": "Ngày Bắt Đầu",
|
||||||
|
"endDate": "Ngày Kết Thúc",
|
||||||
|
"settlementType": "Loại Thanh Toán:",
|
||||||
|
"daily": "Hàng Ngày",
|
||||||
|
"weekly": "Hàng Tuần",
|
||||||
|
"monthly": "Hàng Tháng",
|
||||||
|
"search": "Tìm Kiếm",
|
||||||
|
"print": "In",
|
||||||
|
"add": "Thêm",
|
||||||
|
"edit": "Sửa",
|
||||||
|
"delete": "Xóa",
|
||||||
|
"export": "Xuất",
|
||||||
|
"settlementNo": "Số Thanh Toán",
|
||||||
|
"settlementDate": "Ngày Thanh Toán",
|
||||||
|
"settlementTypeCol": "Loại Thanh Toán",
|
||||||
|
"settlementStatus": "Trạng Thái",
|
||||||
|
"totalAmount": "Tổng Tiền",
|
||||||
|
"operator": "Người Vận Hành",
|
||||||
|
"operationTime": "Thời Gian Thao Tác",
|
||||||
|
"operation": "Thao Tác",
|
||||||
|
"view": "Xem",
|
||||||
|
"addTitle": "Thêm Phiếu Thanh Toán Cuối Ngày",
|
||||||
|
"editTitle": "Sửa Phiếu Thanh Toán Cuối Ngày",
|
||||||
|
"settlementNoRequired": "Số thanh toán không được để trống",
|
||||||
|
"settlementDateRequired": "Ngày thanh toán không được để trống",
|
||||||
|
"settlementTypeRequired": "Loại thanh toán không được để trống",
|
||||||
|
"totalAmountRequired": "Tổng tiền không được để trống",
|
||||||
|
"inputSettlementNo": "Nhập số thanh toán",
|
||||||
|
"selectSettlementDate": "Chọn ngày thanh toán",
|
||||||
|
"selectSettlementType": "Chọn loại thanh toán",
|
||||||
|
"inputTotalAmount": "Nhập tổng tiền",
|
||||||
|
"remark": "Ghi Chú",
|
||||||
|
"inputContent": "Nhập nội dung",
|
||||||
|
"confirm": "Xác Nhận",
|
||||||
|
"cancel": "Hủy Bỏ",
|
||||||
|
"confirmDelete": "Xác nhận xóa phiếu thanh toán \"{id}\"?",
|
||||||
|
"editSuccess": "Cập nhật thành công",
|
||||||
|
"addSuccess": "Thêm thành công",
|
||||||
|
"deleteSuccess": "Xóa thành công",
|
||||||
|
"printNotImplemented": "Chức năng in chưa được triển khai",
|
||||||
|
"viewNotImplemented": "Chức năng xem chưa được triển khai",
|
||||||
|
"getListFailed": "Lấy danh sách thanh toán thất bại:"
|
||||||
|
},
|
||||||
|
"purchase": {
|
||||||
|
"documentNo": "Số Chứng Từ",
|
||||||
|
"approvalStatus": "Trạng Thái Duyệt",
|
||||||
|
"documentType": "Loại Chứng Từ",
|
||||||
|
"supplier": "Nhà Cung Cấp",
|
||||||
|
"handler": "Người Xử Lý",
|
||||||
|
"queryTime": "Thời Gian Truy Vấn:",
|
||||||
|
"startDate": "Ngày Bắt Đầu",
|
||||||
|
"endDate": "Ngày Kết Thúc",
|
||||||
|
"purchaseInbound": "Nhập Kho Mua",
|
||||||
|
"delete": "Xóa",
|
||||||
|
"search": "Tìm Kiếm",
|
||||||
|
"reset": "Đặt Lại",
|
||||||
|
"returnStatus": "Trạng Thái Trả Hàng",
|
||||||
|
"creator": "Người Tạo",
|
||||||
|
"approver": "Người Duyệt",
|
||||||
|
"createTime": "Ngày Tạo",
|
||||||
|
"approvalTime": "Ngày Duyệt",
|
||||||
|
"operation": "Thao Tác",
|
||||||
|
"detail": "Chi Tiết",
|
||||||
|
"edit": "Sửa",
|
||||||
|
"returnGoods": "Trả Hàng",
|
||||||
|
"submitApproval": "Gửi Duyệt",
|
||||||
|
"withdrawApproval": "Rút Duyệt",
|
||||||
|
"returned": "Đã Trả",
|
||||||
|
"submitApprovalSuccess": "Gửi duyệt thành công",
|
||||||
|
"withdrawApprovalSuccess": "Rút duyệt thành công",
|
||||||
|
"approvedCannotDelete": "Bản ghi đã duyệt không thể xóa",
|
||||||
|
"confirmDeleteData": "Xác nhận xóa dữ liệu trên?",
|
||||||
|
"deleteSuccess": "Xóa thành công"
|
||||||
|
},
|
||||||
|
"bill": {
|
||||||
|
"documentNo": "Số Chứng Từ",
|
||||||
|
"approvalStatus": "Trạng Thái Duyệt",
|
||||||
|
"documentType": "Loại Chứng Từ",
|
||||||
|
"handler": "Người Xử Lý",
|
||||||
|
"supplier": "Nhà Cung Cấp",
|
||||||
|
"targetWarehouse": "Kho Đích",
|
||||||
|
"totalAmount": "Tổng Tiền",
|
||||||
|
"currencyUnit": "VNĐ",
|
||||||
|
"applicant": "Người Nộp",
|
||||||
|
"applyTime": "Thời Gian Nộp",
|
||||||
|
"approver": "Người Duyệt",
|
||||||
|
"approvalTime": "Thời Gian Duyệt",
|
||||||
|
"operation": "Thao Tác",
|
||||||
|
"approve": "Duyệt",
|
||||||
|
"view": "Xem",
|
||||||
|
"export": "Xuất",
|
||||||
|
"reset": "Đặt Lại",
|
||||||
|
"search": "Tìm Kiếm",
|
||||||
|
"selectApplyDate": "Chọn ngày nộp",
|
||||||
|
"operationSuccess": "Thao tác thành công"
|
||||||
|
},
|
||||||
|
"pharmacy": {
|
||||||
|
"selectWarehouse": "Chọn kho",
|
||||||
|
"selectStartTime": "Chọn thời gian bắt đầu",
|
||||||
|
"selectEndTime": "Chọn thời gian kết thúc",
|
||||||
|
"search": "Tìm Kiếm",
|
||||||
|
"reset": "Đặt Lại",
|
||||||
|
"warehouse": "Kho",
|
||||||
|
"initialAmount": "Số Dư Đầu Kỳ",
|
||||||
|
"finalAmount": "Số Dư Cuối Kỳ",
|
||||||
|
"expectedFinalAmount": "Số Dư Cuối Kỳ Dự Kiến",
|
||||||
|
"offsetAmount": "Độ Lệch",
|
||||||
|
"purchaseInAmount": "Tiền Nhập Kho Mua",
|
||||||
|
"purchaseInDocs": "Số Chứng Từ Nhập Kho Mua",
|
||||||
|
"purchaseOutAmount": "Tiền Xuất Kho Mua",
|
||||||
|
"purchaseOutDocs": "Số Chứng Từ Xuất Kho Mua",
|
||||||
|
"requisitionOutAmount": "Tiền Xuất Lĩnh",
|
||||||
|
"requisitionOutDocs": "Số Chứng Từ Xuất Lĩnh",
|
||||||
|
"requisitionReturnAmount": "Tiền Trả Lĩnh",
|
||||||
|
"requisitionReturnDocs": "Số Chứng Từ Trả Lĩnh",
|
||||||
|
"transferInAmount": "Tiền Nhập Điều Chuyển",
|
||||||
|
"transferInDocs": "Số Chứng Từ Nhập Điều Chuyển",
|
||||||
|
"transferOutAmount": "Tiền Xuất Điều Chuyển",
|
||||||
|
"transferOutDocs": "Số Chứng Từ Xuất Điều Chuyển",
|
||||||
|
"stocktakeAmount": "Tiền Kiểm Kê Lãi/Lỗ",
|
||||||
|
"stocktakeDocs": "Số Chứng Từ Kiểm Kê",
|
||||||
|
"lossAmount": "Tiền Báo Hỏng",
|
||||||
|
"lossDocs": "Số Chứng Từ Báo Hỏng",
|
||||||
|
"drugIssueAmount": "Tiền Phát Thuốc",
|
||||||
|
"getReconciliationFailed": "Lấy dữ liệu đối soát thất bại",
|
||||||
|
"getWarehouseFailed": "Lấy dữ liệu kho thất bại",
|
||||||
|
"unknownError": "Lỗi không xác định",
|
||||||
|
"invalidPageIndex": "Chỉ mục trang không hợp lệ"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"datadict": {
|
||||||
|
"drugPricing": "Định Giá Thuốc",
|
||||||
|
"instrumentPricing": "Định Giá Dụng Cụ",
|
||||||
|
"activityPricing": "Định Giá Hoạt Động",
|
||||||
|
"financialCategory": "Danh Mục Tài Chính",
|
||||||
|
"selectFinancialCategory": "Chọn danh mục tài chính",
|
||||||
|
"status": "Trạng Thái",
|
||||||
|
"selectStatus": "Chọn trạng thái",
|
||||||
|
"name": "Tên",
|
||||||
|
"nameCodePinyin": "Tên/Mã/Pinyin",
|
||||||
|
"itemName": "Tên Mục",
|
||||||
|
"department": "Khoa",
|
||||||
|
"insuranceCategory": "Danh Mục Bảo Hiểm",
|
||||||
|
"basePrice": "Giá Cơ Bản",
|
||||||
|
"detailCount": "Số Chi Tiết",
|
||||||
|
"operation": "Thao Tác",
|
||||||
|
"edit": "Sửa",
|
||||||
|
"condition": "Điều Kiện",
|
||||||
|
"price": "Giá",
|
||||||
|
"editPricing": "Sửa Định Giá Mục",
|
||||||
|
"detailTitle": "Chi Tiết",
|
||||||
|
"operationSuccess": "Thao tác thành công",
|
||||||
|
"confirm": "Xác Nhận",
|
||||||
|
"cancel": "Hủy Bỏ",
|
||||||
|
"confirmBeforeSubmit": "Vui lòng xác nhận trước khi gửi"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2023,7 +2023,12 @@
|
|||||||
},
|
},
|
||||||
"emr": {
|
"emr": {
|
||||||
"timeliness": {
|
"timeliness": {
|
||||||
"stats": { "pending": "待完成", "completed": "已完成", "overdue": "超时", "rate": "完成率" },
|
"stats": {
|
||||||
|
"pending": "待完成",
|
||||||
|
"completed": "已完成",
|
||||||
|
"overdue": "超时",
|
||||||
|
"rate": "完成率"
|
||||||
|
},
|
||||||
"department": "科室",
|
"department": "科室",
|
||||||
"emrTypeLabel": "病历类型",
|
"emrTypeLabel": "病历类型",
|
||||||
"statusLabel": "状态",
|
"statusLabel": "状态",
|
||||||
@@ -2034,8 +2039,17 @@
|
|||||||
"requiredHours": "要求时限(h)",
|
"requiredHours": "要求时限(h)",
|
||||||
"deadline": "截止时间",
|
"deadline": "截止时间",
|
||||||
"actualCompleteTime": "实际完成时间",
|
"actualCompleteTime": "实际完成时间",
|
||||||
"emrType": { "admission": "入院记录", "firstCourse": "首次病程", "dailyCourse": "日常病程", "discharge": "出院记录" },
|
"emrType": {
|
||||||
"status": { "pending": "待完成", "completed": "已完成", "overdue": "超时" }
|
"admission": "入院记录",
|
||||||
|
"firstCourse": "首次病程",
|
||||||
|
"dailyCourse": "日常病程",
|
||||||
|
"discharge": "出院记录"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"pending": "待完成",
|
||||||
|
"completed": "已完成",
|
||||||
|
"overdue": "超时"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"sync": {
|
"sync": {
|
||||||
"title": "EMR数据同步",
|
"title": "EMR数据同步",
|
||||||
@@ -3275,5 +3289,739 @@
|
|||||||
"inputPatientId": "请输入患者ID",
|
"inputPatientId": "请输入患者ID",
|
||||||
"inputRecordId": "请输入记录ID"
|
"inputRecordId": "请输入记录ID"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"lab": {
|
||||||
|
"eqa": {
|
||||||
|
"title": "室间质评管理",
|
||||||
|
"totalRecords": "共 {n} 条",
|
||||||
|
"qualified": "合格 {n}",
|
||||||
|
"unqualified": "不合格 {n}",
|
||||||
|
"inputTitle": "录入室间质评",
|
||||||
|
"assessmentName": "评批名称",
|
||||||
|
"assessmentNamePlaceholder": "如:2026年Q1生化",
|
||||||
|
"assessmentOrg": "组织机构",
|
||||||
|
"year": "年度",
|
||||||
|
"quarter": "季度",
|
||||||
|
"sampleCode": "样本编号",
|
||||||
|
"testItem": "检测项目",
|
||||||
|
"targetValue": "靶值",
|
||||||
|
"actualValue": "实测值",
|
||||||
|
"operator": "操作人",
|
||||||
|
"submit": "提交",
|
||||||
|
"resultTitle": "室间质评结果",
|
||||||
|
"queryPlaceholder": "评批名称",
|
||||||
|
"query": "查询",
|
||||||
|
"printReport": "打印报告单",
|
||||||
|
"deviationRate": "偏差率%",
|
||||||
|
"judgment": "判定",
|
||||||
|
"qualifiedResult": "合格",
|
||||||
|
"unqualifiedResult": "不合格",
|
||||||
|
"reportTitle": "室间质评报告单",
|
||||||
|
"yearQuarter": "年度/季度",
|
||||||
|
"reportDate": "报告日期",
|
||||||
|
"pleaseFillRequired": "请填写评批名称和检测项目",
|
||||||
|
"submitSuccessQualified": "提交成功,判定: 合格",
|
||||||
|
"submitSuccessUnqualified": "提交成功,判定: 不合格",
|
||||||
|
"submitSuccess": "提交成功",
|
||||||
|
"noDataToPrint": "暂无数据可打印"
|
||||||
|
},
|
||||||
|
"qc": {
|
||||||
|
"title": "室内质控管理",
|
||||||
|
"totalRecords": "共 {n} 条",
|
||||||
|
"passed": "合格 {n}",
|
||||||
|
"failed": "失控 {n}",
|
||||||
|
"inputTitle": "录入质控数据",
|
||||||
|
"qcItem": "质控项目",
|
||||||
|
"qcItemPlaceholder": "如:ALT, GLU",
|
||||||
|
"instrument": "仪器",
|
||||||
|
"instrumentPlaceholder": "仪器名称",
|
||||||
|
"targetValue": "靶值",
|
||||||
|
"actualValue": "实测值",
|
||||||
|
"qcDate": "检测日期",
|
||||||
|
"operator": "操作人",
|
||||||
|
"remarks": "备注",
|
||||||
|
"runWestgard": "执行Westgard判断",
|
||||||
|
"chartTitle": "质控图",
|
||||||
|
"queryItemPlaceholder": "质控项目",
|
||||||
|
"resultFilter": "结果",
|
||||||
|
"pass": "通过",
|
||||||
|
"outOfControl": "失控",
|
||||||
|
"resultListTitle": "质控结果列表",
|
||||||
|
"sdValue": "SD",
|
||||||
|
"cvRate": "CV%",
|
||||||
|
"westgardRule": "Westgard判定",
|
||||||
|
"date": "日期",
|
||||||
|
"pleaseFillRequired": "请填写质控项目和实测值",
|
||||||
|
"westgardPass": "Westgard判定: ",
|
||||||
|
"westgardFail": "Westgard判定: ",
|
||||||
|
"actualValueLegend": "实测值",
|
||||||
|
"targetValueLegend": "靶值",
|
||||||
|
"yAxisName": "检测值"
|
||||||
|
},
|
||||||
|
"history": {
|
||||||
|
"title": "检验历史结果对比",
|
||||||
|
"query": "查询",
|
||||||
|
"exportReport": "导出报告",
|
||||||
|
"patientId": "患者ID",
|
||||||
|
"patientIdPlaceholder": "请输入患者ID",
|
||||||
|
"testItem": "检验项目",
|
||||||
|
"testItemPlaceholder": "如: 血糖、血常规",
|
||||||
|
"dateRange": "日期范围",
|
||||||
|
"startPlaceholder": "开始",
|
||||||
|
"endPlaceholder": "结束",
|
||||||
|
"trendTitle": "检验指标趋势",
|
||||||
|
"queryFirst": "请先查询患者数据",
|
||||||
|
"abnormalTitle": "异常指标统计",
|
||||||
|
"detailTitle": "检验结果明细",
|
||||||
|
"seqNo": "序号",
|
||||||
|
"result": "结果",
|
||||||
|
"unit": "单位",
|
||||||
|
"refRange": "参考范围",
|
||||||
|
"abnormal": "异常",
|
||||||
|
"normal": "正常",
|
||||||
|
"testDate": "检验日期",
|
||||||
|
"department": "科室",
|
||||||
|
"reportTime": "报告时间",
|
||||||
|
"totalItems": "总项目数",
|
||||||
|
"normalItems": "正常项",
|
||||||
|
"abnormalItems": "异常项",
|
||||||
|
"abnormalRate": "异常率",
|
||||||
|
"testCount": "检验次数",
|
||||||
|
"highestAbnormal": "最高异常",
|
||||||
|
"highItems": "{n}项偏高",
|
||||||
|
"none": "无",
|
||||||
|
"highCategory": "偏高(H)",
|
||||||
|
"lowCategory": "偏低(L)",
|
||||||
|
"otherAbnormal": "其他异常",
|
||||||
|
"exportInDev": "导出功能开发中",
|
||||||
|
"items": "项"
|
||||||
|
},
|
||||||
|
"enhanced": {
|
||||||
|
"title": "检验系统增强",
|
||||||
|
"iqcTab": "室内质控",
|
||||||
|
"eqaTab": "室间质评",
|
||||||
|
"totalTests": "总检测",
|
||||||
|
"qualified": "合格",
|
||||||
|
"outOfControl": "失控",
|
||||||
|
"addRecord": "新增记录",
|
||||||
|
"instrument": "仪器",
|
||||||
|
"qcItem": "质控项目",
|
||||||
|
"qcDate": "质质控日期",
|
||||||
|
"targetValue": "靶值",
|
||||||
|
"actualValue": "实测值",
|
||||||
|
"rule": "规则",
|
||||||
|
"result": "结果",
|
||||||
|
"qualifiedResult": "合格",
|
||||||
|
"outOfControlResult": "失控",
|
||||||
|
"assessmentProject": "质评项目",
|
||||||
|
"assessmentOrg": "组织机构",
|
||||||
|
"testItem": "检测项目",
|
||||||
|
"deviationRate": "偏差率%",
|
||||||
|
"addSuccess": "新增成功"
|
||||||
|
},
|
||||||
|
"appointment": {
|
||||||
|
"title": "检查预约排队",
|
||||||
|
"patientPlaceholder": "患者",
|
||||||
|
"statusPlaceholder": "状态",
|
||||||
|
"query": "查询",
|
||||||
|
"newAppointment": "新建预约",
|
||||||
|
"queueNumber": "队号",
|
||||||
|
"patient": "患者",
|
||||||
|
"examName": "检查项目",
|
||||||
|
"appointDate": "预约日期",
|
||||||
|
"timeSlot": "时段",
|
||||||
|
"room": "诊室",
|
||||||
|
"status": "状态",
|
||||||
|
"appointed": "已预约",
|
||||||
|
"checkedIn": "已签到",
|
||||||
|
"examining": "检查中",
|
||||||
|
"completed": "已完成",
|
||||||
|
"operation": "操作",
|
||||||
|
"checkin": "签到",
|
||||||
|
"start": "开始",
|
||||||
|
"complete": "完成",
|
||||||
|
"cancel": "取消",
|
||||||
|
"dialogTitle": "新建预约",
|
||||||
|
"patientId": "患者ID",
|
||||||
|
"encounterId": "就诊ID",
|
||||||
|
"patientName": "患者姓名",
|
||||||
|
"timeSlotPlaceholder": "如: 上午/下午",
|
||||||
|
"appointBtn": "预约",
|
||||||
|
"appointSuccess": "预约成功",
|
||||||
|
"checkinSuccess": "签到完成",
|
||||||
|
"startSuccess": "开始检查",
|
||||||
|
"completeSuccess": "检查完成",
|
||||||
|
"cancelSuccess": "已取消"
|
||||||
|
},
|
||||||
|
"icd10": {
|
||||||
|
"title": "ICD-10诊断编码库",
|
||||||
|
"keywordPlaceholder": "编码/名称/拼音",
|
||||||
|
"query": "查询",
|
||||||
|
"add": "新增",
|
||||||
|
"code": "编码",
|
||||||
|
"diagnosisName": "诊断名称",
|
||||||
|
"category": "分类",
|
||||||
|
"pinyin": "拼音",
|
||||||
|
"operation": "操作",
|
||||||
|
"edit": "编辑",
|
||||||
|
"deleteConfirm": "确定删除?",
|
||||||
|
"delete": "删除",
|
||||||
|
"saveSuccess": "保存成功",
|
||||||
|
"deleted": "已删除",
|
||||||
|
"name": "名称"
|
||||||
|
},
|
||||||
|
"pathway": {
|
||||||
|
"title": "临床路径管理",
|
||||||
|
"refreshStats": "刷新统计",
|
||||||
|
"pathwayCount": "路径数",
|
||||||
|
"entryCount": "入径数",
|
||||||
|
"completedCount": "完成数",
|
||||||
|
"variationCount": "变异数",
|
||||||
|
"completionRate": "完成率",
|
||||||
|
"pathwayName": "路径名称",
|
||||||
|
"diseaseCode": "疾病编码",
|
||||||
|
"diseaseName": "疾病名称",
|
||||||
|
"department": "科室",
|
||||||
|
"avgDays": "平均天数",
|
||||||
|
"avgCost": "平均费用",
|
||||||
|
"version": "版本",
|
||||||
|
"operation": "操作",
|
||||||
|
"enterPathway": "入径",
|
||||||
|
"enterDialogTitle": "患者入径",
|
||||||
|
"pathway": "路径",
|
||||||
|
"patientId": "患者ID",
|
||||||
|
"encounterId": "就诊ID",
|
||||||
|
"patientName": "患者姓名",
|
||||||
|
"expectedDays": "预期天数",
|
||||||
|
"expectedCost": "预期费用",
|
||||||
|
"confirmEnter": "确认入径",
|
||||||
|
"enterSuccess": "入径成功"
|
||||||
|
},
|
||||||
|
"radiology": {
|
||||||
|
"title": "影像图文报告",
|
||||||
|
"statusPlaceholder": "状态",
|
||||||
|
"query": "查询",
|
||||||
|
"newReport": "新建报告",
|
||||||
|
"patient": "患者",
|
||||||
|
"exam": "检查",
|
||||||
|
"type": "类型",
|
||||||
|
"findings": "所见",
|
||||||
|
"impression": "印象",
|
||||||
|
"reporter": "报告人",
|
||||||
|
"status": "状态",
|
||||||
|
"draft": "草稿",
|
||||||
|
"reported": "已报告",
|
||||||
|
"audited": "已审核",
|
||||||
|
"operation": "操作",
|
||||||
|
"submit": "提交",
|
||||||
|
"audit": "审核",
|
||||||
|
"dialogTitle": "新建影像报告",
|
||||||
|
"applyId": "申请ID",
|
||||||
|
"encounterId": "就诊ID",
|
||||||
|
"patientName": "患者姓名",
|
||||||
|
"examName": "检查名称",
|
||||||
|
"reportType": "报告类型",
|
||||||
|
"reportTypePlaceholder": "如: X光/CT/MRI",
|
||||||
|
"conclusion": "结论",
|
||||||
|
"reportDoctor": "报告医生",
|
||||||
|
"saveSuccess": "保存成功",
|
||||||
|
"submitted": "已提交",
|
||||||
|
"auditedSuccess": "已审核",
|
||||||
|
"auditDoctor": "审核医生",
|
||||||
|
"auditReport": "审核报告"
|
||||||
|
},
|
||||||
|
"refRange": {
|
||||||
|
"title": "检验参考范围",
|
||||||
|
"itemCodePlaceholder": "项目编码",
|
||||||
|
"genderPlaceholder": "性别",
|
||||||
|
"male": "男",
|
||||||
|
"female": "女",
|
||||||
|
"query": "查询",
|
||||||
|
"add": "新增",
|
||||||
|
"code": "编码",
|
||||||
|
"name": "名称",
|
||||||
|
"gender": "性别",
|
||||||
|
"ageMin": "最小年龄",
|
||||||
|
"ageMax": "最大年龄",
|
||||||
|
"lowValue": "下限",
|
||||||
|
"highValue": "上限",
|
||||||
|
"unit": "单位",
|
||||||
|
"criticalLow": "危急低",
|
||||||
|
"criticalHigh": "危急高",
|
||||||
|
"operation": "操作",
|
||||||
|
"edit": "编辑",
|
||||||
|
"deleteConfirm": "确定删除?",
|
||||||
|
"delete": "删除",
|
||||||
|
"universal": "通用",
|
||||||
|
"ageRange": "年龄范围",
|
||||||
|
"refLow": "参考下限",
|
||||||
|
"refHigh": "参考上限",
|
||||||
|
"saveSuccess": "保存成功",
|
||||||
|
"deleted": "已删除"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"groupRec": {
|
||||||
|
"dataQuery": "数据查询",
|
||||||
|
"patientOrItemPlaceholder": "患者姓名/项目名称",
|
||||||
|
"createTime": "创建时间",
|
||||||
|
"startDate": "开始日期",
|
||||||
|
"endDate": "结束日期",
|
||||||
|
"search": "搜索",
|
||||||
|
"reset": "重置",
|
||||||
|
"sampleReceive": "样本接收",
|
||||||
|
"cancel": "取消",
|
||||||
|
"printBarcode": "打印条码",
|
||||||
|
"sampleName": "样本名称",
|
||||||
|
"sampleVolume": "样本数量",
|
||||||
|
"sampleStatus": "样本状态",
|
||||||
|
"collected": "已采集",
|
||||||
|
"pendingCollection": "待采集",
|
||||||
|
"received": "已接收",
|
||||||
|
"receiveTime": "接收时间",
|
||||||
|
"itemName": "项目名称",
|
||||||
|
"patientName": "患者姓名",
|
||||||
|
"gender": "性别",
|
||||||
|
"pendingReceive": "待接收",
|
||||||
|
"receivedStatus": "已接收",
|
||||||
|
"orderingDoctor": "开单医生",
|
||||||
|
"orderingTime": "开单时间",
|
||||||
|
"operationSuccess": "操作成功"
|
||||||
|
},
|
||||||
|
"instrument": {
|
||||||
|
"typeCatalog": "仪器类型目录",
|
||||||
|
"all": "全部",
|
||||||
|
"instrumentName": "仪器名",
|
||||||
|
"nameCodePlaceholder": "名称/编码/",
|
||||||
|
"status": "状态",
|
||||||
|
"add": "添加",
|
||||||
|
"disable": "停用",
|
||||||
|
"enable": "启用",
|
||||||
|
"query": "查询",
|
||||||
|
"instrumentCode": "仪器编码",
|
||||||
|
"instrumentNameCol": "仪器名称",
|
||||||
|
"mainCode": "主编码",
|
||||||
|
"type": "类型",
|
||||||
|
"model": "型号",
|
||||||
|
"manufacturer": "生产厂家",
|
||||||
|
"serialNumber": "序列号",
|
||||||
|
"purchasingCompany": "采购单位",
|
||||||
|
"contactPerson": "联系人",
|
||||||
|
"purchaseDate": "采购日期",
|
||||||
|
"originalPrice": "原价",
|
||||||
|
"transactionPrice": "成交价",
|
||||||
|
"installationDate": "安装日期",
|
||||||
|
"installationPerson": "安装人",
|
||||||
|
"maintenancePerson": "维护人",
|
||||||
|
"useDepartment": "使用科室",
|
||||||
|
"identificationPerson": "鉴定人",
|
||||||
|
"recordedTemperature": "记录温度",
|
||||||
|
"accessories": "附件",
|
||||||
|
"instrumentStatus": "仪器状态",
|
||||||
|
"damageReportDate": "报损日期",
|
||||||
|
"recheckable": "可复检",
|
||||||
|
"usageStatus": "使用情况",
|
||||||
|
"decommissionReason": "报废原因",
|
||||||
|
"remarks": "备注",
|
||||||
|
"operation": "操作",
|
||||||
|
"edit": "编辑",
|
||||||
|
"confirmEnable": "是否确定启用数据!",
|
||||||
|
"enableSuccess": "启用成功",
|
||||||
|
"confirmDisable": "是否确认停用数据!",
|
||||||
|
"disableSuccess": "停用成功",
|
||||||
|
"addTitle": "新增",
|
||||||
|
"editTitle": "编辑"
|
||||||
|
},
|
||||||
|
"lisConfig": {
|
||||||
|
"testItem": "检验项目",
|
||||||
|
"nameCodePlaceholder": "名称/编码",
|
||||||
|
"query": "查询",
|
||||||
|
"saveConfig": "保存配置详情",
|
||||||
|
"itemName": "项目名称",
|
||||||
|
"consumableName": "耗材名称",
|
||||||
|
"consumablePlaceholder": "请输入耗材名称",
|
||||||
|
"add": "新增",
|
||||||
|
"delete": "删除",
|
||||||
|
"sampleName": "样本名称",
|
||||||
|
"samplePlaceholder": "请输入样本名称",
|
||||||
|
"quantity": "数量",
|
||||||
|
"quantityPlaceholder": "请输入数量",
|
||||||
|
"unit": "单位",
|
||||||
|
"unitPlaceholder": "请输入单位",
|
||||||
|
"observationName": "观测名称",
|
||||||
|
"observationCode": "观测代码",
|
||||||
|
"observationPlaceholder": "请输入观测名称",
|
||||||
|
"saveSuccess": "保存成功",
|
||||||
|
"duplicateMaterial": "请勿重复添加此材料!",
|
||||||
|
"duplicateSample": "请勿重复添加此样本!",
|
||||||
|
"duplicateObservation": "请勿重复添加此观察项!"
|
||||||
|
},
|
||||||
|
"observation": {
|
||||||
|
"typeCatalog": "观测类型",
|
||||||
|
"all": "全部",
|
||||||
|
"definitionName": "定义名",
|
||||||
|
"nameCodePlaceholder": "名称/编码",
|
||||||
|
"status": "状态",
|
||||||
|
"add": "添加",
|
||||||
|
"disable": "停用",
|
||||||
|
"enable": "启用",
|
||||||
|
"query": "查询",
|
||||||
|
"observationName": "观测名称",
|
||||||
|
"observationCode": "观测代码",
|
||||||
|
"observationType": "观测类型",
|
||||||
|
"refRange": "参考范围",
|
||||||
|
"instrument": "仪器",
|
||||||
|
"statusCol": "状态",
|
||||||
|
"operation": "操作",
|
||||||
|
"edit": "编辑",
|
||||||
|
"confirmEnable": "是否确定启用数据!",
|
||||||
|
"enableSuccess": "启用成功",
|
||||||
|
"confirmDisable": "是否确认停用数据!",
|
||||||
|
"disableSuccess": "停用成功",
|
||||||
|
"addTitle": "新增",
|
||||||
|
"editTitle": "编辑"
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"dataQuery": "数据查询",
|
||||||
|
"patientOrItemPlaceholder": "患者姓名/项目名称",
|
||||||
|
"createTime": "创建时间",
|
||||||
|
"startDate": "开始日期",
|
||||||
|
"endDate": "结束日期",
|
||||||
|
"search": "搜索",
|
||||||
|
"reset": "重置",
|
||||||
|
"name": "名称",
|
||||||
|
"result": "结果",
|
||||||
|
"sample": "样本",
|
||||||
|
"refRange": "参考范围",
|
||||||
|
"observer": "观测人",
|
||||||
|
"observationTime": "观测时间",
|
||||||
|
"itemName": "项目名称",
|
||||||
|
"patientName": "患者姓名",
|
||||||
|
"gender": "性别",
|
||||||
|
"orderingDoctor": "开单医生",
|
||||||
|
"orderingTime": "开单时间",
|
||||||
|
"operation": "操作",
|
||||||
|
"printReport": "打印报告"
|
||||||
|
},
|
||||||
|
"sampleCollection": {
|
||||||
|
"dataQuery": "数据查询",
|
||||||
|
"patientOrItemPlaceholder": "患者姓名/项目名称",
|
||||||
|
"createTime": "创建时间",
|
||||||
|
"startDate": "开始日期",
|
||||||
|
"endDate": "结束日期",
|
||||||
|
"search": "搜索",
|
||||||
|
"reset": "重置",
|
||||||
|
"collect": "采集",
|
||||||
|
"mergeTube": "合管",
|
||||||
|
"cancel": "取消",
|
||||||
|
"printBarcode": "打印条码",
|
||||||
|
"sampleName": "样本名称",
|
||||||
|
"sampleVolume": "样本数量",
|
||||||
|
"collectionStatus": "采集状态",
|
||||||
|
"collected": "已采集",
|
||||||
|
"pendingCollection": "待采集",
|
||||||
|
"collectionTime": "采集时间",
|
||||||
|
"itemName": "项目名称",
|
||||||
|
"patientName": "患者姓名",
|
||||||
|
"gender": "性别",
|
||||||
|
"sampleStatus": "样本状态",
|
||||||
|
"pendingCollect": "待采集",
|
||||||
|
"collectedStatus": "已采集",
|
||||||
|
"orderingDoctor": "开单医生",
|
||||||
|
"orderingTime": "开单时间",
|
||||||
|
"operationSuccess": "操作成功"
|
||||||
|
},
|
||||||
|
"sampleType": {
|
||||||
|
"typeCatalog": "样本类型目录",
|
||||||
|
"all": "全部",
|
||||||
|
"sampleName": "样本名",
|
||||||
|
"nameCodePlaceholder": "品名/商品名/英文品名/编码/拼音",
|
||||||
|
"status": "状态",
|
||||||
|
"addNewSample": "添加新样本",
|
||||||
|
"disable": "停用",
|
||||||
|
"enable": "启用",
|
||||||
|
"query": "查询",
|
||||||
|
"sampleType": "样本类型",
|
||||||
|
"sampleNameCol": "样本名称",
|
||||||
|
"customCode": "自定义码",
|
||||||
|
"typeOrder": "类型顺序",
|
||||||
|
"externalCode": "外部代码",
|
||||||
|
"serialNumber": "序号",
|
||||||
|
"globalType": "全网型",
|
||||||
|
"pinyin": "拼音",
|
||||||
|
"wubi": "五笔",
|
||||||
|
"specimenClass": "样本类",
|
||||||
|
"extendedType": "扩展类型",
|
||||||
|
"whonetCode": "WHONET代码",
|
||||||
|
"statusCol": "状态",
|
||||||
|
"operation": "操作",
|
||||||
|
"edit": "编辑",
|
||||||
|
"confirmEnable": "是否确定启用数据!",
|
||||||
|
"enableSuccess": "启用成功",
|
||||||
|
"confirmDisable": "是否确认停用数据!",
|
||||||
|
"disableSuccess": "停用成功",
|
||||||
|
"addTitle": "新增",
|
||||||
|
"editTitle": "编辑"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"biDashboard": {
|
||||||
|
"title": "BI决策报表",
|
||||||
|
"reportType": "报表类型",
|
||||||
|
"generateReport": "生成报表",
|
||||||
|
"reportData": "报表数据",
|
||||||
|
"date": "日期",
|
||||||
|
"department": "科室",
|
||||||
|
"revenue": "收入(万)",
|
||||||
|
"cost": "成本(万)",
|
||||||
|
"patientCount": "患者数",
|
||||||
|
"monthlyTrend": "月度收支趋势",
|
||||||
|
"month": "月份",
|
||||||
|
"departmentRevenue": "科室收入分布",
|
||||||
|
"totalRevenue": "总收入(万)",
|
||||||
|
"totalCost": "总成本(万)",
|
||||||
|
"totalProfit": "总利润(万)",
|
||||||
|
"totalPatients": "总患者数",
|
||||||
|
"totalRecords": "数据记录数",
|
||||||
|
"cmiValue": "CMI值",
|
||||||
|
"generateSuccess": "报表生成完成",
|
||||||
|
"generateFailed": "生成失败"
|
||||||
|
},
|
||||||
|
"dimension": {
|
||||||
|
"title": "多维度报表",
|
||||||
|
"queryConditions": "查询条件",
|
||||||
|
"dimension": "统计维度",
|
||||||
|
"byStatus": "按质控状态",
|
||||||
|
"byDrg": "按DRG分组",
|
||||||
|
"byDiagnosis": "按主要诊断",
|
||||||
|
"startDate": "开始日期",
|
||||||
|
"endDate": "结束日期",
|
||||||
|
"search": "查询",
|
||||||
|
"totalCases": "总病案数",
|
||||||
|
"totalCost": "总费用",
|
||||||
|
"avgCost": "平均费用",
|
||||||
|
"detail": "明细",
|
||||||
|
"caseCount": "病案数",
|
||||||
|
"avgLosDays": "平均住院日",
|
||||||
|
"dayUnit": "天",
|
||||||
|
"loadFailed": "加载失败",
|
||||||
|
"unknownError": "未知错误"
|
||||||
|
},
|
||||||
|
"dashboard": {
|
||||||
|
"title": "可视化仪表盘",
|
||||||
|
"dashboardType": "仪表盘类型",
|
||||||
|
"overview": "运营总览",
|
||||||
|
"finance": "财务分析",
|
||||||
|
"patient": "患者统计",
|
||||||
|
"refresh": "刷新",
|
||||||
|
"totalRevenue": "总收入(万)",
|
||||||
|
"totalProfit": "总利润(万)",
|
||||||
|
"totalPatients": "总患者数",
|
||||||
|
"drgCases": "DRG病例数",
|
||||||
|
"totalCost": "总成本(万)",
|
||||||
|
"latestCmi": "最新CMI值",
|
||||||
|
"costControlRate": "成本控制率",
|
||||||
|
"totalRecords": "数据记录数",
|
||||||
|
"chartData": "图表数据",
|
||||||
|
"monthlyTrend": "月度收支趋势",
|
||||||
|
"month": "月份",
|
||||||
|
"revenue": "收入(万)",
|
||||||
|
"cost": "成本(万)",
|
||||||
|
"departmentRevenue": "科室收入分布",
|
||||||
|
"department": "科室",
|
||||||
|
"drgTrend": "DRG绩效趋势",
|
||||||
|
"cmiValue": "CMI值",
|
||||||
|
"costControlRateCol": "成本控制率(%)",
|
||||||
|
"caseCount": "病例数"
|
||||||
|
},
|
||||||
|
"analytics": {
|
||||||
|
"title": "经营分析报告",
|
||||||
|
"exportExcel": "导出Excel",
|
||||||
|
"department": "科室",
|
||||||
|
"departmentName": "科室名称",
|
||||||
|
"startDate": "开始日期",
|
||||||
|
"endDate": "结束日期",
|
||||||
|
"search": "查询",
|
||||||
|
"reset": "重置",
|
||||||
|
"summaryData": "汇总数据",
|
||||||
|
"totalRecords": "总记录数",
|
||||||
|
"totalRevenue": "总收入(万)",
|
||||||
|
"totalCost": "总成本(万)",
|
||||||
|
"totalProfit": "总利润(万)",
|
||||||
|
"totalPatients": "总患者数",
|
||||||
|
"profitRate": "利润率",
|
||||||
|
"detailData": "明细数据",
|
||||||
|
"date": "日期",
|
||||||
|
"revenue": "收入(万元)",
|
||||||
|
"cost": "成本(万元)",
|
||||||
|
"profit": "利润(万元)",
|
||||||
|
"patientCount": "患者数",
|
||||||
|
"bedCount": "床位数",
|
||||||
|
"bedOccupancyRate": "床位率(%)",
|
||||||
|
"avgStayDays": "平均住院日",
|
||||||
|
"avgCost": "平均费用(万)",
|
||||||
|
"queryFailed": "查询失败",
|
||||||
|
"exportSuccess": "导出数据共 {count} 条,请查看返回数据",
|
||||||
|
"exportFailed": "导出失败"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"medication": {
|
||||||
|
"dayEnd": {
|
||||||
|
"queryDate": "查询日期:",
|
||||||
|
"startDate": "开始日期",
|
||||||
|
"endDate": "结束日期",
|
||||||
|
"settlementType": "结算类型:",
|
||||||
|
"daily": "日结",
|
||||||
|
"weekly": "周结",
|
||||||
|
"monthly": "月结",
|
||||||
|
"search": "查询",
|
||||||
|
"print": "打印",
|
||||||
|
"add": "新增",
|
||||||
|
"edit": "修改",
|
||||||
|
"delete": "删除",
|
||||||
|
"export": "导出",
|
||||||
|
"settlementNo": "结算单号",
|
||||||
|
"settlementDate": "结算日期",
|
||||||
|
"settlementTypeCol": "结算类型",
|
||||||
|
"settlementStatus": "结算状态",
|
||||||
|
"totalAmount": "总金额",
|
||||||
|
"operator": "操作人",
|
||||||
|
"operationTime": "操作时间",
|
||||||
|
"operation": "操作",
|
||||||
|
"view": "查看",
|
||||||
|
"addTitle": "添加日结结算单",
|
||||||
|
"editTitle": "修改日结结算单",
|
||||||
|
"settlementNoRequired": "结算单号不能为空",
|
||||||
|
"settlementDateRequired": "结算日期不能为空",
|
||||||
|
"settlementTypeRequired": "结算类型不能为空",
|
||||||
|
"totalAmountRequired": "总金额不能为空",
|
||||||
|
"inputSettlementNo": "请输入结算单号",
|
||||||
|
"selectSettlementDate": "请选择结算日期",
|
||||||
|
"selectSettlementType": "请选择结算类型",
|
||||||
|
"inputTotalAmount": "请输入总金额",
|
||||||
|
"remark": "备注",
|
||||||
|
"inputContent": "请输入内容",
|
||||||
|
"confirm": "确 定",
|
||||||
|
"cancel": "取 消",
|
||||||
|
"confirmDelete": "是否确认删除日结结算单编号为\"{id}\"的数据项?",
|
||||||
|
"editSuccess": "修改成功",
|
||||||
|
"addSuccess": "新增成功",
|
||||||
|
"deleteSuccess": "删除成功",
|
||||||
|
"printNotImplemented": "打印功能待实现",
|
||||||
|
"viewNotImplemented": "查看功能待实现",
|
||||||
|
"getListFailed": "获取日结结算单列表失败:"
|
||||||
|
},
|
||||||
|
"purchase": {
|
||||||
|
"documentNo": "单据号",
|
||||||
|
"approvalStatus": "审批状态",
|
||||||
|
"documentType": "单据类型",
|
||||||
|
"supplier": "供应商",
|
||||||
|
"handler": "经手人",
|
||||||
|
"queryTime": "查询时间:",
|
||||||
|
"startDate": "开始日期",
|
||||||
|
"endDate": "结束日期",
|
||||||
|
"purchaseInbound": "采购入库",
|
||||||
|
"delete": "删除",
|
||||||
|
"search": "查询",
|
||||||
|
"reset": "重置",
|
||||||
|
"returnStatus": "退库状态",
|
||||||
|
"creator": "制单人",
|
||||||
|
"approver": "审核人",
|
||||||
|
"createTime": "制单日期",
|
||||||
|
"approvalTime": "审核日期",
|
||||||
|
"operation": "操作",
|
||||||
|
"detail": "详情",
|
||||||
|
"edit": "编辑",
|
||||||
|
"returnGoods": "退库",
|
||||||
|
"submitApproval": "提交审批",
|
||||||
|
"withdrawApproval": "撤销审批",
|
||||||
|
"returned": "已退库",
|
||||||
|
"submitApprovalSuccess": "提交审批成功",
|
||||||
|
"withdrawApprovalSuccess": "撤销审批成功",
|
||||||
|
"approvedCannotDelete": "已审批的记录不能删除",
|
||||||
|
"confirmDeleteData": "是否确认删除以上数据?",
|
||||||
|
"deleteSuccess": "删除成功"
|
||||||
|
},
|
||||||
|
"bill": {
|
||||||
|
"documentNo": "单据号",
|
||||||
|
"approvalStatus": "审批状态",
|
||||||
|
"documentType": "单据类型",
|
||||||
|
"handler": "经手人",
|
||||||
|
"supplier": "供应商",
|
||||||
|
"targetWarehouse": "目的仓库",
|
||||||
|
"totalAmount": "总金额",
|
||||||
|
"currencyUnit": "元",
|
||||||
|
"applicant": "申请人",
|
||||||
|
"applyTime": "申请时间",
|
||||||
|
"approver": "审批人",
|
||||||
|
"approvalTime": "审批时间",
|
||||||
|
"operation": "操作",
|
||||||
|
"approve": "审批",
|
||||||
|
"view": "查看",
|
||||||
|
"export": "导出",
|
||||||
|
"reset": "重置",
|
||||||
|
"search": "搜索",
|
||||||
|
"selectApplyDate": "请选择申请日期",
|
||||||
|
"operationSuccess": "操作成功"
|
||||||
|
},
|
||||||
|
"pharmacy": {
|
||||||
|
"selectWarehouse": "请选择库房",
|
||||||
|
"selectStartTime": "选择开始时间",
|
||||||
|
"selectEndTime": "选择结束时间",
|
||||||
|
"search": "查询",
|
||||||
|
"reset": "重置",
|
||||||
|
"warehouse": "库房",
|
||||||
|
"initialAmount": "期初金额",
|
||||||
|
"finalAmount": "期末金额",
|
||||||
|
"expectedFinalAmount": "预期期末金额",
|
||||||
|
"offsetAmount": "偏移量",
|
||||||
|
"purchaseInAmount": "采购入库金额",
|
||||||
|
"purchaseInDocs": "采购入库单据数",
|
||||||
|
"purchaseOutAmount": "采购出库金额",
|
||||||
|
"purchaseOutDocs": "采购出库单据数",
|
||||||
|
"requisitionOutAmount": "领用出库金额",
|
||||||
|
"requisitionOutDocs": "领用出库单据数",
|
||||||
|
"requisitionReturnAmount": "领用退货金额",
|
||||||
|
"requisitionReturnDocs": "领用退货单据数",
|
||||||
|
"transferInAmount": "调拨入库金额",
|
||||||
|
"transferInDocs": "调拨入库单据数",
|
||||||
|
"transferOutAmount": "调拨出库金额",
|
||||||
|
"transferOutDocs": "调拨出库单据数",
|
||||||
|
"stocktakeAmount": "盘点盈亏金额",
|
||||||
|
"stocktakeDocs": "盘点盈亏单据数",
|
||||||
|
"lossAmount": "报损金额",
|
||||||
|
"lossDocs": "报损单据数",
|
||||||
|
"drugIssueAmount": "药品发放金额",
|
||||||
|
"getReconciliationFailed": "获取对账数据失败",
|
||||||
|
"getWarehouseFailed": "获取库房数据失败",
|
||||||
|
"unknownError": "未知错误",
|
||||||
|
"invalidPageIndex": "无效的页面索引"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"datadict": {
|
||||||
|
"drugPricing": "药品定价",
|
||||||
|
"instrumentPricing": "器具定价",
|
||||||
|
"activityPricing": "活动定价",
|
||||||
|
"financialCategory": "财务类别",
|
||||||
|
"selectFinancialCategory": "请选择财务类别",
|
||||||
|
"status": "状态",
|
||||||
|
"selectStatus": "请选择状态",
|
||||||
|
"name": "名称",
|
||||||
|
"nameCodePinyin": "名称/编码/拼音",
|
||||||
|
"itemName": "项目名称",
|
||||||
|
"department": "所属科室",
|
||||||
|
"insuranceCategory": "医保类别",
|
||||||
|
"basePrice": "基础价格",
|
||||||
|
"detailCount": "费用明细个数",
|
||||||
|
"operation": "操作",
|
||||||
|
"edit": "修改",
|
||||||
|
"condition": "条件",
|
||||||
|
"price": "价格",
|
||||||
|
"editPricing": "修改项目定价",
|
||||||
|
"detailTitle": "明细详情",
|
||||||
|
"operationSuccess": "操作成功",
|
||||||
|
"confirm": "确 定",
|
||||||
|
"cancel": "取 消",
|
||||||
|
"confirmBeforeSubmit": "请确认后再提交"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="项目名称"
|
:label="$t('datadict.itemName')"
|
||||||
prop="chargeName"
|
prop="chargeName"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="所属科室"
|
:label="$t('datadict.department')"
|
||||||
prop="orgId_dictText"
|
prop="orgId_dictText"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="财务类别"
|
:label="$t('datadict.financialCategory')"
|
||||||
prop="typeCode_dictText"
|
prop="typeCode_dictText"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="医保类别"
|
:label="$t('datadict.insuranceCategory')"
|
||||||
prop="ybType_dictText"
|
prop="ybType_dictText"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="基础价格"
|
:label="$t('datadict.basePrice')"
|
||||||
prop="price"
|
prop="price"
|
||||||
>
|
>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
@@ -92,16 +92,19 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="submitForm"
|
@click="submitForm"
|
||||||
>
|
>
|
||||||
确 定
|
{{ $t('datadict.confirm') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button @click="cancel">
|
<el-button @click="cancel">
|
||||||
取 消
|
{{ $t('datadict.cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import {useI18n} from "vue-i18n";
|
||||||
|
|
||||||
|
const {t} = useI18n();
|
||||||
const emit = defineEmits(["submit", "update:open"]);
|
const emit = defineEmits(["submit", "update:open"]);
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
title: String,
|
title: String,
|
||||||
@@ -126,7 +129,7 @@ const submitForm = () => {
|
|||||||
emit("submit", fromModel.value);
|
emit("submit", fromModel.value);
|
||||||
} else {
|
} else {
|
||||||
// 验证失败,显示错误消息
|
// 验证失败,显示错误消息
|
||||||
ElMessage.warning("请确认后再提交");
|
ElMessage.warning(t('datadict.confirmBeforeSubmit'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -159,4 +162,4 @@ watch(
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -13,20 +13,20 @@
|
|||||||
@tab-click="handleClick"
|
@tab-click="handleClick"
|
||||||
>
|
>
|
||||||
<el-tab-pane
|
<el-tab-pane
|
||||||
label="药品定价"
|
:label="$t('datadict.drugPricing')"
|
||||||
name="1"
|
name="1"
|
||||||
>
|
>
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="财务类别"
|
:label="$t('datadict.financialCategory')"
|
||||||
|
|
||||||
prop="chargeItem"
|
prop="chargeItem"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.typeCode"
|
v-model="queryParams.typeCode"
|
||||||
placeholder="请选择财务类别"
|
:placeholder="$t('datadict.selectFinancialCategory')"
|
||||||
clearable
|
clearable
|
||||||
|
|
||||||
:disabled="editShow"
|
:disabled="editShow"
|
||||||
@@ -44,13 +44,13 @@
|
|||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="状态"
|
:label="$t('datadict.status')"
|
||||||
|
|
||||||
prop="chargeItem"
|
prop="chargeItem"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.statusEnum"
|
v-model="queryParams.statusEnum"
|
||||||
placeholder="请选择状态"
|
:placeholder="$t('datadict.selectStatus')"
|
||||||
clearable
|
clearable
|
||||||
|
|
||||||
:disabled="editShow"
|
:disabled="editShow"
|
||||||
@@ -68,13 +68,13 @@
|
|||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="名称"
|
:label="$t('datadict.name')"
|
||||||
|
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="名称/编码/拼音"
|
:placeholder="$t('datadict.nameCodePinyin')"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
@blur="handleQuery"
|
@blur="handleQuery"
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
fixed="left"
|
fixed="left"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="项目名称"
|
:title="$t('datadict.itemName')"
|
||||||
width="200"
|
width="200"
|
||||||
field="chargeName"
|
field="chargeName"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="所属科室"
|
:title="$t('datadict.department')"
|
||||||
width="200"
|
width="200"
|
||||||
field="orgId_dictText"
|
field="orgId_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="财务类别"
|
:title="$t('datadict.financialCategory')"
|
||||||
width="200"
|
width="200"
|
||||||
field=" typeCode_dictText"
|
field=" typeCode_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="医保类别"
|
:title="$t('datadict.insuranceCategory')"
|
||||||
width="200"
|
width="200"
|
||||||
field="ybType_dictText"
|
field="ybType_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="基础价格"
|
:title="$t('datadict.basePrice')"
|
||||||
width="200"
|
width="200"
|
||||||
field="price"
|
field="price"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="费用明细个数"
|
:title="$t('datadict.detailCount')"
|
||||||
width="200"
|
width="200"
|
||||||
field="detailCount"
|
field="detailCount"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -171,7 +171,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="状态"
|
:title="$t('datadict.status')"
|
||||||
width="200"
|
width="200"
|
||||||
field="statusEnum_enumText"
|
field="statusEnum_enumText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
min-width="290"
|
min-width="290"
|
||||||
title="操作"
|
:title="$t('datadict.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
@@ -197,7 +197,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="handleUpdate(scope.row)"
|
@click="handleUpdate(scope.row)"
|
||||||
>
|
>
|
||||||
修改
|
{{ $t('datadict.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -211,20 +211,20 @@
|
|||||||
/>
|
/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane
|
<el-tab-pane
|
||||||
label="器具定价"
|
:label="$t('datadict.instrumentPricing')"
|
||||||
name="2"
|
name="2"
|
||||||
>
|
>
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="财务类别"
|
:label="$t('datadict.financialCategory')"
|
||||||
|
|
||||||
prop="chargeItem"
|
prop="chargeItem"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.typeCode"
|
v-model="queryParams.typeCode"
|
||||||
placeholder="请选择财务类别"
|
:placeholder="$t('datadict.selectFinancialCategory')"
|
||||||
clearable
|
clearable
|
||||||
|
|
||||||
:disabled="editShow"
|
:disabled="editShow"
|
||||||
@@ -242,13 +242,13 @@
|
|||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="状态"
|
:label="$t('datadict.status')"
|
||||||
|
|
||||||
prop="chargeItem"
|
prop="chargeItem"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.statusEnum"
|
v-model="queryParams.statusEnum"
|
||||||
placeholder="请选择状态"
|
:placeholder="$t('datadict.selectStatus')"
|
||||||
clearable
|
clearable
|
||||||
|
|
||||||
:disabled="editShow"
|
:disabled="editShow"
|
||||||
@@ -266,13 +266,13 @@
|
|||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="名称"
|
:label="$t('datadict.name')"
|
||||||
|
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="名称/编码/拼音"
|
:placeholder="$t('datadict.nameCodePinyin')"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
@blur="handleQuery"
|
@blur="handleQuery"
|
||||||
@@ -292,7 +292,7 @@
|
|||||||
fixed="left"
|
fixed="left"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="项目名称"
|
:title="$t('datadict.itemName')"
|
||||||
width="200"
|
width="200"
|
||||||
field="chargeName"
|
field="chargeName"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -302,7 +302,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="所属科室"
|
:title="$t('datadict.department')"
|
||||||
width="200"
|
width="200"
|
||||||
field="orgId_dictText"
|
field="orgId_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -312,7 +312,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="财务类别"
|
:title="$t('datadict.financialCategory')"
|
||||||
width="200"
|
width="200"
|
||||||
field=" typeCode_dictText"
|
field=" typeCode_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -326,7 +326,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="医保类别"
|
:title="$t('datadict.insuranceCategory')"
|
||||||
width="200"
|
width="200"
|
||||||
field="ybType_dictText"
|
field="ybType_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -338,7 +338,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="基础价格"
|
:title="$t('datadict.basePrice')"
|
||||||
width="200"
|
width="200"
|
||||||
field="price"
|
field="price"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -348,7 +348,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="费用明细个数"
|
:title="$t('datadict.detailCount')"
|
||||||
width="200"
|
width="200"
|
||||||
field="detailCount"
|
field="detailCount"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -369,7 +369,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="状态"
|
:title="$t('datadict.status')"
|
||||||
width="200"
|
width="200"
|
||||||
field="statusEnum_enumText"
|
field="statusEnum_enumText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -384,7 +384,7 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
min-width="290"
|
min-width="290"
|
||||||
title="操作"
|
:title="$t('datadict.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
@@ -395,7 +395,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="handleUpdate(scope.row)"
|
@click="handleUpdate(scope.row)"
|
||||||
>
|
>
|
||||||
修改
|
{{ $t('datadict.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -409,20 +409,20 @@
|
|||||||
/>
|
/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane
|
<el-tab-pane
|
||||||
label="活动定价"
|
:label="$t('datadict.activityPricing')"
|
||||||
name="3"
|
name="3"
|
||||||
>
|
>
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="财务类别"
|
:label="$t('datadict.financialCategory')"
|
||||||
|
|
||||||
prop="chargeItem"
|
prop="chargeItem"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.typeCode"
|
v-model="queryParams.typeCode"
|
||||||
placeholder="请选择财务类别"
|
:placeholder="$t('datadict.selectFinancialCategory')"
|
||||||
clearable
|
clearable
|
||||||
|
|
||||||
:disabled="editShow"
|
:disabled="editShow"
|
||||||
@@ -440,13 +440,13 @@
|
|||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="状态"
|
:label="$t('datadict.status')"
|
||||||
|
|
||||||
prop="chargeItem"
|
prop="chargeItem"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.statusEnum"
|
v-model="queryParams.statusEnum"
|
||||||
placeholder="请选择状态"
|
:placeholder="$t('datadict.selectStatus')"
|
||||||
clearable
|
clearable
|
||||||
|
|
||||||
:disabled="editShow"
|
:disabled="editShow"
|
||||||
@@ -464,13 +464,13 @@
|
|||||||
<!-- <el-col :span="4" style="width: 20%"> -->
|
<!-- <el-col :span="4" style="width: 20%"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="100"
|
label-width="100"
|
||||||
label="名称"
|
:label="$t('datadict.name')"
|
||||||
|
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="名称/编码/拼音"
|
:placeholder="$t('datadict.nameCodePinyin')"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
@blur="handleQuery"
|
@blur="handleQuery"
|
||||||
@@ -490,7 +490,7 @@
|
|||||||
fixed="left"
|
fixed="left"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="项目名称"
|
:title="$t('datadict.itemName')"
|
||||||
width="200"
|
width="200"
|
||||||
field="chargeName"
|
field="chargeName"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -500,7 +500,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="所属科室"
|
:title="$t('datadict.department')"
|
||||||
width="200"
|
width="200"
|
||||||
field="orgId_dictText"
|
field="orgId_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -510,7 +510,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="财务类别"
|
:title="$t('datadict.financialCategory')"
|
||||||
width="200"
|
width="200"
|
||||||
field=" typeCode_dictText"
|
field=" typeCode_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -524,7 +524,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="医保类别"
|
:title="$t('datadict.insuranceCategory')"
|
||||||
width="200"
|
width="200"
|
||||||
field="ybType_dictText"
|
field="ybType_dictText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -536,7 +536,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="基础价格"
|
:title="$t('datadict.basePrice')"
|
||||||
width="200"
|
width="200"
|
||||||
field="price"
|
field="price"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -546,7 +546,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="费用明细个数"
|
:title="$t('datadict.detailCount')"
|
||||||
width="200"
|
width="200"
|
||||||
field="detailCount"
|
field="detailCount"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -567,7 +567,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="状态"
|
:title="$t('datadict.status')"
|
||||||
width="200"
|
width="200"
|
||||||
field="statusEnum_enumText"
|
field="statusEnum_enumText"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -582,7 +582,7 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
min-width="290"
|
min-width="290"
|
||||||
title="操作"
|
:title="$t('datadict.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
@@ -593,7 +593,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="handleUpdate(scope.row)"
|
@click="handleUpdate(scope.row)"
|
||||||
>
|
>
|
||||||
修改
|
{{ $t('datadict.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -620,7 +620,7 @@
|
|||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="条件"
|
:title="$t('datadict.condition')"
|
||||||
field="conditionCode_enumText"
|
field="conditionCode_enumText"
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
@@ -633,7 +633,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="价格"
|
:title="$t('datadict.price')"
|
||||||
width="200"
|
width="200"
|
||||||
field="amount"
|
field="amount"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -658,6 +658,9 @@
|
|||||||
import {getDetail, initOption, listDefinition, updateDefinition,} from "./components/definition";
|
import {getDetail, initOption, listDefinition, updateDefinition,} from "./components/definition";
|
||||||
import Edit from "./components/edit.vue";
|
import Edit from "./components/edit.vue";
|
||||||
import {thousandNumber} from "@/utils/his.js";
|
import {thousandNumber} from "@/utils/his.js";
|
||||||
|
import {useI18n} from "vue-i18n";
|
||||||
|
|
||||||
|
const {t} = useI18n();
|
||||||
|
|
||||||
const activeName = ref("1");
|
const activeName = ref("1");
|
||||||
const showSearch = ref("true");
|
const showSearch = ref("true");
|
||||||
@@ -739,7 +742,7 @@ function handleUpdate(row) {
|
|||||||
reset();
|
reset();
|
||||||
form.value = row;
|
form.value = row;
|
||||||
open.value = true;
|
open.value = true;
|
||||||
title.value = "修改项目定价";
|
title.value = t('datadict.editPricing');
|
||||||
}
|
}
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
function handleInit() {
|
function handleInit() {
|
||||||
@@ -759,7 +762,7 @@ function handleDetails(row) {
|
|||||||
definitionDetailList.value = res.data;
|
definitionDetailList.value = res.data;
|
||||||
openDetails.value = true;
|
openDetails.value = true;
|
||||||
detailLoading.value = false;
|
detailLoading.value = false;
|
||||||
title.value = "明细详情";
|
title.value = t('datadict.detailTitle');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -772,7 +775,7 @@ const handleFormChange = (newForm) => {
|
|||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
function submitForm(form) {
|
function submitForm(form) {
|
||||||
updateDefinition(form).then((response) => {
|
updateDefinition(form).then((response) => {
|
||||||
proxy.$modal.msgSuccess("操作成功");
|
proxy.$modal.msgSuccess(t('datadict.operationSuccess'));
|
||||||
open.value = false;
|
open.value = false;
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,19 +8,19 @@
|
|||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="数据查询"
|
:label="$t('inspection.groupRec.dataQuery')"
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="患者姓名/项目名称"
|
:placeholder="$t('inspection.groupRec.patientOrItemPlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="创建时间"
|
:label="$t('inspection.groupRec.createTime')"
|
||||||
style="width: 308px;"
|
style="width: 308px;"
|
||||||
>
|
>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -28,8 +28,8 @@
|
|||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
type="daterange"
|
type="daterange"
|
||||||
range-separator="-"
|
range-separator="-"
|
||||||
start-placeholder="开始日期"
|
:start-placeholder="$t('inspection.groupRec.startDate')"
|
||||||
end-placeholder="结束日期"
|
:end-placeholder="$t('inspection.groupRec.endDate')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@@ -38,13 +38,13 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="handleQuery"
|
@click="handleQuery"
|
||||||
>
|
>
|
||||||
搜索
|
{{ $t('inspection.groupRec.search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
icon="Refresh"
|
icon="Refresh"
|
||||||
@click="resetQuery"
|
@click="resetQuery"
|
||||||
>
|
>
|
||||||
重置
|
{{ $t('inspection.groupRec.reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
:disabled="collect"
|
:disabled="collect"
|
||||||
@click="handleCollect('已接收')"
|
@click="handleCollect('已接收')"
|
||||||
>
|
>
|
||||||
样本接收
|
{{ $t('inspection.groupRec.sampleReceive') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="1.5">-->
|
<!-- <el-col :span="1.5">-->
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleCollect('已采集')"
|
@click="handleCollect('已采集')"
|
||||||
>
|
>
|
||||||
取消
|
{{ $t('inspection.groupRec.cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleDelete"
|
@click="handleDelete"
|
||||||
>
|
>
|
||||||
打印条码
|
{{ $t('inspection.groupRec.printBarcode') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
@@ -130,11 +130,11 @@
|
|||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="specimenName"
|
field="specimenName"
|
||||||
title="样本名称"
|
:title="$t('inspection.groupRec.sampleName')"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="specimenVolume"
|
field="specimenVolume"
|
||||||
title="样本数量"
|
:title="$t('inspection.groupRec.sampleVolume')"
|
||||||
>
|
>
|
||||||
<template #default="innerProps">
|
<template #default="innerProps">
|
||||||
{{ innerProps.row.specimenVolume }} {{ innerProps.row.specimenUnit }}
|
{{ innerProps.row.specimenVolume }} {{ innerProps.row.specimenUnit }}
|
||||||
@@ -142,32 +142,32 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="collectionStatusEnumText"
|
field="collectionStatusEnumText"
|
||||||
title="样本状态"
|
:title="$t('inspection.groupRec.sampleStatus')"
|
||||||
>
|
>
|
||||||
<template #default="nerProp">
|
<template #default="nerProp">
|
||||||
<span
|
<span
|
||||||
v-if="nerProp.row.collectionStatusEnum == 1"
|
v-if="nerProp.row.collectionStatusEnum == 1"
|
||||||
style="color:green"
|
style="color:green"
|
||||||
>
|
>
|
||||||
已采集
|
{{ $t('inspection.groupRec.collected') }}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-else-if="nerProp.row.collectionStatusEnum == 0"
|
v-else-if="nerProp.row.collectionStatusEnum == 0"
|
||||||
style="color:orange"
|
style="color:orange"
|
||||||
>
|
>
|
||||||
待采集
|
{{ $t('inspection.groupRec.pendingCollection') }}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-else-if="nerProp.row.collectionStatusEnum == 2"
|
v-else-if="nerProp.row.collectionStatusEnum == 2"
|
||||||
style="color:#0EB396"
|
style="color:#0EB396"
|
||||||
>
|
>
|
||||||
已接收
|
{{ $t('inspection.groupRec.received') }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="receivedDate"
|
field="receivedDate"
|
||||||
title="接收时间"
|
:title="$t('inspection.groupRec.receiveTime')"
|
||||||
/>
|
/>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</template>
|
</template>
|
||||||
@@ -175,43 +175,43 @@
|
|||||||
<!-- 母表列 -->
|
<!-- 母表列 -->
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="chargeName"
|
field="chargeName"
|
||||||
title="项目名称"
|
:title="$t('inspection.groupRec.itemName')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="patientName"
|
field="patientName"
|
||||||
title="患者姓名"
|
:title="$t('inspection.groupRec.patientName')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="genderEnumText"
|
field="genderEnumText"
|
||||||
title="性别"
|
:title="$t('inspection.groupRec.gender')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column title="样本状态">
|
<vxe-column :title="$t('inspection.groupRec.sampleStatus')">
|
||||||
<template #default="sprops">
|
<template #default="sprops">
|
||||||
<span
|
<span
|
||||||
v-if="hasPendingCollection(sprops.row.children)"
|
v-if="hasPendingCollection(sprops.row.children)"
|
||||||
style="color:red"
|
style="color:red"
|
||||||
>
|
>
|
||||||
待接收
|
{{ $t('inspection.groupRec.pendingReceive') }}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-else
|
v-else
|
||||||
style="color:#0EB396"
|
style="color:#0EB396"
|
||||||
>
|
>
|
||||||
已接收
|
{{ $t('inspection.groupRec.receivedStatus') }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="doctorName"
|
field="doctorName"
|
||||||
title="开单医生"
|
:title="$t('inspection.groupRec.orderingDoctor')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="authoredTime"
|
field="authoredTime"
|
||||||
title="开单时间"
|
:title="$t('inspection.groupRec.orderingTime')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
@@ -230,6 +230,8 @@
|
|||||||
import {collectionList, editStatus} from "./components/collect.js";
|
import {collectionList, editStatus} from "./components/collect.js";
|
||||||
import {formatDateStr} from "@/utils/index.js";
|
import {formatDateStr} from "@/utils/index.js";
|
||||||
|
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
@@ -301,7 +303,7 @@ function handleSelectionChange(selection) {
|
|||||||
function handleCollect(type) {
|
function handleCollect(type) {
|
||||||
|
|
||||||
editStatus(ids.value,type).then(()=>{
|
editStatus(ids.value,type).then(()=>{
|
||||||
proxy.$modal.msgSuccess("操作成功");
|
proxy.$modal.msgSuccess(t('inspection.groupRec.operationSuccess'));
|
||||||
getList();
|
getList();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
:xs="24"
|
:xs="24"
|
||||||
>
|
>
|
||||||
<div class="head-title">
|
<div class="head-title">
|
||||||
仪器类型目录
|
{{ $t('inspection.instrument.typeCatalog') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<el-tree
|
<el-tree
|
||||||
@@ -38,13 +38,13 @@
|
|||||||
<el-row :gutter="24">
|
<el-row :gutter="24">
|
||||||
<!-- <el-col :span="6"> -->
|
<!-- <el-col :span="6"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="仪器名"
|
:label="$t('inspection.instrument.instrumentName')"
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
label-width="55"
|
label-width="55"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="名称/编码/"
|
:placeholder="$t('inspection.instrument.nameCodePlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 220px"
|
style="width: 220px"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
<!-- </el-col> -->
|
<!-- </el-col> -->
|
||||||
<!-- <el-col :span="5"> -->
|
<!-- <el-col :span="5"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="状态"
|
:label="$t('inspection.instrument.status')"
|
||||||
prop="statusEnum"
|
prop="statusEnum"
|
||||||
label-width="50"
|
label-width="50"
|
||||||
>
|
>
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
icon="Plus"
|
icon="Plus"
|
||||||
@click="openAddInstrument()"
|
@click="openAddInstrument()"
|
||||||
>
|
>
|
||||||
添加
|
{{ $t('inspection.instrument.add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleClose"
|
@click="handleClose"
|
||||||
>
|
>
|
||||||
停用
|
{{ $t('inspection.instrument.disable') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleStart"
|
@click="handleStart"
|
||||||
>
|
>
|
||||||
启用
|
{{ $t('inspection.instrument.enable') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="getList"
|
@click="getList"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('inspection.instrument.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="1.5">
|
<!-- <el-col :span="1.5">
|
||||||
@@ -142,91 +142,91 @@
|
|||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="instrumentCode"
|
key="instrumentCode"
|
||||||
title="仪器编码"
|
:title="$t('inspection.instrument.instrumentCode')"
|
||||||
align="center"
|
align="center"
|
||||||
field="instrumentCode"
|
field="instrumentCode"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="instrumentName"
|
key="instrumentName"
|
||||||
title="仪器名称"
|
:title="$t('inspection.instrument.instrumentNameCol')"
|
||||||
align="center"
|
align="center"
|
||||||
field="instrumentName"
|
field="instrumentName"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="instrumentMainCode"
|
key="instrumentMainCode"
|
||||||
title="主编码"
|
:title="$t('inspection.instrument.mainCode')"
|
||||||
align="center"
|
align="center"
|
||||||
field="instrumentMainCode"
|
field="instrumentMainCode"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="instrumentTypeEnumText"
|
key="instrumentTypeEnumText"
|
||||||
title="类型"
|
:title="$t('inspection.instrument.type')"
|
||||||
align="center"
|
align="center"
|
||||||
field="instrumentTypeEnumText"
|
field="instrumentTypeEnumText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="instrumentModel"
|
key="instrumentModel"
|
||||||
title="型号"
|
:title="$t('inspection.instrument.model')"
|
||||||
align="center"
|
align="center"
|
||||||
field="instrumentModel"
|
field="instrumentModel"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="manufacturer"
|
key="manufacturer"
|
||||||
title="生产厂家"
|
:title="$t('inspection.instrument.manufacturer')"
|
||||||
align="center"
|
align="center"
|
||||||
field="manufacturer"
|
field="manufacturer"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="serialNumber"
|
key="serialNumber"
|
||||||
title="序列号"
|
:title="$t('inspection.instrument.serialNumber')"
|
||||||
align="center"
|
align="center"
|
||||||
field="serialNumber"
|
field="serialNumber"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="purchasingCompany"
|
key="purchasingCompany"
|
||||||
title="采购单位"
|
:title="$t('inspection.instrument.purchasingCompany')"
|
||||||
align="center"
|
align="center"
|
||||||
field="purchasingCompany"
|
field="purchasingCompany"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="contactPerson"
|
key="contactPerson"
|
||||||
title="联系人"
|
:title="$t('inspection.instrument.contactPerson')"
|
||||||
align="center"
|
align="center"
|
||||||
field="contactPerson"
|
field="contactPerson"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="purchaseDate"
|
key="purchaseDate"
|
||||||
title="采购日期"
|
:title="$t('inspection.instrument.purchaseDate')"
|
||||||
align="center"
|
align="center"
|
||||||
field="purchaseDate"
|
field="purchaseDate"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="originalPrice"
|
key="originalPrice"
|
||||||
title="原价"
|
:title="$t('inspection.instrument.originalPrice')"
|
||||||
align="center"
|
align="center"
|
||||||
field="originalPrice"
|
field="originalPrice"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="transactionPrice"
|
key="transactionPrice"
|
||||||
title="成交价"
|
:title="$t('inspection.instrument.transactionPrice')"
|
||||||
align="center"
|
align="center"
|
||||||
field="transactionPrice"
|
field="transactionPrice"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="installationDate"
|
key="installationDate"
|
||||||
title="安装日期"
|
:title="$t('inspection.instrument.installationDate')"
|
||||||
align="center"
|
align="center"
|
||||||
field="installationDate"
|
field="installationDate"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
@@ -237,91 +237,91 @@
|
|||||||
</vxe-column>>
|
</vxe-column>>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="installationPerson"
|
key="installationPerson"
|
||||||
title="安装人"
|
:title="$t('inspection.instrument.installationPerson')"
|
||||||
align="center"
|
align="center"
|
||||||
field="installationPerson"
|
field="installationPerson"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="maintenancePerson"
|
key="maintenancePerson"
|
||||||
title="维护人"
|
:title="$t('inspection.instrument.maintenancePerson')"
|
||||||
align="center"
|
align="center"
|
||||||
field="maintenancePerson"
|
field="maintenancePerson"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="orgId_dictText"
|
key="orgId_dictText"
|
||||||
title="使用科室"
|
:title="$t('inspection.instrument.useDepartment')"
|
||||||
align="center"
|
align="center"
|
||||||
field="orgId_dictText"
|
field="orgId_dictText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>>
|
/>>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="identificationPerson"
|
key="identificationPerson"
|
||||||
title="鉴定人"
|
:title="$t('inspection.instrument.identificationPerson')"
|
||||||
align="center"
|
align="center"
|
||||||
field="identificationPerson"
|
field="identificationPerson"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="recordedTemperature"
|
key="recordedTemperature"
|
||||||
title="记录温度"
|
:title="$t('inspection.instrument.recordedTemperature')"
|
||||||
align="center"
|
align="center"
|
||||||
field="recordedTemperature"
|
field="recordedTemperature"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="accessories"
|
key="accessories"
|
||||||
title="附件"
|
:title="$t('inspection.instrument.accessories')"
|
||||||
align="center"
|
align="center"
|
||||||
field="accessories"
|
field="accessories"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="instrumentStatusEnum"
|
key="instrumentStatusEnum"
|
||||||
title="仪器状态"
|
:title="$t('inspection.instrument.instrumentStatus')"
|
||||||
align="center"
|
align="center"
|
||||||
field="instrumentStatusEnum"
|
field="instrumentStatusEnum"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="damageReportDate"
|
key="damageReportDate"
|
||||||
title="报损日期"
|
:title="$t('inspection.instrument.damageReportDate')"
|
||||||
align="center"
|
align="center"
|
||||||
field="damageReportDate"
|
field="damageReportDate"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="recheckableInstrumentEnum"
|
key="recheckableInstrumentEnum"
|
||||||
title="可复检"
|
:title="$t('inspection.instrument.recheckable')"
|
||||||
align="center"
|
align="center"
|
||||||
field="recheckableInstrumentEnum"
|
field="recheckableInstrumentEnum"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="usageStatusEnum"
|
key="usageStatusEnum"
|
||||||
title="使用情况"
|
:title="$t('inspection.instrument.usageStatus')"
|
||||||
align="center"
|
align="center"
|
||||||
field="usageStatusEnum"
|
field="usageStatusEnum"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="decommissionReason"
|
key="decommissionReason"
|
||||||
title="报废原因"
|
:title="$t('inspection.instrument.decommissionReason')"
|
||||||
align="center"
|
align="center"
|
||||||
field="decommissionReason"
|
field="decommissionReason"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="remarks"
|
key="remarks"
|
||||||
title="备注"
|
:title="$t('inspection.instrument.remarks')"
|
||||||
align="center"
|
align="center"
|
||||||
field="remarks"
|
field="remarks"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('inspection.instrument.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="150"
|
width="150"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
@@ -334,7 +334,7 @@
|
|||||||
icon="Edit"
|
icon="Edit"
|
||||||
@click="openEditInstrument(scope.row)"
|
@click="openEditInstrument(scope.row)"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('inspection.instrument.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -371,6 +371,8 @@ import instrumentDialog from "./components/instrumentDialog.vue";
|
|||||||
import {nextTick} from "vue";
|
import {nextTick} from "vue";
|
||||||
import {parseTime} from "../../../utils/his.js";
|
import {parseTime} from "../../../utils/his.js";
|
||||||
|
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
const instrumentList = ref([]);
|
const instrumentList = ref([]);
|
||||||
@@ -454,13 +456,13 @@ function handleStart() {
|
|||||||
const startIds = ids.value;
|
const startIds = ids.value;
|
||||||
// selectedData
|
// selectedData
|
||||||
proxy.$modal
|
proxy.$modal
|
||||||
.confirm("是否确定启用数据!")
|
.confirm(t('inspection.instrument.confirmEnable'))
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return editInstrumentStatus(startIds,'启用');
|
return editInstrumentStatus(startIds,'启用');
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
proxy.$modal.msgSuccess("启用成功");
|
proxy.$modal.msgSuccess(t('inspection.instrument.enableSuccess'));
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
}
|
||||||
@@ -468,13 +470,13 @@ function handleStart() {
|
|||||||
function handleClose() {
|
function handleClose() {
|
||||||
const stopIds = ids.value;
|
const stopIds = ids.value;
|
||||||
proxy.$modal
|
proxy.$modal
|
||||||
.confirm("是否确认停用数据!")
|
.confirm(t('inspection.instrument.confirmDisable'))
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return editInstrumentStatus(stopIds,'停用');
|
return editInstrumentStatus(stopIds,'停用');
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
proxy.$modal.msgSuccess("停用成功");
|
proxy.$modal.msgSuccess(t('inspection.instrument.disableSuccess'));
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
}
|
||||||
@@ -503,7 +505,7 @@ function openAddInstrument() {
|
|||||||
// if (!currentCategoryEnum.value) {
|
// if (!currentCategoryEnum.value) {
|
||||||
// return proxy.$modal.msgError("请选择器材目录分类");
|
// return proxy.$modal.msgError("请选择器材目录分类");
|
||||||
// }
|
// }
|
||||||
title.value = "新增";
|
title.value = t('inspection.instrument.addTitle');
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
proxy.$refs.instrumentRef.show();
|
proxy.$refs.instrumentRef.show();
|
||||||
});
|
});
|
||||||
@@ -515,7 +517,7 @@ function openEditInstrument(row) {
|
|||||||
getInstrumentOne(row.id).then((response) => {
|
getInstrumentOne(row.id).then((response) => {
|
||||||
console.log(response, "currentDataform");
|
console.log(response, "currentDataform");
|
||||||
currentData.value = response.data;
|
currentData.value = response.data;
|
||||||
title.value = "编辑";
|
title.value = t('inspection.instrument.editTitle');
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
proxy.$refs["instrumentRef"].edit();
|
proxy.$refs["instrumentRef"].edit();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<!--诊疗目录-->
|
<!--诊疗目录-->
|
||||||
@@ -7,11 +7,11 @@
|
|||||||
:xs="24"
|
:xs="24"
|
||||||
>
|
>
|
||||||
<div class="head-title">
|
<div class="head-title">
|
||||||
检验项目
|
{{ $t('inspection.lisConfig.testItem') }}
|
||||||
</div>
|
</div>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="名称/编码"
|
:placeholder="$t('inspection.lisConfig.nameCodePlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 220px"
|
style="width: 220px"
|
||||||
@keyup.enter="getItemList"
|
@keyup.enter="getItemList"
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="getItemPageList()"
|
@click="getItemPageList()"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('inspection.lisConfig.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<div>
|
<div>
|
||||||
<vxe-table
|
<vxe-table
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
@cell-click="handleRowClick"
|
@cell-click="handleRowClick"
|
||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="项目名称"
|
:title="$t('inspection.lisConfig.itemName')"
|
||||||
align="left"
|
align="left"
|
||||||
field="name"
|
field="name"
|
||||||
/>
|
/>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
icon="Plus"
|
icon="Plus"
|
||||||
@click="handleFormSubmit"
|
@click="handleFormSubmit"
|
||||||
>
|
>
|
||||||
保存配置详情
|
{{ $t('inspection.lisConfig.saveConfig') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
@cell-click="addMaterialsRow"
|
@cell-click="addMaterialsRow"
|
||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="项目名称"
|
:title="$t('inspection.lisConfig.itemName')"
|
||||||
align="left"
|
align="left"
|
||||||
field="name"
|
field="name"
|
||||||
/>
|
/>
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.deviceSearchKey"
|
v-model="query.deviceSearchKey"
|
||||||
placeholder="请输入耗材名称"
|
:placeholder="$t('inspection.lisConfig.consumablePlaceholder')"
|
||||||
style="flex-grow: 1;"
|
style="flex-grow: 1;"
|
||||||
@focus="handleFocus('materials')"
|
@focus="handleFocus('materials')"
|
||||||
@blur="handleBlur('materials')"
|
@blur="handleBlur('materials')"
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
style="margin-left: 8px; cursor: pointer;"
|
style="margin-left: 8px; cursor: pointer;"
|
||||||
:disabled="true"
|
:disabled="true"
|
||||||
>
|
>
|
||||||
新增
|
{{ $t('inspection.lisConfig.add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -116,12 +116,12 @@
|
|||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="deviceDefinitionName"
|
field="deviceDefinitionName"
|
||||||
title="耗材名称"
|
:title="$t('inspection.lisConfig.consumableName')"
|
||||||
width="200"
|
width="200"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('inspection.lisConfig.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="400"
|
width="400"
|
||||||
>
|
>
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
:disabled="scope.row.id == ''"
|
:disabled="scope.row.id == ''"
|
||||||
@click="deleteMaterial(scope.row)"
|
@click="deleteMaterial(scope.row)"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('inspection.lisConfig.delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
@cell-click="addSamplesRow"
|
@cell-click="addSamplesRow"
|
||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="项目名称"
|
:title="$t('inspection.lisConfig.itemName')"
|
||||||
align="left"
|
align="left"
|
||||||
field="specimenName"
|
field="specimenName"
|
||||||
/>
|
/>
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.specimenSearchKey"
|
v-model="query.specimenSearchKey"
|
||||||
placeholder="请输入样本名称"
|
:placeholder="$t('inspection.lisConfig.samplePlaceholder')"
|
||||||
style="flex-grow: 1;"
|
style="flex-grow: 1;"
|
||||||
@focus="handleFocus('samples')"
|
@focus="handleFocus('samples')"
|
||||||
@blur="handleBlur('samples')"
|
@blur="handleBlur('samples')"
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
style="margin-left: 8px; cursor: pointer;"
|
style="margin-left: 8px; cursor: pointer;"
|
||||||
:disabled="true"
|
:disabled="true"
|
||||||
>
|
>
|
||||||
新增
|
{{ $t('inspection.lisConfig.add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -187,37 +187,37 @@
|
|||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="specimenName"
|
field="specimenName"
|
||||||
title="样本名称"
|
:title="$t('inspection.lisConfig.sampleName')"
|
||||||
width="200"
|
width="200"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="specimenVolume"
|
field="specimenVolume"
|
||||||
title="数量"
|
:title="$t('inspection.lisConfig.quantity')"
|
||||||
width="200"
|
width="200"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="scope.row.specimenVolume"
|
v-model="scope.row.specimenVolume"
|
||||||
placeholder="请输入数量"
|
:placeholder="$t('inspection.lisConfig.quantityPlaceholder')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="specimenUnit"
|
field="specimenUnit"
|
||||||
title="单位"
|
:title="$t('inspection.lisConfig.unit')"
|
||||||
width="200"
|
width="200"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="scope.row.specimenUnit"
|
v-model="scope.row.specimenUnit"
|
||||||
placeholder="请输入单位"
|
:placeholder="$t('inspection.lisConfig.unitPlaceholder')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('inspection.lisConfig.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="400"
|
width="400"
|
||||||
>
|
>
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
:disabled="scope.row.id == ''"
|
:disabled="scope.row.id == ''"
|
||||||
@click="deleteSample(scope.row)"
|
@click="deleteSample(scope.row)"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('inspection.lisConfig.delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -248,7 +248,7 @@
|
|||||||
@cell-click="addObservationsRow"
|
@cell-click="addObservationsRow"
|
||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="项目名称"
|
:title="$t('inspection.lisConfig.itemName')"
|
||||||
align="left"
|
align="left"
|
||||||
field="name"
|
field="name"
|
||||||
/>
|
/>
|
||||||
@@ -257,7 +257,7 @@
|
|||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.observationSearchKey"
|
v-model="query.observationSearchKey"
|
||||||
placeholder="请输入观测名称"
|
:placeholder="$t('inspection.lisConfig.observationPlaceholder')"
|
||||||
style="flex-grow: 1;"
|
style="flex-grow: 1;"
|
||||||
@focus="handleFocus('observations')"
|
@focus="handleFocus('observations')"
|
||||||
@blur="handleBlur('observations')"
|
@blur="handleBlur('observations')"
|
||||||
@@ -269,7 +269,7 @@
|
|||||||
style="margin-left: 8px; cursor: pointer;"
|
style="margin-left: 8px; cursor: pointer;"
|
||||||
:disabled="true"
|
:disabled="true"
|
||||||
>
|
>
|
||||||
新增
|
{{ $t('inspection.lisConfig.add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -283,16 +283,16 @@
|
|||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="observationName"
|
field="observationName"
|
||||||
title="观测名称"
|
:title="$t('inspection.lisConfig.observationName')"
|
||||||
width="200"
|
width="200"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="observationCode"
|
field="observationCode"
|
||||||
title="观测代码"
|
:title="$t('inspection.lisConfig.observationCode')"
|
||||||
width="200"
|
width="200"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('inspection.lisConfig.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="400"
|
width="400"
|
||||||
>
|
>
|
||||||
@@ -304,7 +304,7 @@
|
|||||||
:disabled="scope.row.id == ''"
|
:disabled="scope.row.id == ''"
|
||||||
@click="deleteObservation(scope.row)"
|
@click="deleteObservation(scope.row)"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('inspection.lisConfig.delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -350,6 +350,8 @@ const data = reactive({
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
const { queryParams, form, tableRules, query} = toRefs(data);
|
const { queryParams, form, tableRules, query} = toRefs(data);
|
||||||
|
|
||||||
/** 获取字典列表 */
|
/** 获取字典列表 */
|
||||||
@@ -424,7 +426,7 @@ function handleFormSubmit() {
|
|||||||
activityDefObservationDefs: observationList.value,
|
activityDefObservationDefs: observationList.value,
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
ElMessage.success("保存成功");
|
ElMessage.success(t('inspection.lisConfig.saveSuccess'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -444,7 +446,7 @@ function isDuplicate(id, list,e) {
|
|||||||
}
|
}
|
||||||
function addMaterialsRow(row) {
|
function addMaterialsRow(row) {
|
||||||
if (isDuplicate(row.id, materialsList.value,'materials')) {
|
if (isDuplicate(row.id, materialsList.value,'materials')) {
|
||||||
ElMessage.warning("请勿重复添加此材料!");
|
ElMessage.warning(t('inspection.lisConfig.duplicateMaterial'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let newRow = { deviceDefinitionName: row.name, deviceDefinitionId
|
let newRow = { deviceDefinitionName: row.name, deviceDefinitionId
|
||||||
@@ -454,7 +456,7 @@ function addMaterialsRow(row) {
|
|||||||
|
|
||||||
function addSamplesRow(row) {
|
function addSamplesRow(row) {
|
||||||
if (isDuplicate(row.id, sampleList.value,'samples')) {
|
if (isDuplicate(row.id, sampleList.value,'samples')) {
|
||||||
ElMessage.warning("请勿重复添加此样本!");
|
ElMessage.warning(t('inspection.lisConfig.duplicateSample'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let newRow = { specimenName: row.specimenName, specimenDefinitionId: row.id };
|
let newRow = { specimenName: row.specimenName, specimenDefinitionId: row.id };
|
||||||
@@ -462,7 +464,7 @@ function addSamplesRow(row) {
|
|||||||
}
|
}
|
||||||
function addObservationsRow(row) {
|
function addObservationsRow(row) {
|
||||||
if (isDuplicate(row.id, observationList.value,'observations')) {
|
if (isDuplicate(row.id, observationList.value,'observations')) {
|
||||||
ElMessage.warning("请勿重复添加此观察项!");
|
ElMessage.warning(t('inspection.lisConfig.duplicateObservation'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let newRow = { observationName: row.name, observationDefinitionId: row.id };
|
let newRow = { observationName: row.name, observationDefinitionId: row.id };
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
:xs="24"
|
:xs="24"
|
||||||
>
|
>
|
||||||
<div class="head-title">
|
<div class="head-title">
|
||||||
观测类型
|
{{ $t('inspection.observation.typeCatalog') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<el-tree
|
<el-tree
|
||||||
@@ -38,13 +38,13 @@
|
|||||||
<el-row :gutter="24">
|
<el-row :gutter="24">
|
||||||
<!-- <el-col :span="6"> -->
|
<!-- <el-col :span="6"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="定义名"
|
:label="$t('inspection.observation.definitionName')"
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
label-width="55"
|
label-width="55"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="名称/编码"
|
:placeholder="$t('inspection.observation.nameCodePlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 220px"
|
style="width: 220px"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
<!-- </el-col> -->
|
<!-- </el-col> -->
|
||||||
<!-- <el-col :span="5"> -->
|
<!-- <el-col :span="5"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="状态"
|
:label="$t('inspection.observation.status')"
|
||||||
prop="statusEnum"
|
prop="statusEnum"
|
||||||
label-width="50"
|
label-width="50"
|
||||||
>
|
>
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
icon="Plus"
|
icon="Plus"
|
||||||
@click="openAddObservation()"
|
@click="openAddObservation()"
|
||||||
>
|
>
|
||||||
添加
|
{{ $t('inspection.observation.add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleClose"
|
@click="handleClose"
|
||||||
>
|
>
|
||||||
停用
|
{{ $t('inspection.observation.disable') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleStart"
|
@click="handleStart"
|
||||||
>
|
>
|
||||||
启用
|
{{ $t('inspection.observation.enable') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="getList"
|
@click="getList"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('inspection.observation.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="1.5">
|
<!-- <el-col :span="1.5">
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="name"
|
key="name"
|
||||||
title="观测名称"
|
:title="$t('inspection.observation.observationName')"
|
||||||
align="center"
|
align="center"
|
||||||
field="name"
|
field="name"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="code"
|
key="code"
|
||||||
title="观测代码"
|
:title="$t('inspection.observation.observationCode')"
|
||||||
align="center"
|
align="center"
|
||||||
field="code"
|
field="code"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="observationTypeEnumText"
|
key="observationTypeEnumText"
|
||||||
title="观测类型"
|
:title="$t('inspection.observation.observationType')"
|
||||||
align="center"
|
align="center"
|
||||||
field="observationTypeEnumText"
|
field="observationTypeEnumText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="referenceRange"
|
key="referenceRange"
|
||||||
title="参考范围"
|
:title="$t('inspection.observation.refRange')"
|
||||||
align="center"
|
align="center"
|
||||||
field="referenceRange"
|
field="referenceRange"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="instrumentId_dictText"
|
key="instrumentId_dictText"
|
||||||
title="仪器"
|
:title="$t('inspection.observation.instrument')"
|
||||||
align="center"
|
align="center"
|
||||||
field="instrumentId_dictText"
|
field="instrumentId_dictText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
@@ -183,13 +183,13 @@
|
|||||||
|
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="statusEnumText"
|
key="statusEnumText"
|
||||||
title="状态"
|
:title="$t('inspection.observation.statusCol')"
|
||||||
align="center"
|
align="center"
|
||||||
field="statusEnumText"
|
field="statusEnumText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('inspection.observation.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="150"
|
width="150"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
icon="Edit"
|
icon="Edit"
|
||||||
@click="openEditObservation(scope.row)"
|
@click="openEditObservation(scope.row)"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('inspection.observation.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -238,6 +238,8 @@ import {
|
|||||||
import observationDialog from "./components/observationDialog.vue";
|
import observationDialog from "./components/observationDialog.vue";
|
||||||
import {nextTick} from "vue";
|
import {nextTick} from "vue";
|
||||||
|
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
const observationList = ref([]);
|
const observationList = ref([]);
|
||||||
@@ -319,13 +321,13 @@ function handleStart() {
|
|||||||
const startIds = ids.value;
|
const startIds = ids.value;
|
||||||
// selectedData
|
// selectedData
|
||||||
proxy.$modal
|
proxy.$modal
|
||||||
.confirm("是否确定启用数据!")
|
.confirm(t('inspection.observation.confirmEnable'))
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return editObservationStatus(startIds,'启用');
|
return editObservationStatus(startIds,'启用');
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
proxy.$modal.msgSuccess("启用成功");
|
proxy.$modal.msgSuccess(t('inspection.observation.enableSuccess'));
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
}
|
||||||
@@ -333,13 +335,13 @@ function handleStart() {
|
|||||||
function handleClose() {
|
function handleClose() {
|
||||||
const stopIds = ids.value;
|
const stopIds = ids.value;
|
||||||
proxy.$modal
|
proxy.$modal
|
||||||
.confirm("是否确认停用数据!")
|
.confirm(t('inspection.observation.confirmDisable'))
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return editObservationStatus(stopIds,'停用');
|
return editObservationStatus(stopIds,'停用');
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
proxy.$modal.msgSuccess("停用成功");
|
proxy.$modal.msgSuccess(t('inspection.observation.disableSuccess'));
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
}
|
||||||
@@ -368,7 +370,7 @@ function openAddObservation() {
|
|||||||
// if (!currentCategoryEnum.value) {
|
// if (!currentCategoryEnum.value) {
|
||||||
// return proxy.$modal.msgError("请选择器材目录分类");
|
// return proxy.$modal.msgError("请选择器材目录分类");
|
||||||
// }
|
// }
|
||||||
title.value = "新增";
|
title.value = t('inspection.observation.addTitle');
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
proxy.$refs.observationRef.show();
|
proxy.$refs.observationRef.show();
|
||||||
});
|
});
|
||||||
@@ -380,7 +382,7 @@ function openEditObservation(row) {
|
|||||||
getObservationOne(row.id).then((response) => {
|
getObservationOne(row.id).then((response) => {
|
||||||
console.log(response, "currentDataform");
|
console.log(response, "currentDataform");
|
||||||
currentData.value = response.data;
|
currentData.value = response.data;
|
||||||
title.value = "编辑";
|
title.value = t('inspection.observation.editTitle');
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
proxy.$refs["observationRef"].edit();
|
proxy.$refs["observationRef"].edit();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,19 +8,19 @@
|
|||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="数据查询"
|
:label="$t('inspection.report.dataQuery')"
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="患者姓名/项目名称"
|
:placeholder="$t('inspection.report.patientOrItemPlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="创建时间"
|
:label="$t('inspection.report.createTime')"
|
||||||
style="width: 308px;"
|
style="width: 308px;"
|
||||||
>
|
>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -28,8 +28,8 @@
|
|||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
type="daterange"
|
type="daterange"
|
||||||
range-separator="-"
|
range-separator="-"
|
||||||
start-placeholder="开始日期"
|
:start-placeholder="$t('inspection.report.startDate')"
|
||||||
end-placeholder="结束日期"
|
:end-placeholder="$t('inspection.report.endDate')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@@ -38,13 +38,13 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="handleQuery"
|
@click="handleQuery"
|
||||||
>
|
>
|
||||||
搜索
|
{{ $t('inspection.report.search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
icon="Refresh"
|
icon="Refresh"
|
||||||
@click="resetQuery"
|
@click="resetQuery"
|
||||||
>
|
>
|
||||||
重置
|
{{ $t('inspection.report.reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -90,27 +90,27 @@
|
|||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="observationName"
|
field="observationName"
|
||||||
title="名称"
|
:title="$t('inspection.report.name')"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="observationResult"
|
field="observationResult"
|
||||||
title="结果"
|
:title="$t('inspection.report.result')"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="specimenName"
|
field="specimenName"
|
||||||
title="样本"
|
:title="$t('inspection.report.sample')"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="referenceRange"
|
field="referenceRange"
|
||||||
title="参考范围"
|
:title="$t('inspection.report.refRange')"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="receivedDate"
|
field="receivedDate"
|
||||||
title="观测人"
|
:title="$t('inspection.report.observer')"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="observationDate"
|
field="observationDate"
|
||||||
title="观测时间"
|
:title="$t('inspection.report.observationTime')"
|
||||||
/>
|
/>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</template>
|
</template>
|
||||||
@@ -118,31 +118,31 @@
|
|||||||
<!-- 母表列 -->
|
<!-- 母表列 -->
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="chargeName"
|
field="chargeName"
|
||||||
title="项目名称"
|
:title="$t('inspection.report.itemName')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="patientName"
|
field="patientName"
|
||||||
title="患者姓名"
|
:title="$t('inspection.report.patientName')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="genderEnumText"
|
field="genderEnumText"
|
||||||
title="性别"
|
:title="$t('inspection.report.gender')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="doctorName"
|
field="doctorName"
|
||||||
title="开单医生"
|
:title="$t('inspection.report.orderingDoctor')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="authoredTime"
|
field="authoredTime"
|
||||||
title="开单时间"
|
:title="$t('inspection.report.orderingTime')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('inspection.report.operation')"
|
||||||
width="120"
|
width="120"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
>
|
>
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
size="mini"
|
size="mini"
|
||||||
@click="printReport(scope.row)"
|
@click="printReport(scope.row)"
|
||||||
>
|
>
|
||||||
打印报告
|
{{ $t('inspection.report.printReport') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -173,6 +173,8 @@ import {reportList, reports} from "./components/report.js";
|
|||||||
import {formatDateStr} from "@/utils/index.js";
|
import {formatDateStr} from "@/utils/index.js";
|
||||||
import { getCurrentInstance, toRefs } from 'vue';
|
import { getCurrentInstance, toRefs } from 'vue';
|
||||||
|
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
|
|||||||
@@ -8,19 +8,19 @@
|
|||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="数据查询"
|
:label="$t('inspection.sampleCollection.dataQuery')"
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="患者姓名/项目名称"
|
:placeholder="$t('inspection.sampleCollection.patientOrItemPlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="创建时间"
|
:label="$t('inspection.sampleCollection.createTime')"
|
||||||
style="width: 308px;"
|
style="width: 308px;"
|
||||||
>
|
>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -28,8 +28,8 @@
|
|||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
type="daterange"
|
type="daterange"
|
||||||
range-separator="-"
|
range-separator="-"
|
||||||
start-placeholder="开始日期"
|
:start-placeholder="$t('inspection.sampleCollection.startDate')"
|
||||||
end-placeholder="结束日期"
|
:end-placeholder="$t('inspection.sampleCollection.endDate')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@@ -38,13 +38,13 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="handleQuery"
|
@click="handleQuery"
|
||||||
>
|
>
|
||||||
搜索
|
{{ $t('inspection.sampleCollection.search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
icon="Refresh"
|
icon="Refresh"
|
||||||
@click="resetQuery"
|
@click="resetQuery"
|
||||||
>
|
>
|
||||||
重置
|
{{ $t('inspection.sampleCollection.reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
:disabled="collect"
|
:disabled="collect"
|
||||||
@click="handleCollect('已采集')"
|
@click="handleCollect('已采集')"
|
||||||
>
|
>
|
||||||
采集
|
{{ $t('inspection.sampleCollection.collect') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
:disabled="single"
|
:disabled="single"
|
||||||
@click="handleUpdate"
|
@click="handleUpdate"
|
||||||
>
|
>
|
||||||
合管
|
{{ $t('inspection.sampleCollection.mergeTube') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleCollect('待采集')"
|
@click="handleCollect('待采集')"
|
||||||
>
|
>
|
||||||
取消
|
{{ $t('inspection.sampleCollection.cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleDelete"
|
@click="handleDelete"
|
||||||
>
|
>
|
||||||
打印条码
|
{{ $t('inspection.sampleCollection.printBarcode') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
@@ -132,11 +132,11 @@
|
|||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="specimenName"
|
field="specimenName"
|
||||||
title="样本名称"
|
:title="$t('inspection.sampleCollection.sampleName')"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="specimenVolume"
|
field="specimenVolume"
|
||||||
title="样本数量"
|
:title="$t('inspection.sampleCollection.sampleVolume')"
|
||||||
>
|
>
|
||||||
<template #default="innerProps">
|
<template #default="innerProps">
|
||||||
{{ innerProps.row.specimenVolume }} {{ innerProps.row.specimenUnit }}
|
{{ innerProps.row.specimenVolume }} {{ innerProps.row.specimenUnit }}
|
||||||
@@ -144,26 +144,26 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="collectionStatusEnumText"
|
field="collectionStatusEnumText"
|
||||||
title="采集状态"
|
:title="$t('inspection.sampleCollection.collectionStatus')"
|
||||||
>
|
>
|
||||||
<template #default="nerProp">
|
<template #default="nerProp">
|
||||||
<span
|
<span
|
||||||
v-if="nerProp.row.collectionStatusEnum == 1"
|
v-if="nerProp.row.collectionStatusEnum == 1"
|
||||||
style="color:green"
|
style="color:green"
|
||||||
>
|
>
|
||||||
已采集
|
{{ $t('inspection.sampleCollection.collected') }}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-else-if="nerProp.row.collectionStatusEnum == 0"
|
v-else-if="nerProp.row.collectionStatusEnum == 0"
|
||||||
style="color:orange"
|
style="color:orange"
|
||||||
>
|
>
|
||||||
待采集
|
{{ $t('inspection.sampleCollection.pendingCollection') }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="collectionDate"
|
field="collectionDate"
|
||||||
title="采集时间"
|
:title="$t('inspection.sampleCollection.collectionTime')"
|
||||||
/>
|
/>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</template>
|
</template>
|
||||||
@@ -171,45 +171,45 @@
|
|||||||
<!-- 母表列 -->
|
<!-- 母表列 -->
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="chargeName"
|
field="chargeName"
|
||||||
title="项目名称"
|
:title="$t('inspection.sampleCollection.itemName')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="patientName"
|
field="patientName"
|
||||||
title="患者姓名"
|
:title="$t('inspection.sampleCollection.patientName')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="genderEnumText"
|
field="genderEnumText"
|
||||||
title="性别"
|
:title="$t('inspection.sampleCollection.gender')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="样本状态"
|
:title="$t('inspection.sampleCollection.sampleStatus')"
|
||||||
>
|
>
|
||||||
<template #default="sprops">
|
<template #default="sprops">
|
||||||
<span
|
<span
|
||||||
v-if="hasPendingCollection(sprops.row.children)"
|
v-if="hasPendingCollection(sprops.row.children)"
|
||||||
style="color:orange"
|
style="color:orange"
|
||||||
>
|
>
|
||||||
待采集
|
{{ $t('inspection.sampleCollection.pendingCollect') }}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-else
|
v-else
|
||||||
style="color:green"
|
style="color:green"
|
||||||
>
|
>
|
||||||
已采集
|
{{ $t('inspection.sampleCollection.collectedStatus') }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="doctorName"
|
field="doctorName"
|
||||||
title="开单医生"
|
:title="$t('inspection.sampleCollection.orderingDoctor')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="authoredTime"
|
field="authoredTime"
|
||||||
title="开单时间"
|
:title="$t('inspection.sampleCollection.orderingTime')"
|
||||||
:sortable="true"
|
:sortable="true"
|
||||||
/>
|
/>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
@@ -228,6 +228,8 @@
|
|||||||
import {collectionList, editStatus} from "./components/collect.js";
|
import {collectionList, editStatus} from "./components/collect.js";
|
||||||
import {formatDateStr} from "@/utils/index.js";
|
import {formatDateStr} from "@/utils/index.js";
|
||||||
|
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
@@ -299,7 +301,7 @@ function handleSelectionChange(selection) {
|
|||||||
function handleCollect(type) {
|
function handleCollect(type) {
|
||||||
|
|
||||||
editStatus(ids.value,type).then(()=>{
|
editStatus(ids.value,type).then(()=>{
|
||||||
proxy.$modal.msgSuccess("操作成功");
|
proxy.$modal.msgSuccess(t('inspection.sampleCollection.operationSuccess'));
|
||||||
getList();
|
getList();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
:xs="24"
|
:xs="24"
|
||||||
>
|
>
|
||||||
<div class="head-title">
|
<div class="head-title">
|
||||||
样本类型目录
|
{{ $t('inspection.sampleType.typeCatalog') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<el-tree
|
<el-tree
|
||||||
@@ -38,13 +38,13 @@
|
|||||||
<el-row :gutter="24">
|
<el-row :gutter="24">
|
||||||
<!-- <el-col :span="6"> -->
|
<!-- <el-col :span="6"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="样本名"
|
:label="$t('inspection.sampleType.sampleName')"
|
||||||
prop="searchKey"
|
prop="searchKey"
|
||||||
label-width="55"
|
label-width="55"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="品名/商品名/英文品名/编码/拼音"
|
:placeholder="$t('inspection.sampleType.nameCodePlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 220px"
|
style="width: 220px"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
<!-- </el-col> -->
|
<!-- </el-col> -->
|
||||||
<!-- <el-col :span="5"> -->
|
<!-- <el-col :span="5"> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="状态"
|
:label="$t('inspection.sampleType.status')"
|
||||||
prop="statusEnum"
|
prop="statusEnum"
|
||||||
label-width="50"
|
label-width="50"
|
||||||
>
|
>
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
icon="Plus"
|
icon="Plus"
|
||||||
@click="openAddSpecimen()"
|
@click="openAddSpecimen()"
|
||||||
>
|
>
|
||||||
添加新样本
|
{{ $t('inspection.sampleType.addNewSample') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleClose"
|
@click="handleClose"
|
||||||
>
|
>
|
||||||
停用
|
{{ $t('inspection.sampleType.disable') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleStart"
|
@click="handleStart"
|
||||||
>
|
>
|
||||||
启用
|
{{ $t('inspection.sampleType.enable') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="getList"
|
@click="getList"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('inspection.sampleType.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="1.5">
|
<!-- <el-col :span="1.5">
|
||||||
@@ -142,97 +142,97 @@
|
|||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="specimenTypeEnumText"
|
key="specimenTypeEnumText"
|
||||||
title="样本类型"
|
:title="$t('inspection.sampleType.sampleType')"
|
||||||
align="center"
|
align="center"
|
||||||
field="specimenTypeEnumText"
|
field="specimenTypeEnumText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="specimenName"
|
key="specimenName"
|
||||||
title="样本名称"
|
:title="$t('inspection.sampleType.sampleNameCol')"
|
||||||
align="center"
|
align="center"
|
||||||
field="specimenName"
|
field="specimenName"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="customCode"
|
key="customCode"
|
||||||
title="自定义码"
|
:title="$t('inspection.sampleType.customCode')"
|
||||||
align="center"
|
align="center"
|
||||||
field="customCode"
|
field="customCode"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="typeOrder"
|
key="typeOrder"
|
||||||
title="类型顺序"
|
:title="$t('inspection.sampleType.typeOrder')"
|
||||||
align="center"
|
align="center"
|
||||||
field="typeOrder"
|
field="typeOrder"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="externalCode"
|
key="externalCode"
|
||||||
title="外部代码"
|
:title="$t('inspection.sampleType.externalCode')"
|
||||||
align="center"
|
align="center"
|
||||||
field="externalCode"
|
field="externalCode"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="serialNumber"
|
key="serialNumber"
|
||||||
title="序号"
|
:title="$t('inspection.sampleType.serialNumber')"
|
||||||
align="center"
|
align="center"
|
||||||
field="serialNumber"
|
field="serialNumber"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="globalType"
|
key="globalType"
|
||||||
title="全网型"
|
:title="$t('inspection.sampleType.globalType')"
|
||||||
align="center"
|
align="center"
|
||||||
field="globalType"
|
field="globalType"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="pyStr"
|
key="pyStr"
|
||||||
title="拼音"
|
:title="$t('inspection.sampleType.pinyin')"
|
||||||
align="center"
|
align="center"
|
||||||
field="pyStr"
|
field="pyStr"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="wbStr"
|
key="wbStr"
|
||||||
title="五笔"
|
:title="$t('inspection.sampleType.wubi')"
|
||||||
align="center"
|
align="center"
|
||||||
field="wbStr"
|
field="wbStr"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="specimenClass"
|
key="specimenClass"
|
||||||
title="样本类"
|
:title="$t('inspection.sampleType.specimenClass')"
|
||||||
align="center"
|
align="center"
|
||||||
field="specimenClass"
|
field="specimenClass"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="extendedType"
|
key="extendedType"
|
||||||
title="扩展类型"
|
:title="$t('inspection.sampleType.extendedType')"
|
||||||
align="center"
|
align="center"
|
||||||
field="extendedType"
|
field="extendedType"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="whonetCode"
|
key="whonetCode"
|
||||||
title="WHONET代码"
|
:title="$t('inspection.sampleType.whonetCode')"
|
||||||
align="center"
|
align="center"
|
||||||
field="whonetCode"
|
field="whonetCode"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="statusEnumText"
|
key="statusEnumText"
|
||||||
title="状态"
|
:title="$t('inspection.sampleType.statusCol')"
|
||||||
align="center"
|
align="center"
|
||||||
field="statusEnumText"
|
field="statusEnumText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('inspection.sampleType.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="150"
|
width="150"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
@@ -245,7 +245,7 @@
|
|||||||
icon="Edit"
|
icon="Edit"
|
||||||
@click="openEditSpecimen(scope.row)"
|
@click="openEditSpecimen(scope.row)"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('inspection.sampleType.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -275,6 +275,8 @@ import {editSpecimenStatus, getSpecimenInit, getSpecimenList, getSpecimenOne,} f
|
|||||||
import specimenDialog from "./components/specimenDialog.vue";
|
import specimenDialog from "./components/specimenDialog.vue";
|
||||||
import {nextTick} from "vue";
|
import {nextTick} from "vue";
|
||||||
|
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
const specimenList = ref([]);
|
const specimenList = ref([]);
|
||||||
@@ -359,13 +361,13 @@ function handleStart() {
|
|||||||
const startIds = ids.value;
|
const startIds = ids.value;
|
||||||
// selectedData
|
// selectedData
|
||||||
proxy.$modal
|
proxy.$modal
|
||||||
.confirm("是否确定启用数据!")
|
.confirm(t('inspection.sampleType.confirmEnable'))
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return editSpecimenStatus(startIds,'启用');
|
return editSpecimenStatus(startIds,'启用');
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
proxy.$modal.msgSuccess("启用成功");
|
proxy.$modal.msgSuccess(t('inspection.sampleType.enableSuccess'));
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
}
|
||||||
@@ -373,13 +375,13 @@ function handleStart() {
|
|||||||
function handleClose() {
|
function handleClose() {
|
||||||
const stopIds = ids.value;
|
const stopIds = ids.value;
|
||||||
proxy.$modal
|
proxy.$modal
|
||||||
.confirm("是否确认停用数据!")
|
.confirm(t('inspection.sampleType.confirmDisable'))
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return editSpecimenStatus(stopIds,'停用');
|
return editSpecimenStatus(stopIds,'停用');
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
proxy.$modal.msgSuccess("停用成功");
|
proxy.$modal.msgSuccess(t('inspection.sampleType.disableSuccess'));
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
}
|
||||||
@@ -408,7 +410,7 @@ function openAddSpecimen() {
|
|||||||
// if (!currentCategoryEnum.value) {
|
// if (!currentCategoryEnum.value) {
|
||||||
// return proxy.$modal.msgError("请选择器材目录分类");
|
// return proxy.$modal.msgError("请选择器材目录分类");
|
||||||
// }
|
// }
|
||||||
title.value = "新增";
|
title.value = t('inspection.sampleType.addTitle');
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
proxy.$refs.specimenRef.show();
|
proxy.$refs.specimenRef.show();
|
||||||
});
|
});
|
||||||
@@ -420,7 +422,7 @@ function openEditSpecimen(row) {
|
|||||||
getSpecimenOne(row.id).then((response) => {
|
getSpecimenOne(row.id).then((response) => {
|
||||||
console.log(response, "currentDataform");
|
console.log(response, "currentDataform");
|
||||||
currentData.value = response.data;
|
currentData.value = response.data;
|
||||||
title.value = "编辑";
|
title.value = t('inspection.sampleType.editTitle');
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
proxy.$refs["specimenRef"].edit();
|
proxy.$refs["specimenRef"].edit();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px;display:flex;align-items:center;gap:16px">
|
<div style="margin-bottom:16px;display:flex;align-items:center;gap:16px">
|
||||||
<span style="font-size:18px;font-weight:bold">室间质评管理</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.eqa.title') }}</span>
|
||||||
<el-tag v-if="stats.total" type="info">共 {{ stats.total }} 条</el-tag>
|
<el-tag v-if="stats.total" type="info">{{ $t('lab.eqa.totalRecords', { n: stats.total }) }}</el-tag>
|
||||||
<el-tag v-if="stats.qualified" type="success">合格 {{ stats.qualified }}</el-tag>
|
<el-tag v-if="stats.qualified" type="success">{{ $t('lab.eqa.qualified', { n: stats.qualified }) }}</el-tag>
|
||||||
<el-tag v-if="stats.unqualified" type="danger">不合格 {{ stats.unqualified }}</el-tag>
|
<el-tag v-if="stats.unqualified" type="danger">{{ $t('lab.eqa.unqualified', { n: stats.unqualified }) }}</el-tag>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>录入室间质评</span>
|
<span>{{ $t('lab.eqa.inputTitle') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-form :model="form" label-width="90px" size="default">
|
<el-form :model="form" label-width="90px" size="default">
|
||||||
<el-form-item label="评批名称">
|
<el-form-item :label="$t('lab.eqa.assessmentName')">
|
||||||
<el-input v-model="form.assessmentName" placeholder="如:2026年Q1生化" />
|
<el-input v-model="form.assessmentName" :placeholder="$t('lab.eqa.assessmentNamePlaceholder')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="组织机构">
|
<el-form-item :label="$t('lab.eqa.assessmentOrg')">
|
||||||
<el-input v-model="form.assessmentOrg" />
|
<el-input v-model="form.assessmentOrg" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="年度">
|
<el-form-item :label="$t('lab.eqa.year')">
|
||||||
<el-input-number v-model="form.assessmentYear" :min="2020" :max="2030" style="width:100%" />
|
<el-input-number v-model="form.assessmentYear" :min="2020" :max="2030" style="width:100%" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="季度">
|
<el-form-item :label="$t('lab.eqa.quarter')">
|
||||||
<el-select v-model="form.assessmentQuarter" style="width:100%">
|
<el-select v-model="form.assessmentQuarter" style="width:100%">
|
||||||
<el-option label="Q1" :value="1" />
|
<el-option label="Q1" :value="1" />
|
||||||
<el-option label="Q2" :value="2" />
|
<el-option label="Q2" :value="2" />
|
||||||
@@ -31,23 +31,23 @@
|
|||||||
<el-option label="Q4" :value="4" />
|
<el-option label="Q4" :value="4" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="样本编号">
|
<el-form-item :label="$t('lab.eqa.sampleCode')">
|
||||||
<el-input v-model="form.sampleCode" />
|
<el-input v-model="form.sampleCode" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="检测项目">
|
<el-form-item :label="$t('lab.eqa.testItem')">
|
||||||
<el-input v-model="form.testItem" />
|
<el-input v-model="form.testItem" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="靶值">
|
<el-form-item :label="$t('lab.eqa.targetValue')">
|
||||||
<el-input v-model="form.targetValue" />
|
<el-input v-model="form.targetValue" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实测值">
|
<el-form-item :label="$t('lab.eqa.actualValue')">
|
||||||
<el-input v-model="form.actualValue" />
|
<el-input v-model="form.actualValue" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="操作人">
|
<el-form-item :label="$t('lab.eqa.operator')">
|
||||||
<el-input v-model="form.operatorName" />
|
<el-input v-model="form.operatorName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submitRecord" :loading="loading">提交</el-button>
|
<el-button type="primary" @click="submitRecord" :loading="loading">{{ $t('lab.eqa.submit') }}</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -56,30 +56,30 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div style="display:flex;justify-content:space-between;align-items:center">
|
<div style="display:flex;justify-content:space-between;align-items:center">
|
||||||
<span>室间质评结果</span>
|
<span>{{ $t('lab.eqa.resultTitle') }}</span>
|
||||||
<div style="display:flex;gap:8px">
|
<div style="display:flex;gap:8px">
|
||||||
<el-input v-model="query.assessmentName" placeholder="评批名称" clearable style="width:160px" />
|
<el-input v-model="query.assessmentName" :placeholder="$t('lab.eqa.queryPlaceholder')" clearable style="width:160px" />
|
||||||
<el-button type="primary" @click="loadResults">查询</el-button>
|
<el-button type="primary" @click="loadResults">{{ $t('lab.eqa.query') }}</el-button>
|
||||||
<el-button type="success" @click="printReport">打印报告单</el-button>
|
<el-button type="success" @click="printReport">{{ $t('lab.eqa.printReport') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-table :data="tableData" border stripe size="small" ref="tableRef">
|
<el-table :data="tableData" border stripe size="small" ref="tableRef">
|
||||||
<el-table-column prop="assessmentName" label="评批名称" width="150" />
|
<el-table-column prop="assessmentName" :label="$t('lab.eqa.assessmentName')" width="150" />
|
||||||
<el-table-column prop="assessmentOrg" label="组织机构" width="120" />
|
<el-table-column prop="assessmentOrg" :label="$t('lab.eqa.assessmentOrg')" width="120" />
|
||||||
<el-table-column prop="assessmentYear" label="年度" width="70" />
|
<el-table-column prop="assessmentYear" :label="$t('lab.eqa.year')" width="70" />
|
||||||
<el-table-column prop="assessmentQuarter" label="季度" width="60" />
|
<el-table-column prop="assessmentQuarter" :label="$t('lab.eqa.quarter')" width="60" />
|
||||||
<el-table-column prop="sampleCode" label="样本编号" width="100" />
|
<el-table-column prop="sampleCode" :label="$t('lab.eqa.sampleCode')" width="100" />
|
||||||
<el-table-column prop="testItem" label="检测项目" width="100" />
|
<el-table-column prop="testItem" :label="$t('lab.eqa.testItem')" width="100" />
|
||||||
<el-table-column prop="targetValue" label="靶值" width="90" />
|
<el-table-column prop="targetValue" :label="$t('lab.eqa.targetValue')" width="90" />
|
||||||
<el-table-column prop="actualValue" label="实测值" width="90" />
|
<el-table-column prop="actualValue" :label="$t('lab.eqa.actualValue')" width="90" />
|
||||||
<el-table-column prop="deviationRate" label="偏差率%" width="80" />
|
<el-table-column prop="deviationRate" :label="$t('lab.eqa.deviationRate')" width="80" />
|
||||||
<el-table-column prop="result" label="判定" width="80">
|
<el-table-column prop="result" :label="$t('lab.eqa.judgment')" width="80">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<el-tag :type="row.result === '合格' ? 'success' : 'danger'" size="small">{{ row.result }}</el-tag>
|
<el-tag :type="row.result === '合格' ? 'success' : 'danger'" size="small">{{ row.result }}</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="operatorName" label="操作人" width="80" />
|
<el-table-column prop="operatorName" :label="$t('lab.eqa.operator')" width="80" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
v-model:current-page="query.pageNo"
|
v-model:current-page="query.pageNo"
|
||||||
@@ -95,23 +95,23 @@
|
|||||||
|
|
||||||
<div id="printArea" ref="printRef" style="display:none">
|
<div id="printArea" ref="printRef" style="display:none">
|
||||||
<div style="padding:20px;font-family:SimSun;font-size:12px">
|
<div style="padding:20px;font-family:SimSun;font-size:12px">
|
||||||
<div style="text-align:center;font-size:16px;font-weight:bold;margin-bottom:16px">室间质评报告单</div>
|
<div style="text-align:center;font-size:16px;font-weight:bold;margin-bottom:16px">{{ $t('lab.eqa.reportTitle') }}</div>
|
||||||
<div style="display:flex;justify-content:space-between;margin-bottom:8px">
|
<div style="display:flex;justify-content:space-between;margin-bottom:8px">
|
||||||
<span>评批名称:{{ form.assessmentName || '-' }}</span>
|
<span>{{ $t('lab.eqa.assessmentName') }}:{{ form.assessmentName || '-' }}</span>
|
||||||
<span>组织机构:{{ form.assessmentOrg || '-' }}</span>
|
<span>{{ $t('lab.eqa.assessmentOrg') }}:{{ form.assessmentOrg || '-' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="display:flex;justify-content:space-between;margin-bottom:12px">
|
<div style="display:flex;justify-content:space-between;margin-bottom:12px">
|
||||||
<span>年度/季度:{{ form.assessmentYear || '-' }}年 Q{{ form.assessmentQuarter || '-' }}</span>
|
<span>{{ $t('lab.eqa.yearQuarter') }}:{{ form.assessmentYear || '-' }}年 Q{{ form.assessmentQuarter || '-' }}</span>
|
||||||
<span>样本编号:{{ form.sampleCode || '-' }}</span>
|
<span>{{ $t('lab.eqa.sampleCode') }}:{{ form.sampleCode || '-' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<table style="width:100%;border-collapse:collapse;border:1px solid #000">
|
<table style="width:100%;border-collapse:collapse;border:1px solid #000">
|
||||||
<thead>
|
<thead>
|
||||||
<tr style="background:#f0f0f0">
|
<tr style="background:#f0f0f0">
|
||||||
<th style="border:1px solid #000;padding:4px">检测项目</th>
|
<th style="border:1px solid #000;padding:4px">{{ $t('lab.eqa.testItem') }}</th>
|
||||||
<th style="border:1px solid #000;padding:4px">靶值</th>
|
<th style="border:1px solid #000;padding:4px">{{ $t('lab.eqa.targetValue') }}</th>
|
||||||
<th style="border:1px solid #000;padding:4px">实测值</th>
|
<th style="border:1px solid #000;padding:4px">{{ $t('lab.eqa.actualValue') }}</th>
|
||||||
<th style="border:1px solid #000;padding:4px">偏差率%</th>
|
<th style="border:1px solid #000;padding:4px">{{ $t('lab.eqa.deviationRate') }}</th>
|
||||||
<th style="border:1px solid #000;padding:4px">判定</th>
|
<th style="border:1px solid #000;padding:4px">{{ $t('lab.eqa.judgment') }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -125,8 +125,8 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div style="margin-top:16px;display:flex;justify-content:space-between">
|
<div style="margin-top:16px;display:flex;justify-content:space-between">
|
||||||
<span>操作人:{{ form.operatorName || '-' }}</span>
|
<span>{{ $t('lab.eqa.operator') }}:{{ form.operatorName || '-' }}</span>
|
||||||
<span>报告日期:{{ new Date().toLocaleDateString() }}</span>
|
<span>{{ $t('lab.eqa.reportDate') }}:{{ new Date().toLocaleDateString() }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -135,6 +135,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import { recordEqa, getEqaResults, getEqaStats } from '@/api/lab/labEqa'
|
import { recordEqa, getEqaResults, getEqaStats } from '@/api/lab/labEqa'
|
||||||
|
|
||||||
@@ -166,18 +168,18 @@ const loadStats = async () => {
|
|||||||
|
|
||||||
const submitRecord = async () => {
|
const submitRecord = async () => {
|
||||||
if (!form.value.assessmentName || !form.value.testItem) {
|
if (!form.value.assessmentName || !form.value.testItem) {
|
||||||
ElMessage.warning('请填写评批名称和检测项目')
|
ElMessage.warning(t('lab.eqa.pleaseFillRequired'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
const r = await recordEqa(form.value)
|
const r = await recordEqa(form.value)
|
||||||
if (r.data?.result === '合格') {
|
if (r.data?.result === '合格') {
|
||||||
ElMessage.success('提交成功,判定: 合格')
|
ElMessage.success(t('lab.eqa.submitSuccessQualified'))
|
||||||
} else if (r.data?.result === '不合格') {
|
} else if (r.data?.result === '不合格') {
|
||||||
ElMessage.warning('提交成功,判定: 不合格')
|
ElMessage.warning(t('lab.eqa.submitSuccessUnqualified'))
|
||||||
} else {
|
} else {
|
||||||
ElMessage.success('提交成功')
|
ElMessage.success(t('lab.eqa.submitSuccess'))
|
||||||
}
|
}
|
||||||
form.value = defaultForm()
|
form.value = defaultForm()
|
||||||
await loadResults()
|
await loadResults()
|
||||||
@@ -189,12 +191,12 @@ const submitRecord = async () => {
|
|||||||
|
|
||||||
const printReport = () => {
|
const printReport = () => {
|
||||||
if (tableData.value.length === 0) {
|
if (tableData.value.length === 0) {
|
||||||
ElMessage.warning('暂无数据可打印')
|
ElMessage.warning(t('lab.eqa.noDataToPrint'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const printContent = printRef.value.innerHTML
|
const printContent = printRef.value.innerHTML
|
||||||
const win = window.open('', '_blank')
|
const win = window.open('', '_blank')
|
||||||
win.document.write(`<html><head><title>室间质评报告单</title></head><body>${printContent}</body></html>`)
|
win.document.write(`<html><head><title>{{ $t('lab.eqa.reportTitle') }}</title></head><body>${printContent}</body></html>`)
|
||||||
win.document.close()
|
win.document.close()
|
||||||
win.print()
|
win.print()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,42 +1,42 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px;display:flex;align-items:center;gap:16px">
|
<div style="margin-bottom:16px;display:flex;align-items:center;gap:16px">
|
||||||
<span style="font-size:18px;font-weight:bold">室内质控管理</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.qc.title') }}</span>
|
||||||
<el-tag v-if="stats.total" type="info">共 {{ stats.total }} 条</el-tag>
|
<el-tag v-if="stats.total" type="info">{{ $t('lab.qc.totalRecords', { n: stats.total }) }}</el-tag>
|
||||||
<el-tag v-if="stats.passed" type="success">合格 {{ stats.passed }}</el-tag>
|
<el-tag v-if="stats.passed" type="success">{{ $t('lab.qc.passed', { n: stats.passed }) }}</el-tag>
|
||||||
<el-tag v-if="stats.failed" type="danger">失控 {{ stats.failed }}</el-tag>
|
<el-tag v-if="stats.failed" type="danger">{{ $t('lab.qc.failed', { n: stats.failed }) }}</el-tag>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>录入质控数据</span>
|
<span>{{ $t('lab.qc.inputTitle') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-form :model="form" label-width="80px" size="default">
|
<el-form :model="form" label-width="80px" size="default">
|
||||||
<el-form-item label="质控项目">
|
<el-form-item :label="$t('lab.qc.qcItem')">
|
||||||
<el-input v-model="form.qcItem" placeholder="如:ALT, GLU" />
|
<el-input v-model="form.qcItem" :placeholder="$t('lab.qc.qcItemPlaceholder')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="仪器">
|
<el-form-item :label="$t('lab.qc.instrument')">
|
||||||
<el-input v-model="form.instrumentName" placeholder="仪器名称" />
|
<el-input v-model="form.instrumentName" :placeholder="$t('lab.qc.instrumentPlaceholder')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="靶值">
|
<el-form-item :label="$t('lab.qc.targetValue')">
|
||||||
<el-input-number v-model="form.targetValue" :precision="4" :step="0.1" style="width:100%" />
|
<el-input-number v-model="form.targetValue" :precision="4" :step="0.1" style="width:100%" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实测值">
|
<el-form-item :label="$t('lab.qc.actualValue')">
|
||||||
<el-input-number v-model="form.actualValue" :precision="4" :step="0.1" style="width:100%" />
|
<el-input-number v-model="form.actualValue" :precision="4" :step="0.1" style="width:100%" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="检测日期">
|
<el-form-item :label="$t('lab.qc.qcDate')">
|
||||||
<el-date-picker v-model="form.qcDate" type="date" value-format="YYYY-MM-DD" style="width:100%" />
|
<el-date-picker v-model="form.qcDate" type="date" value-format="YYYY-MM-DD" style="width:100%" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="操作人">
|
<el-form-item :label="$t('lab.qc.operator')">
|
||||||
<el-input v-model="form.operatorName" />
|
<el-input v-model="form.operatorName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注">
|
<el-form-item :label="$t('lab.qc.remarks')">
|
||||||
<el-input v-model="form.remarks" type="textarea" :rows="2" />
|
<el-input v-model="form.remarks" type="textarea" :rows="2" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="doRunWestgard" :loading="loading">执行Westgard判断</el-button>
|
<el-button type="primary" @click="doRunWestgard" :loading="loading">{{ $t('lab.qc.runWestgard') }}</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -45,14 +45,14 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div style="display:flex;justify-content:space-between;align-items:center">
|
<div style="display:flex;justify-content:space-between;align-items:center">
|
||||||
<span>质控图</span>
|
<span>{{ $t('lab.qc.chartTitle') }}</span>
|
||||||
<div style="display:flex;gap:8px">
|
<div style="display:flex;gap:8px">
|
||||||
<el-input v-model="query.qcItem" placeholder="质控项目" clearable style="width:140px" />
|
<el-input v-model="query.qcItem" :placeholder="$t('lab.qc.queryItemPlaceholder')" clearable style="width:140px" />
|
||||||
<el-select v-model="query.isPass" placeholder="结果" clearable style="width:100px">
|
<el-select v-model="query.isPass" :placeholder="$t('lab.qc.resultFilter')" clearable style="width:100px">
|
||||||
<el-option label="通过" :value="true" />
|
<el-option :label="$t('lab.qc.pass')" :value="true" />
|
||||||
<el-option label="失控" :value="false" />
|
<el-option :label="$t('lab.qc.outOfControl')" :value="false" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button type="primary" @click="loadResults">查询</el-button>
|
<el-button type="primary" @click="loadResults">{{ $t('lab.qc.query') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -60,22 +60,22 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
<el-card shadow="never" style="margin-top:12px">
|
<el-card shadow="never" style="margin-top:12px">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>质控结果列表</span>
|
<span>{{ $t('lab.qc.resultListTitle') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-table :data="tableData" border stripe size="small">
|
<el-table :data="tableData" border stripe size="small">
|
||||||
<el-table-column prop="qcItem" label="质控项目" width="120" />
|
<el-table-column prop="qcItem" :label="$t('lab.qc.qcItem')" width="120" />
|
||||||
<el-table-column prop="instrumentName" label="仪器" width="120" />
|
<el-table-column prop="instrumentName" :label="$t('lab.qc.instrument')" width="120" />
|
||||||
<el-table-column prop="targetValue" label="靶值" width="90" />
|
<el-table-column prop="targetValue" :label="$t('lab.qc.targetValue')" width="90" />
|
||||||
<el-table-column prop="actualValue" label="实测值" width="90" />
|
<el-table-column prop="actualValue" :label="$t('lab.qc.actualValue')" width="90" />
|
||||||
<el-table-column prop="sdValue" label="SD" width="80" />
|
<el-table-column prop="sdValue" :label="$t('lab.qc.sdValue')" width="80" />
|
||||||
<el-table-column prop="cvRate" label="CV%" width="80" />
|
<el-table-column prop="cvRate" :label="$t('lab.qc.cvRate')" width="80" />
|
||||||
<el-table-column prop="westgardRule" label="Westgard判定" width="180">
|
<el-table-column prop="westgardRule" :label="$t('lab.qc.westgardRule')" width="180">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<el-tag :type="row.isPass ? 'success' : 'danger'" size="small">{{ row.westgardRule }}</el-tag>
|
<el-tag :type="row.isPass ? 'success' : 'danger'" size="small">{{ row.westgardRule }}</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="qcDate" label="日期" width="110" />
|
<el-table-column prop="qcDate" :label="$t('lab.qc.date')" width="110" />
|
||||||
<el-table-column prop="operatorName" label="操作人" width="80" />
|
<el-table-column prop="operatorName" :label="$t('lab.qc.operator')" width="80" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
v-model:current-page="query.pageNo"
|
v-model:current-page="query.pageNo"
|
||||||
@@ -93,6 +93,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, nextTick, onUnmounted } from 'vue'
|
import { ref, onMounted, nextTick, onUnmounted } from 'vue'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
const { t } = useI18n()
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import { runWestgard as runWestgardApi, getQcResults, getQcStats } from '@/api/lab/labQc'
|
import { runWestgard as runWestgardApi, getQcResults, getQcStats } from '@/api/lab/labQc'
|
||||||
@@ -127,16 +129,16 @@ const loadStats = async () => {
|
|||||||
|
|
||||||
const doRunWestgard = async () => {
|
const doRunWestgard = async () => {
|
||||||
if (!form.value.qcItem || !form.value.actualValue) {
|
if (!form.value.qcItem || !form.value.actualValue) {
|
||||||
ElMessage.warning('请填写质控项目和实测值')
|
ElMessage.warning(t('lab.qc.pleaseFillRequired'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
const res = await runWestgardApi(form.value)
|
const res = await runWestgardApi(form.value)
|
||||||
if (res.data?.isPass) {
|
if (res.data?.isPass) {
|
||||||
ElMessage.success('Westgard判定: ' + res.data.westgardRule)
|
ElMessage.success(t('lab.qc.westgardPass') + res.data.westgardRule)
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error('Westgard判定: ' + res.data.westgardRule)
|
ElMessage.error(t('lab.qc.westgardFail') + res.data.westgardRule)
|
||||||
}
|
}
|
||||||
form.value = defaultForm()
|
form.value = defaultForm()
|
||||||
await loadResults()
|
await loadResults()
|
||||||
@@ -162,13 +164,13 @@ const renderChart = () => {
|
|||||||
|
|
||||||
chartInstance.setOption({
|
chartInstance.setOption({
|
||||||
tooltip: { trigger: 'axis' },
|
tooltip: { trigger: 'axis' },
|
||||||
legend: { data: ['实测值', '靶值', '+2SD', '-2SD', '+3SD', '-3SD'] },
|
legend: { data: [t('lab.qc.actualValueLegend'), t('lab.qc.targetValueLegend'), '+2SD', '-2SD', '+3SD', '-3SD'] },
|
||||||
grid: { left: 60, right: 20, top: 40, bottom: 40 },
|
grid: { left: 60, right: 20, top: 40, bottom: 40 },
|
||||||
xAxis: { type: 'category', data: dates },
|
xAxis: { type: 'category', data: dates },
|
||||||
yAxis: { type: 'value', name: '检测值' },
|
yAxis: { type: 'value', name: t('lab.qc.yAxisName') },
|
||||||
series: [
|
series: [
|
||||||
{ name: '实测值', type: 'line', data: values, itemStyle: { color: '#409EFF' }, lineStyle: { width: 2 } },
|
{ name: t('lab.qc.actualValueLegend'), type: 'line', data: values, itemStyle: { color: '#409EFF' }, lineStyle: { width: 2 } },
|
||||||
{ name: '靶值', type: 'line', data: targetValues, lineStyle: { type: 'dashed', color: '#67C23A' }, itemStyle: { color: '#67C23A' } },
|
{ name: t('lab.qc.targetValueLegend'), type: 'line', data: targetValues, lineStyle: { type: 'dashed', color: '#67C23A' }, itemStyle: { color: '#67C23A' } },
|
||||||
{ name: '+2SD', type: 'line', data: dates.map(() => mean + 2 * sd), lineStyle: { type: 'dotted', color: '#E6A23C' }, itemStyle: { color: '#E6A23C' }, symbol: 'none' },
|
{ name: '+2SD', type: 'line', data: dates.map(() => mean + 2 * sd), lineStyle: { type: 'dotted', color: '#E6A23C' }, itemStyle: { color: '#E6A23C' }, symbol: 'none' },
|
||||||
{ name: '-2SD', type: 'line', data: dates.map(() => mean - 2 * sd), lineStyle: { type: 'dotted', color: '#E6A23C' }, itemStyle: { color: '#E6A23C' }, symbol: 'none' },
|
{ name: '-2SD', type: 'line', data: dates.map(() => mean - 2 * sd), lineStyle: { type: 'dotted', color: '#E6A23C' }, itemStyle: { color: '#E6A23C' }, symbol: 'none' },
|
||||||
{ name: '+3SD', type: 'line', data: dates.map(() => mean + 3 * sd), lineStyle: { type: 'dotted', color: '#F56C6C' }, itemStyle: { color: '#F56C6C' }, symbol: 'none' },
|
{ name: '+3SD', type: 'line', data: dates.map(() => mean + 3 * sd), lineStyle: { type: 'dotted', color: '#F56C6C' }, itemStyle: { color: '#F56C6C' }, symbol: 'none' },
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px">
|
<div style="margin-bottom:16px">
|
||||||
<span style="font-size:18px;font-weight:bold">检查预约排队</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.appointment.title') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:12px;display:flex;gap:8px;flex-wrap:wrap">
|
<div style="margin-bottom:12px;display:flex;gap:8px;flex-wrap:wrap">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="q.patientName"
|
v-model="q.patientName"
|
||||||
placeholder="患者"
|
:placeholder="$t('lab.appointment.patientPlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width:140px"
|
style="width:140px"
|
||||||
/>
|
/>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="q.status"
|
v-model="q.status"
|
||||||
placeholder="状态"
|
:placeholder="$t('lab.appointment.statusPlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width:120px"
|
style="width:120px"
|
||||||
>
|
>
|
||||||
@@ -27,13 +27,13 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="loadData"
|
@click="loadData"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('lab.appointment.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="success"
|
type="success"
|
||||||
@click="openAppoint"
|
@click="openAppoint"
|
||||||
>
|
>
|
||||||
新建预约
|
{{ $t('lab.appointment.newAppointment') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@@ -43,38 +43,38 @@
|
|||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="queueNumber"
|
prop="queueNumber"
|
||||||
label="队号"
|
:label="$t('lab.appointment.queueNumber')"
|
||||||
width="60"
|
width="60"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="patientName"
|
prop="patientName"
|
||||||
label="患者"
|
:label="$t('lab.appointment.patient')"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="examName"
|
prop="examName"
|
||||||
label="检查项目"
|
:label="$t('lab.appointment.examName')"
|
||||||
width="150"
|
width="150"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="appointDate"
|
prop="appointDate"
|
||||||
label="预约日期"
|
:label="$t('lab.appointment.appointDate')"
|
||||||
width="110"
|
width="110"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="appointTime"
|
prop="appointTime"
|
||||||
label="时段"
|
:label="$t('lab.appointment.timeSlot')"
|
||||||
width="80"
|
width="80"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="room"
|
prop="room"
|
||||||
label="诊室"
|
:label="$t('lab.appointment.room')"
|
||||||
width="80"
|
width="80"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="status"
|
prop="status"
|
||||||
label="状态"
|
:label="$t('lab.appointment.status')"
|
||||||
width="90"
|
width="90"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -83,28 +83,28 @@
|
|||||||
type="info"
|
type="info"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
已预约
|
{{ $t('lab.appointment.appointed') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-tag
|
<el-tag
|
||||||
v-else-if="row.status==='CHECKED_IN'"
|
v-else-if="row.status==='CHECKED_IN'"
|
||||||
type="warning"
|
type="warning"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
已签到
|
{{ $t('lab.appointment.checkedIn') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-tag
|
<el-tag
|
||||||
v-else-if="row.status==='EXAMINING'"
|
v-else-if="row.status==='EXAMINING'"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
检查中
|
{{ $t('lab.appointment.examining') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-tag
|
<el-tag
|
||||||
v-else-if="row.status==='COMPLETED'"
|
v-else-if="row.status==='COMPLETED'"
|
||||||
type="success"
|
type="success"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
已完成
|
{{ $t('lab.appointment.completed') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-tag
|
<el-tag
|
||||||
v-else
|
v-else
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="操作"
|
:label="$t('lab.appointment.operation')"
|
||||||
width="220"
|
width="220"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="doCheckin(row.id)"
|
@click="doCheckin(row.id)"
|
||||||
>
|
>
|
||||||
签到
|
{{ $t('lab.appointment.checkin') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="row.status==='CHECKED_IN'"
|
v-if="row.status==='CHECKED_IN'"
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="doStart(row.id)"
|
@click="doStart(row.id)"
|
||||||
>
|
>
|
||||||
开始
|
{{ $t('lab.appointment.start') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="row.status==='EXAMINING'"
|
v-if="row.status==='EXAMINING'"
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="doComplete(row.id)"
|
@click="doComplete(row.id)"
|
||||||
>
|
>
|
||||||
完成
|
{{ $t('lab.appointment.complete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="row.status!=='COMPLETED'&&row.status!=='CANCELLED'"
|
v-if="row.status!=='COMPLETED'&&row.status!=='CANCELLED'"
|
||||||
@@ -154,7 +154,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="doCancel(row.id)"
|
@click="doCancel(row.id)"
|
||||||
>
|
>
|
||||||
取消
|
{{ $t('lab.appointment.cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -169,49 +169,49 @@
|
|||||||
/>
|
/>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="dlgVisible"
|
v-model="dlgVisible"
|
||||||
title="新建预约"
|
:title="$t('lab.appointment.dialogTitle')"
|
||||||
width="500px"
|
width="500px"
|
||||||
>
|
>
|
||||||
<el-form
|
<el-form
|
||||||
:model="form"
|
:model="form"
|
||||||
label-width="80px"
|
label-width="80px"
|
||||||
>
|
>
|
||||||
<el-form-item label="患者ID">
|
<el-form-item :label="$t('lab.appointment.patientId')">
|
||||||
<el-input v-model.number="form.patientId" />
|
<el-input v-model.number="form.patientId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="就诊ID">
|
<el-form-item :label="$t('lab.appointment.encounterId')">
|
||||||
<el-input v-model.number="form.encounterId" />
|
<el-input v-model.number="form.encounterId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="患者姓名">
|
<el-form-item :label="$t('lab.appointment.patientName')">
|
||||||
<el-input v-model="form.patientName" />
|
<el-input v-model="form.patientName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="检查项目">
|
<el-form-item :label="$t('lab.appointment.examName')">
|
||||||
<el-input v-model="form.examName" />
|
<el-input v-model="form.examName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="预约日期">
|
<el-form-item :label="$t('lab.appointment.appointDate')">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="form.appointDate"
|
v-model="form.appointDate"
|
||||||
type="date"
|
type="date"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="时段">
|
<el-form-item :label="$t('lab.appointment.timeSlot')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.appointTime"
|
v-model="form.appointTime"
|
||||||
placeholder="如: 上午/下午"
|
:placeholder="$t('lab.appointment.timeSlotPlaceholder')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="诊室">
|
<el-form-item :label="$t('lab.appointment.room')">
|
||||||
<el-input v-model="form.room" />
|
<el-input v-model="form.room" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="dlgVisible=false">
|
<el-button @click="dlgVisible=false">
|
||||||
取消
|
{{ $t('common.cancel') }}
|
||||||
</el-button><el-button
|
</el-button><el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="doAppoint"
|
@click="doAppoint"
|
||||||
>
|
>
|
||||||
预约
|
{{ $t('lab.appointment.appointBtn') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
@@ -219,16 +219,18 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { useDict } from '@/utils/dict'
|
import { useDict } from '@/utils/dict'
|
||||||
import {ref,onMounted} from 'vue';import {ElMessage} from 'element-plus';import {getPage,appoint,checkin,startExam,complete,cancel} from './api'
|
import {ref,onMounted} from 'vue';import {useI18n} from 'vue-i18n';import {ElMessage} from 'element-plus';
|
||||||
|
const {t} = useI18n()
|
||||||
|
import {getPage,appoint,checkin,startExam,complete,cancel} from './api'
|
||||||
const { exam_appointment_status } = useDict('exam_appointment_status')
|
const { exam_appointment_status } = useDict('exam_appointment_status')
|
||||||
const tableData=ref([]);const total=ref(0);const q=ref({pageNo:1,pageSize: 10,patientName:'',status:''})
|
const tableData=ref([]);const total=ref(0);const q=ref({pageNo:1,pageSize: 10,patientName:'',status:''})
|
||||||
const dlgVisible=ref(false);const form=ref({patientId:null,encounterId:null,patientName:'',examName:'',appointDate:null,appointTime:'',room:''})
|
const dlgVisible=ref(false);const form=ref({patientId:null,encounterId:null,patientName:'',examName:'',appointDate:null,appointTime:'',room:''})
|
||||||
const loadData=async()=>{const r=await getPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
const loadData=async()=>{const r=await getPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
||||||
const openAppoint=()=>{form.value={patientId:null,encounterId:null,patientName:'',examName:'',appointDate:null,appointTime:'',room:''};dlgVisible.value=true}
|
const openAppoint=()=>{form.value={patientId:null,encounterId:null,patientName:'',examName:'',appointDate:null,appointTime:'',room:''};dlgVisible.value=true}
|
||||||
const doAppoint=async()=>{await appoint(form.value);ElMessage.success('预约成功');dlgVisible.value=false;loadData()}
|
const doAppoint=async()=>{await appoint(form.value);ElMessage.success(t('lab.appointment.appointSuccess'));dlgVisible.value=false;loadData()}
|
||||||
const doCheckin=async(id)=>{await checkin(id);ElMessage.success('签到完成');loadData()}
|
const doCheckin=async(id)=>{await checkin(id);ElMessage.success(t('lab.appointment.checkinSuccess'));loadData()}
|
||||||
const doStart=async(id)=>{await startExam(id);ElMessage.success('开始检查');loadData()}
|
const doStart=async(id)=>{await startExam(id);ElMessage.success(t('lab.appointment.startSuccess'));loadData()}
|
||||||
const doComplete=async(id)=>{await complete(id);ElMessage.success('检查完成');loadData()}
|
const doComplete=async(id)=>{await complete(id);ElMessage.success(t('lab.appointment.completeSuccess'));loadData()}
|
||||||
const doCancel=async(id)=>{await cancel(id);ElMessage.success('已取消');loadData()}
|
const doCancel=async(id)=>{await cancel(id);ElMessage.success(t('lab.appointment.cancelSuccess'));loadData()}
|
||||||
onMounted(()=>loadData())
|
onMounted(()=>loadData())
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px">
|
<div style="margin-bottom:16px">
|
||||||
<span style="font-size:18px;font-weight:bold">ICD-10诊断编码库</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.icd10.title') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:12px;display:flex;gap:8px">
|
<div style="margin-bottom:12px;display:flex;gap:8px">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="q.keyword"
|
v-model="q.keyword"
|
||||||
placeholder="编码/名称/拼音"
|
:placeholder="$t('lab.icd10.keywordPlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width:200px"
|
style="width:200px"
|
||||||
@keyup.enter="loadData"
|
@keyup.enter="loadData"
|
||||||
@@ -15,13 +15,13 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="loadData"
|
@click="loadData"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('lab.icd10.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="success"
|
type="success"
|
||||||
@click="dlgVisible=true;isEdit=false;form={code:'',name:'',category:'',pinyin:''}"
|
@click="dlgVisible=true;isEdit=false;form={code:'',name:'',category:'',pinyin:''}"
|
||||||
>
|
>
|
||||||
新增
|
{{ $t('lab.icd10.add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@@ -31,24 +31,24 @@
|
|||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="code"
|
prop="code"
|
||||||
label="编码"
|
:label="$t('lab.icd10.code')"
|
||||||
width="120"
|
width="120"
|
||||||
/><el-table-column
|
/><el-table-column
|
||||||
prop="name"
|
prop="name"
|
||||||
label="诊断名称"
|
:label="$t('lab.icd10.diagnosisName')"
|
||||||
min-width="200"
|
min-width="200"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="category"
|
prop="category"
|
||||||
label="分类"
|
:label="$t('lab.icd10.category')"
|
||||||
width="80"
|
width="80"
|
||||||
/><el-table-column
|
/><el-table-column
|
||||||
prop="pinyin"
|
prop="pinyin"
|
||||||
label="拼音"
|
:label="$t('lab.icd10.pinyin')"
|
||||||
width="120"
|
width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="操作"
|
:label="$t('lab.icd10.operation')"
|
||||||
width="140"
|
width="140"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -58,10 +58,10 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="isEdit=true;form={...row};dlgVisible=true"
|
@click="isEdit=true;form={...row};dlgVisible=true"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('lab.icd10.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-popconfirm
|
<el-popconfirm
|
||||||
title="确定删除?"
|
:title="$t('lab.icd10.deleteConfirm')"
|
||||||
@confirm="delItem(row.id)"
|
@confirm="delItem(row.id)"
|
||||||
>
|
>
|
||||||
<template #reference>
|
<template #reference>
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
link
|
link
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('lab.icd10.delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-popconfirm>
|
</el-popconfirm>
|
||||||
@@ -87,45 +87,47 @@
|
|||||||
/>
|
/>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="dlgVisible"
|
v-model="dlgVisible"
|
||||||
:title="isEdit?'编辑':'新增'"
|
:title="isEdit ? $t('common.edit') : $t('common.add')"
|
||||||
width="500px"
|
width="500px"
|
||||||
>
|
>
|
||||||
<el-form
|
<el-form
|
||||||
:model="form"
|
:model="form"
|
||||||
label-width="80px"
|
label-width="80px"
|
||||||
>
|
>
|
||||||
<el-form-item label="编码">
|
<el-form-item :label="$t('lab.icd10.code')">
|
||||||
<el-input v-model="form.code" />
|
<el-input v-model="form.code" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="名称">
|
<el-form-item :label="$t('lab.icd10.name')">
|
||||||
<el-input v-model="form.name" />
|
<el-input v-model="form.name" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分类">
|
<el-form-item :label="$t('lab.icd10.category')">
|
||||||
<el-input v-model="form.category" />
|
<el-input v-model="form.category" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="拼音">
|
<el-form-item :label="$t('lab.icd10.pinyin')">
|
||||||
<el-input v-model="form.pinyin" />
|
<el-input v-model="form.pinyin" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="dlgVisible=false">
|
<el-button @click="dlgVisible=false">
|
||||||
取消
|
{{ $t('common.cancel') }}
|
||||||
</el-button><el-button
|
</el-button><el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="saveData"
|
@click="saveData"
|
||||||
>
|
>
|
||||||
保存
|
{{ $t('common.save') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {ref,onMounted} from 'vue';import {ElMessage} from 'element-plus';import {getPage,add,update,del} from './api'
|
import {ref,onMounted} from 'vue';import {useI18n} from 'vue-i18n';import {ElMessage} from 'element-plus';
|
||||||
|
const {t} = useI18n()
|
||||||
|
import {getPage,add,update,del} from './api'
|
||||||
const tableData=ref([]);const total=ref(0);const q=ref({pageNo:1,pageSize: 10,keyword:''})
|
const tableData=ref([]);const total=ref(0);const q=ref({pageNo:1,pageSize: 10,keyword:''})
|
||||||
const dlgVisible=ref(false);const isEdit=ref(false);const form=ref({})
|
const dlgVisible=ref(false);const isEdit=ref(false);const form=ref({})
|
||||||
const loadData=async()=>{const r=await getPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
const loadData=async()=>{const r=await getPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
||||||
const saveData=async()=>{if(isEdit.value){await update(form.value)}else{await add(form.value)}ElMessage.success('保存成功');dlgVisible.value=false;loadData()}
|
const saveData=async()=>{if(isEdit.value){await update(form.value)}else{await add(form.value)}ElMessage.success(t('lab.icd10.saveSuccess'));dlgVisible.value=false;loadData()}
|
||||||
const delItem=async(id)=>{await del(id);ElMessage.success('已删除');loadData()}
|
const delItem=async(id)=>{await del(id);ElMessage.success(t('lab.icd10.deleted'));loadData()}
|
||||||
onMounted(()=>loadData())
|
onMounted(()=>loadData())
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px">
|
<div style="margin-bottom:16px">
|
||||||
<span style="font-size:18px;font-weight:bold">检验系统增强</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.enhanced.title') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-tabs
|
<el-tabs
|
||||||
v-model="tab"
|
v-model="tab"
|
||||||
type="border-card"
|
type="border-card"
|
||||||
>
|
>
|
||||||
<el-tab-pane
|
<el-tab-pane
|
||||||
label="室内质控"
|
:label="$t('lab.enhanced.iqcTab')"
|
||||||
name="iqc"
|
name="iqc"
|
||||||
>
|
>
|
||||||
<el-card
|
<el-card
|
||||||
@@ -19,17 +19,17 @@
|
|||||||
<div>
|
<div>
|
||||||
<div style="font-size:28px;font-weight:bold;color:#409eff">
|
<div style="font-size:28px;font-weight:bold;color:#409eff">
|
||||||
{{ iqcStats.total||0 }}
|
{{ iqcStats.total||0 }}
|
||||||
</div><div>总检测</div>
|
</div><div>{{ $t('lab.enhanced.totalTests') }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style="font-size:28px;font-weight:bold;color:#67c23a">
|
<div style="font-size:28px;font-weight:bold;color:#67c23a">
|
||||||
{{ iqcStats.passed||0 }}
|
{{ iqcStats.passed||0 }}
|
||||||
</div><div>合格</div>
|
</div><div>{{ $t('lab.enhanced.qualified') }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style="font-size:28px;font-weight:bold;color:#f56c6c">
|
<div style="font-size:28px;font-weight:bold;color:#f56c6c">
|
||||||
{{ iqcStats.failed||0 }}
|
{{ iqcStats.failed||0 }}
|
||||||
</div><div>失控</div>
|
</div><div>{{ $t('lab.enhanced.outOfControl') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
type="success"
|
type="success"
|
||||||
@click="showIqc=true"
|
@click="showIqc=true"
|
||||||
>
|
>
|
||||||
新增记录
|
{{ $t('lab.enhanced.addRecord') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@@ -48,45 +48,45 @@
|
|||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="instrumentName"
|
prop="instrumentName"
|
||||||
label="仪器"
|
:label="$t('lab.enhanced.instrument')"
|
||||||
width="120"
|
width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="qcItem"
|
prop="qcItem"
|
||||||
label="质控项目"
|
:label="$t('lab.enhanced.qcItem')"
|
||||||
width="120"
|
width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="qcDate"
|
prop="qcDate"
|
||||||
label="质控日期"
|
:label="$t('lab.enhanced.qcDate')"
|
||||||
width="120"
|
width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="targetValue"
|
prop="targetValue"
|
||||||
label="靶值"
|
:label="$t('lab.enhanced.targetValue')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="actualValue"
|
prop="actualValue"
|
||||||
label="实测值"
|
:label="$t('lab.enhanced.actualValue')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="cvRate"
|
prop="cvRate"
|
||||||
label="CV%"
|
:label="$t('lab.enhanced.cvRate')"
|
||||||
width="70"
|
width="70"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="westgardRule"
|
prop="westgardRule"
|
||||||
label="规则"
|
:label="$t('lab.enhanced.rule')"
|
||||||
width="80"
|
width="80"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="isPass"
|
prop="isPass"
|
||||||
label="结果"
|
:label="$t('lab.enhanced.result')"
|
||||||
width="70"
|
width="70"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -94,14 +94,14 @@
|
|||||||
:type="row.isPass?'success':'danger'"
|
:type="row.isPass?'success':'danger'"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
{{ row.isPass?'合格':'失控' }}
|
{{ row.isPass ? $t('lab.enhanced.qualifiedResult') : $t('lab.enhanced.outOfControlResult') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane
|
<el-tab-pane
|
||||||
label="室间质评"
|
:label="$t('lab.enhanced.eqaTab')"
|
||||||
name="eqa"
|
name="eqa"
|
||||||
>
|
>
|
||||||
<div style="margin-bottom:12px">
|
<div style="margin-bottom:12px">
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
type="success"
|
type="success"
|
||||||
@click="showEqa=true"
|
@click="showEqa=true"
|
||||||
>
|
>
|
||||||
新增记录
|
{{ $t('lab.enhanced.addRecord') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@@ -119,38 +119,38 @@
|
|||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="assessmentName"
|
prop="assessmentName"
|
||||||
label="质评项目"
|
:label="$t('lab.enhanced.assessmentProject')"
|
||||||
width="150"
|
width="150"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="assessmentOrg"
|
prop="assessmentOrg"
|
||||||
label="组织机构"
|
:label="$t('lab.enhanced.assessmentOrg')"
|
||||||
width="150"
|
width="150"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="testItem"
|
prop="testItem"
|
||||||
label="检测项目"
|
:label="$t('lab.enhanced.testItem')"
|
||||||
width="120"
|
width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="targetValue"
|
prop="targetValue"
|
||||||
label="靶值"
|
:label="$t('lab.enhanced.targetValue')"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="actualValue"
|
prop="actualValue"
|
||||||
label="实测值"
|
:label="$t('lab.enhanced.actualValue')"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="deviationRate"
|
prop="deviationRate"
|
||||||
label="偏差率%"
|
:label="$t('lab.enhanced.deviationRate')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="result"
|
prop="result"
|
||||||
label="结果"
|
:label="$t('lab.enhanced.result')"
|
||||||
width="80"
|
width="80"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -170,6 +170,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import {ref,reactive,onMounted} from 'vue'
|
import {ref,reactive,onMounted} from 'vue'
|
||||||
|
import {useI18n} from 'vue-i18n'
|
||||||
|
const {t} = useI18n()
|
||||||
import {ElMessage} from 'element-plus'
|
import {ElMessage} from 'element-plus'
|
||||||
import {getInternalQcPage,addInternalQc,getQcStats,getExternalEqaPage,addExternalEqa} from './api'
|
import {getInternalQcPage,addInternalQc,getQcStats,getExternalEqaPage,addExternalEqa} from './api'
|
||||||
const tab=ref('iqc')
|
const tab=ref('iqc')
|
||||||
@@ -182,7 +184,7 @@ const loadData=async()=>{
|
|||||||
const [i,q,e]=await Promise.all([getInternalQcPage({pageNo:1,pageSize:50}),getQcStats(),getExternalEqaPage({pageNo:1,pageSize:50})])
|
const [i,q,e]=await Promise.all([getInternalQcPage({pageNo:1,pageSize:50}),getQcStats(),getExternalEqaPage({pageNo:1,pageSize:50})])
|
||||||
iqcData.value=i.data?.records||[];iqcStats.value=q.data||[];eqaData.value=e.data?.records||[]
|
iqcData.value=i.data?.records||[];iqcStats.value=q.data||[];eqaData.value=e.data?.records||[]
|
||||||
}
|
}
|
||||||
const submitIqc=async()=>{await addInternalQc(iqcForm);ElMessage.success('新增成功');showIqc.value=false;loadData()}
|
const submitIqc=async()=>{await addInternalQc(iqcForm);ElMessage.success(t('lab.enhanced.addSuccess'));showIqc.value=false;loadData()}
|
||||||
const submitEqa=async()=>{await addExternalEqa(eqaForm);ElMessage.success('新增成功');showEqa.value=false;loadData()}
|
const submitEqa=async()=>{await addExternalEqa(eqaForm);ElMessage.success(t('lab.enhanced.addSuccess'));showEqa.value=false;loadData()}
|
||||||
onMounted(()=>loadData())
|
onMounted(()=>loadData())
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px;display:flex;justify-content:space-between;align-items:center">
|
<div style="margin-bottom:16px;display:flex;justify-content:space-between;align-items:center">
|
||||||
<span style="font-size:18px;font-weight:bold">临床路径管理</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.pathway.title') }}</span>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="loadStats"
|
@click="loadStats"
|
||||||
>
|
>
|
||||||
刷新统计
|
{{ $t('lab.pathway.refreshStats') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-row
|
<el-row
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
<div style="font-size:20px;font-weight:bold;color:#409eff">
|
<div style="font-size:20px;font-weight:bold;color:#409eff">
|
||||||
{{ stats.totalPathways||0 }}
|
{{ stats.totalPathways||0 }}
|
||||||
</div><div style="font-size:12px;color:#999">
|
</div><div style="font-size:12px;color:#999">
|
||||||
路径数
|
{{ $t('lab.pathway.pathwayCount') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<div style="font-size:20px;font-weight:bold;color:#67c23a">
|
<div style="font-size:20px;font-weight:bold;color:#67c23a">
|
||||||
{{ stats.totalExecutions||0 }}
|
{{ stats.totalExecutions||0 }}
|
||||||
</div><div style="font-size:12px;color:#999">
|
</div><div style="font-size:12px;color:#999">
|
||||||
入径数
|
{{ $t('lab.pathway.entryCount') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<div style="font-size:20px;font-weight:bold;color:#e6a23c">
|
<div style="font-size:20px;font-weight:bold;color:#e6a23c">
|
||||||
{{ stats.completedExecutions||0 }}
|
{{ stats.completedExecutions||0 }}
|
||||||
</div><div style="font-size:12px;color:#999">
|
</div><div style="font-size:12px;color:#999">
|
||||||
完成数
|
{{ $t('lab.pathway.completedCount') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
<div style="font-size:20px;font-weight:bold;color:#f56c6c">
|
<div style="font-size:20px;font-weight:bold;color:#f56c6c">
|
||||||
{{ stats.variedExecutions||0 }}
|
{{ stats.variedExecutions||0 }}
|
||||||
</div><div style="font-size:12px;color:#999">
|
</div><div style="font-size:12px;color:#999">
|
||||||
变异数
|
{{ $t('lab.pathway.variationCount') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
<div style="font-size:20px;font-weight:bold;color:#909399">
|
<div style="font-size:20px;font-weight:bold;color:#909399">
|
||||||
{{ stats.completionRate||0 }}%
|
{{ stats.completionRate||0 }}%
|
||||||
</div><div style="font-size:12px;color:#999">
|
</div><div style="font-size:12px;color:#999">
|
||||||
完成率
|
{{ $t('lab.pathway.completionRate') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -76,44 +76,44 @@
|
|||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="pathwayName"
|
prop="pathwayName"
|
||||||
label="路径名称"
|
:label="$t('lab.pathway.pathwayName')"
|
||||||
min-width="150"
|
min-width="150"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="diseaseCode"
|
prop="diseaseCode"
|
||||||
label="疾病编码"
|
:label="$t('lab.pathway.diseaseCode')"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="diseaseName"
|
prop="diseaseName"
|
||||||
label="疾病名称"
|
:label="$t('lab.pathway.diseaseName')"
|
||||||
width="120"
|
width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="departmentName"
|
prop="departmentName"
|
||||||
label="科室"
|
:label="$t('lab.pathway.department')"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="avgDays"
|
prop="avgDays"
|
||||||
label="平均天数"
|
:label="$t('lab.pathway.avgDays')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="avgCost"
|
prop="avgCost"
|
||||||
label="平均费用"
|
:label="$t('lab.pathway.avgCost')"
|
||||||
width="100"
|
width="100"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="version"
|
prop="version"
|
||||||
label="版本"
|
:label="$t('lab.pathway.version')"
|
||||||
width="60"
|
width="60"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="操作"
|
:label="$t('lab.pathway.operation')"
|
||||||
width="100"
|
width="100"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="openEnter(row)"
|
@click="openEnter(row)"
|
||||||
>
|
>
|
||||||
入径
|
{{ $t('lab.pathway.enterPathway') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -138,35 +138,35 @@
|
|||||||
/>
|
/>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="enterDialog"
|
v-model="enterDialog"
|
||||||
title="患者入径"
|
:title="$t('lab.pathway.enterDialogTitle')"
|
||||||
width="500px"
|
width="500px"
|
||||||
>
|
>
|
||||||
<el-form
|
<el-form
|
||||||
:model="enterForm"
|
:model="enterForm"
|
||||||
label-width="80px"
|
label-width="80px"
|
||||||
>
|
>
|
||||||
<el-form-item label="路径">
|
<el-form-item :label="$t('lab.pathway.pathway')">
|
||||||
<el-input
|
<el-input
|
||||||
:model-value="enterForm.pathwayName"
|
:model-value="enterForm.pathwayName"
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="患者ID">
|
<el-form-item :label="$t('lab.pathway.patientId')">
|
||||||
<el-input v-model.number="enterForm.patientId" />
|
<el-input v-model.number="enterForm.patientId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="就诊ID">
|
<el-form-item :label="$t('lab.pathway.encounterId')">
|
||||||
<el-input v-model.number="enterForm.encounterId" />
|
<el-input v-model.number="enterForm.encounterId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="患者姓名">
|
<el-form-item :label="$t('lab.pathway.patientName')">
|
||||||
<el-input v-model="enterForm.patientName" />
|
<el-input v-model="enterForm.patientName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="预期天数">
|
<el-form-item :label="$t('lab.pathway.expectedDays')">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="enterForm.expectedDays"
|
v-model="enterForm.expectedDays"
|
||||||
:min="1"
|
:min="1"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="预期费用">
|
<el-form-item :label="$t('lab.pathway.expectedCost')">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="enterForm.expectedCost"
|
v-model="enterForm.expectedCost"
|
||||||
:min="0"
|
:min="0"
|
||||||
@@ -176,24 +176,26 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="enterDialog=false">
|
<el-button @click="enterDialog=false">
|
||||||
取消
|
{{ $t('common.cancel') }}
|
||||||
</el-button><el-button
|
</el-button><el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="doEnter"
|
@click="doEnter"
|
||||||
>
|
>
|
||||||
确认入径
|
{{ $t('lab.pathway.confirmEnter') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {ref,onMounted} from 'vue';import {ElMessage} from 'element-plus';import {getPage,enterPathway,getStats} from './api'
|
import {ref,onMounted} from 'vue';import {useI18n} from 'vue-i18n';import {ElMessage} from 'element-plus';
|
||||||
|
const {t} = useI18n()
|
||||||
|
import {getPage,enterPathway,getStats} from './api'
|
||||||
const tableData=ref([]);const total=ref(0);const stats=ref({});const q=ref({pageNo:1,pageSize: 10})
|
const tableData=ref([]);const total=ref(0);const stats=ref({});const q=ref({pageNo:1,pageSize: 10})
|
||||||
const enterDialog=ref(false);const enterForm=ref({pathwayId:null,pathwayName:'',patientId:null,encounterId:null,patientName:'',expectedDays:7,expectedCost:0})
|
const enterDialog=ref(false);const enterForm=ref({pathwayId:null,pathwayName:'',patientId:null,encounterId:null,patientName:'',expectedDays:7,expectedCost:0})
|
||||||
const loadData=async()=>{const r=await getPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
const loadData=async()=>{const r=await getPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
||||||
const loadStats=async()=>{const r=await getStats();stats.value=r.data||{}}
|
const loadStats=async()=>{const r=await getStats();stats.value=r.data||{}}
|
||||||
const openEnter=(row)=>{enterForm.value.pathwayId=row.id;enterForm.value.pathwayName=row.pathwayName;enterForm.value.expectedDays=row.avgDays;enterForm.value.expectedCost=row.avgCost;enterDialog.value=true}
|
const openEnter=(row)=>{enterForm.value.pathwayId=row.id;enterForm.value.pathwayName=row.pathwayName;enterForm.value.expectedDays=row.avgDays;enterForm.value.expectedCost=row.avgCost;enterDialog.value=true}
|
||||||
const doEnter=async()=>{await enterPathway(enterForm.value);ElMessage.success('入径成功');enterDialog.value=false;loadStats()}
|
const doEnter=async()=>{await enterPathway(enterForm.value);ElMessage.success(t('lab.pathway.enterSuccess'));enterDialog.value=false;loadStats()}
|
||||||
onMounted(()=>{loadData();loadStats()})
|
onMounted(()=>{loadData();loadStats()})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px">
|
<div style="margin-bottom:16px">
|
||||||
<span style="font-size:18px;font-weight:bold">影像图文报告</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.radiology.title') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:12px;display:flex;gap:8px">
|
<div style="margin-bottom:12px;display:flex;gap:8px">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="q.status"
|
v-model="q.status"
|
||||||
placeholder="状态"
|
:placeholder="$t('lab.radiology.statusPlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width:120px"
|
style="width:120px"
|
||||||
>
|
>
|
||||||
@@ -21,13 +21,13 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="loadData"
|
@click="loadData"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('lab.radiology.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="success"
|
type="success"
|
||||||
@click="openReport"
|
@click="openReport"
|
||||||
>
|
>
|
||||||
新建报告
|
{{ $t('lab.radiology.newReport') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@@ -37,40 +37,40 @@
|
|||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="patientName"
|
prop="patientName"
|
||||||
label="患者"
|
:label="$t('lab.radiology.patient')"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="examName"
|
prop="examName"
|
||||||
label="检查"
|
:label="$t('lab.radiology.exam')"
|
||||||
width="150"
|
width="150"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="reportType"
|
prop="reportType"
|
||||||
label="类型"
|
:label="$t('lab.radiology.type')"
|
||||||
width="80"
|
width="80"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="findings"
|
prop="findings"
|
||||||
label="所见"
|
:label="$t('lab.radiology.findings')"
|
||||||
min-width="150"
|
min-width="150"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="impression"
|
prop="impression"
|
||||||
label="印象"
|
:label="$t('lab.radiology.impression')"
|
||||||
min-width="150"
|
min-width="150"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="reportDoctor"
|
prop="reportDoctor"
|
||||||
label="报告人"
|
:label="$t('lab.radiology.reporter')"
|
||||||
width="80"
|
width="80"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="status"
|
prop="status"
|
||||||
label="状态"
|
:label="$t('lab.radiology.status')"
|
||||||
width="80"
|
width="80"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -79,26 +79,26 @@
|
|||||||
type="info"
|
type="info"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
草稿
|
{{ $t('lab.radiology.draft') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-tag
|
<el-tag
|
||||||
v-else-if="row.status==='REPORTED'"
|
v-else-if="row.status==='REPORTED'"
|
||||||
type="warning"
|
type="warning"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
已报告
|
{{ $t('lab.radiology.reported') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-tag
|
<el-tag
|
||||||
v-else
|
v-else
|
||||||
type="success"
|
type="success"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
已审核
|
{{ $t('lab.radiology.audited') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="操作"
|
:label="$t('lab.radiology.operation')"
|
||||||
width="160"
|
width="160"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="doSubmit(row.id)"
|
@click="doSubmit(row.id)"
|
||||||
>
|
>
|
||||||
提交
|
{{ $t('lab.radiology.submit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="row.status==='REPORTED'"
|
v-if="row.status==='REPORTED'"
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="doVerify(row.id)"
|
@click="doVerify(row.id)"
|
||||||
>
|
>
|
||||||
审核
|
{{ $t('lab.radiology.audit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -133,64 +133,64 @@
|
|||||||
/>
|
/>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="dlgVisible"
|
v-model="dlgVisible"
|
||||||
title="新建影像报告"
|
:title="$t('lab.radiology.dialogTitle')"
|
||||||
width="600px"
|
width="600px"
|
||||||
>
|
>
|
||||||
<el-form
|
<el-form
|
||||||
:model="form"
|
:model="form"
|
||||||
label-width="80px"
|
label-width="80px"
|
||||||
>
|
>
|
||||||
<el-form-item label="申请ID">
|
<el-form-item :label="$t('lab.radiology.applyId')">
|
||||||
<el-input v-model.number="form.applyId" />
|
<el-input v-model.number="form.applyId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="就诊ID">
|
<el-form-item :label="$t('lab.radiology.encounterId')">
|
||||||
<el-input v-model.number="form.encounterId" />
|
<el-input v-model.number="form.encounterId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="患者姓名">
|
<el-form-item :label="$t('lab.radiology.patientName')">
|
||||||
<el-input v-model="form.patientName" />
|
<el-input v-model="form.patientName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="检查名称">
|
<el-form-item :label="$t('lab.radiology.examName')">
|
||||||
<el-input v-model="form.examName" />
|
<el-input v-model="form.examName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="报告类型">
|
<el-form-item :label="$t('lab.radiology.reportType')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.reportType"
|
v-model="form.reportType"
|
||||||
placeholder="如: X光/CT/MRI"
|
:placeholder="$t('lab.radiology.reportTypePlaceholder')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所见">
|
<el-form-item :label="$t('lab.radiology.findings')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.findings"
|
v-model="form.findings"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:rows="3"
|
:rows="3"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="印象">
|
<el-form-item :label="$t('lab.radiology.impression')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.impression"
|
v-model="form.impression"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:rows="3"
|
:rows="3"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结论">
|
<el-form-item :label="$t('lab.radiology.conclusion')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.conclusion"
|
v-model="form.conclusion"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:rows="2"
|
:rows="2"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="报告医生">
|
<el-form-item :label="$t('lab.radiology.reportDoctor')">
|
||||||
<el-input v-model="form.reportDoctor" />
|
<el-input v-model="form.reportDoctor" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="dlgVisible=false">
|
<el-button @click="dlgVisible=false">
|
||||||
取消
|
{{ $t('common.cancel') }}
|
||||||
</el-button><el-button
|
</el-button><el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="doAddReport"
|
@click="doAddReport"
|
||||||
>
|
>
|
||||||
保存
|
{{ $t('common.save') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
@@ -198,14 +198,16 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { useDict } from '@/utils/dict'
|
import { useDict } from '@/utils/dict'
|
||||||
import {ref,onMounted} from 'vue';import {ElMessage,ElMessageBox} from 'element-plus';import {getReportPage,addReport,submitReport,verifyReport} from './api'
|
import {ref,onMounted} from 'vue';import {useI18n} from 'vue-i18n';import {ElMessage,ElMessageBox} from 'element-plus';
|
||||||
|
const {t} = useI18n()
|
||||||
|
import {getReportPage,addReport,submitReport,verifyReport} from './api'
|
||||||
const { lab_report_status } = useDict('lab_report_status')
|
const { lab_report_status } = useDict('lab_report_status')
|
||||||
const tableData=ref([]);const total=ref(0);const q=ref({pageNo:1,pageSize: 10,status:''})
|
const tableData=ref([]);const total=ref(0);const q=ref({pageNo:1,pageSize: 10,status:''})
|
||||||
const dlgVisible=ref(false);const form=ref({applyId:null,encounterId:null,patientName:'',examName:'',reportType:'',findings:'',impression:'',conclusion:'',reportDoctor:''})
|
const dlgVisible=ref(false);const form=ref({applyId:null,encounterId:null,patientName:'',examName:'',reportType:'',findings:'',impression:'',conclusion:'',reportDoctor:''})
|
||||||
const loadData=async()=>{const r=await getReportPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
const loadData=async()=>{const r=await getReportPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
||||||
const openReport=()=>{form.value={applyId:null,encounterId:null,patientName:'',examName:'',reportType:'',findings:'',impression:'',conclusion:'',reportDoctor:''};dlgVisible.value=true}
|
const openReport=()=>{form.value={applyId:null,encounterId:null,patientName:'',examName:'',reportType:'',findings:'',impression:'',conclusion:'',reportDoctor:''};dlgVisible.value=true}
|
||||||
const doAddReport=async()=>{await addReport(form.value);ElMessage.success('保存成功');dlgVisible.value=false;loadData()}
|
const doAddReport=async()=>{await addReport(form.value);ElMessage.success(t('lab.radiology.saveSuccess'));dlgVisible.value=false;loadData()}
|
||||||
const doSubmit=async(id)=>{await submitReport(id);ElMessage.success('已提交');loadData()}
|
const doSubmit=async(id)=>{await submitReport(id);ElMessage.success(t('lab.radiology.submitted'));loadData()}
|
||||||
const doVerify=async(id)=>{const {value}=await ElMessageBox.prompt('审核医生','审核报告');if(value){await verifyReport(id,value);ElMessage.success('已审核');loadData()}}
|
const doVerify=async(id)=>{const {value}=await ElMessageBox.prompt(t('lab.radiology.auditDoctor'), t('lab.radiology.auditReport'));if(value){await verifyReport(id,value);ElMessage.success(t('lab.radiology.auditedSuccess'));loadData()}}
|
||||||
onMounted(()=>loadData())
|
onMounted(()=>loadData())
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,26 +1,26 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px">
|
<div style="margin-bottom:16px">
|
||||||
<span style="font-size:18px;font-weight:bold">检验参考范围</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.refRange.title') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:12px;display:flex;gap:8px;flex-wrap:wrap">
|
<div style="margin-bottom:12px;display:flex;gap:8px;flex-wrap:wrap">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="q.itemCode"
|
v-model="q.itemCode"
|
||||||
placeholder="项目编码"
|
:placeholder="$t('lab.refRange.itemCodePlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width:140px"
|
style="width:140px"
|
||||||
/>
|
/>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="q.gender"
|
v-model="q.gender"
|
||||||
placeholder="性别"
|
:placeholder="$t('lab.refRange.genderPlaceholder')"
|
||||||
clearable
|
clearable
|
||||||
style="width:100px"
|
style="width:100px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
label="男"
|
:label="$t('lab.refRange.male')"
|
||||||
value="男"
|
value="男"
|
||||||
/><el-option
|
/><el-option
|
||||||
label="女"
|
:label="$t('lab.refRange.female')"
|
||||||
value="女"
|
value="女"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -28,13 +28,13 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="loadData"
|
@click="loadData"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('lab.refRange.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="success"
|
type="success"
|
||||||
@click="dlgVisible=true;isEdit=false;form={itemCode:'',itemName:'',gender:'',ageMin:null,ageMax:null,lowValue:null,highValue:null,unit:'',criticalLow:null,criticalHigh:null}"
|
@click="dlgVisible=true;isEdit=false;form={itemCode:'',itemName:'',gender:'',ageMin:null,ageMax:null,lowValue:null,highValue:null,unit:'',criticalLow:null,criticalHigh:null}"
|
||||||
>
|
>
|
||||||
新增
|
{{ $t('lab.refRange.add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@@ -44,57 +44,57 @@
|
|||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="itemCode"
|
prop="itemCode"
|
||||||
label="编码"
|
:label="$t('lab.refRange.code')"
|
||||||
width="120"
|
width="120"
|
||||||
/><el-table-column
|
/><el-table-column
|
||||||
prop="itemName"
|
prop="itemName"
|
||||||
label="名称"
|
:label="$t('lab.refRange.name')"
|
||||||
width="150"
|
width="150"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="gender"
|
prop="gender"
|
||||||
label="性别"
|
:label="$t('lab.refRange.gender')"
|
||||||
width="70"
|
width="70"
|
||||||
/><el-table-column
|
/><el-table-column
|
||||||
prop="ageMin"
|
prop="ageMin"
|
||||||
label="最小年龄"
|
:label="$t('lab.refRange.ageMin')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="ageMax"
|
prop="ageMax"
|
||||||
label="最大年龄"
|
:label="$t('lab.refRange.ageMax')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/><el-table-column
|
/><el-table-column
|
||||||
prop="lowValue"
|
prop="lowValue"
|
||||||
label="下限"
|
:label="$t('lab.refRange.lowValue')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="highValue"
|
prop="highValue"
|
||||||
label="上限"
|
:label="$t('lab.refRange.highValue')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/><el-table-column
|
/><el-table-column
|
||||||
prop="unit"
|
prop="unit"
|
||||||
label="单位"
|
:label="$t('lab.refRange.unit')"
|
||||||
width="70"
|
width="70"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="criticalLow"
|
prop="criticalLow"
|
||||||
label="危急低"
|
:label="$t('lab.refRange.criticalLow')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/><el-table-column
|
/><el-table-column
|
||||||
prop="criticalHigh"
|
prop="criticalHigh"
|
||||||
label="危急高"
|
:label="$t('lab.refRange.criticalHigh')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="操作"
|
:label="$t('lab.refRange.operation')"
|
||||||
width="140"
|
width="140"
|
||||||
>
|
>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
@@ -104,10 +104,10 @@
|
|||||||
size="small"
|
size="small"
|
||||||
@click="isEdit=true;form={...row};dlgVisible=true"
|
@click="isEdit=true;form={...row};dlgVisible=true"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('lab.refRange.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-popconfirm
|
<el-popconfirm
|
||||||
title="确定删除?"
|
:title="$t('lab.refRange.deleteConfirm')"
|
||||||
@confirm="delItem(row.id)"
|
@confirm="delItem(row.id)"
|
||||||
>
|
>
|
||||||
<template #reference>
|
<template #reference>
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
link
|
link
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('lab.refRange.delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-popconfirm>
|
</el-popconfirm>
|
||||||
@@ -133,33 +133,33 @@
|
|||||||
/>
|
/>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="dlgVisible"
|
v-model="dlgVisible"
|
||||||
:title="isEdit?'编辑':'新增'"
|
:title="isEdit ? $t('common.edit') : $t('common.add')"
|
||||||
width="500px"
|
width="500px"
|
||||||
>
|
>
|
||||||
<el-form
|
<el-form
|
||||||
:model="form"
|
:model="form"
|
||||||
label-width="80px"
|
label-width="80px"
|
||||||
>
|
>
|
||||||
<el-form-item label="编码">
|
<el-form-item :label="$t('lab.refRange.code')">
|
||||||
<el-input v-model="form.itemCode" />
|
<el-input v-model="form.itemCode" />
|
||||||
</el-form-item><el-form-item label="名称">
|
</el-form-item><el-form-item :label="$t('lab.refRange.name')">
|
||||||
<el-input v-model="form.itemName" />
|
<el-input v-model="form.itemName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="性别">
|
<el-form-item :label="$t('lab.refRange.gender')">
|
||||||
<el-select v-model="form.gender">
|
<el-select v-model="form.gender">
|
||||||
<el-option
|
<el-option
|
||||||
label="通用"
|
:label="$t('lab.refRange.universal')"
|
||||||
value=""
|
value=""
|
||||||
/><el-option
|
/><el-option
|
||||||
label="男"
|
:label="$t('lab.refRange.male')"
|
||||||
value="男"
|
value="男"
|
||||||
/><el-option
|
/><el-option
|
||||||
label="女"
|
:label="$t('lab.refRange.female')"
|
||||||
value="女"
|
value="女"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="年龄范围">
|
<el-form-item :label="$t('lab.refRange.ageRange')">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.ageMin"
|
v-model="form.ageMin"
|
||||||
:min="0"
|
:min="0"
|
||||||
@@ -168,31 +168,31 @@
|
|||||||
:min="0"
|
:min="0"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="参考下限">
|
<el-form-item :label="$t('lab.refRange.refLow')">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.lowValue"
|
v-model="form.lowValue"
|
||||||
:precision="4"
|
:precision="4"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="参考上限">
|
<el-form-item :label="$t('lab.refRange.refHigh')">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.highValue"
|
v-model="form.highValue"
|
||||||
:precision="4"
|
:precision="4"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="单位">
|
<el-form-item :label="$t('lab.refRange.unit')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.unit"
|
v-model="form.unit"
|
||||||
style="width:120px"
|
style="width:120px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="危急低">
|
<el-form-item :label="$t('lab.refRange.criticalLow')">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.criticalLow"
|
v-model="form.criticalLow"
|
||||||
:precision="4"
|
:precision="4"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="危急高">
|
<el-form-item :label="$t('lab.refRange.criticalHigh')">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.criticalHigh"
|
v-model="form.criticalHigh"
|
||||||
:precision="4"
|
:precision="4"
|
||||||
@@ -201,23 +201,25 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="dlgVisible=false">
|
<el-button @click="dlgVisible=false">
|
||||||
取消
|
{{ $t('common.cancel') }}
|
||||||
</el-button><el-button
|
</el-button><el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="saveData"
|
@click="saveData"
|
||||||
>
|
>
|
||||||
保存
|
{{ $t('common.save') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {ref,onMounted} from 'vue';import {ElMessage} from 'element-plus';import {getPage,add,update,del} from './api'
|
import {ref,onMounted} from 'vue';import {useI18n} from 'vue-i18n';import {ElMessage} from 'element-plus';
|
||||||
|
const {t} = useI18n()
|
||||||
|
import {getPage,add,update,del} from './api'
|
||||||
const tableData=ref([]);const total=ref(0);const q=ref({pageNo:1,pageSize: 10,itemCode:'',gender:''})
|
const tableData=ref([]);const total=ref(0);const q=ref({pageNo:1,pageSize: 10,itemCode:'',gender:''})
|
||||||
const dlgVisible=ref(false);const isEdit=ref(false);const form=ref({})
|
const dlgVisible=ref(false);const isEdit=ref(false);const form=ref({})
|
||||||
const loadData=async()=>{const r=await getPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
const loadData=async()=>{const r=await getPage(q.value);tableData.value=r.data?.records||[];total.value=r.data?.total||0}
|
||||||
const saveData=async()=>{if(isEdit.value){await update(form.value)}else{await add(form.value)}ElMessage.success('保存成功');dlgVisible.value=false;loadData()}
|
const saveData=async()=>{if(isEdit.value){await update(form.value)}else{await add(form.value)}ElMessage.success(t('lab.refRange.saveSuccess'));dlgVisible.value=false;loadData()}
|
||||||
const delItem=async(id)=>{await del(id);ElMessage.success('已删除');loadData()}
|
const delItem=async(id)=>{await del(id);ElMessage.success(t('lab.refRange.deleted'));loadData()}
|
||||||
onMounted(()=>loadData())
|
onMounted(()=>loadData())
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="padding:16px">
|
<div style="padding:16px">
|
||||||
<div style="margin-bottom:16px;display:flex;justify-content:space-between;align-items:center">
|
<div style="margin-bottom:16px;display:flex;justify-content:space-between;align-items:center">
|
||||||
<span style="font-size:18px;font-weight:bold">检验历史结果对比</span>
|
<span style="font-size:18px;font-weight:bold">{{ $t('lab.history.title') }}</span>
|
||||||
<div>
|
<div>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="loadData"
|
@click="loadData"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('lab.history.query') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="warning"
|
type="warning"
|
||||||
@click="exportReport"
|
@click="exportReport"
|
||||||
>
|
>
|
||||||
导出报告
|
{{ $t('lab.history.exportReport') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -24,27 +24,27 @@
|
|||||||
style="margin-bottom:16px"
|
style="margin-bottom:16px"
|
||||||
>
|
>
|
||||||
<el-form inline>
|
<el-form inline>
|
||||||
<el-form-item label="患者ID">
|
<el-form-item :label="$t('lab.history.patientId')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="patientId"
|
v-model="patientId"
|
||||||
placeholder="请输入患者ID"
|
:placeholder="$t('lab.history.patientIdPlaceholder')"
|
||||||
style="width:180px"
|
style="width:180px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="检验项目">
|
<el-form-item :label="$t('lab.history.testItem')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="testItem"
|
v-model="testItem"
|
||||||
clearable
|
clearable
|
||||||
placeholder="如: 血糖、血常规"
|
:placeholder="$t('lab.history.testItemPlaceholder')"
|
||||||
style="width:180px"
|
style="width:180px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="日期范围">
|
<el-form-item :label="$t('lab.history.dateRange')">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="dateRange"
|
v-model="dateRange"
|
||||||
type="daterange"
|
type="daterange"
|
||||||
start-placeholder="开始"
|
:start-placeholder="$t('lab.history.startPlaceholder')"
|
||||||
end-placeholder="结束"
|
:end-placeholder="$t('lab.history.endPlaceholder')"
|
||||||
style="width:240px"
|
style="width:240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
检验指标趋势
|
{{ $t('lab.history.trendTitle') }}
|
||||||
</template>
|
</template>
|
||||||
<div style="height:300px;display:flex;align-items:center;justify-content:center;flex-direction:column">
|
<div style="height:300px;display:flex;align-items:center;justify-content:center;flex-direction:column">
|
||||||
<div
|
<div
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<el-empty
|
<el-empty
|
||||||
v-else
|
v-else
|
||||||
description="请先查询患者数据"
|
:description="$t('lab.history.queryFirst')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
异常指标统计
|
{{ $t('lab.history.abnormalTitle') }}
|
||||||
</template>
|
</template>
|
||||||
<div style="height:300px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px">
|
<div style="height:300px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px">
|
||||||
<div
|
<div
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
<div style="width:200px;background:#f0f0f0;border-radius:4px;height:24px">
|
<div style="width:200px;background:#f0f0f0;border-radius:4px;height:24px">
|
||||||
<div :style="{width: item.percent + '%', background: item.color, height: '100%', borderRadius: '4px', transition: 'width 0.5s'}" />
|
<div :style="{width: item.percent + '%', background: item.color, height: '100%', borderRadius: '4px', transition: 'width 0.5s'}" />
|
||||||
</div>
|
</div>
|
||||||
<span style="font-size:13px;font-weight:bold">{{ item.count }}项 ({{ item.percent }}%)</span>
|
<span style="font-size:13px;font-weight:bold">{{ item.count }}{{ $t('lab.history.items') }} ({{ item.percent }}%)</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
<!-- 数据表格 -->
|
<!-- 数据表格 -->
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
检验结果明细
|
{{ $t('lab.history.detailTitle') }}
|
||||||
</template>
|
</template>
|
||||||
<el-table
|
<el-table
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
@@ -155,18 +155,18 @@
|
|||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
type="index"
|
type="index"
|
||||||
label="序号"
|
:label="$t('lab.history.seqNo')"
|
||||||
width="60"
|
width="60"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="testItem"
|
prop="testItem"
|
||||||
label="检验项目"
|
:label="$t('lab.history.testItem')"
|
||||||
width="140"
|
width="140"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="testValue"
|
prop="testValue"
|
||||||
label="结果"
|
:label="$t('lab.history.result')"
|
||||||
width="100"
|
width="100"
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
@@ -178,19 +178,19 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="unit"
|
prop="unit"
|
||||||
label="单位"
|
:label="$t('lab.history.unit')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="referenceRange"
|
prop="referenceRange"
|
||||||
label="参考范围"
|
:label="$t('lab.history.refRange')"
|
||||||
width="120"
|
width="120"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="abnormalFlag"
|
prop="abnormalFlag"
|
||||||
label="异常"
|
:label="$t('lab.history.abnormal')"
|
||||||
width="80"
|
width="80"
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
@@ -205,22 +205,22 @@
|
|||||||
<span
|
<span
|
||||||
v-else
|
v-else
|
||||||
style="color:#67C23A"
|
style="color:#67C23A"
|
||||||
>正常</span>
|
>{{ $t('lab.history.normal') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="testDate"
|
prop="testDate"
|
||||||
label="检验日期"
|
:label="$t('lab.history.testDate')"
|
||||||
width="120"
|
width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="departmentName"
|
prop="departmentName"
|
||||||
label="科室"
|
:label="$t('lab.history.department')"
|
||||||
width="120"
|
width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="reportTime"
|
prop="reportTime"
|
||||||
label="报告时间"
|
:label="$t('lab.history.reportTime')"
|
||||||
width="160"
|
width="160"
|
||||||
/>
|
/>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -230,6 +230,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import {ref, computed, onMounted} from 'vue'
|
import {ref, computed, onMounted} from 'vue'
|
||||||
|
import {useI18n} from 'vue-i18n'
|
||||||
|
const {t} = useI18n()
|
||||||
import {ElMessage} from 'element-plus'
|
import {ElMessage} from 'element-plus'
|
||||||
import {compareResults} from './api'
|
import {compareResults} from './api'
|
||||||
|
|
||||||
@@ -239,13 +241,15 @@ const dateRange = ref(null)
|
|||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const resultData = ref([])
|
const resultData = ref([])
|
||||||
|
|
||||||
const statCards = ref([
|
const statsRaw = ref({ normal: 0, abnormal: 0, highCount: 0 })
|
||||||
{label:'总项目数', value:0, color:'#409eff'},
|
|
||||||
{label:'正常项', value:0, color:'#67c23a'},
|
const statCards = computed(() => [
|
||||||
{label:'异常项', value:0, color:'#f56c6c'},
|
{label: t('lab.history.totalItems'), value: resultData.value.length, color:'#409eff'},
|
||||||
{label:'异常率', value:'0%', color:'#e6a23c'},
|
{label: t('lab.history.normalItems'), value: statsRaw.value.normal, color:'#67c23a'},
|
||||||
{label:'检验次数', value:0, color:'#909399'},
|
{label: t('lab.history.abnormalItems'), value: statsRaw.value.abnormal, color:'#f56c6c'},
|
||||||
{label:'最高异常', value:'-', color:'#409eff'}
|
{label: t('lab.history.abnormalRate'), value: resultData.value.length > 0 ? Math.round(statsRaw.value.abnormal * 100 / resultData.value.length) + '%' : '0%', color:'#e6a23c'},
|
||||||
|
{label: t('lab.history.testCount'), value: new Set(resultData.value.map(r => r.testDate)).size, color:'#909399'},
|
||||||
|
{label: t('lab.history.highestAbnormal'), value: statsRaw.value.highCount > 0 ? t('lab.history.highItems', {n: statsRaw.value.highCount}) : t('lab.history.none'), color:'#409eff'}
|
||||||
])
|
])
|
||||||
|
|
||||||
const abnormalStats = computed(() => {
|
const abnormalStats = computed(() => {
|
||||||
@@ -257,9 +261,9 @@ const abnormalStats = computed(() => {
|
|||||||
})
|
})
|
||||||
const total = resultData.value.length || 1
|
const total = resultData.value.length || 1
|
||||||
return [
|
return [
|
||||||
{category:'偏高(H)', count:high, percent:Math.round(high*100/total), type:'danger', color:'#F56C6C'},
|
{category: t('lab.history.highCategory'), count:high, percent:Math.round(high*100/total), type:'danger', color:'#F56C6C'},
|
||||||
{category:'偏低(L)', count:low, percent:Math.round(low*100/total), type:'warning', color:'#E6A23C'},
|
{category: t('lab.history.lowCategory'), count:low, percent:Math.round(low*100/total), type:'warning', color:'#E6A23C'},
|
||||||
{category:'其他异常', count:other, percent:Math.round(other*100/total), type:'info', color:'#909399'}
|
{category: t('lab.history.otherAbnormal'), count:other, percent:Math.round(other*100/total), type:'info', color:'#909399'}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -277,7 +281,6 @@ async function loadData() {
|
|||||||
try {
|
try {
|
||||||
const r = await compareResults({patientId:patientId.value, testItem:testItem.value})
|
const r = await compareResults({patientId:patientId.value, testItem:testItem.value})
|
||||||
resultData.value = r.data || []
|
resultData.value = r.data || []
|
||||||
// Stats
|
|
||||||
let normal = 0, abnormal = 0, highCount = 0
|
let normal = 0, abnormal = 0, highCount = 0
|
||||||
resultData.value.forEach(row => {
|
resultData.value.forEach(row => {
|
||||||
if (row.abnormalFlag) {
|
if (row.abnormalFlag) {
|
||||||
@@ -285,16 +288,11 @@ async function loadData() {
|
|||||||
if (row.abnormalFlag === 'H' || row.abnormalFlag === '↑') highCount++
|
if (row.abnormalFlag === 'H' || row.abnormalFlag === '↑') highCount++
|
||||||
} else normal++
|
} else normal++
|
||||||
})
|
})
|
||||||
statCards.value[0].value = resultData.value.length
|
statsRaw.value = { normal, abnormal, highCount }
|
||||||
statCards.value[1].value = normal
|
|
||||||
statCards.value[2].value = abnormal
|
|
||||||
statCards.value[3].value = resultData.value.length > 0 ? Math.round(abnormal * 100 / resultData.value.length) + '%' : '0%'
|
|
||||||
statCards.value[4].value = new Set(resultData.value.map(r => r.testDate)).size
|
|
||||||
statCards.value[5].value = highCount > 0 ? highCount + '项偏高' : '无'
|
|
||||||
} finally { loading.value = false }
|
} finally { loading.value = false }
|
||||||
}
|
}
|
||||||
|
|
||||||
function exportReport() { ElMessage.info('导出功能开发中') }
|
function exportReport() { ElMessage.info(t('lab.history.exportInDev')) }
|
||||||
|
|
||||||
onMounted(() => {})
|
onMounted(() => {})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
class="table-header-search"
|
class="table-header-search"
|
||||||
placeholder="单据号"
|
:placeholder="$t('medication.bill.documentNo')"
|
||||||
/>
|
/>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.statusEnum"
|
v-model="queryParams.statusEnum"
|
||||||
class="table-header-search"
|
class="table-header-search"
|
||||||
placeholder="审批状态"
|
:placeholder="$t('medication.bill.approvalStatus')"
|
||||||
clearable
|
clearable
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.typeEnum"
|
v-model="queryParams.typeEnum"
|
||||||
class="table-header-search"
|
class="table-header-search"
|
||||||
placeholder="单据类型"
|
:placeholder="$t('medication.bill.documentType')"
|
||||||
clearable
|
clearable
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.applyTime"
|
v-model="queryParams.applyTime"
|
||||||
placeholder="请选择申请日期"
|
:placeholder="$t('medication.bill.selectApplyDate')"
|
||||||
type="date"
|
type="date"
|
||||||
size="default"
|
size="default"
|
||||||
placement="bottom"
|
placement="bottom"
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
icon="Download"
|
icon="Download"
|
||||||
@click="handleExport"
|
@click="handleExport"
|
||||||
>
|
>
|
||||||
导出
|
{{ $t('medication.bill.export') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
class="table-header-button"
|
class="table-header-button"
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
}
|
}
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
重置
|
{{ $t('medication.bill.reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
class="table-header-button"
|
class="table-header-button"
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="getList"
|
@click="getList"
|
||||||
>
|
>
|
||||||
搜索
|
{{ $t('medication.bill.search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<vxe-table
|
<vxe-table
|
||||||
@@ -84,23 +84,23 @@
|
|||||||
:row-config="{ keyField: 'supplyBusNo' }"
|
:row-config="{ keyField: 'supplyBusNo' }"
|
||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="单据号"
|
:title="$t('medication.bill.documentNo')"
|
||||||
align="center"
|
align="center"
|
||||||
field="supplyBusNo"
|
field="supplyBusNo"
|
||||||
width="160"
|
width="160"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="审批状态"
|
:title="$t('medication.bill.approvalStatus')"
|
||||||
align="center"
|
align="center"
|
||||||
field="statusEnum_enumText"
|
field="statusEnum_enumText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="单据类型"
|
:title="$t('medication.bill.documentType')"
|
||||||
align="center"
|
align="center"
|
||||||
field="typeEnum_enumText"
|
field="typeEnum_enumText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="经手人"
|
:title="$t('medication.bill.handler')"
|
||||||
align="center"
|
align="center"
|
||||||
field="practitionerId_dictText"
|
field="practitionerId_dictText"
|
||||||
>
|
>
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="供应商"
|
:title="$t('medication.bill.supplier')"
|
||||||
align="center"
|
align="center"
|
||||||
field="supplierId_dictText"
|
field="supplierId_dictText"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="目的仓库"
|
:title="$t('medication.bill.targetWarehouse')"
|
||||||
align="center"
|
align="center"
|
||||||
field="purposeLocationId_dictText"
|
field="purposeLocationId_dictText"
|
||||||
>
|
>
|
||||||
@@ -129,17 +129,17 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="总金额"
|
:title="$t('medication.bill.totalAmount')"
|
||||||
align="center"
|
align="center"
|
||||||
field="totalAmount"
|
field="totalAmount"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.totalAmount">{{ scope.row.totalAmount }} 元 </span>
|
<span v-if="scope.row.totalAmount">{{ scope.row.totalAmount }} {{ $t('medication.bill.currencyUnit') }} </span>
|
||||||
<span v-else>{{ '-' }}</span>
|
<span v-else>{{ '-' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="申请人"
|
:title="$t('medication.bill.applicant')"
|
||||||
align="center"
|
align="center"
|
||||||
field="applicantId_dictText"
|
field="applicantId_dictText"
|
||||||
>
|
>
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="申请时间"
|
:title="$t('medication.bill.applyTime')"
|
||||||
align="center"
|
align="center"
|
||||||
field="applyTime"
|
field="applyTime"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="审批人"
|
:title="$t('medication.bill.approver')"
|
||||||
align="center"
|
align="center"
|
||||||
field="approverId_dictText"
|
field="approverId_dictText"
|
||||||
>
|
>
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="审批时间"
|
:title="$t('medication.bill.approvalTime')"
|
||||||
align="center"
|
align="center"
|
||||||
field="approvalTime"
|
field="approvalTime"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -177,7 +177,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('medication.bill.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="200"
|
width="200"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
@@ -189,14 +189,14 @@
|
|||||||
:disabled="scope.row.statusEnum == 3 || scope.row.statusEnum == 4"
|
:disabled="scope.row.statusEnum == 3 || scope.row.statusEnum == 4"
|
||||||
@click="handelApplys(scope.row, 'apply')"
|
@click="handelApplys(scope.row, 'apply')"
|
||||||
>
|
>
|
||||||
审批
|
{{ $t('medication.bill.approve') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
link
|
link
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="handelApplys(scope.row, 'view')"
|
@click="handelApplys(scope.row, 'view')"
|
||||||
>
|
>
|
||||||
查看
|
{{ $t('medication.bill.view') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -235,7 +235,9 @@ import {useStore} from '@/store/store';
|
|||||||
import {formatDate} from '@/utils/index';
|
import {formatDate} from '@/utils/index';
|
||||||
import ChkstockDetailsDialog from '@/views/medicationmanagement/chkstock/components/chkstockDetailsDialog.vue';
|
import ChkstockDetailsDialog from '@/views/medicationmanagement/chkstock/components/chkstockDetailsDialog.vue';
|
||||||
import TransferDetailsDialog from '@/views/medicationmanagement/transferManagent/components/transferDetailsDialog.vue';
|
import TransferDetailsDialog from '@/views/medicationmanagement/transferManagent/components/transferDetailsDialog.vue';
|
||||||
|
import {useI18n} from "vue-i18n";
|
||||||
|
|
||||||
|
const {t} = useI18n();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
@@ -274,108 +276,90 @@ function getList() {
|
|||||||
|
|
||||||
function handelApply(row) {
|
function handelApply(row) {
|
||||||
if (row.typeEnum == 2 || row.typeEnum == 8) {
|
if (row.typeEnum == 2 || row.typeEnum == 8) {
|
||||||
//商品调拨 8 批量
|
|
||||||
productTransferApproved(row.supplyBusNo).then((res) => {
|
productTransferApproved(row.supplyBusNo).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
proxy.$modal.msgSuccess('操作成功');
|
proxy.$modal.msgSuccess(t('medication.bill.operationSuccess'));
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 7) {
|
} else if (row.typeEnum == 7) {
|
||||||
//领用出库审批通过
|
|
||||||
requisitionIssueApproved(row.supplyBusNo).then((res) => {
|
requisitionIssueApproved(row.supplyBusNo).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
proxy.$modal.msgSuccess('操作成功');
|
proxy.$modal.msgSuccess(t('medication.bill.operationSuccess'));
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 9) {
|
} else if (row.typeEnum == 9) {
|
||||||
//领用退库审批通过
|
|
||||||
returnIssueApproved(row.supplyBusNo).then((res) => {
|
returnIssueApproved(row.supplyBusNo).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
proxy.$modal.msgSuccess('操作成功');
|
proxy.$modal.msgSuccess(t('medication.bill.operationSuccess'));
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 4 || row.typeEnum == 10) {
|
} else if (row.typeEnum == 4 || row.typeEnum == 10) {
|
||||||
//盘点审批 批量盘点10通过
|
|
||||||
productStocktakingApproved(row.supplyBusNo).then((res) => {
|
productStocktakingApproved(row.supplyBusNo).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
proxy.$modal.msgSuccess('操作成功');
|
proxy.$modal.msgSuccess(t('medication.bill.operationSuccess'));
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 6) {
|
} else if (row.typeEnum == 6) {
|
||||||
// 报损审批通过
|
|
||||||
lossReportApproved(row.supplyBusNo).then((res) => {
|
lossReportApproved(row.supplyBusNo).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
proxy.$modal.msgSuccess('操作成功');
|
proxy.$modal.msgSuccess(t('medication.bill.operationSuccess'));
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
purchaseInventoryApproved(row.supplyBusNo).then((res) => {
|
purchaseInventoryApproved(row.supplyBusNo).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
proxy.$modal.msgSuccess('操作成功');
|
proxy.$modal.msgSuccess(t('medication.bill.operationSuccess'));
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 审批,查看
|
|
||||||
function handelApplys(row, view) {
|
function handelApplys(row, view) {
|
||||||
if (row.typeEnum == 100086) {
|
if (row.typeEnum == 100086) {
|
||||||
//商品调拨
|
|
||||||
// 跳转到审核页面
|
|
||||||
router.replace({
|
router.replace({
|
||||||
path: '/medicationmanagement/transferManagement/transferManagent',
|
path: '/medicationmanagement/transferManagement/transferManagent',
|
||||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 8 || row.typeEnum == 2) {
|
} else if (row.typeEnum == 8 || row.typeEnum == 2) {
|
||||||
//8 批量
|
|
||||||
isApply.value = true;
|
isApply.value = true;
|
||||||
proxy.$refs['tranDetailsDialogRef'].open(row.supplyBusNo);
|
proxy.$refs['tranDetailsDialogRef'].open(row.supplyBusNo);
|
||||||
} else if (row.typeEnum == 7) {
|
} else if (row.typeEnum == 7) {
|
||||||
//领用出库审批通过
|
|
||||||
router.replace({
|
router.replace({
|
||||||
path: '/medicationmanagement/requisitionManagement/requisitionManagement',
|
path: '/medicationmanagement/requisitionManagement/requisitionManagement',
|
||||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 9) {
|
} else if (row.typeEnum == 9) {
|
||||||
//领用退库审批通过
|
|
||||||
router.replace({
|
router.replace({
|
||||||
path: '/medicationmanagement/requisitionManagement/returningInventory',
|
path: '/medicationmanagement/requisitionManagement/returningInventory',
|
||||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 4) {
|
} else if (row.typeEnum == 4) {
|
||||||
isApply.value = true;
|
isApply.value = true;
|
||||||
//盘点审批
|
|
||||||
proxy.$refs['detailsDialogRef'].open(row.supplyBusNo);
|
proxy.$refs['detailsDialogRef'].open(row.supplyBusNo);
|
||||||
} else if (row.typeEnum == 10) {
|
} else if (row.typeEnum == 10) {
|
||||||
// 批量盘点
|
|
||||||
router.replace({
|
router.replace({
|
||||||
path: '/medicationmanagement/chkstock/chkstockBatch',
|
path: '/medicationmanagement/chkstock/chkstockBatch',
|
||||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 6) {
|
} else if (row.typeEnum == 6) {
|
||||||
// 报损审批通过
|
|
||||||
router.replace({
|
router.replace({
|
||||||
path: '/medicationmanagement/lossReportingManagement/lossReportingManagement',
|
path: '/medicationmanagement/lossReportingManagement/lossReportingManagement',
|
||||||
query: { supplyBusNo: row.supplyBusNo, view: view },
|
query: { supplyBusNo: row.supplyBusNo, view: view },
|
||||||
});
|
});
|
||||||
} else if (row.typeEnum == 5) {
|
} else if (row.typeEnum == 5) {
|
||||||
// 采购退货通过5
|
|
||||||
router.replace({
|
router.replace({
|
||||||
path: '/medicationmanagement/medicationmanagement/returnedPurchase',
|
path: '/medicationmanagement/medicationmanagement/returnedPurchase',
|
||||||
query: { originalSupplyBusNo: row.supplyBusNo, view: view },
|
query: { originalSupplyBusNo: row.supplyBusNo, view: view },
|
||||||
});
|
});
|
||||||
// });
|
|
||||||
} else {
|
} else {
|
||||||
// 采购入库 1
|
|
||||||
getpurchaseInventoryDetail(row.supplyBusNo).then((response) => {
|
getpurchaseInventoryDetail(row.supplyBusNo).then((response) => {
|
||||||
let currentData = response.data;
|
let currentData = response.data;
|
||||||
// 从明细数据中获取仓库ID并设置到row,确保跳转后仓库字段能正确显示
|
|
||||||
if (currentData && currentData.length > 0 && !row.purposeLocationId) {
|
if (currentData && currentData.length > 0 && !row.purposeLocationId) {
|
||||||
row.purposeLocationId = currentData[0].purposeLocationId;
|
row.purposeLocationId = currentData[0].purposeLocationId;
|
||||||
row.purposeLocationId_dictText = currentData[0].purposeLocationName;
|
row.purposeLocationId_dictText = currentData[0].purposeLocationName;
|
||||||
@@ -431,4 +415,4 @@ function optionInit() {
|
|||||||
float: right;
|
float: right;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -7,34 +7,34 @@
|
|||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="90px"
|
label-width="90px"
|
||||||
>
|
>
|
||||||
<el-form-item label="查询日期:">
|
<el-form-item :label="$t('medication.dayEnd.queryDate')">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryTime"
|
v-model="queryTime"
|
||||||
type="daterange"
|
type="daterange"
|
||||||
start-placeholder="开始日期"
|
:start-placeholder="$t('medication.dayEnd.startDate')"
|
||||||
end-placeholder="结束日期"
|
:end-placeholder="$t('medication.dayEnd.endDate')"
|
||||||
style="width: 300px; margin-right: 20px"
|
style="width: 300px; margin-right: 20px"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
@change="handleQuery"
|
@change="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结算类型:">
|
<el-form-item :label="$t('medication.dayEnd.settlementType')">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.settlementType"
|
v-model="queryParams.settlementType"
|
||||||
placeholder="结算类型"
|
:placeholder="$t('medication.dayEnd.settlementType')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 150px; margin-right: 30px"
|
style="width: 150px; margin-right: 30px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
label="日结"
|
:label="$t('medication.dayEnd.daily')"
|
||||||
value="daily"
|
value="daily"
|
||||||
/>
|
/>
|
||||||
<el-option
|
<el-option
|
||||||
label="周结"
|
:label="$t('medication.dayEnd.weekly')"
|
||||||
value="weekly"
|
value="weekly"
|
||||||
/>
|
/>
|
||||||
<el-option
|
<el-option
|
||||||
label="月结"
|
:label="$t('medication.dayEnd.monthly')"
|
||||||
value="monthly"
|
value="monthly"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="handleQuery"
|
@click="handleQuery"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('medication.dayEnd.search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
icon="Printer"
|
icon="Printer"
|
||||||
@click="handlePrint"
|
@click="handlePrint"
|
||||||
>
|
>
|
||||||
打印
|
{{ $t('medication.dayEnd.print') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
icon="Plus"
|
icon="Plus"
|
||||||
@click="handleAdd"
|
@click="handleAdd"
|
||||||
>
|
>
|
||||||
新增
|
{{ $t('medication.dayEnd.add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
:disabled="single"
|
:disabled="single"
|
||||||
@click="handleUpdate"
|
@click="handleUpdate"
|
||||||
>
|
>
|
||||||
修改
|
{{ $t('medication.dayEnd.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleDelete"
|
@click="handleDelete"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('medication.dayEnd.delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
icon="Download"
|
icon="Download"
|
||||||
@click="handleExport"
|
@click="handleExport"
|
||||||
>
|
>
|
||||||
导出
|
{{ $t('medication.dayEnd.export') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
@@ -124,12 +124,12 @@
|
|||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="结算单号"
|
:title="$t('medication.dayEnd.settlementNo')"
|
||||||
align="center"
|
align="center"
|
||||||
field="settlementNo"
|
field="settlementNo"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="结算日期"
|
:title="$t('medication.dayEnd.settlementDate')"
|
||||||
align="center"
|
align="center"
|
||||||
field="settlementDate"
|
field="settlementDate"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -139,12 +139,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="结算类型"
|
:title="$t('medication.dayEnd.settlementTypeCol')"
|
||||||
align="center"
|
align="center"
|
||||||
field="settlementType"
|
field="settlementType"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="结算状态"
|
:title="$t('medication.dayEnd.settlementStatus')"
|
||||||
align="center"
|
align="center"
|
||||||
field="status"
|
field="status"
|
||||||
>
|
>
|
||||||
@@ -156,17 +156,17 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="总金额"
|
:title="$t('medication.dayEnd.totalAmount')"
|
||||||
align="center"
|
align="center"
|
||||||
field="totalAmount"
|
field="totalAmount"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作人"
|
:title="$t('medication.dayEnd.operator')"
|
||||||
align="center"
|
align="center"
|
||||||
field="operator"
|
field="operator"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作时间"
|
:title="$t('medication.dayEnd.operationTime')"
|
||||||
align="center"
|
align="center"
|
||||||
field="createTime"
|
field="createTime"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('medication.dayEnd.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
>
|
>
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
icon="View"
|
icon="View"
|
||||||
@click="handleView(scope.row)"
|
@click="handleView(scope.row)"
|
||||||
>
|
>
|
||||||
查看
|
{{ $t('medication.dayEnd.view') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPermi="['medication:dayEndSettlement:edit']"
|
v-hasPermi="['medication:dayEndSettlement:edit']"
|
||||||
@@ -197,7 +197,7 @@
|
|||||||
icon="Edit"
|
icon="Edit"
|
||||||
@click="handleUpdate(scope.row)"
|
@click="handleUpdate(scope.row)"
|
||||||
>
|
>
|
||||||
修改
|
{{ $t('medication.dayEnd.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPermi="['medication:dayEndSettlement:remove']"
|
v-hasPermi="['medication:dayEndSettlement:remove']"
|
||||||
@@ -206,7 +206,7 @@
|
|||||||
icon="Delete"
|
icon="Delete"
|
||||||
@click="handleDelete(scope.row)"
|
@click="handleDelete(scope.row)"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('medication.dayEnd.delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -235,16 +235,16 @@
|
|||||||
label-width="100px"
|
label-width="100px"
|
||||||
>
|
>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="结算单号"
|
:label="$t('medication.dayEnd.settlementNo')"
|
||||||
prop="settlementNo"
|
prop="settlementNo"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.settlementNo"
|
v-model="form.settlementNo"
|
||||||
placeholder="请输入结算单号"
|
:placeholder="$t('medication.dayEnd.inputSettlementNo')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="结算日期"
|
:label="$t('medication.dayEnd.settlementDate')"
|
||||||
prop="settlementDate"
|
prop="settlementDate"
|
||||||
>
|
>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -252,33 +252,33 @@
|
|||||||
clearable
|
clearable
|
||||||
type="date"
|
type="date"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
placeholder="请选择结算日期"
|
:placeholder="$t('medication.dayEnd.selectSettlementDate')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="结算类型"
|
:label="$t('medication.dayEnd.settlementTypeCol')"
|
||||||
prop="settlementType"
|
prop="settlementType"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="form.settlementType"
|
v-model="form.settlementType"
|
||||||
placeholder="请选择结算类型"
|
:placeholder="$t('medication.dayEnd.selectSettlementType')"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
label="日结"
|
:label="$t('medication.dayEnd.daily')"
|
||||||
value="daily"
|
value="daily"
|
||||||
/>
|
/>
|
||||||
<el-option
|
<el-option
|
||||||
label="周结"
|
:label="$t('medication.dayEnd.weekly')"
|
||||||
value="weekly"
|
value="weekly"
|
||||||
/>
|
/>
|
||||||
<el-option
|
<el-option
|
||||||
label="月结"
|
:label="$t('medication.dayEnd.monthly')"
|
||||||
value="monthly"
|
value="monthly"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="结算状态"
|
:label="$t('medication.dayEnd.settlementStatus')"
|
||||||
prop="status"
|
prop="status"
|
||||||
>
|
>
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.status">
|
||||||
@@ -292,23 +292,23 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="总金额"
|
:label="$t('medication.dayEnd.totalAmount')"
|
||||||
prop="totalAmount"
|
prop="totalAmount"
|
||||||
>
|
>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.totalAmount"
|
v-model="form.totalAmount"
|
||||||
placeholder="请输入总金额"
|
:placeholder="$t('medication.dayEnd.inputTotalAmount')"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="备注"
|
:label="$t('medication.dayEnd.remark')"
|
||||||
prop="remark"
|
prop="remark"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.remark"
|
v-model="form.remark"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
placeholder="请输入内容"
|
:placeholder="$t('medication.dayEnd.inputContent')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -318,10 +318,10 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="submitForm"
|
@click="submitForm"
|
||||||
>
|
>
|
||||||
确 定
|
{{ $t('medication.dayEnd.confirm') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button @click="cancel">
|
<el-button @click="cancel">
|
||||||
取 消
|
{{ $t('medication.dayEnd.cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -331,7 +331,9 @@
|
|||||||
|
|
||||||
<script setup name="DayEndSettlement">
|
<script setup name="DayEndSettlement">
|
||||||
import { listDayEndSettlement, getDayEndSettlement, delDayEndSettlement, addDayEndSettlement, updateDayEndSettlement } from "@/api/medicationmanagement/dayEndSettlement";
|
import { listDayEndSettlement, getDayEndSettlement, delDayEndSettlement, addDayEndSettlement, updateDayEndSettlement } from "@/api/medicationmanagement/dayEndSettlement";
|
||||||
|
import {useI18n} from "vue-i18n";
|
||||||
|
|
||||||
|
const {t} = useI18n();
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
@@ -357,20 +359,20 @@ const queryParams = ref({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const form = ref({});
|
const form = ref({});
|
||||||
const rules = ref({
|
const rules = computed(() => ({
|
||||||
settlementNo: [
|
settlementNo: [
|
||||||
{ required: true, message: "结算单号不能为空", trigger: "blur" }
|
{ required: true, message: t('medication.dayEnd.settlementNoRequired'), trigger: "blur" }
|
||||||
],
|
],
|
||||||
settlementDate: [
|
settlementDate: [
|
||||||
{ required: true, message: "结算日期不能为空", trigger: "blur" }
|
{ required: true, message: t('medication.dayEnd.settlementDateRequired'), trigger: "blur" }
|
||||||
],
|
],
|
||||||
settlementType: [
|
settlementType: [
|
||||||
{ required: true, message: "结算类型不能为空", trigger: "change" }
|
{ required: true, message: t('medication.dayEnd.settlementTypeRequired'), trigger: "change" }
|
||||||
],
|
],
|
||||||
totalAmount: [
|
totalAmount: [
|
||||||
{ required: true, message: "总金额不能为空", trigger: "blur" }
|
{ required: true, message: t('medication.dayEnd.totalAmountRequired'), trigger: "blur" }
|
||||||
]
|
]
|
||||||
});
|
}));
|
||||||
|
|
||||||
const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
|
const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
|
||||||
|
|
||||||
@@ -382,7 +384,7 @@ const getList = async () => {
|
|||||||
dayEndSettlementList.value = response.rows;
|
dayEndSettlementList.value = response.rows;
|
||||||
total.value = response.total;
|
total.value = response.total;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取日结结算单列表失败:', error);
|
console.error(t('medication.dayEnd.getListFailed'), error);
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
@@ -432,7 +434,7 @@ const handleSelectionChange = (selection) => {
|
|||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
reset();
|
reset();
|
||||||
open.value = true;
|
open.value = true;
|
||||||
title.value = "添加日结结算单";
|
title.value = t('medication.dayEnd.addTitle');
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
@@ -442,7 +444,7 @@ const handleUpdate = (row) => {
|
|||||||
getDayEndSettlement(settlementId).then(response => {
|
getDayEndSettlement(settlementId).then(response => {
|
||||||
form.value = response.data;
|
form.value = response.data;
|
||||||
open.value = true;
|
open.value = true;
|
||||||
title.value = "修改日结结算单";
|
title.value = t('medication.dayEnd.editTitle');
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -452,13 +454,13 @@ const submitForm = () => {
|
|||||||
if (valid) {
|
if (valid) {
|
||||||
if (form.value.id != null) {
|
if (form.value.id != null) {
|
||||||
updateDayEndSettlement(form.value).then(response => {
|
updateDayEndSettlement(form.value).then(response => {
|
||||||
proxy.$modal.msgSuccess("修改成功");
|
proxy.$modal.msgSuccess(t('medication.dayEnd.editSuccess'));
|
||||||
open.value = false;
|
open.value = false;
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
addDayEndSettlement(form.value).then(response => {
|
addDayEndSettlement(form.value).then(response => {
|
||||||
proxy.$modal.msgSuccess("新增成功");
|
proxy.$modal.msgSuccess(t('medication.dayEnd.addSuccess'));
|
||||||
open.value = false;
|
open.value = false;
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
@@ -470,11 +472,11 @@ const submitForm = () => {
|
|||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = (row) => {
|
const handleDelete = (row) => {
|
||||||
const settlementIds = row.id || ids.value;
|
const settlementIds = row.id || ids.value;
|
||||||
proxy.$modal.confirm('是否确认删除日结结算单编号为"' + settlementIds + '"的数据项?').then(function() {
|
proxy.$modal.confirm(t('medication.dayEnd.confirmDelete', { id: settlementIds })).then(function() {
|
||||||
return delDayEndSettlement(settlementIds);
|
return delDayEndSettlement(settlementIds);
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
getList();
|
getList();
|
||||||
proxy.$modal.msgSuccess("删除成功");
|
proxy.$modal.msgSuccess(t('medication.dayEnd.deleteSuccess'));
|
||||||
}).catch(() => {});
|
}).catch(() => {});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -488,15 +490,15 @@ const handleExport = () => {
|
|||||||
/** 打印按钮操作 */
|
/** 打印按钮操作 */
|
||||||
const handlePrint = () => {
|
const handlePrint = () => {
|
||||||
// TODO: 实现打印功能
|
// TODO: 实现打印功能
|
||||||
proxy.$modal.msgSuccess("打印功能待实现");
|
proxy.$modal.msgSuccess(t('medication.dayEnd.printNotImplemented'));
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 查看按钮操作 */
|
/** 查看按钮操作 */
|
||||||
const handleView = (row) => {
|
const handleView = (row) => {
|
||||||
// TODO: 实现查看功能
|
// TODO: 实现查看功能
|
||||||
proxy.$modal.msgSuccess("查看功能待实现");
|
proxy.$modal.msgSuccess(t('medication.dayEnd.viewNotImplemented'));
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 初始化数据 */
|
/** 初始化数据 */
|
||||||
getList();
|
getList();
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<el-select
|
<el-select
|
||||||
v-model="searchParams.locationId"
|
v-model="searchParams.locationId"
|
||||||
class="table-header-search"
|
class="table-header-search"
|
||||||
placeholder="请选择库房"
|
:placeholder="$t('medication.pharmacy.selectWarehouse')"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in locationOptions"
|
v-for="item in locationOptions"
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="searchParams.startTime"
|
v-model="searchParams.startTime"
|
||||||
type="date"
|
type="date"
|
||||||
placeholder="选择开始时间"
|
:placeholder="$t('medication.pharmacy.selectStartTime')"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
style="margin-right: 15px"
|
style="margin-right: 15px"
|
||||||
/>
|
/>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
v-model="searchParams.endTime"
|
v-model="searchParams.endTime"
|
||||||
class="table-header-search"
|
class="table-header-search"
|
||||||
type="date"
|
type="date"
|
||||||
placeholder="选择结束时间"
|
:placeholder="$t('medication.pharmacy.selectEndTime')"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
/>
|
/>
|
||||||
<el-button
|
<el-button
|
||||||
@@ -34,13 +34,13 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="handleSearch"
|
@click="handleSearch"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('medication.pharmacy.search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
class="table-header-button"
|
class="table-header-button"
|
||||||
@click="resetForm"
|
@click="resetForm"
|
||||||
>
|
>
|
||||||
重置
|
{{ $t('medication.pharmacy.reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -54,19 +54,19 @@
|
|||||||
>
|
>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="locationId_dictText"
|
field="locationId_dictText"
|
||||||
title="库房"
|
:title="$t('medication.pharmacy.warehouse')"
|
||||||
min-width="150"
|
min-width="150"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="initialAmount"
|
field="initialAmount"
|
||||||
title="期初金额"
|
:title="$t('medication.pharmacy.initialAmount')"
|
||||||
min-width="160"
|
min-width="160"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="finalAmount"
|
field="finalAmount"
|
||||||
title="期末金额"
|
:title="$t('medication.pharmacy.finalAmount')"
|
||||||
min-width="160"
|
min-width="160"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -81,19 +81,19 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="expectFinalAmount"
|
field="expectFinalAmount"
|
||||||
title="预期期末金额"
|
:title="$t('medication.pharmacy.expectedFinalAmount')"
|
||||||
min-width="160"
|
min-width="160"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="offsetAmount"
|
field="offsetAmount"
|
||||||
title="偏移量"
|
:title="$t('medication.pharmacy.offsetAmount')"
|
||||||
min-width="100"
|
min-width="100"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="purchaseInAmount"
|
field="purchaseInAmount"
|
||||||
title="采购入库金额"
|
:title="$t('medication.pharmacy.purchaseInAmount')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -108,13 +108,13 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="purchaseInNumber"
|
field="purchaseInNumber"
|
||||||
title="采购入库单据数"
|
:title="$t('medication.pharmacy.purchaseInDocs')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="purchaseReturnAmount"
|
field="purchaseReturnAmount"
|
||||||
title="采购出库金额"
|
:title="$t('medication.pharmacy.purchaseOutAmount')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -129,13 +129,13 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="purchaseReturnNumber"
|
field="purchaseReturnNumber"
|
||||||
title="采购出库单据数"
|
:title="$t('medication.pharmacy.purchaseOutDocs')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="applyOutAmount"
|
field="applyOutAmount"
|
||||||
title="领用出库金额"
|
:title="$t('medication.pharmacy.requisitionOutAmount')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -150,13 +150,13 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="applyOutNumber"
|
field="applyOutNumber"
|
||||||
title="领用出库单据数"
|
:title="$t('medication.pharmacy.requisitionOutDocs')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="applyReturnAmount"
|
field="applyReturnAmount"
|
||||||
title="领用退货金额"
|
:title="$t('medication.pharmacy.requisitionReturnAmount')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -171,13 +171,13 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="applyReturnNumber"
|
field="applyReturnNumber"
|
||||||
title="领用退货单据数"
|
:title="$t('medication.pharmacy.requisitionReturnDocs')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="transferInAmount"
|
field="transferInAmount"
|
||||||
title="调拨入库金额"
|
:title="$t('medication.pharmacy.transferInAmount')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -192,13 +192,13 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="transferInNumber"
|
field="transferInNumber"
|
||||||
title="调拨入库单据数"
|
:title="$t('medication.pharmacy.transferInDocs')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="transferOutAmount"
|
field="transferOutAmount"
|
||||||
title="调拨出库金额"
|
:title="$t('medication.pharmacy.transferOutAmount')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -213,13 +213,13 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="transferOutNumber"
|
field="transferOutNumber"
|
||||||
title="调拨出库单据数"
|
:title="$t('medication.pharmacy.transferOutDocs')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="checkProfitLossAmount"
|
field="checkProfitLossAmount"
|
||||||
title="盘点盈亏金额"
|
:title="$t('medication.pharmacy.stocktakeAmount')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -234,13 +234,13 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="checkProfitLossNumber"
|
field="checkProfitLossNumber"
|
||||||
title="盘点盈亏单据数"
|
:title="$t('medication.pharmacy.stocktakeDocs')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="lossAmount"
|
field="lossAmount"
|
||||||
title="报损金额"
|
:title="$t('medication.pharmacy.lossAmount')"
|
||||||
min-width="100"
|
min-width="100"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -255,13 +255,13 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="lossNumber"
|
field="lossNumber"
|
||||||
title="报损单据数"
|
:title="$t('medication.pharmacy.lossDocs')"
|
||||||
min-width="100"
|
min-width="100"
|
||||||
align="right"
|
align="right"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="drugIssueAmount"
|
field="drugIssueAmount"
|
||||||
title="药品发放金额"
|
:title="$t('medication.pharmacy.drugIssueAmount')"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
@@ -282,40 +282,29 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import {onMounted, reactive, ref} from 'vue';
|
import {onMounted, reactive, ref} from 'vue';
|
||||||
import {ElMessage} from 'element-plus';
|
import {ElMessage} from 'element-plus';
|
||||||
// 导入路由钩子
|
|
||||||
import {useRouter} from 'vue-router';
|
import {useRouter} from 'vue-router';
|
||||||
// 假设API模块存在,实际项目中需要根据实际情况导入
|
|
||||||
import {getList, getPharmacyList} from './components/api.js';
|
import {getList, getPharmacyList} from './components/api.js';
|
||||||
|
import {useI18n} from "vue-i18n";
|
||||||
|
|
||||||
// 创建路由实例
|
const {t} = useI18n();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
// 搜索参数
|
|
||||||
const searchParams = reactive({
|
const searchParams = reactive({
|
||||||
locationId: '',
|
locationId: '',
|
||||||
startTime: '',
|
startTime: '',
|
||||||
endTime: ''
|
endTime: ''
|
||||||
});
|
});
|
||||||
|
|
||||||
// 搜索表单引用
|
|
||||||
const searchFormRef = ref(null);
|
const searchFormRef = ref(null);
|
||||||
|
|
||||||
// 库房选项
|
|
||||||
const locationOptions = ref([]);
|
const locationOptions = ref([]);
|
||||||
|
|
||||||
// 对账数据
|
|
||||||
const reconciliationData = ref([]);
|
const reconciliationData = ref([]);
|
||||||
|
|
||||||
// 加载状态
|
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
|
|
||||||
// 格式化金额
|
|
||||||
const formatMoney = (value) => {
|
const formatMoney = (value) => {
|
||||||
if (value === null || value === undefined) return '0.00';
|
if (value === null || value === undefined) return '0.00';
|
||||||
return Number(value).toFixed(2);
|
return Number(value).toFixed(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 格式化日期为YYYY-MM-DD
|
|
||||||
const formatDate = (date) => {
|
const formatDate = (date) => {
|
||||||
const year = date.getFullYear();
|
const year = date.getFullYear();
|
||||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||||
@@ -323,23 +312,18 @@ const formatDate = (date) => {
|
|||||||
return `${year}-${month}-${day}`;
|
return `${year}-${month}-${day}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 设置默认日期范围(今日之前一个月)
|
|
||||||
const setDefaultDateRange = () => {
|
const setDefaultDateRange = () => {
|
||||||
const today = new Date();
|
const today = new Date();
|
||||||
// 结束时间为昨天
|
|
||||||
const endDate = new Date(today);
|
const endDate = new Date(today);
|
||||||
endDate.setDate(today.getDate() - 1);
|
endDate.setDate(today.getDate() - 1);
|
||||||
|
|
||||||
// 开始时间为一个月前的今天
|
|
||||||
const startDate = new Date(today);
|
const startDate = new Date(today);
|
||||||
startDate.setMonth(today.getMonth() - 1);
|
startDate.setMonth(today.getMonth() - 1);
|
||||||
|
|
||||||
// 处理月份溢出(如1月减1个月变为12月)
|
|
||||||
if (startDate.getMonth() === 11 && today.getMonth() === 0) {
|
if (startDate.getMonth() === 11 && today.getMonth() === 0) {
|
||||||
startDate.setFullYear(today.getFullYear() - 1);
|
startDate.setFullYear(today.getFullYear() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 确保日期有效性(处理不同月份天数差异)
|
|
||||||
const lastDayOfMonth = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0).getDate();
|
const lastDayOfMonth = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0).getDate();
|
||||||
if (startDate.getDate() > lastDayOfMonth) {
|
if (startDate.getDate() > lastDayOfMonth) {
|
||||||
startDate.setDate(lastDayOfMonth);
|
startDate.setDate(lastDayOfMonth);
|
||||||
@@ -349,26 +333,21 @@ const setDefaultDateRange = () => {
|
|||||||
searchParams.endTime = formatDate(endDate);
|
searchParams.endTime = formatDate(endDate);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 查询数据
|
|
||||||
const handleSearch = async () => {
|
const handleSearch = async () => {
|
||||||
try {
|
try {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
// 构建查询参数并拼接时间
|
|
||||||
const params = {
|
const params = {
|
||||||
locationId: searchParams.locationId
|
locationId: searchParams.locationId
|
||||||
};
|
};
|
||||||
|
|
||||||
// 处理开始时间,拼接 00:00:00
|
|
||||||
if (searchParams.startTime) {
|
if (searchParams.startTime) {
|
||||||
params.startTime = searchParams.startTime + ' 00:00:00';
|
params.startTime = searchParams.startTime + ' 00:00:00';
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理结束时间,拼接 00:00:00
|
|
||||||
if (searchParams.endTime) {
|
if (searchParams.endTime) {
|
||||||
params.endTime = searchParams.endTime + ' 00:00:00';
|
params.endTime = searchParams.endTime + ' 00:00:00';
|
||||||
}
|
}
|
||||||
|
|
||||||
// 调用API获取数据,实际项目中替换为真实API调用
|
|
||||||
const response = await getList(params);
|
const response = await getList(params);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
console.log('查询结果:', response)
|
console.log('查询结果:', response)
|
||||||
@@ -376,81 +355,72 @@ const handleSearch = async () => {
|
|||||||
reconciliationData.value.push(response.data.data)
|
reconciliationData.value.push(response.data.data)
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
ElMessage.error('获取对账数据失败: ' + (error.message || '未知错误'));
|
ElMessage.error(t('medication.pharmacy.getReconciliationFailed') + ': ' + (error.message || t('medication.pharmacy.unknownError')));
|
||||||
console.error('Failed to get reconciliation data:', error);
|
console.error('Failed to get reconciliation data:', error);
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 重置表单
|
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
searchFormRef.value?.resetFields();
|
searchFormRef.value?.resetFields();
|
||||||
// 重置后重新设置默认日期范围
|
|
||||||
setDefaultDateRange();
|
setDefaultDateRange();
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取库房列表
|
|
||||||
const getLocationList = async () => {
|
const getLocationList = async () => {
|
||||||
try {
|
try {
|
||||||
// 调用API获取库房数据,实际项目中替换为真实API调用
|
|
||||||
const response = await getPharmacyList();
|
const response = await getPharmacyList();
|
||||||
locationOptions.value = response.data.locationListOptions || [];
|
locationOptions.value = response.data.locationListOptions || [];
|
||||||
|
|
||||||
// 默认选择第一个库房
|
|
||||||
if (locationOptions.value.length > 0) {
|
if (locationOptions.value.length > 0) {
|
||||||
searchParams.locationId = locationOptions.value[0].value;
|
searchParams.locationId = locationOptions.value[0].value;
|
||||||
}
|
}
|
||||||
handleSearch()
|
handleSearch()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
ElMessage.error('获取库房数据失败: ' + (error.message || '未知错误'));
|
ElMessage.error(t('medication.pharmacy.getWarehouseFailed') + ': ' + (error.message || t('medication.pharmacy.unknownError')));
|
||||||
console.error('Failed to get location list:', error);
|
console.error('Failed to get location list:', error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 跳转到对应页面的函数
|
|
||||||
const skipToPage = (records, index) => {
|
const skipToPage = (records, index) => {
|
||||||
// 获取当前选中的库房ID和日期范围
|
|
||||||
const { startTime, endTime } = searchParams;
|
const { startTime, endTime } = searchParams;
|
||||||
console.log(records.row)
|
console.log(records.row)
|
||||||
const { locationId } = records.row;
|
const { locationId } = records.row;
|
||||||
// 根据index跳转到不同页面
|
|
||||||
let path = '';
|
let path = '';
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 1:
|
case 1:
|
||||||
path = '/aa/4/chkstockPartDetails'; // 库存
|
path = '/aa/4/chkstockPartDetails';
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
path = '/aa/4/purchaseDocumentDetsils'; // 采购入库页
|
path = '/aa/4/purchaseDocumentDetsils';
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
path = '/aa/4/purchaseReturnDetsils'; // 采购退货页
|
path = '/aa/4/purchaseReturnDetsils';
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
path = '/aa/4/requisitionDetails'; // 领用出库页
|
path = '/aa/4/requisitionDetails';
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
path = '/aa/4/returnOrutboundDetails'; // 领用退库页
|
path = '/aa/4/returnOrutboundDetails';
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
case 10:
|
case 10:
|
||||||
path = '/aa/4/transferManagentDetails'; // 调拨页
|
path = '/aa/4/transferManagentDetails';
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
path = '/aa/4/chkstockPartDetails'; // 盘点页
|
path = '/aa/4/chkstockPartDetails';
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
path = '/aa/4/lossReportingDetails'; // 报损页
|
path = '/aa/4/lossReportingDetails';
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
path = '/aa/3/medicationDetails'; // 药品发放
|
path = '/aa/3/medicationDetails';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ElMessage.warning('无效的页面索引');
|
ElMessage.warning(t('medication.pharmacy.invalidPageIndex'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 跳转到对应页面并传递参数
|
|
||||||
if(index === 10) {
|
if(index === 10) {
|
||||||
router.push({
|
router.push({
|
||||||
path: path,
|
path: path,
|
||||||
@@ -483,9 +453,7 @@ const skipToPage = (records, index) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 组件初始化
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// 设置默认日期范围
|
|
||||||
setDefaultDateRange();
|
setDefaultDateRange();
|
||||||
getLocationList();
|
getLocationList();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,19 +8,19 @@
|
|||||||
label-width="90px"
|
label-width="90px"
|
||||||
>
|
>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="单据号:"
|
:label="$t('medication.purchase.documentNo')"
|
||||||
prop="busNo"
|
prop="busNo"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.searchKey"
|
v-model="queryParams.searchKey"
|
||||||
placeholder="单据号:"
|
:placeholder="$t('medication.purchase.documentNo')"
|
||||||
clearable
|
clearable
|
||||||
style="width: 220px"
|
style="width: 220px"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="审批状态:"
|
:label="$t('medication.purchase.approvalStatus')"
|
||||||
prop="statusEnum"
|
prop="statusEnum"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="单据类型:"
|
:label="$t('medication.purchase.documentType')"
|
||||||
prop="typeEnum"
|
prop="typeEnum"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="供应商:"
|
:label="$t('medication.purchase.supplier')"
|
||||||
prop="supplierId"
|
prop="supplierId"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="经手人:"
|
:label="$t('medication.purchase.handler')"
|
||||||
prop="practitionerId"
|
prop="practitionerId"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
@@ -96,14 +96,14 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="查询时间:">
|
<el-form-item :label="$t('medication.purchase.queryTime')">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="dateRange"
|
v-model="dateRange"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
type="daterange"
|
type="daterange"
|
||||||
range-separator="-"
|
range-separator="-"
|
||||||
start-placeholder="开始日期"
|
:start-placeholder="$t('medication.purchase.startDate')"
|
||||||
end-placeholder="结束日期"
|
:end-placeholder="$t('medication.purchase.endDate')"
|
||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
icon="Plus"
|
icon="Plus"
|
||||||
@click="openAddInventoryReceiptDialog"
|
@click="openAddInventoryReceiptDialog"
|
||||||
>
|
>
|
||||||
采购入库
|
{{ $t('medication.purchase.purchaseInbound') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleDelete"
|
@click="handleDelete"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('medication.purchase.delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
icon="Search"
|
icon="Search"
|
||||||
@click="handleQuery"
|
@click="handleQuery"
|
||||||
>
|
>
|
||||||
查询
|
{{ $t('medication.purchase.search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- v-hasPermi="['system:user:export']" -->
|
<!-- v-hasPermi="['system:user:export']" -->
|
||||||
@@ -155,7 +155,7 @@
|
|||||||
icon="CircleClose"
|
icon="CircleClose"
|
||||||
@click="handleClear"
|
@click="handleClear"
|
||||||
>
|
>
|
||||||
重置
|
{{ $t('medication.purchase.reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -173,58 +173,58 @@
|
|||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="supplyBusNo"
|
key="supplyBusNo"
|
||||||
title="单据号"
|
:title="$t('medication.purchase.documentNo')"
|
||||||
align="center"
|
align="center"
|
||||||
field="supplyBusNo"
|
field="supplyBusNo"
|
||||||
width="200"
|
width="200"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="returnStatus_text"
|
key="returnStatus_text"
|
||||||
title="退库状态"
|
:title="$t('medication.purchase.returnStatus')"
|
||||||
align="center"
|
align="center"
|
||||||
field="returnStatus_text"
|
field="returnStatus_text"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="statusEnum_enumText"
|
key="statusEnum_enumText"
|
||||||
title="审批状态"
|
:title="$t('medication.purchase.approvalStatus')"
|
||||||
align="center"
|
align="center"
|
||||||
field="statusEnum_enumText"
|
field="statusEnum_enumText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="typeEnum_enumText"
|
key="typeEnum_enumText"
|
||||||
title="单据类型"
|
:title="$t('medication.purchase.documentType')"
|
||||||
align="center"
|
align="center"
|
||||||
field="typeEnum_enumText"
|
field="typeEnum_enumText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="supplierId_dictText"
|
key="supplierId_dictText"
|
||||||
title="供应商"
|
:title="$t('medication.purchase.supplier')"
|
||||||
align="center"
|
align="center"
|
||||||
field="supplierId_dictText"
|
field="supplierId_dictText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="practitionerId_dictText"
|
key="practitionerId_dictText"
|
||||||
title="经手人"
|
:title="$t('medication.purchase.handler')"
|
||||||
align="center"
|
align="center"
|
||||||
field="practitionerId_dictText"
|
field="practitionerId_dictText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="applicantId_dictText"
|
key="applicantId_dictText"
|
||||||
title="制单人"
|
:title="$t('medication.purchase.creator')"
|
||||||
align="center"
|
align="center"
|
||||||
field="applicantId_dictText"
|
field="applicantId_dictText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="approverId_dictText"
|
key="approverId_dictText"
|
||||||
title="审核人"
|
:title="$t('medication.purchase.approver')"
|
||||||
align="center"
|
align="center"
|
||||||
field="approverId_dictText"
|
field="approverId_dictText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="createTime"
|
key="createTime"
|
||||||
title="制单日期"
|
:title="$t('medication.purchase.createTime')"
|
||||||
align="center"
|
align="center"
|
||||||
field="createTime"
|
field="createTime"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -235,7 +235,7 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="approvalTime"
|
key="approvalTime"
|
||||||
title="审核日期 "
|
:title="$t('medication.purchase.approvalTime')"
|
||||||
align="center"
|
align="center"
|
||||||
field="approvalTime"
|
field="approvalTime"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -245,7 +245,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('medication.purchase.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="230"
|
width="230"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
@@ -258,7 +258,7 @@
|
|||||||
icon="View"
|
icon="View"
|
||||||
@click.stop="handleUpdate(scope.row, 'view')"
|
@click.stop="handleUpdate(scope.row, 'view')"
|
||||||
>
|
>
|
||||||
详情
|
{{ $t('medication.purchase.detail') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
link
|
link
|
||||||
@@ -271,7 +271,7 @@
|
|||||||
"
|
"
|
||||||
@click.stop="handleUpdate(scope.row)"
|
@click.stop="handleUpdate(scope.row)"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('medication.purchase.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- v-hasPermi="['system:user:edit']" -->
|
<!-- v-hasPermi="['system:user:edit']" -->
|
||||||
<el-button
|
<el-button
|
||||||
@@ -281,7 +281,7 @@
|
|||||||
icon="Edit"
|
icon="Edit"
|
||||||
@click.stop="handleUpdateTK(scope.row)"
|
@click.stop="handleUpdateTK(scope.row)"
|
||||||
>
|
>
|
||||||
退库
|
{{ $t('medication.purchase.returnGoods') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- v-hasPermi="['system:user:remove']" -->
|
<!-- v-hasPermi="['system:user:remove']" -->
|
||||||
<el-button
|
<el-button
|
||||||
@@ -291,7 +291,7 @@
|
|||||||
icon="View"
|
icon="View"
|
||||||
@click.stop="handleSubmitApproval(scope.row)"
|
@click.stop="handleSubmitApproval(scope.row)"
|
||||||
>
|
>
|
||||||
提交审批
|
{{ $t('medication.purchase.submitApproval') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- v-hasPermi="['system:user:remove']" -->
|
<!-- v-hasPermi="['system:user:remove']" -->
|
||||||
<el-button
|
<el-button
|
||||||
@@ -301,7 +301,7 @@
|
|||||||
icon="View"
|
icon="View"
|
||||||
@click.stop="handleWithdrawApproval(scope.row)"
|
@click.stop="handleWithdrawApproval(scope.row)"
|
||||||
>
|
>
|
||||||
撤销审批
|
{{ $t('medication.purchase.withdrawApproval') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -328,52 +328,52 @@
|
|||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="supplyBusNo"
|
key="supplyBusNo"
|
||||||
title="单据号"
|
:title="$t('medication.purchase.documentNo')"
|
||||||
align="center"
|
align="center"
|
||||||
field="supplyBusNo"
|
field="supplyBusNo"
|
||||||
width="200"
|
width="200"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="statusEnum_enumText"
|
key="statusEnum_enumText"
|
||||||
title="审批状态"
|
:title="$t('medication.purchase.approvalStatus')"
|
||||||
align="center"
|
align="center"
|
||||||
field="statusEnum_enumText"
|
field="statusEnum_enumText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="typeEnum_enumText"
|
key="typeEnum_enumText"
|
||||||
title="单据类型"
|
:title="$t('medication.purchase.documentType')"
|
||||||
align="center"
|
align="center"
|
||||||
field="typeEnum_enumText"
|
field="typeEnum_enumText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="supplierId_dictText"
|
key="supplierId_dictText"
|
||||||
title="供应商"
|
:title="$t('medication.purchase.supplier')"
|
||||||
align="center"
|
align="center"
|
||||||
field="supplierId_dictText"
|
field="supplierId_dictText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="practitionerId_dictText"
|
key="practitionerId_dictText"
|
||||||
title="经手人"
|
:title="$t('medication.purchase.handler')"
|
||||||
align="center"
|
align="center"
|
||||||
field="practitionerId_dictText"
|
field="practitionerId_dictText"
|
||||||
show-overflow="title"
|
show-overflow="title"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="applicantId_dictText"
|
key="applicantId_dictText"
|
||||||
title="制单人"
|
:title="$t('medication.purchase.creator')"
|
||||||
align="center"
|
align="center"
|
||||||
field="applicantId_dictText"
|
field="applicantId_dictText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="approverId_dictText"
|
key="approverId_dictText"
|
||||||
title="审核人"
|
:title="$t('medication.purchase.approver')"
|
||||||
align="center"
|
align="center"
|
||||||
field="approverId_dictText"
|
field="approverId_dictText"
|
||||||
/>
|
/>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="createTime"
|
key="createTime"
|
||||||
title="制单日期"
|
:title="$t('medication.purchase.createTime')"
|
||||||
align="center"
|
align="center"
|
||||||
field="createTime"
|
field="createTime"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -384,7 +384,7 @@
|
|||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
key="approvalTime"
|
key="approvalTime"
|
||||||
title="审核日期 "
|
:title="$t('medication.purchase.approvalTime')"
|
||||||
align="center"
|
align="center"
|
||||||
field="approvalTime"
|
field="approvalTime"
|
||||||
width="180"
|
width="180"
|
||||||
@@ -394,7 +394,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
title="操作"
|
:title="$t('medication.purchase.operation')"
|
||||||
align="center"
|
align="center"
|
||||||
width="230"
|
width="230"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
@@ -407,7 +407,7 @@
|
|||||||
icon="View"
|
icon="View"
|
||||||
@click.stop="handleUpdateReturn(scope.row, 'view')"
|
@click.stop="handleUpdateReturn(scope.row, 'view')"
|
||||||
>
|
>
|
||||||
详情
|
{{ $t('medication.purchase.detail') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
link
|
link
|
||||||
@@ -420,7 +420,7 @@
|
|||||||
"
|
"
|
||||||
@click.stop="handleUpdateReturn(scope.row)"
|
@click.stop="handleUpdateReturn(scope.row)"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('medication.purchase.edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- v-hasPermi="['system:user:remove']" -->
|
<!-- v-hasPermi="['system:user:remove']" -->
|
||||||
<el-button
|
<el-button
|
||||||
@@ -430,7 +430,7 @@
|
|||||||
icon="View"
|
icon="View"
|
||||||
@click.stop="handleSubmitApprovalReturn(scope.row)"
|
@click.stop="handleSubmitApprovalReturn(scope.row)"
|
||||||
>
|
>
|
||||||
提交审批
|
{{ $t('medication.purchase.submitApproval') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- v-hasPermi="['system:user:remove']" -->
|
<!-- v-hasPermi="['system:user:remove']" -->
|
||||||
<el-button
|
<el-button
|
||||||
@@ -440,7 +440,7 @@
|
|||||||
icon="View"
|
icon="View"
|
||||||
@click.stop="handleWithdrawApprovalReturn(scope.row)"
|
@click.stop="handleWithdrawApprovalReturn(scope.row)"
|
||||||
>
|
>
|
||||||
撤销审批
|
{{ $t('medication.purchase.withdrawApproval') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -473,7 +473,9 @@ import {
|
|||||||
import {useStore} from '@/store/store';
|
import {useStore} from '@/store/store';
|
||||||
import inventoryReceiptDialog from './components/inventoryReceiptDialog';
|
import inventoryReceiptDialog from './components/inventoryReceiptDialog';
|
||||||
import {ref} from 'vue';
|
import {ref} from 'vue';
|
||||||
|
import {useI18n} from "vue-i18n";
|
||||||
|
|
||||||
|
const {t} = useI18n();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
@@ -544,7 +546,7 @@ function getList() {
|
|||||||
loading.value = false;
|
loading.value = false;
|
||||||
purchaseinventoryList.value = res.data.records;
|
purchaseinventoryList.value = res.data.records;
|
||||||
purchaseinventoryList.value.map((k) => {
|
purchaseinventoryList.value.map((k) => {
|
||||||
k.returnStatus_text = k.returnStatus == 1 ? '已退库' : '';
|
k.returnStatus_text = k.returnStatus == 1 ? t('medication.purchase.returned') : '';
|
||||||
});
|
});
|
||||||
total.value = res.data.total;
|
total.value = res.data.total;
|
||||||
});
|
});
|
||||||
@@ -576,29 +578,13 @@ function openAddInventoryReceiptDialog() {
|
|||||||
router.push({
|
router.push({
|
||||||
path: 'purchaseDocument',
|
path: 'purchaseDocument',
|
||||||
});
|
});
|
||||||
// getPurchaseinventoryTypeList();
|
|
||||||
// nextTick(() => {
|
|
||||||
// proxy.$refs["inventoryReceiptRef"].show();
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
function handleUpdateTK(row) {
|
function handleUpdateTK(row) {
|
||||||
// store.clearCurrentReturnData();
|
|
||||||
editRow.value = row;
|
editRow.value = row;
|
||||||
router.push({
|
router.push({
|
||||||
path: 'returnedPurchase',
|
path: 'returnedPurchase',
|
||||||
query: { originalSupplyBusNo: editRow.value.supplyBusNo },
|
query: { originalSupplyBusNo: editRow.value.supplyBusNo },
|
||||||
});
|
});
|
||||||
// getpurchaseInventoryDetail(row.supplyBusNo).then((response) => {
|
|
||||||
// currentData.value = response.data;
|
|
||||||
// // nextTick(() => {
|
|
||||||
// // proxy.$refs['inventoryReceiptRef'].edit();
|
|
||||||
// // });
|
|
||||||
// store.setCurrentData({ editRow: row, item: currentData.value });
|
|
||||||
// router.push({
|
|
||||||
// path: 'purchaseDocument',
|
|
||||||
// });
|
|
||||||
// getList();
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
/** 退库修改按钮操作 */
|
/** 退库修改按钮操作 */
|
||||||
function handleUpdateReturn(row, view) {
|
function handleUpdateReturn(row, view) {
|
||||||
@@ -618,45 +604,31 @@ function handleUpdateReturn(row, view) {
|
|||||||
/** 退库提交审核按钮 */
|
/** 退库提交审核按钮 */
|
||||||
function handleSubmitApprovalReturn(row) {
|
function handleSubmitApprovalReturn(row) {
|
||||||
submitApprovalReturn(row.supplyBusNo).then((response) => {
|
submitApprovalReturn(row.supplyBusNo).then((response) => {
|
||||||
proxy.$modal.msgSuccess('提交审批成功');
|
proxy.$modal.msgSuccess(t('medication.purchase.submitApprovalSuccess'));
|
||||||
// open.value = false;
|
|
||||||
handleRowClick(editRowTK.value);
|
handleRowClick(editRowTK.value);
|
||||||
// loadingReturn.value = false
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 退库撤回审批按钮 */
|
/** 退库撤回审批按钮 */
|
||||||
function handleWithdrawApprovalReturn(row) {
|
function handleWithdrawApprovalReturn(row) {
|
||||||
withdrawApprovalReturn(row.supplyBusNo).then((response) => {
|
withdrawApprovalReturn(row.supplyBusNo).then((response) => {
|
||||||
proxy.$modal.msgSuccess('撤销审批成功');
|
proxy.$modal.msgSuccess(t('medication.purchase.withdrawApprovalSuccess'));
|
||||||
// open.value = false;
|
|
||||||
handleRowClick(editRowTK.value);
|
handleRowClick(editRowTK.value);
|
||||||
// loadingReturn.value = false
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/** 退库修改按钮操作 */
|
/** 退库修改按钮操作 */
|
||||||
function handleUpdate(row, view) {
|
function handleUpdate(row, view) {
|
||||||
if (row.typeEnum == 5) {
|
if (row.typeEnum == 5) {
|
||||||
//采购退货
|
|
||||||
// editRow.value = row;
|
|
||||||
// getpurchaseInventoryDetail(row.supplyBusNo).then((response) => {
|
|
||||||
// currentData.value = response.data;
|
|
||||||
// store.setCurrentData({ editRow: row, item: currentData.value });
|
|
||||||
router.push({
|
router.push({
|
||||||
path: 'returnedPurchase',
|
path: 'returnedPurchase',
|
||||||
query: { supplyBusNo: row.supplyBusNo },
|
query: { supplyBusNo: row.supplyBusNo },
|
||||||
});
|
});
|
||||||
// getList();
|
|
||||||
// })
|
|
||||||
} else {
|
} else {
|
||||||
// 采购入库
|
// 采购入库
|
||||||
editRow.value = row;
|
editRow.value = row;
|
||||||
getpurchaseInventoryDetail(row.supplyBusNo).then((response) => {
|
getpurchaseInventoryDetail(row.supplyBusNo).then((response) => {
|
||||||
console.log('返回的数据,response:', response.data)
|
console.log('返回的数据,response:', response.data)
|
||||||
currentData.value = response.data;
|
currentData.value = response.data;
|
||||||
// nextTick(() => {
|
|
||||||
// proxy.$refs['inventoryReceiptRef'].edit();
|
|
||||||
// });
|
|
||||||
store.setCurrentData({ editRow: row, item: currentData.value });
|
store.setCurrentData({ editRow: row, item: currentData.value });
|
||||||
if (view) {
|
if (view) {
|
||||||
// 详情
|
// 详情
|
||||||
@@ -676,7 +648,7 @@ function handleUpdate(row, view) {
|
|||||||
/** 提交审核按钮 */
|
/** 提交审核按钮 */
|
||||||
function handleSubmitApproval(row) {
|
function handleSubmitApproval(row) {
|
||||||
submitApproval(row.supplyBusNo).then((response) => {
|
submitApproval(row.supplyBusNo).then((response) => {
|
||||||
proxy.$modal.msgSuccess('提交审批成功');
|
proxy.$modal.msgSuccess(t('medication.purchase.submitApprovalSuccess'));
|
||||||
open.value = false;
|
open.value = false;
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
@@ -685,7 +657,7 @@ function handleSubmitApproval(row) {
|
|||||||
/** 撤回审批按钮 */
|
/** 撤回审批按钮 */
|
||||||
function handleWithdrawApproval(row) {
|
function handleWithdrawApproval(row) {
|
||||||
withdrawApproval(row.supplyBusNo).then((response) => {
|
withdrawApproval(row.supplyBusNo).then((response) => {
|
||||||
proxy.$modal.msgSuccess('撤销审批成功');
|
proxy.$modal.msgSuccess(t('medication.purchase.withdrawApprovalSuccess'));
|
||||||
open.value = false;
|
open.value = false;
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
@@ -714,19 +686,19 @@ function handleDelete(row) {
|
|||||||
// 检查选中记录中是否有已审批的数据
|
// 检查选中记录中是否有已审批的数据
|
||||||
const approvedRows = selectedRows.value.filter((item) => item.statusEnum);
|
const approvedRows = selectedRows.value.filter((item) => item.statusEnum);
|
||||||
if (approvedRows.length > 0) {
|
if (approvedRows.length > 0) {
|
||||||
proxy.$modal.msgWarning('已审批的记录不能删除');
|
proxy.$modal.msgWarning(t('medication.purchase.approvedCannotDelete'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
proxy.$modal
|
proxy.$modal
|
||||||
.confirm('是否确认删除以上数据?')
|
.confirm(t('medication.purchase.confirmDeleteData'))
|
||||||
.then(function () {
|
.then(function () {
|
||||||
// 调用后端接口,根据单据号删除
|
// 调用后端接口,根据单据号删除
|
||||||
return delPurchaseinventoryByBusNo(busNoList);
|
return delPurchaseinventoryByBusNo(busNoList);
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
proxy.$modal.msgSuccess('删除成功');
|
proxy.$modal.msgSuccess(t('medication.purchase.deleteSuccess'));
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
}
|
||||||
@@ -739,7 +711,6 @@ function handleRowClick(row) {
|
|||||||
generatedReturnDetail(row.supplyBusNo).then((response) => {
|
generatedReturnDetail(row.supplyBusNo).then((response) => {
|
||||||
purchaseinventoryReturnList.value = response.data;
|
purchaseinventoryReturnList.value = response.data;
|
||||||
purchaseinventoryReturnList.value.map((k) => {
|
purchaseinventoryReturnList.value.map((k) => {
|
||||||
// k.returnStatus_text = k.returnStatus==1?'已退库':''
|
|
||||||
k.originalSupplyBusNo = k.originalSupplyBusNo ? k.originalSupplyBusNo : row.supplyBusNo;
|
k.originalSupplyBusNo = k.originalSupplyBusNo ? k.originalSupplyBusNo : row.supplyBusNo;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span>BI决策报表</span>
|
<span>{{ $t('report.biDashboard.title') }}</span>
|
||||||
<div>
|
<div>
|
||||||
<el-select v-model="reportType" placeholder="报表类型" style="margin-right:10px;width:140px" @change="loadDashboard">
|
<el-select v-model="reportType" :placeholder="$t('report.biDashboard.reportType')" style="margin-right:10px;width:140px" @change="loadDashboard">
|
||||||
<el-option v-for="item in reportTypes" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in reportTypes" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button type="primary" :loading="loading" @click="handleGenerate">生成报表</el-button>
|
<el-button type="primary" :loading="loading" @click="handleGenerate">{{ $t('report.biDashboard.generateReport') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -27,31 +27,31 @@
|
|||||||
|
|
||||||
<el-card v-if="report" shadow="never" class="mt16">
|
<el-card v-if="report" shadow="never" class="mt16">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>报表数据 — {{ report.reportType }}</span>
|
<span>{{ $t('report.biDashboard.reportData') }} — {{ report.reportType }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-table :data="report.records || []" border stripe size="small" max-height="400">
|
<el-table :data="report.records || []" border stripe size="small" max-height="400">
|
||||||
<el-table-column prop="statDate" label="日期" width="110" align="center" />
|
<el-table-column prop="statDate" :label="$t('report.biDashboard.date')" width="110" align="center" />
|
||||||
<el-table-column prop="departmentName" label="科室" width="140" show-overflow-tooltip />
|
<el-table-column prop="departmentName" :label="$t('report.biDashboard.department')" width="140" show-overflow-tooltip />
|
||||||
<el-table-column label="收入(万)" width="110" align="right">
|
<el-table-column :label="$t('report.biDashboard.revenue')" width="110" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="成本(万)" width="110" align="right">
|
<el-table-column :label="$t('report.biDashboard.cost')" width="110" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.cost) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.cost) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="patientCount" label="患者数" width="90" align="center" />
|
<el-table-column prop="patientCount" :label="$t('report.biDashboard.patientCount')" width="90" align="center" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-row v-if="report && report.charts" :gutter="16" class="mt16">
|
<el-row v-if="report && report.charts" :gutter="16" class="mt16">
|
||||||
<el-col :span="12" v-if="report.charts.revenueChart && report.charts.revenueChart.length">
|
<el-col :span="12" v-if="report.charts.revenueChart && report.charts.revenueChart.length">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header><span>月度收支趋势</span></template>
|
<template #header><span>{{ $t('report.biDashboard.monthlyTrend') }}</span></template>
|
||||||
<el-table :data="report.charts.revenueChart" border size="small">
|
<el-table :data="report.charts.revenueChart" border size="small">
|
||||||
<el-table-column prop="month" label="月份" width="100" align="center" />
|
<el-table-column prop="month" :label="$t('report.biDashboard.month')" width="100" align="center" />
|
||||||
<el-table-column label="收入(万)" align="right">
|
<el-table-column :label="$t('report.biDashboard.revenue')" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="成本(万)" align="right">
|
<el-table-column :label="$t('report.biDashboard.cost')" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.cost) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.cost) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -59,10 +59,10 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" v-if="report.charts.departmentChart && report.charts.departmentChart.length">
|
<el-col :span="12" v-if="report.charts.departmentChart && report.charts.departmentChart.length">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header><span>科室收入分布</span></template>
|
<template #header><span>{{ $t('report.biDashboard.departmentRevenue') }}</span></template>
|
||||||
<el-table :data="report.charts.departmentChart" border size="small">
|
<el-table :data="report.charts.departmentChart" border size="small">
|
||||||
<el-table-column prop="department" label="科室" width="160" show-overflow-tooltip />
|
<el-table-column prop="department" :label="$t('report.biDashboard.department')" width="160" show-overflow-tooltip />
|
||||||
<el-table-column label="收入(万)" align="right">
|
<el-table-column :label="$t('report.biDashboard.revenue')" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -74,9 +74,12 @@
|
|||||||
|
|
||||||
<script setup name="BiDashboard" lang="ts">
|
<script setup name="BiDashboard" lang="ts">
|
||||||
import { ref, computed, onMounted } from 'vue'
|
import { ref, computed, onMounted } from 'vue'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import { generateBiReport, getBiDashboard } from '@/api/reportmanage/bi'
|
import { generateBiReport, getBiDashboard } from '@/api/reportmanage/bi'
|
||||||
|
|
||||||
|
const { t } = useI18n()
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const reportType = ref('overview')
|
const reportType = ref('overview')
|
||||||
const dashboard = ref(null)
|
const dashboard = ref(null)
|
||||||
@@ -87,12 +90,12 @@ const summaryCards = computed(() => {
|
|||||||
if (!dashboard.value) return []
|
if (!dashboard.value) return []
|
||||||
const d = dashboard.value
|
const d = dashboard.value
|
||||||
return [
|
return [
|
||||||
{ label: '总收入(万)', value: formatMoney(d.totalRevenue), color: '#409eff' },
|
{ label: t('report.biDashboard.totalRevenue'), value: formatMoney(d.totalRevenue), color: '#409eff' },
|
||||||
{ label: '总成本(万)', value: formatMoney(d.totalCost), color: '#67c23a' },
|
{ label: t('report.biDashboard.totalCost'), value: formatMoney(d.totalCost), color: '#67c23a' },
|
||||||
{ label: '总利润(万)', value: formatMoney(d.totalProfit), color: '#e6a23c' },
|
{ label: t('report.biDashboard.totalProfit'), value: formatMoney(d.totalProfit), color: '#e6a23c' },
|
||||||
{ label: '总患者数', value: d.totalPatients || 0, color: '#f56c6c' },
|
{ label: t('report.biDashboard.totalPatients'), value: d.totalPatients || 0, color: '#f56c6c' },
|
||||||
{ label: '数据记录数', value: d.totalRecords || 0, color: '#909399' },
|
{ label: t('report.biDashboard.totalRecords'), value: d.totalRecords || 0, color: '#909399' },
|
||||||
{ label: 'CMI值', value: d.latestCmiValue || '-', color: '#409eff' }
|
{ label: t('report.biDashboard.cmiValue'), value: d.latestCmiValue || '-', color: '#409eff' }
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -113,10 +116,10 @@ function handleGenerate() {
|
|||||||
loading.value = true
|
loading.value = true
|
||||||
generateBiReport({ type: reportType.value }).then(res => {
|
generateBiReport({ type: reportType.value }).then(res => {
|
||||||
report.value = res.data
|
report.value = res.data
|
||||||
ElMessage.success('报表生成完成')
|
ElMessage.success(t('report.biDashboard.generateSuccess'))
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
report.value = null
|
report.value = null
|
||||||
ElMessage.error('生成失败')
|
ElMessage.error(t('report.biDashboard.generateFailed'))
|
||||||
}).finally(() => { loading.value = false })
|
}).finally(() => { loading.value = false })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,40 +3,40 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span>经营分析报告</span>
|
<span>{{ $t('report.analytics.title') }}</span>
|
||||||
<div>
|
<div>
|
||||||
<el-button type="success" :loading="exportLoading" @click="handleExport">导出Excel</el-button>
|
<el-button type="success" :loading="exportLoading" @click="handleExport">{{ $t('report.analytics.exportExcel') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-form :model="queryParams" inline>
|
<el-form :model="queryParams" inline>
|
||||||
<el-form-item label="科室">
|
<el-form-item :label="$t('report.analytics.department')">
|
||||||
<el-input v-model="queryParams.departmentName" placeholder="科室名称" clearable style="width:160px" />
|
<el-input v-model="queryParams.departmentName" :placeholder="$t('report.analytics.departmentName')" clearable style="width:160px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="开始日期">
|
<el-form-item :label="$t('report.analytics.startDate')">
|
||||||
<el-date-picker v-model="queryParams.startDate" type="date" value-format="YYYY-MM-DD" placeholder="开始日期" style="width:160px" />
|
<el-date-picker v-model="queryParams.startDate" type="date" value-format="YYYY-MM-DD" :placeholder="$t('report.analytics.startDate')" style="width:160px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结束日期">
|
<el-form-item :label="$t('report.analytics.endDate')">
|
||||||
<el-date-picker v-model="queryParams.endDate" type="date" value-format="YYYY-MM-DD" placeholder="结束日期" style="width:160px" />
|
<el-date-picker v-model="queryParams.endDate" type="date" value-format="YYYY-MM-DD" :placeholder="$t('report.analytics.endDate')" style="width:160px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" :loading="loading" @click="handleQuery">查询</el-button>
|
<el-button type="primary" :loading="loading" @click="handleQuery">{{ $t('report.analytics.search') }}</el-button>
|
||||||
<el-button @click="handleReset">重置</el-button>
|
<el-button @click="handleReset">{{ $t('report.analytics.reset') }}</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card v-if="report" shadow="never" class="mt16">
|
<el-card v-if="report" shadow="never" class="mt16">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>汇总数据</span>
|
<span>{{ $t('report.analytics.summaryData') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#409eff">{{ report.totalRecords || 0 }}</div>
|
<div style="font-size:20px;font-weight:bold;color:#409eff">{{ report.totalRecords || 0 }}</div>
|
||||||
<div style="font-size:12px;color:#999">总记录数</div>
|
<div style="font-size:12px;color:#999">{{ $t('report.analytics.totalRecords') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#409eff">{{ formatMoney(report.totalRevenue) }}</div>
|
<div style="font-size:20px;font-weight:bold;color:#409eff">{{ formatMoney(report.totalRevenue) }}</div>
|
||||||
<div style="font-size:12px;color:#999">总收入(万)</div>
|
<div style="font-size:12px;color:#999">{{ $t('report.analytics.totalRevenue') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#67c23a">{{ formatMoney(report.totalCost) }}</div>
|
<div style="font-size:20px;font-weight:bold;color:#67c23a">{{ formatMoney(report.totalCost) }}</div>
|
||||||
<div style="font-size:12px;color:#999">总成本(万)</div>
|
<div style="font-size:12px;color:#999">{{ $t('report.analytics.totalCost') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#e6a23c">{{ formatMoney(report.totalProfit) }}</div>
|
<div style="font-size:20px;font-weight:bold;color:#e6a23c">{{ formatMoney(report.totalProfit) }}</div>
|
||||||
<div style="font-size:12px;color:#999">总利润(万)</div>
|
<div style="font-size:12px;color:#999">{{ $t('report.analytics.totalProfit') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#f56c6c">{{ report.totalPatients || 0 }}</div>
|
<div style="font-size:20px;font-weight:bold;color:#f56c6c">{{ report.totalPatients || 0 }}</div>
|
||||||
<div style="font-size:12px;color:#999">总患者数</div>
|
<div style="font-size:12px;color:#999">{{ $t('report.analytics.totalPatients') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
<el-card shadow="hover" :body-style="{padding:'12px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#909399">{{ report.profitRate || 0 }}%</div>
|
<div style="font-size:20px;font-weight:bold;color:#909399">{{ report.profitRate || 0 }}%</div>
|
||||||
<div style="font-size:12px;color:#999">利润率</div>
|
<div style="font-size:12px;color:#999">{{ $t('report.analytics.profitRate') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -85,25 +85,25 @@
|
|||||||
|
|
||||||
<el-card v-if="report && report.records && report.records.length" shadow="never" class="mt16">
|
<el-card v-if="report && report.records && report.records.length" shadow="never" class="mt16">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>明细数据</span>
|
<span>{{ $t('report.analytics.detailData') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-table :data="report.records" border stripe>
|
<el-table :data="report.records" border stripe>
|
||||||
<el-table-column prop="statDate" label="日期" width="120" align="center" />
|
<el-table-column prop="statDate" :label="$t('report.analytics.date')" width="120" align="center" />
|
||||||
<el-table-column prop="departmentName" label="科室" width="140" align="center" show-overflow-tooltip />
|
<el-table-column prop="departmentName" :label="$t('report.analytics.department')" width="140" align="center" show-overflow-tooltip />
|
||||||
<el-table-column label="收入(万元)" width="120" align="right">
|
<el-table-column :label="$t('report.analytics.revenue')" width="120" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="成本(万元)" width="120" align="right">
|
<el-table-column :label="$t('report.analytics.cost')" width="120" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.cost) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.cost) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="利润(万元)" width="120" align="right">
|
<el-table-column :label="$t('report.analytics.profit')" width="120" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.profit) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.profit) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="patientCount" label="患者数" width="90" align="center" />
|
<el-table-column prop="patientCount" :label="$t('report.analytics.patientCount')" width="90" align="center" />
|
||||||
<el-table-column prop="bedCount" label="床位数" width="90" align="center" />
|
<el-table-column prop="bedCount" :label="$t('report.analytics.bedCount')" width="90" align="center" />
|
||||||
<el-table-column prop="bedOccupancyRate" label="床位率(%)" width="100" align="center" />
|
<el-table-column prop="bedOccupancyRate" :label="$t('report.analytics.bedOccupancyRate')" width="100" align="center" />
|
||||||
<el-table-column prop="avgStayDays" label="平均住院日" width="100" align="center" />
|
<el-table-column prop="avgStayDays" :label="$t('report.analytics.avgStayDays')" width="100" align="center" />
|
||||||
<el-table-column label="平均费用(万)" width="110" align="right">
|
<el-table-column :label="$t('report.analytics.avgCost')" width="110" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.avgCost) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.avgCost) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -113,9 +113,12 @@
|
|||||||
|
|
||||||
<script setup name="BusinessAnalytics" lang="ts">
|
<script setup name="BusinessAnalytics" lang="ts">
|
||||||
import { ref, reactive } from 'vue'
|
import { ref, reactive } from 'vue'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import { generateReport, exportToExcel } from '@/api/reportmanage'
|
import { generateReport, exportToExcel } from '@/api/reportmanage'
|
||||||
|
|
||||||
|
const { t } = useI18n()
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const exportLoading = ref(false)
|
const exportLoading = ref(false)
|
||||||
const report = ref(null)
|
const report = ref(null)
|
||||||
@@ -137,7 +140,7 @@ function handleQuery() {
|
|||||||
report.value = res.data
|
report.value = res.data
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
report.value = null
|
report.value = null
|
||||||
ElMessage.error('查询失败')
|
ElMessage.error(t('report.analytics.queryFailed'))
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
})
|
})
|
||||||
@@ -154,10 +157,10 @@ function handleExport() {
|
|||||||
exportLoading.value = true
|
exportLoading.value = true
|
||||||
exportToExcel(queryParams).then(res => {
|
exportToExcel(queryParams).then(res => {
|
||||||
if (res.data && res.data.headers) {
|
if (res.data && res.data.headers) {
|
||||||
ElMessage.success('导出数据共 ' + res.data.totalRows + ' 条,请查看返回数据')
|
ElMessage.success(t('report.analytics.exportSuccess', { count: res.data.totalRows }))
|
||||||
}
|
}
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
ElMessage.error('导出失败')
|
ElMessage.error(t('report.analytics.exportFailed'))
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span>可视化仪表盘</span>
|
<span>{{ $t('report.dashboard.title') }}</span>
|
||||||
<div>
|
<div>
|
||||||
<el-select v-model="dashboardType" placeholder="仪表盘类型" clearable style="margin-right:10px;width:160px" @change="loadData">
|
<el-select v-model="dashboardType" :placeholder="$t('report.dashboard.dashboardType')" clearable style="margin-right:10px;width:160px" @change="loadData">
|
||||||
<el-option label="运营总览" value="overview" />
|
<el-option :label="$t('report.dashboard.overview')" value="overview" />
|
||||||
<el-option label="财务分析" value="finance" />
|
<el-option :label="$t('report.dashboard.finance')" value="finance" />
|
||||||
<el-option label="患者统计" value="patient" />
|
<el-option :label="$t('report.dashboard.patient')" value="patient" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button type="primary" :loading="loading" @click="loadData">刷新</el-button>
|
<el-button type="primary" :loading="loading" @click="loadData">{{ $t('report.dashboard.refresh') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:24px;font-weight:bold;color:#409eff">{{ formatMoney(dashData.totalRevenue) }}</div>
|
<div style="font-size:24px;font-weight:bold;color:#409eff">{{ formatMoney(dashData.totalRevenue) }}</div>
|
||||||
<div style="font-size:13px;color:#999;margin-top:4px">总收入(万)</div>
|
<div style="font-size:13px;color:#999;margin-top:4px">{{ $t('report.dashboard.totalRevenue') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:24px;font-weight:bold;color:#67c23a">{{ formatMoney(dashData.totalProfit) }}</div>
|
<div style="font-size:24px;font-weight:bold;color:#67c23a">{{ formatMoney(dashData.totalProfit) }}</div>
|
||||||
<div style="font-size:13px;color:#999;margin-top:4px">总利润(万)</div>
|
<div style="font-size:13px;color:#999;margin-top:4px">{{ $t('report.dashboard.totalProfit') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:24px;font-weight:bold;color:#e6a23c">{{ dashData.totalPatients || 0 }}</div>
|
<div style="font-size:24px;font-weight:bold;color:#e6a23c">{{ dashData.totalPatients || 0 }}</div>
|
||||||
<div style="font-size:13px;color:#999;margin-top:4px">总患者数</div>
|
<div style="font-size:13px;color:#999;margin-top:4px">{{ $t('report.dashboard.totalPatients') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:24px;font-weight:bold;color:#f56c6c">{{ dashData.totalDrgCases || 0 }}</div>
|
<div style="font-size:24px;font-weight:bold;color:#f56c6c">{{ dashData.totalDrgCases || 0 }}</div>
|
||||||
<div style="font-size:13px;color:#999;margin-top:4px">DRG病例数</div>
|
<div style="font-size:13px;color:#999;margin-top:4px">{{ $t('report.dashboard.drgCases') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#409eff">{{ formatMoney(dashData.totalCost) }}</div>
|
<div style="font-size:20px;font-weight:bold;color:#409eff">{{ formatMoney(dashData.totalCost) }}</div>
|
||||||
<div style="font-size:13px;color:#999;margin-top:4px">总成本(万)</div>
|
<div style="font-size:13px;color:#999;margin-top:4px">{{ $t('report.dashboard.totalCost') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#67c23a">{{ dashData.latestCmiValue || '-' }}</div>
|
<div style="font-size:20px;font-weight:bold;color:#67c23a">{{ dashData.latestCmiValue || '-' }}</div>
|
||||||
<div style="font-size:13px;color:#999;margin-top:4px">最新CMI值</div>
|
<div style="font-size:13px;color:#999;margin-top:4px">{{ $t('report.dashboard.latestCmi') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#e6a23c">{{ dashData.latestCostControlRate || '-' }}%</div>
|
<div style="font-size:20px;font-weight:bold;color:#e6a23c">{{ dashData.latestCostControlRate || '-' }}%</div>
|
||||||
<div style="font-size:13px;color:#999;margin-top:4px">成本控制率</div>
|
<div style="font-size:13px;color:#999;margin-top:4px">{{ $t('report.dashboard.costControlRate') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
<el-card shadow="hover" :body-style="{padding:'16px'}">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<div style="font-size:20px;font-weight:bold;color:#909399">{{ dashData.totalRecords || 0 }}</div>
|
<div style="font-size:20px;font-weight:bold;color:#909399">{{ dashData.totalRecords || 0 }}</div>
|
||||||
<div style="font-size:13px;color:#999;margin-top:4px">数据记录数</div>
|
<div style="font-size:13px;color:#999;margin-top:4px">{{ $t('report.dashboard.totalRecords') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -88,19 +88,19 @@
|
|||||||
|
|
||||||
<el-card v-if="charts" shadow="never" class="mt16">
|
<el-card v-if="charts" shadow="never" class="mt16">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>图表数据</span>
|
<span>{{ $t('report.dashboard.chartData') }}</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header><span>月度收支趋势</span></template>
|
<template #header><span>{{ $t('report.dashboard.monthlyTrend') }}</span></template>
|
||||||
<el-table :data="charts.revenueChart || []" border size="small">
|
<el-table :data="charts.revenueChart || []" border size="small">
|
||||||
<el-table-column prop="month" label="月份" width="100" align="center" />
|
<el-table-column prop="month" :label="$t('report.dashboard.month')" width="100" align="center" />
|
||||||
<el-table-column label="收入(万)" align="right">
|
<el-table-column :label="$t('report.dashboard.revenue')" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="成本(万)" align="right">
|
<el-table-column :label="$t('report.dashboard.cost')" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.cost) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.cost) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -108,10 +108,10 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header><span>科室收入分布</span></template>
|
<template #header><span>{{ $t('report.dashboard.departmentRevenue') }}</span></template>
|
||||||
<el-table :data="charts.departmentChart || []" border size="small">
|
<el-table :data="charts.departmentChart || []" border size="small">
|
||||||
<el-table-column prop="department" label="科室" width="160" show-overflow-tooltip />
|
<el-table-column prop="department" :label="$t('report.dashboard.department')" width="160" show-overflow-tooltip />
|
||||||
<el-table-column label="收入(万)" align="right">
|
<el-table-column :label="$t('report.dashboard.revenue')" align="right">
|
||||||
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
<template #default="{ row }">{{ formatMoney(row.revenue) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -122,12 +122,12 @@
|
|||||||
<el-row :gutter="16" class="mt16">
|
<el-row :gutter="16" class="mt16">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header><span>DRG绩效趋势</span></template>
|
<template #header><span>{{ $t('report.dashboard.drgTrend') }}</span></template>
|
||||||
<el-table :data="charts.cmiChart || []" border size="small">
|
<el-table :data="charts.cmiChart || []" border size="small">
|
||||||
<el-table-column prop="month" label="月份" width="120" align="center" />
|
<el-table-column prop="month" :label="$t('report.dashboard.month')" width="120" align="center" />
|
||||||
<el-table-column prop="cmiValue" label="CMI值" width="100" align="center" />
|
<el-table-column prop="cmiValue" :label="$t('report.dashboard.cmiValue')" width="100" align="center" />
|
||||||
<el-table-column prop="costControlRate" label="成本控制率(%)" width="120" align="center" />
|
<el-table-column prop="costControlRate" :label="$t('report.dashboard.costControlRateCol')" width="120" align="center" />
|
||||||
<el-table-column prop="totalCases" label="病例数" width="100" align="center" />
|
<el-table-column prop="totalCases" :label="$t('report.dashboard.caseCount')" width="100" align="center" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="report-dimension-container">
|
<div class="report-dimension-container">
|
||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<span class="tab-title">多维度报表</span>
|
<span class="tab-title">{{ $t('report.dimension.title') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-card shadow="never" style="margin-bottom: 16px">
|
<el-card shadow="never" style="margin-bottom: 16px">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>查询条件</span>
|
<span>{{ $t('report.dimension.queryConditions') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-form :model="queryParams" inline>
|
<el-form :model="queryParams" inline>
|
||||||
<el-form-item label="统计维度">
|
<el-form-item :label="$t('report.dimension.dimension')">
|
||||||
<el-select v-model="queryParams.dimension" style="width: 140px">
|
<el-select v-model="queryParams.dimension" style="width: 140px">
|
||||||
<el-option label="按质控状态" value="status" />
|
<el-option :label="$t('report.dimension.byStatus')" value="status" />
|
||||||
<el-option label="按DRG分组" value="drg" />
|
<el-option :label="$t('report.dimension.byDrg')" value="drg" />
|
||||||
<el-option label="按主要诊断" value="diagnosis" />
|
<el-option :label="$t('report.dimension.byDiagnosis')" value="diagnosis" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="开始日期">
|
<el-form-item :label="$t('report.dimension.startDate')">
|
||||||
<el-date-picker v-model="queryParams.startDate" type="date" value-format="YYYY-MM-DD" placeholder="开始日期" />
|
<el-date-picker v-model="queryParams.startDate" type="date" value-format="YYYY-MM-DD" :placeholder="$t('report.dimension.startDate')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结束日期">
|
<el-form-item :label="$t('report.dimension.endDate')">
|
||||||
<el-date-picker v-model="queryParams.endDate" type="date" value-format="YYYY-MM-DD" placeholder="结束日期" />
|
<el-date-picker v-model="queryParams.endDate" type="date" value-format="YYYY-MM-DD" :placeholder="$t('report.dimension.endDate')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="loadData" :loading="loading">查询</el-button>
|
<el-button type="primary" @click="loadData" :loading="loading">{{ $t('report.dimension.search') }}</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<div class="stat-card">
|
<div class="stat-card">
|
||||||
<div class="stat-value" style="color: #409eff">{{ reportData.totalCount || 0 }}</div>
|
<div class="stat-value" style="color: #409eff">{{ reportData.totalCount || 0 }}</div>
|
||||||
<div class="stat-label">总病案数</div>
|
<div class="stat-label">{{ $t('report.dimension.totalCases') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<div class="stat-card">
|
<div class="stat-card">
|
||||||
<div class="stat-value" style="color: #e6a23c">{{ formatCost(reportData.totalCost) }}</div>
|
<div class="stat-value" style="color: #e6a23c">{{ formatCost(reportData.totalCost) }}</div>
|
||||||
<div class="stat-label">总费用</div>
|
<div class="stat-label">{{ $t('report.dimension.totalCost') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<div class="stat-card">
|
<div class="stat-card">
|
||||||
<div class="stat-value" style="color: #67c23a">{{ formatCost(reportData.avgCost) }}</div>
|
<div class="stat-value" style="color: #67c23a">{{ formatCost(reportData.avgCost) }}</div>
|
||||||
<div class="stat-label">平均费用</div>
|
<div class="stat-label">{{ $t('report.dimension.avgCost') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -57,19 +57,19 @@
|
|||||||
|
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>{{ dimensionLabel }}明细</span>
|
<span>{{ dimensionLabel }}{{ $t('report.dimension.detail') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-table :data="reportData.data || []" v-loading="loading" border stripe style="width: 100%">
|
<el-table :data="reportData.data || []" v-loading="loading" border stripe style="width: 100%">
|
||||||
<el-table-column prop="dimension" :label="dimensionLabel" min-width="160" />
|
<el-table-column prop="dimension" :label="dimensionLabel" min-width="160" />
|
||||||
<el-table-column prop="count" label="病案数" width="100" />
|
<el-table-column prop="count" :label="$t('report.dimension.caseCount')" width="100" />
|
||||||
<el-table-column prop="totalCost" label="总费用" width="140">
|
<el-table-column prop="totalCost" :label="$t('report.dimension.totalCost')" width="140">
|
||||||
<template #default="{ row }">{{ formatCost(row.totalCost) }}</template>
|
<template #default="{ row }">{{ formatCost(row.totalCost) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="avgCost" label="平均费用" width="140">
|
<el-table-column prop="avgCost" :label="$t('report.dimension.avgCost')" width="140">
|
||||||
<template #default="{ row }">{{ formatCost(row.avgCost) }}</template>
|
<template #default="{ row }">{{ formatCost(row.avgCost) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="avgLosDays" label="平均住院日" width="120">
|
<el-table-column prop="avgLosDays" :label="$t('report.dimension.avgLosDays')" width="120">
|
||||||
<template #default="{ row }">{{ row.avgLosDays }}天</template>
|
<template #default="{ row }">{{ row.avgLosDays }}{{ $t('report.dimension.dayUnit') }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -78,9 +78,12 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, computed, onMounted } from 'vue'
|
import { ref, reactive, computed, onMounted } from 'vue'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import { getReportByDimension } from '@/api/reportmanage/dimension'
|
import { getReportByDimension } from '@/api/reportmanage/dimension'
|
||||||
|
|
||||||
|
const { t } = useI18n()
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
dimension: 'status',
|
dimension: 'status',
|
||||||
@@ -89,8 +92,8 @@ const queryParams = reactive({
|
|||||||
})
|
})
|
||||||
const reportData = ref({})
|
const reportData = ref({})
|
||||||
|
|
||||||
const DIMENSION_LABEL = { status: '质控状态', drg: 'DRG分组', diagnosis: '主要诊断' }
|
const DIMENSION_KEY = { status: 'byStatus', drg: 'byDrg', diagnosis: 'byDiagnosis' }
|
||||||
const dimensionLabel = computed(() => DIMENSION_LABEL[queryParams.dimension] || '维度')
|
const dimensionLabel = computed(() => t('report.dimension.' + (DIMENSION_KEY[queryParams.dimension] || 'dimension')))
|
||||||
|
|
||||||
const formatCost = (val) => {
|
const formatCost = (val) => {
|
||||||
if (!val || val === '0') return '¥0'
|
if (!val || val === '0') return '¥0'
|
||||||
@@ -106,7 +109,7 @@ const loadData = async () => {
|
|||||||
const res = await getReportByDimension(params)
|
const res = await getReportByDimension(params)
|
||||||
reportData.value = res.data || {}
|
reportData.value = res.data || {}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
ElMessage.error('加载失败: ' + (e.message || '未知错误'))
|
ElMessage.error(t('report.dimension.loadFailed') + ': ' + (e.message || t('report.dimension.unknownError')))
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user