From 59c4da21d541e3354bb1335ff6e0ba914b3c8a0f Mon Sep 17 00:00:00 2001 From: yelan Date: Thu, 27 Aug 2026 12:21:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor(clinical-web):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E5=8C=BB=E6=8A=A4=E7=AB=AF=E5=B8=83=E5=B1=80=E4=B8=8E=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clinical-web/README.md | 19 +- clinical-web/src/components/Container.vue | 5 + clinical-web/src/components/Header.vue | 32 + clinical-web/src/components/Menu.vue | 90 +++ clinical-web/src/layouts/ClinicalLayout.vue | 78 +- clinical-web/src/router/index.ts | 78 +- clinical-web/src/stores/app.ts | 6 +- clinical-web/src/styles/index.css | 707 +++++++----------- clinical-web/src/styles/theme.css | 28 + .../views/consent-tasks/ConsentTasksView.vue | 139 +--- .../src/views/dashboard/DashboardView.vue | 123 +-- .../DocumentPermissionsView.vue | 10 + .../src/views/documents/DocumentsView.vue | 60 +- .../src/views/reports/ReportsView.vue | 38 +- .../src/views/settings/SettingsView.vue | 45 +- .../src/views/users/UserPermissionsView.vue | 10 + 16 files changed, 536 insertions(+), 932 deletions(-) create mode 100644 clinical-web/src/components/Container.vue create mode 100644 clinical-web/src/components/Header.vue create mode 100644 clinical-web/src/components/Menu.vue create mode 100644 clinical-web/src/styles/theme.css create mode 100644 clinical-web/src/views/document-permissions/DocumentPermissionsView.vue create mode 100644 clinical-web/src/views/users/UserPermissionsView.vue diff --git a/clinical-web/README.md b/clinical-web/README.md index 9e0b7f7..4d02ee2 100644 --- a/clinical-web/README.md +++ b/clinical-web/README.md @@ -84,4 +84,21 @@ TanStack Vue Query、PDF 预览、报表图表、自动化测试和签字板适 ## 当前状态 -已完成 Vite 基础初始化、路由、Pinia、医护端布局和第一版页面骨架。当前工作台、签署任务、文书库、报表和设置页面均使用演示数据,尚未接入真实后端。 +已完成 Vite 基础初始化、路由、Pinia、原型主题 CSS 和医护端整体布局。当前所有业务 View 暂时保留文字占位,尚未接入真实后端。 + +## 当前路由结构 + +```text +ClinicalLayout +├─ 工作台 +│ ├─ /workbench/home 首页 +│ └─ /workbench/signing 签署工作台 +└─ 管理 + ├─ /management/documents 文档库管理 + ├─ /management/reports 报表分析 + ├─ /management/users 用户与权限 + ├─ /management/document-permissions 文档权限 + └─ /management/settings 系统设置 +``` + +布局拆分为 `Menu`、`Header` 和 `Container` 三个公共组件,页面内容由各自的 View 负责。 diff --git a/clinical-web/src/components/Container.vue b/clinical-web/src/components/Container.vue new file mode 100644 index 0000000..4689a1e --- /dev/null +++ b/clinical-web/src/components/Container.vue @@ -0,0 +1,5 @@ + diff --git a/clinical-web/src/components/Header.vue b/clinical-web/src/components/Header.vue new file mode 100644 index 0000000..4beb964 --- /dev/null +++ b/clinical-web/src/components/Header.vue @@ -0,0 +1,32 @@ + + + diff --git a/clinical-web/src/components/Menu.vue b/clinical-web/src/components/Menu.vue new file mode 100644 index 0000000..9124a78 --- /dev/null +++ b/clinical-web/src/components/Menu.vue @@ -0,0 +1,90 @@ + + + diff --git a/clinical-web/src/layouts/ClinicalLayout.vue b/clinical-web/src/layouts/ClinicalLayout.vue index 1effb97..3dad4d8 100644 --- a/clinical-web/src/layouts/ClinicalLayout.vue +++ b/clinical-web/src/layouts/ClinicalLayout.vue @@ -1,73 +1,19 @@ diff --git a/clinical-web/src/router/index.ts b/clinical-web/src/router/index.ts index e18c564..6612d90 100644 --- a/clinical-web/src/router/index.ts +++ b/clinical-web/src/router/index.ts @@ -3,9 +3,11 @@ import { createRouter, createWebHistory } from 'vue-router' import ClinicalLayout from '@/layouts/ClinicalLayout.vue' import ConsentTasksView from '@/views/consent-tasks/ConsentTasksView.vue' import DashboardView from '@/views/dashboard/DashboardView.vue' +import DocumentPermissionsView from '@/views/document-permissions/DocumentPermissionsView.vue' import DocumentsView from '@/views/documents/DocumentsView.vue' import ReportsView from '@/views/reports/ReportsView.vue' import SettingsView from '@/views/settings/SettingsView.vue' +import UserPermissionsView from '@/views/users/UserPermissionsView.vue' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -13,39 +15,63 @@ const router = createRouter({ { path: '/', component: ClinicalLayout, - redirect: '/dashboard', + redirect: '/workbench/home', children: [ { - path: 'dashboard', - component: DashboardView, - meta: { title: '工作台' }, + path: 'workbench', + redirect: '/workbench/home', + children: [ + { + path: 'home', + component: DashboardView, + meta: { title: '首页', group: '工作台' }, + }, + { + path: 'signing', + component: ConsentTasksView, + meta: { title: '签署工作台', group: '工作台' }, + }, + ], }, { - path: 'consent-tasks', - component: ConsentTasksView, - meta: { title: '签署任务' }, - }, - { - path: 'documents', - component: DocumentsView, - meta: { title: '文书库' }, - }, - { - path: 'reports', - component: ReportsView, - meta: { title: '统计报表' }, - }, - { - path: 'settings', - component: SettingsView, - meta: { title: '系统设置' }, + path: 'management', + redirect: '/management/documents', + children: [ + { + path: 'documents', + component: DocumentsView, + meta: { title: '文档库管理', group: '管理' }, + }, + { + path: 'reports', + component: ReportsView, + meta: { title: '报表分析', group: '管理' }, + }, + { + path: 'users', + component: UserPermissionsView, + meta: { title: '用户与权限', group: '管理' }, + }, + { + path: 'document-permissions', + component: DocumentPermissionsView, + meta: { title: '文档权限', group: '管理' }, + }, + { + path: 'settings', + component: SettingsView, + meta: { title: '系统设置', group: '管理' }, + }, + ], }, ], }, - { - path: '/:pathMatch(.*)*', - redirect: '/dashboard', - }, + { path: '/dashboard', redirect: '/workbench/home' }, + { path: '/consent-tasks', redirect: '/workbench/signing' }, + { path: '/documents', redirect: '/management/documents' }, + { path: '/reports', redirect: '/management/reports' }, + { path: '/settings', redirect: '/management/settings' }, + { path: '/:pathMatch(.*)*', redirect: '/workbench/home' }, ], }) diff --git a/clinical-web/src/stores/app.ts b/clinical-web/src/stores/app.ts index 4e70ec9..525440f 100644 --- a/clinical-web/src/stores/app.ts +++ b/clinical-web/src/stores/app.ts @@ -2,8 +2,8 @@ import { defineStore } from 'pinia' export const useAppStore = defineStore('app', { state: () => ({ - userName: '演示医生', - department: '儿科急诊', - environment: '演示环境', + userName: '张文静', + department: '医务管理 · 主任医师', + environment: '原型演示环境', }), }) diff --git a/clinical-web/src/styles/index.css b/clinical-web/src/styles/index.css index 5c2f33e..1873243 100644 --- a/clinical-web/src/styles/index.css +++ b/clinical-web/src/styles/index.css @@ -1,572 +1,367 @@ +@import './theme.css'; + :root { - font-family: - Inter, - ui-sans-serif, - system-ui, - -apple-system, - BlinkMacSystemFont, - 'Segoe UI', - sans-serif; - color: #1d2939; - background: #f5f7fa; + font-family: var(--font-sans); + color: var(--ink); + background: var(--bg); font-synthesis: none; text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } * { box-sizing: border-box; } +html, +body, +#app { + width: 100%; + min-height: 100%; +} + body { - min-width: 1100px; + min-width: 1024px; min-height: 100vh; margin: 0; - background: #f5f7fa; + color: var(--ink); + background: var(--bg); + font-size: 14px; + line-height: 1.5; } button, -input { +input, +select, +textarea { font: inherit; } button { cursor: pointer; + border: 0; } -.clinical-layout { - min-height: 100vh; +a { + color: inherit; } -.clinical-sidebar { - position: relative; - display: flex; - flex-direction: column; - color: #d6e4ff; - background: #11243e; +::-webkit-scrollbar { + width: 8px; + height: 8px; } -.brand { - display: flex; - gap: 12px; - align-items: center; - height: 88px; - padding: 0 24px; - border-bottom: 1px solid rgb(255 255 255 / 8%); +::-webkit-scrollbar-thumb { + background: #c3d4db; + border-radius: 4px; } -.brand-mark { - display: grid; - width: 38px; - height: 38px; - color: #11243e; - font-size: 20px; - font-weight: 800; - place-items: center; - border-radius: 12px; - background: #93d8ca; -} - -.brand strong, -.brand span { - display: block; -} - -.brand strong { - color: #fff; - font-size: 18px; - letter-spacing: 2px; -} - -.brand span { - margin-top: 3px; - color: #8fa5c1; - font-size: 10px; - letter-spacing: 1.2px; - text-transform: uppercase; -} - -.clinical-menu { - flex: 1; - padding: 18px 12px; - border-right: 0; +::-webkit-scrollbar-track { background: transparent; } -.clinical-menu .el-menu-item { - height: 48px; - margin: 4px 0; - color: #a8bad2; - border-radius: 10px; -} - -.clinical-menu .el-menu-item:hover { - color: #fff; - background: rgb(255 255 255 / 8%); -} - -.clinical-menu .el-menu-item.is-active { - color: #fff; - background: #274765; -} - -.menu-dot { - width: 6px; - height: 6px; - margin-right: 12px; - border-radius: 50%; - background: currentcolor; -} - -.sidebar-footer { +/* 主框架:侧边菜单 + 顶部 header + 内容 container */ +.clinical-layout { display: flex; - gap: 8px; - align-items: center; - padding: 22px 24px; - color: #8fa5c1; - font-size: 12px; -} - -.status-dot { - width: 7px; - height: 7px; - border-radius: 50%; - background: #73d5a5; - box-shadow: 0 0 0 4px rgb(115 213 165 / 12%); -} - -.clinical-header { - display: flex; - align-items: center; - justify-content: space-between; - height: 88px; - padding: 0 34px; - background: #fff; - border-bottom: 1px solid #e8edf3; -} - -.header-kicker, -.eyebrow { - margin: 0 0 6px; - color: #7e91a8; - font-size: 11px; - font-weight: 700; - letter-spacing: 1.3px; - text-transform: uppercase; -} - -.clinical-header h1 { - margin: 0; - color: #172b4d; - font-size: 22px; -} - -.user-context { - display: flex; - gap: 10px; - align-items: center; -} - -.user-avatar { - display: grid; - width: 36px; - height: 36px; - color: #176b67; - font-weight: 700; - place-items: center; - border-radius: 50%; - background: #d9f1ec; -} - -.user-context strong, -.user-context span { - display: block; -} - -.user-context strong { - color: #263b59; - font-size: 13px; -} - -.user-context span { - margin-top: 2px; - color: #91a0b3; - font-size: 11px; + width: 100%; + min-height: 100vh; + background: var(--bg); } .clinical-main { - padding: 32px 34px 48px; -} - -.page-section { - max-width: 1440px; - margin: 0 auto; -} - -.page-heading { display: flex; - align-items: flex-end; - justify-content: space-between; - margin-bottom: 24px; + flex: 1; + flex-direction: column; + min-width: 0; + min-height: 100vh; } -.page-heading h2, -.welcome-panel h2 { - margin: 0; - color: #172b4d; - font-size: 28px; - line-height: 1.25; -} - -.page-heading p:not(.eyebrow) { - margin: 8px 0 0; - color: #8090a5; - font-size: 13px; -} - -.welcome-panel { +.clinical-menu { display: flex; - align-items: flex-end; - justify-content: space-between; - min-height: 190px; - margin-bottom: 20px; - padding: 30px 34px; - overflow: hidden; - color: #e8f3f5; - border-radius: 18px; - background: - radial-gradient(circle at 84% 18%, rgb(147 216 202 / 24%), transparent 28%), - linear-gradient(125deg, #173958, #195d69); + flex: 0 0 var(--sidebar-width); + flex-direction: column; + width: var(--sidebar-width); + color: #c8dde6; + background: var(--side); } -.welcome-panel h2 { - max-width: 570px; - color: #fff; - font-size: 27px; -} - -.welcome-copy { - max-width: 600px; - margin: 14px 0 0; - color: #b9d1d9; - font-size: 14px; - line-height: 1.7; -} - -.primary-button, -.secondary-button { - min-height: 40px; - padding: 0 18px; - color: #123148; - font-size: 13px; - font-weight: 700; - border: 0; - border-radius: 9px; - background: #9bdfd0; -} - -.primary-button:hover { - background: #b3ebde; -} - -.secondary-button { - color: #176b67; - border: 1px solid #bfe2dc; - background: #eefaf7; -} - -.stats-row { - margin-bottom: 16px; -} - -.stat-card, -.content-card { - border: 1px solid #e9eef4; - border-radius: 14px; -} - -.stat-card { - min-height: 132px; -} - -.stat-card .el-card__body { - padding: 20px; -} - -.stat-topline { +.menu-brand { display: flex; + flex-shrink: 0; + gap: 10px; align-items: center; - justify-content: space-between; - color: #7f91a8; - font-size: 12px; + padding: 18px 16px 16px; + border-bottom: 1px solid rgb(255 255 255 / 8%); } -.stat-indicator { - width: 8px; - height: 8px; +.menu-brand-icon { + display: grid; + flex-shrink: 0; + width: 34px; + height: 34px; + place-items: center; + border-radius: 9px; + background: linear-gradient(135deg, #18a0c0, var(--brand)); +} + +.menu-brand-copy strong, +.menu-brand-copy span { + display: block; +} + +.menu-brand-copy strong { + color: #fff; + font-size: 16px; + letter-spacing: 1px; +} + +.menu-brand-copy span { + color: #8fb3c2; + font-size: 10px; + letter-spacing: 1px; +} + +.menu-nav { + flex: 1; + padding: 12px 10px; + overflow-y: auto; +} + +.menu-group-title { + padding: 10px 10px 6px; + color: #7ba2b3; + font-size: 11px; + letter-spacing: 1px; +} + +.menu-item { + display: flex; + gap: 10px; + align-items: center; + margin-bottom: 2px; + padding: 10px 12px; + color: #c8dde6; + font-size: 13.5px; + text-decoration: none; + border-radius: 8px; + transition: + color 0.15s ease, + background 0.15s ease; +} + +.menu-item:hover { + color: #fff; + background: rgb(255 255 255 / 7%); +} + +.menu-item.is-active { + color: #fff; + font-weight: 700; + background: var(--brand); +} + +.menu-dot { + flex-shrink: 0; + width: 6px; + height: 6px; + background: transparent; border-radius: 50%; } -.is-orange { - background: #f5b45e; +.menu-item.is-active .menu-dot { + background: #5ee0a8; } -.is-green { - background: #68c795; -} - -.is-red { - background: #eb8d8d; -} - -.is-blue { - background: #78aee5; -} - -.stat-card strong { - display: block; - margin: 12px 0 4px; - color: #193453; - font-size: 27px; - letter-spacing: -0.5px; -} - -.stat-card small { - color: #91a0b3; - font-size: 11px; -} - -.dashboard-grid { - margin-bottom: 16px; -} - -.content-card .el-card__header { - padding: 20px 22px; - border-bottom: 1px solid #edf1f5; -} - -.content-card .el-card__body { - padding: 0 22px; -} - -.card-heading { +.menu-profile { display: flex; + flex-shrink: 0; + gap: 10px; align-items: center; - justify-content: space-between; + padding: 14px 16px; + border-top: 1px solid rgb(255 255 255 / 8%); } -.card-heading h3 { - margin: 0; - color: #203957; - font-size: 16px; -} - -.text-button { - color: #267d78; - font-size: 12px; - border: 0; - background: transparent; -} - -.task-item { - display: flex; - gap: 12px; - align-items: center; - min-height: 72px; - border-bottom: 1px solid #f0f3f6; -} - -.task-item:last-child { - border-bottom: 0; -} - -.task-avatar { +.menu-profile-avatar { display: grid; + flex-shrink: 0; width: 34px; height: 34px; - color: #456786; - font-size: 13px; + color: #fff; + font-size: 14px; + font-weight: 700; place-items: center; - border-radius: 10px; - background: #eaf1f6; + border-radius: 50%; + background: #18a0c0; } -.task-main { - flex: 1; +.menu-profile-copy { min-width: 0; } -.task-main strong, -.task-main span { +.menu-profile-copy strong, +.menu-profile-copy span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.task-main strong { - color: #304968; +.menu-profile-copy strong { + color: #fff; font-size: 13px; } -.task-main span { - margin-top: 5px; - color: #91a0b3; +.menu-profile-copy span { + margin-top: 2px; + color: #8fb3c2; font-size: 11px; } -.reminder-list { - margin: 0; - padding: 2px 0 8px; - list-style: none; +.menu-logout { + flex-shrink: 0; + margin-left: auto; + padding: 0; + color: #8fb3c2; + font-size: 11px; + background: transparent; } -.reminder-list li { +.menu-logout:hover { + color: #fff; +} + +/* 原型中的顶部 header */ +.clinical-header { display: flex; - gap: 12px; - padding: 16px 0; - border-bottom: 1px solid #f0f3f6; + flex-shrink: 0; + gap: 14px; + align-items: center; + height: var(--header-height); + padding: 0 20px; + background: #fff; + border-bottom: 1px solid var(--line); } -.reminder-list li:last-child { - border-bottom: 0; +.header-page { + display: flex; + gap: 14px; + align-items: baseline; + min-width: 0; } -.reminder-number { - color: #62aa9f; - font-size: 12px; +.header-title { + flex-shrink: 0; + color: var(--ink); + font-size: 16px; font-weight: 700; } -.reminder-list strong, -.reminder-list span { - display: block; -} - -.reminder-list strong { - color: #304968; +.header-breadcrumb { + overflow: hidden; + color: var(--mut); font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; } -.reminder-list div span { - margin-top: 5px; - color: #91a0b3; - font-size: 11px; - line-height: 1.5; +.header-spacer { + flex: 1; } -.table-card .el-card__body { - padding: 22px; -} - -.filter-bar { +.campus-selector { display: flex; - gap: 10px; - margin-bottom: 18px; -} - -.filter-bar .el-input { - width: 300px; -} - -.filter-bar .el-select { - width: 150px; -} - -.detail-grid { - display: grid; - grid-template-columns: 90px 1fr; - gap: 16px 12px; + flex-shrink: 0; + gap: 6px; align-items: center; - color: #8797aa; - font-size: 13px; } -.detail-grid strong { - color: #304968; - font-weight: 600; -} - -.report-card { - min-height: 142px; -} - -.report-card > .el-card__body > span { - color: #7f91a8; +.campus-label { + color: var(--mut); font-size: 12px; } -.report-card > .el-card__body > strong { - margin-top: 15px; +.campus-selector select { + width: auto; + padding: 4px 8px; + color: var(--brand-d); + font-size: 12.5px; + font-weight: 700; + background: var(--brand-l); + border: 1px solid var(--brand); + border-radius: 6px; } -.report-placeholder { - min-height: 330px; +.environment-badge { + flex-shrink: 0; + padding: 3px 8px; + color: var(--warn); + font-size: 11px; + background: var(--warn-l); + border-radius: 20px; } -.empty-chart { - display: grid; - min-height: 280px; - color: #8797aa; +/* container 只负责滚动和内边距,页面内容由各 View 提供 */ +.clinical-container { + flex: 1; + min-height: 0; + padding: 18px 20px; + overflow-y: auto; +} + +.page-section { + width: 100%; + max-width: 1440px; + margin: 0 auto; +} + +.page-placeholder { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 380px; + padding: 48px 32px; text-align: center; - place-items: center; - align-content: center; + background: var(--card); + border-radius: var(--r); + box-shadow: var(--sh); } -.chart-icon { +.placeholder-mark { display: grid; - width: 52px; - height: 52px; - margin-bottom: 12px; - color: #2f8d83; + width: 54px; + height: 54px; + margin-bottom: 18px; + color: var(--brand); font-size: 24px; place-items: center; - border-radius: 16px; - background: #e8f7f3; + background: var(--brand-l); + border-radius: 14px; } -.empty-chart h3 { +.eyebrow { + margin-bottom: 6px; + color: var(--brand); + font-size: 11px; + font-weight: 700; + letter-spacing: 1px; +} + +.placeholder-title { margin: 0; - color: #304968; - font-size: 15px; + color: var(--ink); + font-size: 22px; } -.empty-chart p { - margin: 8px 0 0; - font-size: 12px; -} - -.settings-card { - max-width: 780px; -} - -.settings-card .el-card__body { - padding: 8px 24px; -} - -.setting-row { - display: flex; - align-items: center; - justify-content: space-between; - min-height: 86px; - border-bottom: 1px solid #f0f3f6; -} - -.setting-row:last-child { - border-bottom: 0; -} - -.setting-row strong, -.setting-row span { - display: block; -} - -.setting-row strong { - color: #304968; +.placeholder-copy { + margin-top: 10px; + color: var(--mut); font-size: 13px; } -.setting-row span { - margin-top: 6px; - color: #91a0b3; - font-size: 11px; +@media (max-width: 1200px) { + .clinical-container { + padding: 16px; + } } diff --git a/clinical-web/src/styles/theme.css b/clinical-web/src/styles/theme.css new file mode 100644 index 0000000..520a2e7 --- /dev/null +++ b/clinical-web/src/styles/theme.css @@ -0,0 +1,28 @@ +:root { + --brand: #0e6e8c; + --brand-d: #0a4f66; + --brand-l: #e3f0f4; + --side: #0a3d51; + --bg: #f1f5f7; + --card: #ffffff; + --ink: #1d3b4a; + --mut: #687f8b; + --line: #dce7ec; + --ok: #0f9d6c; + --ok-l: #e2f5ec; + --warn: #d9821f; + --warn-l: #fbf0dd; + --err: #d0534f; + --err-l: #fbe9e8; + --info: #3a7bd5; + --info-l: #e7effb; + --r: 10px; + --sh: 0 2px 10px rgb(13 62 81 / 7%); + --sh-hover: 0 6px 20px rgb(14 110 140 / 18%); + --sh-modal: 0 20px 60px rgb(0 0 0 / 30%); + --font-sans: + 'Microsoft YaHei', 'PingFang SC', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', + sans-serif; + --sidebar-width: 200px; + --header-height: 54px; +} diff --git a/clinical-web/src/views/consent-tasks/ConsentTasksView.vue b/clinical-web/src/views/consent-tasks/ConsentTasksView.vue index b785415..73d5557 100644 --- a/clinical-web/src/views/consent-tasks/ConsentTasksView.vue +++ b/clinical-web/src/views/consent-tasks/ConsentTasksView.vue @@ -1,139 +1,10 @@ - - diff --git a/clinical-web/src/views/dashboard/DashboardView.vue b/clinical-web/src/views/dashboard/DashboardView.vue index 6af8cdc..6fe0773 100644 --- a/clinical-web/src/views/dashboard/DashboardView.vue +++ b/clinical-web/src/views/dashboard/DashboardView.vue @@ -1,123 +1,10 @@ - - diff --git a/clinical-web/src/views/document-permissions/DocumentPermissionsView.vue b/clinical-web/src/views/document-permissions/DocumentPermissionsView.vue new file mode 100644 index 0000000..cd4b4d9 --- /dev/null +++ b/clinical-web/src/views/document-permissions/DocumentPermissionsView.vue @@ -0,0 +1,10 @@ + diff --git a/clinical-web/src/views/documents/DocumentsView.vue b/clinical-web/src/views/documents/DocumentsView.vue index 3e11894..add5060 100644 --- a/clinical-web/src/views/documents/DocumentsView.vue +++ b/clinical-web/src/views/documents/DocumentsView.vue @@ -1,60 +1,10 @@ - - diff --git a/clinical-web/src/views/reports/ReportsView.vue b/clinical-web/src/views/reports/ReportsView.vue index c7a7453..27e9bd8 100644 --- a/clinical-web/src/views/reports/ReportsView.vue +++ b/clinical-web/src/views/reports/ReportsView.vue @@ -1,38 +1,10 @@ - - diff --git a/clinical-web/src/views/settings/SettingsView.vue b/clinical-web/src/views/settings/SettingsView.vue index dc308a4..fd71f50 100644 --- a/clinical-web/src/views/settings/SettingsView.vue +++ b/clinical-web/src/views/settings/SettingsView.vue @@ -1,45 +1,10 @@ - - diff --git a/clinical-web/src/views/users/UserPermissionsView.vue b/clinical-web/src/views/users/UserPermissionsView.vue new file mode 100644 index 0000000..46b8276 --- /dev/null +++ b/clinical-web/src/views/users/UserPermissionsView.vue @@ -0,0 +1,10 @@ +