diff --git a/openhis-ui-vue3/package-lock.json b/openhis-ui-vue3/package-lock.json index 245d498b..c68c9013 100644 --- a/openhis-ui-vue3/package-lock.json +++ b/openhis-ui-vue3/package-lock.json @@ -13,9 +13,10 @@ "@vueup/vue-quill": "1.2.0", "@vueuse/core": "10.6.1", "axios": "0.27.2", + "chart.js": "^4.5.1", "d3": "^7.9.0", "decimal.js": "^10.5.0", - "echarts": "5.4.3", + "echarts": "^5.4.3", "element-china-area-data": "^6.1.0", "element-plus": "2.9.11", "file-saver": "2.0.5", @@ -544,6 +545,11 @@ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1686,6 +1692,17 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chart.js": { + "version": "4.5.1", + "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.5.1.tgz", + "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, "node_modules/china-division": { "version": "2.7.0", "resolved": "https://registry.npmmirror.com/china-division/-/china-division-2.7.0.tgz", @@ -7817,6 +7834,11 @@ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, + "@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==" + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -8634,6 +8656,14 @@ "supports-color": "^7.1.0" } }, + "chart.js": { + "version": "4.5.1", + "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.5.1.tgz", + "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", + "requires": { + "@kurkle/color": "^0.3.0" + } + }, "china-division": { "version": "2.7.0", "resolved": "https://registry.npmmirror.com/china-division/-/china-division-2.7.0.tgz", diff --git a/openhis-ui-vue3/package.json b/openhis-ui-vue3/package.json index c8b9e966..6082e8e7 100644 --- a/openhis-ui-vue3/package.json +++ b/openhis-ui-vue3/package.json @@ -21,9 +21,10 @@ "@vueup/vue-quill": "1.2.0", "@vueuse/core": "10.6.1", "axios": "0.27.2", + "chart.js": "^4.5.1", "d3": "^7.9.0", "decimal.js": "^10.5.0", - "echarts": "5.4.3", + "echarts": "^5.4.3", "element-china-area-data": "^6.1.0", "element-plus": "2.9.11", "file-saver": "2.0.5", diff --git a/openhis-ui-vue3/src/views/index.vue b/openhis-ui-vue3/src/views/index.vue index f084f71c..7788c97a 100644 --- a/openhis-ui-vue3/src/views/index.vue +++ b/openhis-ui-vue3/src/views/index.vue @@ -1,106 +1,457 @@ +.section-title { + font-size: 24px; + margin-bottom: 20px; + color: #333; + font-weight: 600; +} + +.card { + background-color: #fff; + border-radius: 8px; + padding: 24px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); + transition: all 0.3s ease; +} + +.card:hover { + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12); +} + +.card-title { + font-size: 14px; + color: #606266; + margin-bottom: 12px; +} + +.card-value { + font-size: 32px; + font-weight: 600; + color: #303133; + margin-bottom: 8px; +} + +.card-stats { + display: flex; + align-items: center; + font-size: 12px; + color: #67c23a; +} + +.card-stats.down { + color: #f56c6c; +} + +.stats-icon { + margin-right: 4px; +} + +.dashboard-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 20px; + margin-bottom: 30px; +} + +.chart-container { + background-color: #fff; + border-radius: 8px; + padding: 24px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); + margin-bottom: 30px; + height: 300px; + + canvas { + width: 100% !important; + height: 100% !important; + } +} + +.bottom-content { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 20px; + margin-bottom: 30px; +} + +.notification-container, +.todo-container { + background-color: #fff; + border-radius: 8px; + padding: 24px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); +} + +.notification-title, +.todo-title { + font-size: 18px; + font-weight: 600; + color: #303133; + margin-bottom: 16px; +} + +.notification-list { + list-style: none; + padding: 0; + margin: 0; +} + +.notification-item { + padding: 12px 0; + border-bottom: 1px solid #ebeef5; + + &:last-child { + border-bottom: none; + } +} + +.todo-list { + list-style: none; + padding: 0; + margin: 0; + margin-bottom: 20px; +} + +.todo-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 12px 0; + border-bottom: 1px solid #ebeef5; + + &:last-child { + border-bottom: none; + } +} + +.todo-count { + color: #606266; + font-size: 14px; +} + +.table-container { + background-color: #fff; + border-radius: 8px; + padding: 24px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); +} + +table { + width: 100%; + border-collapse: collapse; +} + +th, td { + padding: 12px; + text-align: left; + border-bottom: 1px solid #ebeef5; +} + +th { + background-color: #f5f7fa; + font-weight: 600; + color: #303133; +} + +tr:last-child td { + border-bottom: none; +} + +.btn { + padding: 6px 12px; + border-radius: 4px; + font-size: 14px; + cursor: pointer; + transition: all 0.3s ease; + border: none; + outline: none; +} + +.btn-primary { + background-color: #1890ff; + color: #fff; +} + +.btn-primary:hover { + background-color: #40a9ff; +} + +.btn-outline { + background-color: transparent; + border: 1px solid #dcdfe6; + color: #606266; +} + +.btn-outline:hover { + border-color: #c6e2ff; + color: #40a9ff; + background-color: #ecf5ff; +} + +@media (max-width: 768px) { + .bottom-content { + grid-template-columns: 1fr; + } + + .dashboard-grid { + grid-template-columns: 1fr; + } +} + \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue index 81f120f8..b648e09d 100644 --- a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue +++ b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue @@ -2,19 +2,17 @@
-
- - - -
+ + +
-
+
新增诊断 保存诊断 中医诊断 导入慢性病诊断
+ - - + + + + - - + + + + + @@ -185,28 +193,30 @@ />
\ No newline at end of file + +