From b5d4da97f9d5f41c28a7f75af89d42e219974f7a Mon Sep 17 00:00:00 2001
From: suizihe <2958847195@qq.com>
Date: Tue, 4 Nov 2025 16:10:16 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=A5=E8=A1=A8=E6=A0=BC?=
=?UTF-8?q?=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
openhis-ui-vue3/src/router/index.js | 109 +++++++++++++++++-
.../outPatientCharge.vue | 77 +++++++++++--
2 files changed, 172 insertions(+), 14 deletions(-)
diff --git a/openhis-ui-vue3/src/router/index.js b/openhis-ui-vue3/src/router/index.js
index 96af9867..b3496fe8 100644
--- a/openhis-ui-vue3/src/router/index.js
+++ b/openhis-ui-vue3/src/router/index.js
@@ -88,6 +88,69 @@ export const constantRoutes = [
// 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [
+ {
+ path: '/system',
+ component: Layout,
+ redirect: '/system/user',
+ name: 'System',
+ meta: { title: '系统管理', icon: 'system' },
+ children: [
+ {
+ path: 'user',
+ component: () => import('@/views/system/user/index.vue'),
+ name: 'User',
+ meta: { title: '用户管理', icon: 'user', permissions: ['system:user:list'] }
+ },
+ {
+ path: 'role',
+ component: () => import('@/views/system/role/index.vue'),
+ name: 'Role',
+ meta: { title: '角色管理', icon: 'role', permissions: ['system:role:list'] }
+ },
+ {
+ path: 'menu',
+ component: () => import('@/views/system/menu/index.vue'),
+ name: 'Menu',
+ meta: { title: '菜单管理', icon: 'menu', permissions: ['system:menu:list'] }
+ },
+ {
+ path: 'dept',
+ component: () => import('@/views/system/dept/index.vue'),
+ name: 'Dept',
+ meta: { title: '部门管理', icon: 'dept', permissions: ['system:dept:list'] }
+ },
+ {
+ path: 'post',
+ component: () => import('@/views/system/post/index.vue'),
+ name: 'Post',
+ meta: { title: '岗位管理', icon: 'post', permissions: ['system:post:list'] }
+ },
+ {
+ path: 'dict',
+ component: () => import('@/views/system/dict/index.vue'),
+ name: 'Dict',
+ meta: { title: '字典管理', icon: 'dict', permissions: ['system:dict:list'] }
+ },
+ {
+ path: 'config',
+ component: () => import('@/views/system/config/index.vue'),
+ name: 'Config',
+ meta: { title: '参数配置', icon: 'config', permissions: ['system:config:list'] }
+ },
+ {
+ path: 'notice',
+ component: () => import('@/views/system/notice/index.vue'),
+ name: 'Notice',
+ meta: { title: '通知公告', icon: 'notice', permissions: ['system:notice:list'] }
+ },
+ {
+ path: 'tenant',
+ component: () => import('@/views/system/tenant/index.vue'),
+ name: 'Tenant',
+ meta: { title: '租户管理', icon: 'tenant', permissions: ['system:tenant:list'] }
+ }
+ ]
+ },
{
path: '/system/tenant-user',
component: Layout,
@@ -98,7 +161,7 @@ export const dynamicRoutes = [
path: 'set/:tenantId(\\d+)',
component: () => import('@/views/system/tenant/setUser'),
name: 'SetUser',
- meta: { title: '所属用户', activeMenu: '/system/basicmanage/tenant' }
+ meta: { title: '所属用户', activeMenu: '/system/tenant' }
}
]
},
@@ -112,7 +175,7 @@ export const dynamicRoutes = [
path: 'set/:tenantId(\\d+)',
component: () => import('@/views/system/tenant/setContract'),
name: 'SetContract',
- meta: { title: '合同管理', activeMenu: '/system/basicmanage/tenant' }
+ meta: { title: '合同管理', activeMenu: '/system/tenant' }
}
]
},
@@ -158,6 +221,48 @@ export const dynamicRoutes = [
}
]
},
+ {
+ path: '/monitor',
+ component: Layout,
+ redirect: '/monitor/operlog',
+ name: 'Monitor',
+ meta: { title: '系统监控', icon: 'monitor' },
+ children: [
+ {
+ path: 'operlog',
+ component: () => import('@/views/monitor/operlog/index.vue'),
+ name: 'Operlog',
+ meta: { title: '操作日志', icon: 'operlog', permissions: ['monitor:operlog:list'] }
+ },
+ {
+ path: 'logininfor',
+ component: () => import('@/views/monitor/logininfor/index.vue'),
+ name: 'Logininfor',
+ meta: { title: '登录日志', icon: 'logininfor', permissions: ['monitor:logininfor:list'] }
+ },
+ {
+ path: 'job',
+ component: () => import('@/views/monitor/job/index.vue'),
+ name: 'Job',
+ meta: { title: '定时任务', icon: 'job', permissions: ['monitor:job:list'] }
+ }
+ ]
+ },
+ {
+ path: '/tool',
+ component: Layout,
+ redirect: '/tool/gen',
+ name: 'Tool',
+ meta: { title: '系统工具', icon: 'tool' },
+ children: [
+ {
+ path: 'gen',
+ component: () => import('@/views/tool/gen/index.vue'),
+ name: 'Gen',
+ meta: { title: '代码生成', icon: 'gen', permissions: ['tool:gen:list'] }
+ }
+ ]
+ },
{
path: '/monitor/job-log',
component: Layout,
diff --git a/openhis-ui-vue3/src/views/medicationmanagement/statisticalManagement/outPatientCharge.vue b/openhis-ui-vue3/src/views/medicationmanagement/statisticalManagement/outPatientCharge.vue
index b1d7cc4c..b8d7da19 100644
--- a/openhis-ui-vue3/src/views/medicationmanagement/statisticalManagement/outPatientCharge.vue
+++ b/openhis-ui-vue3/src/views/medicationmanagement/statisticalManagement/outPatientCharge.vue
@@ -164,12 +164,15 @@
:data="purchaseinventoryList"
@selection-change="handleSelectionChange"
:span-method="arraySpanMethod"
-
+ border
+ fit
+ :default-sort="{ prop: 'chargeTime', order: 'descending' }"
+ @header-click="handleHeaderClick"
>
-
+
{{ parseTime(scope.row.chargeTime) }}
@@ -697,6 +715,41 @@ function handleSelectionChange(selection) {
multiple.value = !selection.length;
}
+// 表头点击事件,用于实现更灵活的列操作
+function handleHeaderClick(column) {
+ // 可以在这里添加额外的表头操作逻辑
+ // 例如:根据列内容自动调整宽度
+ if (column.property) {
+ autoFitColumnWidth(column.property);
+ }
+}
+
+// 根据内容自动调整列宽
+function autoFitColumnWidth(property) {
+ // 实际项目中可以根据需要实现更复杂的自动宽度计算逻辑
+ // 这里提供一个简单的实现方式
+ const table = document.querySelector('.el-table__body-wrapper table');
+ if (table) {
+ const rows = table.querySelectorAll('tbody tr');
+ let maxWidth = 100; // 默认最小宽度
+
+ rows.forEach(row => {
+ const cell = Array.from(row.cells).find((cell, index) => {
+ const headerCell = table.querySelector(`thead th:nth-child(${index + 1})`);
+ return headerCell && headerCell.dataset.property === property;
+ });
+
+ if (cell) {
+ const textWidth = cell.textContent.length * 8; // 粗略估算文本宽度
+ maxWidth = Math.max(maxWidth, textWidth);
+ }
+ });
+
+ // 应用计算出的宽度(可以根据实际需要调整)
+ // 注意:在实际Element Plus中,可能需要通过ref获取表格实例并调用API来设置列宽
+ }
+}
+
getList();
getPharmacyCabinetLists()