瀏覽代碼

首页增加统计看板

unknown 2 月之前
父節點
當前提交
22d24043e8
共有 3 個文件被更改,包括 62 次插入91 次删除
  1. 5 0
      src/api/login/index.ts
  2. 56 90
      src/views/Home/Index.vue
  3. 1 1
      src/views/elderly/consumption-coupon/Form.vue

+ 5 - 0
src/api/login/index.ts

@@ -91,3 +91,8 @@ export const socialAuthCheck = (code) => {
 export const smsResetPassword = (data: any) => {
   return request.post({ url: '/system/auth/sms-reset-password', data })
 }
+
+
+export const getInstitutionDashboard = () => {
+  return request.get({ url: '/elderlyInfo/getInstitutionDashboard' })
+}

+ 56 - 90
src/views/Home/Index.vue

@@ -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;
             }
           }
         }

+ 1 - 1
src/views/elderly/consumption-coupon/Form.vue

@@ -32,7 +32,7 @@
         </el-col>
         <el-col :span="12" :xs="24">
           <el-form-item label="消费券金额" prop="amount">
-            <TgInput v-model="dataForm.amount" appendText="¥" />
+            <TgInput v-model="dataForm.amount" appendText="¥" input-type="number"/>
           </el-form-item>
         </el-col>