eight
2024-11-08 950ce42a05ce883d3373d9a89000608836e14159
预约签到界面合并
已添加1个文件
已修改3个文件
187 ■■■■■ 文件已修改
src/api/ecg/appointment/index.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/formatter.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/appointment/AppointmentConfirm.vue 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/appointment/CheckItemPanel.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/ecg/appointment/index.ts
@@ -3,6 +3,8 @@
// é¢„约 VO
export interface AppointmentVO {
  id: number,
  applyNo: string
  patSrc: number
  patId: string // æ‚£è€…编号
  patName: string // æ‚£è€…姓名
  patGender: number // æ‚£è€…性别
src/utils/formatter.ts
@@ -9,3 +9,8 @@
export function PrefixInteger(num, length) {
  return (Array(length).join('0') + num).slice(-length);
}
export function formatTimeslot(timeslot: number): string {
  const strTimeslot = PrefixInteger( timeslot, 8 )
  return strTimeslot.slice(0,2) + ":" + strTimeslot.slice(2,4) + ' ~ ' + strTimeslot.slice(4,6) + ":" + strTimeslot.slice(6,8)
}
src/views/ecg/appointment/AppointmentConfirm.vue
@@ -1,9 +1,15 @@
<template>
  <div style="display: flex; justify-content: center; ">
  <el-form-item label="患者编号">
    <el-input v-model="queryParams.patId" placeholder="请输入患者编号" clearable @input="searchBookInfo"/>
  </el-form-item>
  </div>
  <el-button @click="_confirmAppointment"><Icon icon="ep:refresh" class="mr-5px" /> æŽ’队 </el-button>
  <div style="display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 20px">
    <div v-for="_appointment in appointmentVOList" :key="_appointment.applyNo">
      <CheckItemPanel  :appointment="_appointment" />
    </div>
  </div>
  <el-divider/>
@@ -15,12 +21,10 @@
  >
    <div class="form-row">
      <el-form-item label="患者姓名" prop="patName">
        <el-input v-model="formData.patName" placeholder="请输入患者姓名" />
        <el-input v-model="formData.patName" placeholder="患者姓名" readonly />
      </el-form-item>
    </div>
    <div class="form-row">
      <el-form-item label="患者性别" prop="patGender">
        <el-radio-group v-model="formData.patGender">
        <el-radio-group v-model="formData.patGender" readonly>
          <el-radio
            v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
            :key="dict.value"
@@ -30,80 +34,53 @@
          </el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="预约日期" prop="bookDate">
        <el-date-picker
          v-model="formData.bookDate"
          type="date"
          value-format="x"
          placeholder="选择预约日期"
        />
      </el-form-item>
    </div>
    <div class="form-row">
      <el-form-item label="预约时间" prop="bookTimeslot">
        <el-select v-model="formData.bookTimeslot" placeholder="请选择预约时间段">
          <el-option
            v-for="dict in getIntDictOptions(DICT_TYPE.ECG_BOOK_TIMESLOT)"
            :key="dict.value"
            :label="dict.label"
            :value="dict.value"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="检查项目" prop="bookCheckType">
        <el-select v-model="formData.bookCheckType" placeholder="请选择预约检查项目">
          <el-option
            v-for="dict in checkTypeStore.getCheckTypeOptions()"
            :key="dict.value"
            :label="dict.label"
            :value="dict.value"
          />
        </el-select>
      </el-form-item>
    </div>
    <div class="form-row">
      <el-form-item label="患者生日" prop="patBirthday">
        <el-date-picker
          v-model="formData.patBirthday"
          type="date"
          value-format="x"
          placeholder="选择患者生日"
            readonly
        />
      </el-form-item>
      <el-form-item label="患者手机" prop="patMobile">
        <el-input v-model="formData.patMobile" placeholder="请输入患者手机" />
      </el-form-item>
    </div>
    <div class="form-row">
      <el-form-item label="患者电话" prop="patPhone">
      <el-form-item label="患者手机" prop="patMobile" >
        <el-input v-model="formData.patMobile" placeholder="请输入患者手机" readonly />
      </el-form-item>
<!--
      <el-form-item label="患者电话" prop="patPhone" readonly>
        <el-input v-model="formData.patPhone" placeholder="请输入患者电话" />
      </el-form-item>
-->
      <el-form-item label="身份证号" prop="patIdentityId">
        <el-input v-model="formData.patIdentityId" placeholder="请输入身份证号" />
        <el-input v-model="formData.patIdentityId" placeholder="请输入身份证号" readonly />
      </el-form-item>
    </div>
    <div class="form-row">
      <el-form-item label="患者地址" prop="patAddr">
        <el-input v-model="formData.patAddr" placeholder="请输入患者地址" />
      </el-form-item>
      <el-form-item label="科室代码" prop="patDeptCode">
        <el-input v-model="formData.patDeptCode" placeholder="请输入科室代码" />
      </el-form-item>
    </div>
    <div class="form-row">
      <el-form-item label="科室名称" prop="patDeptDesc">
        <el-input v-model="formData.patDeptDesc" placeholder="请输入科室名称" />
      </el-form-item>
      <el-form-item label="病区代码" prop="patWardCode">
<!--
      <el-form-item label="病区代码" prop="patWardCode" readonly>
        <el-input v-model="formData.patWardCode" placeholder="请输入病区代码" />
      </el-form-item>
    </div>
    <div class="form-row">
-->
      <el-form-item label="病区名称" prop="patWardDesc">
        <el-input v-model="formData.patWardDesc" placeholder="请输入病区名称" />
        <el-input v-model="formData.patWardDesc" placeholder="请输入病区名称" readonly />
      </el-form-item>
      <el-form-item label="床号" prop="patBedNo">
        <el-input v-model="formData.patBedNo" placeholder="请输入床号" />
        <el-input v-model="formData.patBedNo" placeholder="请输入床号" readonly />
      </el-form-item>
    </div>
    <div class="form-row">
      <!--
            <el-form-item label="科室代码" prop="patDeptCode" readonly>
              <el-input v-model="formData.patDeptCode" placeholder="请输入科室代码" />
            </el-form-item>
      -->
      <el-form-item label="科室名称" prop="patDeptDesc" >
        <el-input v-model="formData.patDeptDesc" placeholder="请输入科室名称" readonly/>
      </el-form-item>
      <el-form-item label="患者地址" prop="patAddr">
        <el-input v-model="formData.patAddr" placeholder="请输入患者地址" readonly/>
      </el-form-item>
    </div>
  </el-form>
@@ -112,6 +89,8 @@
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
import { AppointmentApi, AppointmentVO } from '@/api/ecg/appointment'
import {useCheckTypeStore} from "@/store/modules/checkType";
import CheckItemPanel from "@/views/ecg/appointment/CheckItemPanel.vue";
import {RoomStatus} from "@/components/RoomStatus";
/** é¢„约确认 è¡¨å• */
defineOptions({ name: 'AppointmentConfirm' })
@@ -124,8 +103,12 @@
    patId: undefined
})
const appointmentVOList = ref<AppointmentVO[]>([])
const formData = ref<AppointmentVO>({
  id: 0,
  applyNo: "",
  patSrc: 0,
  patId: "",
  patName: "",
  patGender: 1, // 1 ç”· 2 å¥³
@@ -142,7 +125,7 @@
  bookId: "",
  bookTime: new Date(),
  bookDate: new Date(),
  bookTimeslot: 9000930,
  bookTimeslot: 9301030,
  bookCheckType: checkTypeStore.getCheckTypeName(100)
})
const formRef = ref() // è¡¨å• Ref
@@ -155,8 +138,10 @@
  const data = await AppointmentApi.queryAndCreateAppointmentByPatId(queryParams.patId) // å¯¹åº”数据库中 pat_id
  console.info( data )
  appointmentVOList.value = data
  if (null !== data) {
    formData.value = data
    formData.value = data[0]
    console.info( formData.value )
    return
  }
