|
|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<div class="home" :style="pageStyle">
|
|
|
<div class="use">
|
|
|
- <el-segmented v-model="valueTop" :options="optionsTop" size="large" />
|
|
|
+ <el-segmented v-model="valueTop" :options="optionsTop" size="large" @change="handleTab"/>
|
|
|
<el-scrollbar v-if="valueTop=='我的常用'">
|
|
|
<div class="icon-wrap">
|
|
|
<div class="icon-item" @click="handleGridDataStatistics" v-hasPermi="['home:gridDataStatistics']">
|
|
|
@@ -36,36 +36,11 @@
|
|
|
<Icon icon="ep:house" class="stat-icon" />
|
|
|
<span>院内动态</span>
|
|
|
</div>
|
|
|
- <div class="stat-items">
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">总床位数:</span>
|
|
|
- <span class="stat-value">400</span>
|
|
|
- <span class="stat-unit">张</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">在院人数:</span>
|
|
|
- <span class="stat-value">352</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">新收人数:</span>
|
|
|
- <span class="stat-value">0</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">请假人数:</span>
|
|
|
- <span class="stat-value">9</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">当天请假人数:</span>
|
|
|
- <span class="stat-value">0</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">退院人数:</span>
|
|
|
- <span class="stat-value">0</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
+ <div class="stat-items" v-if="kanbanDataObject.hospitalDynamics">
|
|
|
+ <div class="stat-item" v-for="(item,index) in kanbanDataObject.hospitalDynamics" :key="index">
|
|
|
+ <span class="stat-name">{{item.name}}:</span>
|
|
|
+ <span class="stat-value">{{item.count}}</span>
|
|
|
+
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -75,36 +50,11 @@
|
|
|
<Icon icon="ep:first-aid-kit" class="stat-icon" />
|
|
|
<span>护理情况</span>
|
|
|
</div>
|
|
|
- <div class="stat-items">
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">一级:</span>
|
|
|
- <span class="stat-value">264</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">二级:</span>
|
|
|
- <span class="stat-value">17</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">三级:</span>
|
|
|
- <span class="stat-value">22</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">一级(专陪):</span>
|
|
|
- <span class="stat-value">38</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">二级(专陪):</span>
|
|
|
- <span class="stat-value">1</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
- </div>
|
|
|
- <div class="stat-item">
|
|
|
- <span class="stat-name">无费用:</span>
|
|
|
- <span class="stat-value">10</span>
|
|
|
- <span class="stat-unit">位</span>
|
|
|
+ <div class="stat-items" v-if="kanbanDataObject.nursingSituation">
|
|
|
+ <div class="stat-item" v-for="(item,index) in kanbanDataObject.nursingSituation" :key="index">
|
|
|
+ <span class="stat-name">{{item.name}}:</span>
|
|
|
+ <span class="stat-value">{{item.count}}</span>
|
|
|
+
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -116,7 +66,7 @@
|
|
|
<div class="box">
|
|
|
<div class="header">
|
|
|
<div class="title"
|
|
|
- >待审批事项 <span class="num">{{ }}</span></div>
|
|
|
+ >待审批事项 <span class="num">{{ }}</span></div>
|
|
|
<div class="all" @click="handleAll">全部<Icon icon="ep:arrow-right" /></div>
|
|
|
</div>
|
|
|
<div class="content">
|
|
|
@@ -130,8 +80,8 @@
|
|
|
<span class="title">{{ item.templateContent }}</span>
|
|
|
<span class="desc">{{ item.userBpmContent }}</span>
|
|
|
<span class="time">{{
|
|
|
- formatTime(item.createTime, 'yyyy-MM-dd HH:mm:ss')
|
|
|
- }}</span>
|
|
|
+ formatTime(item.createTime, 'yyyy-MM-dd HH:mm:ss')
|
|
|
+ }}</span>
|
|
|
</div>
|
|
|
<div class="right"><Icon icon="ep:arrow-right" /></div>
|
|
|
</li>
|
|
|
@@ -147,7 +97,7 @@
|
|
|
<div class="box">
|
|
|
<div class="header">
|
|
|
<div class="title"
|
|
|
- >待办事项 <span class="num">{{ }}</span></div
|
|
|
+ >待办事项 <span class="num">{{ }}</span></div
|
|
|
>
|
|
|
<div class="all" @click="handleAllNew">全部<Icon icon="ep:arrow-right" /></div>
|
|
|
</div>
|
|
|
@@ -162,8 +112,8 @@
|
|
|
<span class="title">{{ item.templateContent }}</span>
|
|
|
<span class="desc">{{ item.userBpmContent }}</span>
|
|
|
<span class="time">{{
|
|
|
- formatTime(item.createTime, 'yyyy-MM-dd HH:mm:ss')
|
|
|
- }}</span>
|
|
|
+ formatTime(item.createTime, 'yyyy-MM-dd HH:mm:ss')
|
|
|
+ }}</span>
|
|
|
</div>
|
|
|
<div class="right" @click="handleOpen(item)"><Icon icon="ep:arrow-right" /></div>
|
|
|
</li>
|
|
|
@@ -184,24 +134,24 @@
|
|
|
v-model="settingVisible"
|
|
|
size="60%">
|
|
|
<ProcessDetail :id="processId" isHome :taskName="currentItem.templateContent" />
|
|
|
- </el-drawer>
|
|
|
-
|
|
|
- <MessageDrawer v-model="messageVisible"/>
|
|
|
-
|
|
|
- <el-dialog
|
|
|
- v-model="statsDialogVisible"
|
|
|
- title="院区运营数据统计"
|
|
|
- width="520px"
|
|
|
- destroy-on-close
|
|
|
- >
|
|
|
- <div v-loading="statsLoading" style="min-height: 220px; line-height: 2; white-space: pre-line">
|
|
|
- {{ statsText }}
|
|
|
- </div>
|
|
|
- <template #footer>
|
|
|
- <el-button @click="handleCopyStatistics">复制</el-button>
|
|
|
- <el-button type="primary" @click="statsDialogVisible = false">关闭</el-button>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
+ </el-drawer>
|
|
|
+
|
|
|
+ <MessageDrawer v-model="messageVisible"/>
|
|
|
+
|
|
|
+ <el-dialog
|
|
|
+ v-model="statsDialogVisible"
|
|
|
+ title="院区运营数据统计"
|
|
|
+ width="520px"
|
|
|
+ destroy-on-close
|
|
|
+ >
|
|
|
+ <div v-loading="statsLoading" style="min-height: 220px; line-height: 2; white-space: pre-line">
|
|
|
+ {{ statsText }}
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="handleCopyStatistics">复制</el-button>
|
|
|
+ <el-button type="primary" @click="statsDialogVisible = false">关闭</el-button>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
@@ -221,12 +171,13 @@ import { ElMessage } from 'element-plus'
|
|
|
import MessageDrawer from './components/message-drawer.vue'
|
|
|
import ProcessDetail from '@/views/bpm/task/process-list/detail.vue'
|
|
|
import MyCommon from './MyCommon.vue'
|
|
|
+import {getInstitutionDashboard} from "@/api/login";
|
|
|
defineOptions({ name: 'Home' })
|
|
|
const { push } = useRouter()
|
|
|
const { t } = useI18n()
|
|
|
const userStore = useUserStore()
|
|
|
const optionsTop = ['我的常用',
|
|
|
- //'院内统计'
|
|
|
+ '院内统计'
|
|
|
]
|
|
|
const valueTop = ref('我的常用')
|
|
|
const { setWatermark } = useWatermark()
|
|
|
@@ -248,6 +199,7 @@ const messageVisible = ref(false)
|
|
|
const statsDialogVisible = ref(false)
|
|
|
const statsLoading = ref(false)
|
|
|
const statsText = ref('')
|
|
|
+const kanbanDataObject = ref({})
|
|
|
const router = useRouter()
|
|
|
|
|
|
const buildStatsText = (data: Record<string, any>) => {
|
|
|
@@ -281,6 +233,16 @@ const handleGridDataStatistics = async () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+const handleTab = async (e) => {
|
|
|
+ if(e=='院内统计'){
|
|
|
+ try {
|
|
|
+ kanbanDataObject.value = await getInstitutionDashboard()
|
|
|
+ }catch (e) {}
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
const fallbackCopyText = (text: string) => {
|
|
|
const textarea = document.createElement('textarea')
|
|
|
textarea.value = text
|
|
|
@@ -649,7 +611,7 @@ onMounted(() => {
|
|
|
}
|
|
|
.statistics-panel {
|
|
|
margin-top: 15px;
|
|
|
- padding: 16px;
|
|
|
+ padding: 6px 14px 14px 14px;
|
|
|
background: #fff;
|
|
|
border-radius: 8px;
|
|
|
.stat-row {
|
|
|
@@ -685,12 +647,13 @@ onMounted(() => {
|
|
|
.stat-items {
|
|
|
display: flex;
|
|
|
flex: 1;
|
|
|
- justify-content: space-around;
|
|
|
+ flex-wrap: wrap;
|
|
|
padding-left: 20px;
|
|
|
.stat-item {
|
|
|
+ margin: 6px 0;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- font-size: 14px;
|
|
|
+ font-size: 16px;
|
|
|
.stat-name {
|
|
|
color: #666;
|
|
|
}
|
|
|
@@ -698,10 +661,13 @@ onMounted(() => {
|
|
|
color: #1890ff;
|
|
|
font-size: 18px;
|
|
|
font-weight: 600;
|
|
|
- margin: 0 4px;
|
|
|
+ margin-right: 42px;
|
|
|
+ margin-left: 0px;
|
|
|
}
|
|
|
.stat-unit {
|
|
|
color: #999;
|
|
|
+ margin-right: 30px;
|
|
|
+ margin-left: 2px;
|
|
|
}
|
|
|
}
|
|
|
}
|