Ver Fonte

手术安排调整

lighter há 4 meses atrás
pai
commit
a693e4f1dc
1 ficheiros alterados com 102 adições e 57 exclusões
  1. 102 57
      src/views/surgical-management/SurgeryArrangement.vue

+ 102 - 57
src/views/surgical-management/SurgeryArrangement.vue

@@ -42,28 +42,57 @@
       <el-divider direction="vertical" />
       <el-checkbox v-model="queryParam.jzFlag">急诊</el-checkbox>
       <el-divider direction="vertical" />
-      <el-button icon="Search" type="primary" @click="clickQuery"
-        >查询</el-button
-      >
-      <el-button icon="Printer" type="danger" @click="clickPrint"
-        >打印</el-button
-      >
-      <el-button icon="PieChart" type="success" @click="showSurgeryStatistics"
-        >统计</el-button
+      <el-button
+          icon="Search"
+          type="primary"
+          @click="clickQuery"
+        >
+        查询
+      </el-button>
+      <el-button
+          icon="Printer"
+          type="danger"
+          @click="clickPrint"
+        >
+        打印
+      </el-button>
+      <el-button
+          icon="PieChart"
+          type="success"
+          @click="showSurgeryStatistics"
+        >
+        统计
+      </el-button>
+      <el-select
+          v-model="displayRoom"
+          style="width: 120px;
+          margin-left: 12px"
+          @change="handleChangeDisplay"
       >
+        <el-option value="ALL" label="查看全部" />
+        <el-option value="NORMAL" label="只看普通手术间" />
+        <el-option value="OTHER" label="只看其他手术间" />
+      </el-select>
     </header>
     <div class="layout_main layout_el-table">
       <div>
-        <el-tag effect="dark" size="small" type="danger"
-          >急诊:{{ emergencyCount }}条</el-tag
-        >
-        <el-tag effect="dark" size="small"
-          >普通:{{ surgeryList.length - emergencyCount }}条</el-tag
-        >
+        <el-tag
+            effect="dark"
+            size="small"
+            type="danger"
+          >
+          急诊:{{ emergencyCount }}条
+        </el-tag>
+        <el-tag
+            effect="dark"
+            size="small"
+          >
+          普通:{{ cptSrgLst.length - emergencyCount }}条
+        </el-tag>
       </div>
       <el-table
         :data="
