lighter 4 mēneši atpakaļ
vecāks
revīzija
125a398632

+ 23 - 0
src/api/dictionary/personnel/clinic-room-dict.js

@@ -0,0 +1,23 @@
+import request from '../../../utils/request'
+
+export function getDeptList() {
+  return request({
+    url: '/clinicRoomDict/getDeptList',
+    method: 'get',
+  })
+}
+
+export function getAllRooms() {
+  return request({
+    url: '/clinicRoomDict/getAllRooms',
+    method: 'get',
+  })
+}
+
+export function changeRoomInfo(data) {
+  return request({
+    url: '/clinicRoomDict/changeRoomInfo',
+    method: 'post',
+    data
+  })
+}

+ 138 - 0
src/views/dictionary/personnel/ClinicRoomDict.vue

@@ -0,0 +1,138 @@
+<template>
+  <div class="layout_container">
+    <header class="round-header">
+      <el-input
+        v-model="content"
+        placeholder="请输入科室编码/名称"
+        style="width: 300px"
+        clearable
+      >
+        <template #prepend>科室编码/名称</template>
+      </el-input>
+      <el-divider direction="vertical" />
+      <el-button type="primary" icon="Refresh" @click="refreshData(1)">刷新数据</el-button>
+      <el-button type="primary" icon="Plus" @click="showAddRoom">新增诊室</el-button>
+    </header>
+    <div class="layout_main layout_el-table">
+      <el-table :data="roomDisplay" stripe border>
+        <el-table-column prop="deptCode" label="科室编码" />
+        <el-table-column prop="deptName" label="科室名称" />
+        <el-table-column prop="roomCode" label="诊室编码" />
+        <el-table-column prop="roomName" label="诊室名称" />
+        <el-table-column prop="roomNo" label="诊室号" />
+        <el-table-column label="诊室状态">
+          <template #default="{row}">
+            {{row.statusFlag === 0 ? '在线' : '离线'}}
+          </template>
+        </el-table-column>
+        <el-table-column label="操作">
+          <template #default="{row}">
+            <el-button icon="Edit" type="primary" @click="showEditRoom(row)">编辑</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <el-drawer v-model="showDrawer" :title="drawerTitle">
+      <el-form :model="currentRoom" label-width="auto" :rules="formRules">
+        <el-form-item label="所属科室" prop="deptName">
+          <el-select v-model="currentRoom.deptCode" filterable>
+            <el-option
+                v-for="item in allDepts"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="诊室名称" prop="roomName">
+          <el-input v-model="currentRoom.roomName" />
+        </el-form-item>
+        <el-form-item label="诊室号" prop="roomNo">
+          <el-input v-model="currentRoom.roomNo" />
+        </el-form-item>
+        <el-form-item label="诊室状态" prop="statusFlag">
+          <el-select v-model="currentRoom.statusFlag">
+            <el-option label="在线" :value="0"/>
+            <el-option label="离线" :value="1"/>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button size="default" type="info" @click="showDrawer = false">取消</el-button>
+        <el-button size="default" type="success" @click="submitChange">提交</el-button>
+      </template>
+    </el-drawer>
+  </div>
+</template>
+
+<script setup>
+import {getAllRooms, getDeptList, changeRoomInfo} from "@/api/dictionary/personnel/clinic-room-dict.js";
+import {xcMessage} from "@/utils/xiaochan-element-plus";
+import {ElMessageBox} from "element-plus";
+
+const content = ref('')
+const allDepts = ref([])
+const allRooms = ref([])
+
+const roomDisplay = computed(() => {
+  return allRooms.value.filter(item => {
+    return item.deptCode.indexOf(content.value) !== -1
+    || item.deptName.indexOf(content.value) !== -1
+  })
+})
+
+function refreshData(m) {
+  getAllRooms().then(res => {
+    allRooms.value = res
+    if (m) {
+      xcMessage.success('刷新数据成功。')
+    }
+  })
+}
+
+onMounted(() => {
+  getDeptList().then(res => {
+    allDepts.value = res
+    refreshData()
+  })
+})
+
+const showDrawer = ref(false)
+const currentRoom = ref({})
+const drawerTitle = ref('')
+
+const formRules = reactive({
+  deptName: [ { required: true, message: '请选择科室名称', trigger: 'change' } ],
+  roomName: [ { required: true, message: '请输入诊室名称', trigger: 'blur' } ],
+  roomNo: [ { required: true, message: '请输入诊室号', trigger: 'blur' } ],
+  statusFlag: [ { required: true, message: '请选择诊室状态', trigger: 'change' } ],
+})
+
+
+function showEditRoom(row) {
+  drawerTitle.value = '编辑诊室'
+  currentRoom.value = row
+  showDrawer.value = true
+}
+
+function showAddRoom() {
+  drawerTitle.value = '添加诊室'
+  currentRoom.value = {}
+  showDrawer.value = true
+}
+
+function submitChange() {
+  ElMessageBox.confirm('提示',{
+    type: 'warning',
+    message: '是否确认提交?'
+  }).then(() => {
+    changeRoomInfo(currentRoom.value).then(res => {
+      xcMessage.success('操作成功')
+      showDrawer.value = false
+      if (drawerTitle.value === '添加诊室') {
+        allRooms.value.push(res)
+      }
+    })
+  })
+}
+</script>