@@ -167,19 +152,12 @@
  })
}
const _confirmAppointment = async () => {
    const data = await AppointmentApi.confirmAppointment(formData.value)
    ElNotification({
      title: '温馨提示',
      message: data,
      type: 'warning'
    })
}
/** é‡ç½®è¡¨å• */
const resetForm = () => {
  formData.value = {
    id: 0,
    applyNo: "",
    patSrc: 0,
    patId: "",
    patName: "",
    patGender: 1, // 1 ç”· 2 å¥³
@@ -196,8 +174,8 @@
    bookId: "",
    bookTime: new Date(),
    bookDate: new Date(),
    bookTimeslot: 9000930,
    bookCheckType: 10
    bookTimeslot: 9301030,
    bookCheckType: checkTypeStore.getCheckTypeName(100)
  }
  formRef.value?.resetFields()
}
@@ -213,4 +191,9 @@
.two-column-form .form-row .el-form-item {
  width: 48%;
}
.el-form-item {
  margin-bottom: 5px;
}
</style>
src/views/ecg/appointment/CheckItemPanel.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
<script setup lang="ts">
import {defineComponent, PropType} from "vue";
import {useCheckTypeStore} from "@/store/modules/checkType";
import {AppointmentApi, AppointmentVO} from "@/api/ecg/appointment";
import {dateFormatter2, formatDate} from "@/utils/formatTime";
import {formatTimeslot} from "@/utils/formatter";
defineComponent({
  name: 'CheckItemPanel'
})
const  props = defineProps({
  appointment: {
    type: Object as PropType<AppointmentVO>,
    required: true
  }
})
const checkTypeStore = useCheckTypeStore();
const _confirmAppointment = async () => {
  const data = await AppointmentApi.confirmAppointment(props.appointment)
  ElNotification({
    title: '温馨提示',
    message: data,
    type: 'warning'
  })
}
</script>
<template>
  <el-card style="width: 200px" shadow="hover" >
    <template #header>{{checkTypeStore.getCheckTypeName(appointment.bookCheckType)}}</template>
    <div>{{formatDate(appointment.bookDate, 'YYYY-MM-DD')}}</div>
    <div>{{formatTimeslot(appointment.bookTimeslot)}}</div>
    <el-divider/>
    <el-button type="primary" @click="_confirmAppointment"><Icon icon="ep:refresh" class="mr-5px" /> æŽ’队 </el-button>
  </el-card>
</template>
<style scoped lang="scss">
.el-card ::v-deep {
  .el-card__header {
    background-color: var(--el-color-primary-light-3);
    padding: 2px;
    text-align: center;
  }
  .el-card__body {
    //background-color: var(--el-color-primary-light-3);
    padding: 4px;
    text-align: center;
  }
}
</style>