-          surgeryList.slice(
+          cptSrgLst.slice(
             (currentPage - 1) * pageSize,
             currentPage * pageSize
           )
@@ -132,6 +161,25 @@
           prop="deptName"
           width="78"
         ></el-table-column>
+        <el-table-column label="台次" prop="sstc" width="40">
+          <template #default="{ row }">
+            <div v-if="row.status === 'd'">{{ row.sstc }}</div>
+            <el-select
+                v-else
+                v-model="row.sstc"
+                @focus="handleSelectionFocus(row, 'sstc')"
+                @change="
+                sstc => handleSelectionChange(row.recordId, 'sstc', sstc)
+              "
+                placeholder=" "
+                clearable
+                class="el-select_no-suffix"
+            >
+              <el-option value="" label="清空"></el-option>
+              <el-option v-for="n in 12" :value="n" :label="n"></el-option>
+            </el-select>
+          </template>
+        </el-table-column>
         <el-table-column label="床号" prop="bedNo" width="30"></el-table-column>
         <el-table-column
           label="住院号"
@@ -370,26 +418,6 @@
             </el-select>
           </template>
         </el-table-column>
-        <el-table-column label="台次" prop="sstc" width="40">
-          <template #default="{ row }">
-            <div v-if="row.status === 'd'">{{ row.sstc }}</div>
-            <el-select
-              v-else
-              v-model="row.sstc"
-              @focus="handleSelectionFocus(row, 'sstc')"
-              @change="
-                sstc => handleSelectionChange(row.recordId, 'sstc', sstc)
-              "
-              placeholder=" "
-              clearable
-              class="el-select_no-suffix"
-            >
-              <el-option :value="null" label="清空"></el-option>
-              <el-option v-for="n in 12" :value="n" :label="n"></el-option>
-            </el-select>
-          </template>
-        </el-table-column>
-
         <el-table-column label="术前访视">
           <template #default="scope">
             <div
@@ -497,7 +525,7 @@
       <el-pagination
         :current-page="currentPage"
         :page-size="pageSize"
-        :total="surgeryList.length"
+        :total="cptSrgLst.length"
         layout="total,prev, pager, next"
         @current-change="handleCurrentChange"
       ></el-pagination>
@@ -606,6 +634,7 @@
       >
         <el-option label="按科室" value="BY_DEPARTMENT"></el-option>
         <el-option label="按手术" value="BY_SURGERY"></el-option>
+        <el-option label="按级别" value="BY_LEVEL"></el-option>
       </el-select>
       <el-divider direction="vertical"></el-divider>
       <el-button icon="Search" @click="executeQueryStatistics">查询</el-button>
@@ -688,24 +717,19 @@
 <script name="SurgeryArrangement" setup>
 import {
   getDicList,
-  selectSurgeryArrangements,
-  updateSurgeryStatus,
-  updateArrangement,
   notifyDoctor,
   queryStatistics,
+  selectSurgeryArrangements,
+  updateArrangement,
+  updateSurgeryStatus,
 } from "@/api/surgical-management/surgery-arrangement";
-import { shortcuts } from "@/data/shortcuts.js";
-import {
-  formatDate,
-  formatDatetime,
-  getDateRangeFormatDate,
-} from "@/utils/date";
-import { listIsBlank, stringNotBlank } from "@/utils/blank-utils";
-import { ElMessage, ElMessageBox } from "element-plus";
+import {shortcuts} from "@/data/shortcuts.js";
+import {formatDate, formatDatetime, getDateRangeFormatDate,} from "@/utils/date";
+import {listIsBlank, stringNotBlank} from "@/utils/blank-utils";
+import {ElMessage, ElMessageBox} from "element-plus";
 import Search from "@/components/search/Index.vue";
 import router from "@/router";
-import { initLodop, getLodop } from "@/utils/c-lodop";
-import { CyMessageBox } from "@/utils/cy-message-box";
+import {getLodop, initLodop} from "@/utils/c-lodop";
 
 const currentPage = ref(1);
 const pageSize = ref(30);
@@ -734,6 +758,34 @@ let queryParam = reactive({
 });
 
 const surgeryList = ref([]);
+const cptSrgLst = ref([])
+const displayRoom = ref('ALL')
+
+function handleChangeDisplay(val) {
+  if (val === "ALL") {
+    cptSrgLst.value = surgeryList.value;
+  } else if (val === "NORMAL") {
+    cptSrgLst.value = surgeryList.value.filter(item => {
+      return !item.roomCode || (parseInt(item.roomCode) < 15)
+    })
+  } else {
+    cptSrgLst.value = surgeryList.value.filter(item => {
+      return item.roomCode && (parseInt(item.roomCode) >= 15)
+    })
+  }
+  calEmergencyCount(cptSrgLst.value)
+}
+
+function calEmergencyCount(list) {
+  emergencyCount.value = 0
+  list.forEach(item => {
+    if (stringNotBlank(item.urgentClinicFlag)) {
+      if (item.urgentClinicFlag === "1") {
+        emergencyCount.value++;
+      }
+    }
+  });
+}
 
 let surgeryListForPrint = computed(() => {
   return surgeryList.value.filter(item => {
@@ -751,14 +803,7 @@ const clickQuery = () => {
   queryParam.endTime = dateS.endTime;
   selectSurgeryArrangements(queryParam).then(res => {
     surgeryList.value = res;
-    emergencyCount.value = 0;
-    surgeryList.value.forEach(item => {
-      if (stringNotBlank(item.urgentClinicFlag)) {
-        if (item.urgentClinicFlag === "1") {
-          emergencyCount.value++;
-        }
-      }
-    });
+    handleChangeDisplay(displayRoom.value);
   }).catch(() => {
     surgeryList.value = []
   });