| | |
| | | <template> |
| | | <ContentWrap> |
| | | <!-- 搜索工作栏 --> |
| | | <el-form |
| | | class="-mb-15px" |
| | | :model="queryParams" |
| | | ref="queryFormRef" |
| | | :inline="true" |
| | | label-width="68px" |
| | | > |
| | | <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> |
| | | <el-form-item label="患者编号" prop="patId"> |
| | | <el-input |
| | | v-model="queryParams.patId" |
| | | placeholder="请输入患者编号" |
| | | clearable |
| | | @keyup.enter="handleQuery" |
| | | class="!w-240px" |
| | | /> |
| | | <el-input v-model="queryParams.patId" placeholder="请输入患者编号" clearable @keyup.enter="handleQuery" |
| | | class="!w-240px" /> |
| | | </el-form-item> |
| | | <el-form-item label="患者姓名" prop="patName"> |
| | | <el-input |
| | | v-model="queryParams.patName" |
| | | placeholder="请输入患者姓名" |
| | | clearable |
| | | @keyup.enter="handleQuery" |
| | | class="!w-240px" |
| | | /> |
| | | <el-input v-model="queryParams.patName" placeholder="请输入患者姓名" clearable @keyup.enter="handleQuery" |
| | | class="!w-240px" /> |
| | | </el-form-item> |
| | | <el-form-item label="患者手机" prop="patMobile"> |
| | | <el-input |
| | | v-model="queryParams.patMobile" |
| | | placeholder="请输入患者手机" |
| | | clearable |
| | | @keyup.enter="handleQuery" |
| | | class="!w-240px" |
| | | /> |
| | | <el-input v-model="queryParams.patMobile" placeholder="请输入患者手机" clearable @keyup.enter="handleQuery" |
| | | class="!w-240px" /> |
| | | </el-form-item> |
| | | <!-- |
| | | <el-form-item label="患者电话" prop="patPhone"> |
| | |
| | | </el-form-item> |
| | | --> |
| | | <el-form-item label="身份证号" prop="patIdentityId"> |
| | | <el-input |
| | | v-model="queryParams.patIdentityId" |
| | | placeholder="请输入身份证号" |
| | | clearable |
| | | @keyup.enter="handleQuery" |
| | | class="!w-240px" |
| | | /> |
| | | <el-input v-model="queryParams.patIdentityId" placeholder="请输入身份证号" clearable @keyup.enter="handleQuery" |
| | | class="!w-240px" /> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="预约编号" prop="applyNo"> |
| | | <el-input |
| | |
| | | /> |
| | | </el-form-item> --> |
| | | <el-form-item label="检查项目" prop="bookCheckType"> |
| | | <el-select |
| | | v-model="queryParams.bookCheckType" |
| | | placeholder="请选择检查项目" |
| | | clearable |
| | | class="!w-240px" |
| | | > |
| | | <el-option |
| | | v-for="dict in checkTypeStore.getCheckTypeOptions()" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | <el-select v-model="queryParams.bookCheckType" placeholder="请选择检查项目" clearable class="!w-240px"> |
| | | <el-option v-for="dict in checkTypeStore.getCheckTypeOptions()" :key="dict.value" :label="dict.label" |
| | | :value="dict.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label-width="90" label="申请单状态" prop="bookCheckType"> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="登记时间" prop="registerTime"> |
| | | <el-date-picker |
| | | v-model="djTime" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | type="daterange" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" |
| | | class="!w-220px" |
| | | /> |
| | | <el-date-picker v-model="djTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange" start-placeholder="开始日期" |
| | | end-placeholder="结束日期" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-220px" /> |
| | | </el-form-item> |
| | | <el-form-item label="开单时间" prop="createTime"> |
| | | <el-date-picker |
| | | v-model="kdTime" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | type="daterange" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" |
| | | class="!w-220px" |
| | | /> |
| | | <el-date-picker v-model="kdTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange" start-placeholder="开始日期" |
| | | end-placeholder="结束日期" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-220px" /> |
| | | </el-form-item> |
| | | <!-- |
| | | <el-form-item label="预约来源" prop="bookSrc"> |
| | |
| | | </el-form-item> |
| | | --> |
| | | <el-form-item> |
| | | <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> |
| | | <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="openForm('create')" |
| | | v-hasPermi="['ecg:appointment:create']" |
| | | > |
| | | <el-button @click="handleQuery"> |
| | | <Icon icon="ep:search" class="mr-5px" /> 搜索 |
| | | </el-button> |
| | | <el-button @click="resetQuery"> |
| | | <Icon icon="ep:refresh" class="mr-5px" /> 重置 |
| | | </el-button> |
| | | <el-button type="primary" plain @click="openForm('create')" v-hasPermi="['ecg:appointment:create']"> |
| | | <Icon icon="ep:plus" class="mr-5px" /> 新增 |
| | | </el-button> |
| | | <el-button |
| | | type="success" |
| | | plain |
| | | @click="handleExport" |
| | | :loading="exportLoading" |
| | | v-hasPermi="['ecg:appointment:export']" |
| | | > |
| | | <el-button type="success" plain @click="handleExport" :loading="exportLoading" |
| | | v-hasPermi="['ecg:appointment:export']"> |
| | | <Icon icon="ep:download" class="mr-5px" /> 导出 |
| | | </el-button> |
| | | </el-form-item> |
| | |
| | | |
| | | <!-- 列表 --> |
| | | <ContentWrap> |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="appointmentList" |
| | | :stripe="true" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="申请单号" align="center" prop="applyNo" min-width="110px" /> |
| | | <el-table v-loading="loading" :data="appointmentList" :stripe="true" :show-overflow-tooltip="true"> |
| | | <el-table-column label="申请单号" align="center" prop="applyNo" min-width="110px" /> |
| | | <el-table-column label="检查项目" align="center" prop="bookCheckType" min-width="120px"> |
| | | <template #default="scope"> |
| | | {{ getCheckTypeName(scope.row.bookCheckType) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="患者编号" align="center" prop="patId" /> |
| | | <el-table-column label="姓名" align="center" min-width="160px"> |
| | | <template #default="scope"> |
| | |
| | | <dict-tag :type="DICT_TYPE.ECG_PAT_SOURCE" :value="scope.row.patSrc" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="生日" |
| | | align="center" |
| | | prop="patBirthday" |
| | | :formatter="dateFormatter2" |
| | | width="110px" |
| | | /> |
| | | <el-table-column label="就诊号" align="center" prop="episodeId" min-width="110px" /> |
| | | <el-table-column label="多耐" align="center" width="110px"> |
| | | <template #default="scope"> |
| | | <dict-tag :type="DICT_TYPE.ECG_TOLERANCE" :value="scope.row.tolerance ?? 0" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="科室名称" align="center" prop="patDeptDesc" /> |
| | | <el-table-column label="病区" align="center" prop="patWardDesc" /> |
| | | <el-table-column label="床号" align="center" prop="patBedNo" /> |
| | | <!-- |
| | |
| | | {{scope.row.paid == 1 ? "已付" : ""}} |
| | | </template> |
| | | </el-table-column> |
| | | --> |
| | | |
| | | <el-table-column |
| | | label="预约日期" |
| | | align="center" |
| | | prop="bookDate" |
| | | :formatter="dateFormatter2" |
| | | width="120px" |
| | | /> |
| | | --> |
| | | <el-table-column label="预约日期" align="center" prop="bookDate" :formatter="dateFormatter2" width="120px" /> |
| | | <el-table-column label="预约时间段" align="center" prop="bookTimeslot" width="100px"> |
| | | <template #default="scope"> |
| | | <dict-tag :type="DICT_TYPE.ECG_BOOK_TIMESLOT" :value="scope.row.bookTimeslot" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="检查项目" align="center" prop="bookCheckType" min-width="120px"> |
| | | <template #default="scope"> |
| | | {{ getCheckTypeName(scope.row.bookCheckType) }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="开单时间" |
| | | align="center" |
| | | prop="createTime" |
| | | :formatter="dateFormatter2" |
| | | width="110px" |
| | | /> |
| | | <el-table-column |
| | | label="登记时间" |
| | | align="center" |
| | | prop="registerDate" |
| | | :formatter="dateFormatter2" |
| | | width="110px" |
| | | /> |
| | | <el-table-column label="开单医生" align="center" prop="doctor" width="110px" /> |
| | | <el-table-column label="手机" align="center" prop="patMobile" /> |
| | | <!-- 需求1:补齐患者信息 18 项中缺失的(年龄/性别/来源/登记时间/开单日期/距今天数/状态/门诊号/多耐) --> |
| | | <el-table-column label="性别" align="center" width="70px"> |
| | | <template #default="scope"> |
| | | <!-- 1男/2女;0 或缺失(HIS 未提供,实测库中有 2123 行=0)显示"未知" --> |
| | | <dict-tag v-if="scope.row.patGender === 1 || scope.row.patGender === 2" |
| | | :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.patGender" /> |
| | | <span v-else>未知</span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- 需求1:医嘱号(HIS observationRequest.id.item[root=2.16.156.10011.1.28])。 |
| | | <el-table-column label="开单时间" align="center" prop="createTime" :formatter="dateFormatter2" width="110px" /> |
| | | <el-table-column label="开单医生" align="center" prop="doctor" width="110px" /><!-- 需求1:医嘱号(HIS observationRequest.id.item[root=2.16.156.10011.1.28])。 |
| | | 该节点在规范中非必须项,历史数据(新增列之前采集的)为空,显示 '-'。 --> |
| | | <el-table-column label="医嘱号" align="center" prop="doctorAdviceNo" min-width="110px"> |
| | | <template #default="scope"> |
| | | {{ scope.row.doctorAdviceNo || '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="年龄" align="center" width="80px"> |
| | | <template #default="scope">{{ formatAge(scope.row.patBirthday) || '-' }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="来源" align="center" width="90px"> |
| | | <template #default="scope"> |
| | | <dict-tag v-if="scope.row.patSrc !== undefined && scope.row.patSrc !== null" |
| | | :type="DICT_TYPE.ECG_PAT_SOURCE" :value="scope.row.patSrc" /> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- 本列标签由「就诊卡号」改为「门诊号」(经确认):medical_card 全库为空, |
| | | 该列实际显示 outpatient_no;resolveCardNo 给出**来源标注**(详见《部署清单》5.1)。 --> |
| | | <el-table-column label="门诊号" align="center" min-width="140px"> |
| | | <template #default="scope"> |
| | | <span>{{ resolveCardNo(scope.row).value }}</span> |
| | | <el-tag v-if="resolveCardNo(scope.row).from" size="small" type="info" effect="plain" class="ml-1"> |
| | | {{ resolveCardNo(scope.row).from }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="多耐" align="center" width="110px"> |
| | | <template #default="scope"> |
| | | <dict-tag :type="DICT_TYPE.ECG_TOLERANCE" :value="scope.row.tolerance ?? 0" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="登记时间" align="center" min-width="150px"> |
| | |
| | | <el-table-column label="距今天数" align="center" width="90px"> |
| | | <template #default="scope">{{ formatDaysFromOrder(scope.row.doctorTime) || '-' }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="来源" align="center" width="90px"> |
| | | <template #default="scope"> |
| | | <dict-tag v-if="scope.row.patSrc !== undefined && scope.row.patSrc !== null" :type="DICT_TYPE.ECG_PAT_SOURCE" |
| | | :value="scope.row.patSrc" /> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="性别" align="center" width="70px"> |
| | | <template #default="scope"> |
| | | <!-- 1男/2女;0 或缺失(HIS 未提供,实测库中有 2123 行=0)显示"未知" --> |
| | | <dict-tag v-if="scope.row.patGender === 1 || scope.row.patGender === 2" :type="DICT_TYPE.SYSTEM_USER_SEX" |
| | | :value="scope.row.patGender" /> |
| | | <span v-else>未知</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="出生日期" align="center" prop="patBirthday" :formatter="dateFormatter2" width="110px" /> |
| | | <el-table-column label="手机" align="center" prop="patMobile" /> |
| | | <el-table-column label="年龄" align="center" width="80px"> |
| | | <template #default="scope">{{ formatAge(scope.row.patBirthday) || '-' }}</template> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="电话" align="center" prop="patPhone" />--> |
| | | <!-- <el-table-column label="身份证号" align="center" prop="patIdentityId" />--> |
| | | <!-- <el-table-column label="科室代码" align="center" prop="patDeptCode" /> --> |
| | | <el-table-column label="科室名称" align="center" prop="patDeptDesc" /> |
| | | <!-- <el-table-column label="科室名称" align="center" prop="patDeptDesc" /> --> |
| | | <el-table-column label="地址" align="center" prop="patAddr" /> |
| | | |
| | | <!-- <el-table-column label="病区代码" align="center" prop="patWardCode" /> --> |
| | | <el-table-column label="操作" fixed="right" align="center" min-width="220px"> |
| | | <template #default="scope"> |
| | | <el-button |
| | | link |
| | | type="primary" |
| | | @click="openForm('update', scope.row.id)" |
| | | v-hasPermi="['ecg:appointment:update']" |
| | | > |
| | | <el-button link type="primary" @click="openForm('update', scope.row.id)" |
| | | v-hasPermi="['ecg:appointment:update']"> |
| | | 编辑 |
| | | </el-button> |
| | | <el-button |
| | | link |
| | | type="primary" |
| | | @click="statusalter(scope.row)" |
| | | v-hasPermi="['ecg:appointment:update']" |
| | | > |
| | | <dict-tag |
| | | v-if="scope.row.status !== null && scope.row.status !== undefined && scope.row.status !== ''" |
| | | :type="DICT_TYPE.ECG_STATUS" |
| | | :value="scope.row.status" |
| | | /> |
| | | <el-button link type="primary" @click="statusalter(scope.row)" v-hasPermi="['ecg:appointment:update']"> |
| | | <dict-tag v-if="scope.row.status !== null && scope.row.status !== undefined && scope.row.status !== ''" |
| | | :type="DICT_TYPE.ECG_STATUS" :value="scope.row.status" /> |
| | | <div v-else>状态编辑</div> |
| | | </el-button> |
| | | <el-button |
| | | link |
| | | type="danger" |
| | | @click="handleDelete(scope.row.id)" |
| | | v-hasPermi="['ecg:appointment:delete']" |
| | | > |
| | | <el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['ecg:appointment:delete']"> |
| | | 删除 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- 分页 --> |
| | | <Pagination |
| | | :total="total" |
| | | v-model:page="queryParams.pageNo" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" /> |
| | | </ContentWrap> |
| | | |
| | | <!-- 表单弹窗:添加/修改 --> |
| | | <AppointmentForm ref="formRef" @event_appointment_success="getList" /> |
| | | <!-- 修改弹窗 --> |
| | |
| | | message.success(t('common.delSuccess')) |
| | | // 刷新列表 |
| | | await getList() |
| | | } catch {} |
| | | } catch { } |
| | | } |
| | | |
| | | /** 导出按钮操作 */ |