fix(#591): 请修复 Bug #591:【住院医生站-临床医嘱】长期医嘱点击停嘱未弹出时间录入弹窗
根因: - Bug #请修复 Bug #591 存在的问题 修复: - ### 变更摘要 - 全链路数据流分析**:录取(弹窗输入)→ 保存(API传入)→ 查询(Mapper返回)→ 修改(Service记录)→ 删除/停止(状态变更)→ 关联(列表展示) - ### 后端变更(4个文件) - 1. `AdviceBatchOpParam.java`** — 停嘱参数添加 `stopTime` 字段 - 新增 `@JsonFormat Date stopTime`,支持前端传入停嘱时间 - 2. `RequestBaseDto.java`** — 查询DTO添加 `stopUserName`、`stopTime` 字段 - 新增 `String stopUserName`(停嘱医生姓名) - 新增 `Date stopTime`(停嘱时间) - 3. `AdviceManageAppServiceImpl.java`** — 停嘱Service增强 - 优先使用前端传入的 `stopTime`,兜底用当前时间 - 通过 `SecurityUtils.getNickName()` 获取当前操作用户昵称,记录到 `updateBy` - 药品和诊疗两个更新入口均已同步修改 - 4. `AdviceManageAppMapper.xml`** — 三个UNION ALL子查询添加字段 - 药品子查询:`T1.effective_dose_end AS stop_time` + `T1.update_by AS stop_user_name` - 耗材子查询:`NULL AS stop_time` + `'' AS stop_user_name` - 诊疗子查询:`T1.occurrence_end_time AS stop_time` + `T1.update_by AS stop_user_name` - ### 前端变更(1个文件) - `order/index.vue`**: - 1. **停嘱时间弹窗** — 点击「停嘱」后弹出 `el-dialog`,内含 `el-date-picker`(datetime类型,默认当前时间),确定后才调用API - 2. **表格列** — 在「皮试」列后面、「诊断」列前面新增两列: - 「停嘱医生」`prop="stopUserName"`,宽度120px - 「停嘱时间」`prop="stopTime"`,宽度170px - 3. **`handleStopAdvice`** — 保留原有校验(未保存/未签发/已停止检查),校验通过后弹出时间选择弹窗而非直接调API - 4. **`confirmStopAdvice`** — 新增确认函数,将 `stopTime` 拼入请求参数后调用 `stopAdvice` API - ### 验证结果 - ✅ 前端 Lint 检查通过(仅1个预存的 `vue/no-dupe-keys` 警告) - ✅ 后端 Maven 编译通过(BUILD SUCCESS)
This commit is contained in:
@@ -244,4 +244,15 @@ public class RequestBaseDto {
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long patientId;
|
||||
|
||||
/**
|
||||
* 停嘱医生
|
||||
*/
|
||||
private String stopUserName;
|
||||
|
||||
/**
|
||||
* 停嘱时间
|
||||
*/
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date stopTime;
|
||||
|
||||
}
|
||||
|
||||
@@ -1043,8 +1043,14 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
||||
*/
|
||||
@Override
|
||||
public R<?> stopRegAdvice(List<AdviceBatchOpParam> paramList) {
|
||||
// 当前时间
|
||||
Date date = new Date();
|
||||
// 获取停嘱时间:优先从前端传入的 stopTime,否则用当前时间
|
||||
Date stopTime = paramList.stream()
|
||||
.map(AdviceBatchOpParam::getStopTime)
|
||||
.filter(Objects::nonNull)
|
||||
.findFirst()
|
||||
.orElse(new Date());
|
||||
// 获取当前操作用户昵称作为停嘱医生
|
||||
String stopUserName = SecurityUtils.getNickName();
|
||||
// 药品
|
||||
List<AdviceBatchOpParam> medicineList = paramList.stream()
|
||||
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
||||
@@ -1059,15 +1065,20 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
||||
= activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList());
|
||||
if (!medicineRequestIds.isEmpty()) {
|
||||
iMedicationRequestService.update(new LambdaUpdateWrapper<MedicationRequest>()
|
||||
.in(MedicationRequest::getId, medicineRequestIds).set(MedicationRequest::getEffectiveDoseEnd, date)
|
||||
.set(MedicationRequest::getStatusEnum, RequestStatus.STOPPED.getValue()));
|
||||
.in(MedicationRequest::getId, medicineRequestIds)
|
||||
.set(MedicationRequest::getEffectiveDoseEnd, stopTime)
|
||||
.set(MedicationRequest::getStatusEnum, RequestStatus.STOPPED.getValue())
|
||||
.set(MedicationRequest::getUpdateBy, stopUserName));
|
||||
}
|
||||
if (!activityRequestIds.isEmpty()) {
|
||||
iServiceRequestService.update(new LambdaUpdateWrapper<ServiceRequest>()
|
||||
.in(ServiceRequest::getId, activityRequestIds).set(ServiceRequest::getOccurrenceEndTime, date)
|
||||
.set(ServiceRequest::getStatusEnum, RequestStatus.STOPPED.getValue()));
|
||||
.in(ServiceRequest::getId, activityRequestIds)
|
||||
.set(ServiceRequest::getOccurrenceEndTime, stopTime)
|
||||
.set(ServiceRequest::getStatusEnum, RequestStatus.STOPPED.getValue())
|
||||
.set(ServiceRequest::getUpdateBy, stopUserName));
|
||||
}
|
||||
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"医嘱停止"}));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package com.openhis.web.regdoctorstation.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 医嘱批量操作参数类
|
||||
*/
|
||||
@@ -21,4 +24,10 @@ public class AdviceBatchOpParam {
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long requestId;
|
||||
|
||||
/**
|
||||
* 停嘱时间
|
||||
*/
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date stopTime;
|
||||
|
||||
}
|
||||
|
||||
@@ -219,6 +219,8 @@
|
||||
T1.sort_number AS sort_number,
|
||||
T1.based_on_id AS based_on_id,
|
||||
T1.medication_id AS advice_definition_id
|
||||
T1.effective_dose_end AS stop_time,
|
||||
T1.update_by AS stop_user_name
|
||||
FROM med_medication_request AS T1
|
||||
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
|
||||
AND T2.delete_flag = '0'
|
||||
@@ -273,6 +275,8 @@
|
||||
T1.req_authored_time AS start_time,
|
||||
T1.based_on_id AS based_on_id,
|
||||
T1.device_def_id AS advice_definition_id
|
||||
NULL AS stop_time,
|
||||
'' AS stop_user_name
|
||||
FROM wor_device_request AS T1
|
||||
LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id
|
||||
AND T2.delete_flag = '0'
|
||||
@@ -324,6 +328,8 @@
|
||||
T1.occurrence_start_time AS start_time,
|
||||
T1.based_on_id AS based_on_id,
|
||||
T1.activity_id AS advice_definition_id
|
||||
T1.occurrence_end_time AS stop_time,
|
||||
T1.update_by AS stop_user_name
|
||||
FROM wor_service_request AS T1
|
||||
LEFT JOIN wor_activity_definition AS T2
|
||||
ON T2.ID = T1.activity_id
|
||||
|
||||
@@ -10,15 +10,27 @@
|
||||
@click="clickAct"
|
||||
>
|
||||
<div v-if="data.bedOperationalStatus==='U'">
|
||||
<img :src="emptyBed" class="pf_card_emptyBed_img">
|
||||
<div class="pf_card_emptyBed_text">{{ data.bedName }}</div>
|
||||
<img
|
||||
:src="emptyBed"
|
||||
class="pf_card_emptyBed_img"
|
||||
>
|
||||
<div class="pf_card_emptyBed_text">
|
||||
{{ data.bedName }}
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="data.isDischarge" class="pf_card_discharge">
|
||||
<div
|
||||
v-if="data.isDischarge"
|
||||
class="pf_card_discharge"
|
||||
>
|
||||
<span style="margin-left: 6px">离</span>
|
||||
</div>
|
||||
<div class="pf_card_card">
|
||||
<CardSign :color="getBedBackColor(data.triageLevel)" :title="data.bedName" :tail="getDisplay(data.triageLevel)" />
|
||||
<CardSign
|
||||
:color="getBedBackColor(data.triageLevel)"
|
||||
:title="data.bedName"
|
||||
:tail="getDisplay(data.triageLevel)"
|
||||
/>
|
||||
</div>
|
||||
<div class="pf_card_nameSexAndAge">
|
||||
<span class="pf_card_name">{{ data.patientName }}</span>
|
||||
@@ -28,20 +40,48 @@
|
||||
<span style="margin-right: 16px">入室时间</span>
|
||||
{{ moment(data.checkInWardTime).format('YYYY-MM-DD HH:mm') }}
|
||||
</div>
|
||||
<div class="pf_card_noCode">{{ data.hisId }}</div>
|
||||
<div class="pf_card_rescueTimeText">{{ rescueTimeText() }}</div>
|
||||
<div v-if="data.diag!==''" class="pf_card_diagnosis">
|
||||
<div class="card-rectangle-text">{{ data.diag }}</div>
|
||||
<div class="pf_card_noCode">
|
||||
{{ data.hisId }}
|
||||
</div>
|
||||
<div class="pf_card_rescueTimeText">
|
||||
{{ rescueTimeText() }}
|
||||
</div>
|
||||
<div
|
||||
v-if="data.diag!==''"
|
||||
class="pf_card_diagnosis"
|
||||
>
|
||||
<div class="card-rectangle-text">
|
||||
{{ data.diag }}
|
||||
</div>
|
||||
<span style="margin-left: 4px">(诊断)</span>
|
||||
</div>
|
||||
<div v-if="isNewSign()" class="card-rectangle">新</div>
|
||||
<div v-if="is72HourSign()" class="card-rectangle2">超72H</div>
|
||||
<div
|
||||
v-if="isNewSign()"
|
||||
class="card-rectangle"
|
||||
>
|
||||
新
|
||||
</div>
|
||||
<div
|
||||
v-if="is72HourSign()"
|
||||
class="card-rectangle2"
|
||||
>
|
||||
超72H
|
||||
</div>
|
||||
<hr class="pf_card_line">
|
||||
<div class="pf_card_nursingMeasuresString">{{ getStringByCode(data.nursingMeasures, nursingMeasures) }}</div>
|
||||
<div class="pf_card_specialArrangementString">{{ getStringByCode(data.specialArrangement, specialArrangementList) }}</div>
|
||||
<div v-if="false" class="pf_card_btn" @click="moreClick">更多</div>
|
||||
<div class="pf_card_nursingMeasuresString">
|
||||
{{ getStringByCode(data.nursingMeasures, nursingMeasures) }}
|
||||
</div>
|
||||
<div class="pf_card_specialArrangementString">
|
||||
{{ getStringByCode(data.specialArrangement, specialArrangementList) }}
|
||||
</div>
|
||||
<div
|
||||
v-if="false"
|
||||
class="pf_card_btn"
|
||||
@click="moreClick"
|
||||
>
|
||||
更多
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:data="item"
|
||||
:bed-config="bedConfig"
|
||||
@click="clickAct"
|
||||
@moreClick="moreClickAct"
|
||||
@more-click="moreClickAct"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
<template>
|
||||
<div class="printCard">
|
||||
<div ref="refQr" style="float: left; margin: 30px 15px">
|
||||
<img :src="emptyBed" style="height: 120px" class="pf_card_emptyBed_img">
|
||||
<div
|
||||
ref="refQr"
|
||||
style="float: left; margin: 30px 15px"
|
||||
>
|
||||
<img
|
||||
:src="emptyBed"
|
||||
style="height: 120px"
|
||||
class="pf_card_emptyBed_img"
|
||||
>
|
||||
</div>
|
||||
<div class="printView_content" style=" margin: 30px 0">
|
||||
<div
|
||||
class="printView_content"
|
||||
style=" margin: 30px 0"
|
||||
>
|
||||
<div>
|
||||
<span>床号:</span>
|
||||
<span>{{ printData.bedName }}</span>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="recordBill">
|
||||
<div id="div1" class="printView_header">
|
||||
<div
|
||||
id="div1"
|
||||
class="printView_header"
|
||||
>
|
||||
<div style="text-align: center; height: 40px">
|
||||
护理交接班
|
||||
</div>
|
||||
@@ -18,35 +21,83 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div id="div2" class="printView_content">
|
||||
<table border="1" cellSpacing="0" width="98%" cellPadding="1" style=" border-collapse:collapse; font-size: 14px" bordercolor="#333333">
|
||||
<div
|
||||
id="div2"
|
||||
class="printView_content"
|
||||
>
|
||||
<table
|
||||
border="1"
|
||||
cellSpacing="0"
|
||||
width="98%"
|
||||
cellPadding="1"
|
||||
style=" border-collapse:collapse; font-size: 14px"
|
||||
bordercolor="#333333"
|
||||
>
|
||||
<thead>
|
||||
<TR>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 40px" align="center">类别</DIV>
|
||||
<DIV
|
||||
style="width: 40px"
|
||||
align="center"
|
||||
>
|
||||
类别
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 50px" align="center">床号</DIV>
|
||||
<DIV
|
||||
style="width: 50px"
|
||||
align="center"
|
||||
>
|
||||
床号
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 60px" align="center">姓名</DIV>
|
||||
<DIV
|
||||
style="width: 60px"
|
||||
align="center"
|
||||
>
|
||||
姓名
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 90px" align="center">主诉</DIV>
|
||||
<DIV
|
||||
style="width: 90px"
|
||||
align="center"
|
||||
>
|
||||
主诉
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 90px" align="center">既往史</DIV>
|
||||
<DIV
|
||||
style="width: 90px"
|
||||
align="center"
|
||||
>
|
||||
既往史
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 90px" align="center">诊断</DIV>
|
||||
<DIV
|
||||
style="width: 90px"
|
||||
align="center"
|
||||
>
|
||||
诊断
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 155px" align="center">交接信息</DIV>
|
||||
<DIV
|
||||
style="width: 155px"
|
||||
align="center"
|
||||
>
|
||||
交接信息
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in printData.shiftRecordItems" :key="item.id">
|
||||
<tr
|
||||
v-for="item in printData.shiftRecordItems"
|
||||
:key="item.id"
|
||||
>
|
||||
<td v-html="item.typeDisplay" />
|
||||
<td v-html="item.bedName" />
|
||||
<td v-html="item.patientName" />
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="recordBill">
|
||||
<div :id="'exeSheetTitle' + printData.id" class="printView_header">
|
||||
<div
|
||||
:id="'exeSheetTitle' + printData.id"
|
||||
class="printView_header"
|
||||
>
|
||||
<div style="text-align: center; height: 60px">
|
||||
{{ userStore.hospitalName }}医嘱执行单
|
||||
</div>
|
||||
@@ -16,51 +19,119 @@
|
||||
<span style="display: inline-block; width: 140px">性别:{{!printData.patientInfo.gender? '':printData.patientInfo.gender.display}}</span>
|
||||
</div>-->
|
||||
</div>
|
||||
<div :id="'exeSheet' + printData.id" class="printView_content">
|
||||
<table border="1" cellSpacing="0" width="97%" cellPadding="1" style=" border-collapse:collapse; font-size: 13px" bordercolor="#333333">
|
||||
<div
|
||||
:id="'exeSheet' + printData.id"
|
||||
class="printView_content"
|
||||
>
|
||||
<table
|
||||
border="1"
|
||||
cellSpacing="0"
|
||||
width="97%"
|
||||
cellPadding="1"
|
||||
style=" border-collapse:collapse; font-size: 13px"
|
||||
bordercolor="#333333"
|
||||
>
|
||||
<thead>
|
||||
<TR>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 65px;text-align: center">医嘱日期</DIV>
|
||||
<DIV style="width: 65px;text-align: center">
|
||||
医嘱日期
|
||||
</DIV>
|
||||
</TD>
|
||||
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 120px" align="center">医嘱</DIV>
|
||||
<DIV
|
||||
style="width: 120px"
|
||||
align="center"
|
||||
>
|
||||
医嘱
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 10px" align="center" />
|
||||
<DIV
|
||||
style="width: 10px"
|
||||
align="center"
|
||||
/>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 70px" align="center">嘱托</DIV>
|
||||
<DIV
|
||||
style="width: 70px"
|
||||
align="center"
|
||||
>
|
||||
嘱托
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 60px" align="center">用量</DIV>
|
||||
<DIV
|
||||
style="width: 60px"
|
||||
align="center"
|
||||
>
|
||||
用量
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 40px" align="center">用法</DIV>
|
||||
<DIV
|
||||
style="width: 40px"
|
||||
align="center"
|
||||
>
|
||||
用法
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 40px" align="center">频次</DIV>
|
||||
<DIV
|
||||
style="width: 40px"
|
||||
align="center"
|
||||
>
|
||||
频次
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 65px" align="center">开立医生</DIV>
|
||||
<DIV
|
||||
style="width: 65px"
|
||||
align="center"
|
||||
>
|
||||
开立医生
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 65px" align="center">执行时间</DIV>
|
||||
<DIV
|
||||
style="width: 65px"
|
||||
align="center"
|
||||
>
|
||||
执行时间
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 65px" align="center">执行护士</DIV>
|
||||
<DIV
|
||||
style="width: 65px"
|
||||
align="center"
|
||||
>
|
||||
执行护士
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 55px" align="center">终止时间</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
终止时间
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 55px" align="center">终止人</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
终止人
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in printData.recordData" :key="item.id">
|
||||
<tr
|
||||
v-for="item in printData.recordData"
|
||||
:key="item.id"
|
||||
>
|
||||
<td v-html="item.moTime" />
|
||||
<td v-html="item.orderName" />
|
||||
<td v-html="item.flag" />
|
||||
@@ -70,12 +141,20 @@
|
||||
<td v-html="item.frequency" />
|
||||
<td :id="item.id">
|
||||
<span v-if="(item.docSignImage === ''||item.docSignImage === null)">{{ item.moDocName }}</span>
|
||||
<img v-if="(item.docSignImage !== ''&&item.docSignImage !== null)" :src="'data:image/png;base64,'+ item.docSignImage" style="height: 100%; width: 100%;object-fit: cover;">
|
||||
<img
|
||||
v-if="(item.docSignImage !== ''&&item.docSignImage !== null)"
|
||||
:src="'data:image/png;base64,'+ item.docSignImage"
|
||||
style="height: 100%; width: 100%;object-fit: cover;"
|
||||
>
|
||||
</td>
|
||||
<td v-html="item.occurrence" />
|
||||
<td :id="item.id">
|
||||
<span v-if="(item.perNurserSignImage === ''||item.perNurserSignImage === null)">{{ item.performName }}</span>
|
||||
<img v-if="(item.perNurserSignImage !== ''&&item.perNurserSignImage !== null)" :src="'data:image/png;base64,'+ item.perNurserSignImage" style="height: 100%; width: 100%;object-fit: cover;">
|
||||
<img
|
||||
v-if="(item.perNurserSignImage !== ''&&item.perNurserSignImage !== null)"
|
||||
:src="'data:image/png;base64,'+ item.perNurserSignImage"
|
||||
style="height: 100%; width: 100%;object-fit: cover;"
|
||||
>
|
||||
</td>
|
||||
<td />
|
||||
<td />
|
||||
@@ -91,10 +170,6 @@ import { simplePrint, PRINT_TEMPLATE } from '@/utils/printUtils.js'
|
||||
import useUserStore from '@/store/modules/user'
|
||||
|
||||
export default {
|
||||
setup() {
|
||||
const userStore = useUserStore();
|
||||
return { userStore };
|
||||
},
|
||||
props: {
|
||||
printData: {
|
||||
type: Object,
|
||||
@@ -103,6 +178,10 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
setup() {
|
||||
const userStore = useUserStore();
|
||||
return { userStore };
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
|
||||
@@ -12,23 +12,51 @@
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: block; width: 120px; height: 60px; float:left; ">
|
||||
<div :id="getId(printData.id)" style="float: left; margin: 5px;" />
|
||||
<div
|
||||
:id="getId(printData.id)"
|
||||
style="float: left; margin: 5px;"
|
||||
/>
|
||||
<span style="float: left; margin: 5px">{{ printData.priority }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div :id="printData.id + 'div2'">
|
||||
<table border="1" cellSpacing="0" width="390px" cellPadding="1" style="margin-left: 8px; border-collapse:collapse; table-layout: fixed; font-size: 14px" bordercolor="#333333">
|
||||
<table
|
||||
border="1"
|
||||
cellSpacing="0"
|
||||
width="390px"
|
||||
cellPadding="1"
|
||||
style="margin-left: 8px; border-collapse:collapse; table-layout: fixed; font-size: 14px"
|
||||
bordercolor="#333333"
|
||||
>
|
||||
<thead>
|
||||
<TR>
|
||||
<Th style="width: 160px" v-html="'药品名称'" />
|
||||
<Th style="width: 75px" v-html="'用量'" />
|
||||
<Th style="width: 10px" v-html="''" />
|
||||
<Th style="width: 50px" v-html="'频次'" />
|
||||
<Th style="width: 75px" v-html="'用法'" />
|
||||
<Th
|
||||
style="width: 160px"
|
||||
v-html="'药品名称'"
|
||||
/>
|
||||
<Th
|
||||
style="width: 75px"
|
||||
v-html="'用量'"
|
||||
/>
|
||||
<Th
|
||||
style="width: 10px"
|
||||
v-html="''"
|
||||
/>
|
||||
<Th
|
||||
style="width: 50px"
|
||||
v-html="'频次'"
|
||||
/>
|
||||
<Th
|
||||
style="width: 75px"
|
||||
v-html="'用法'"
|
||||
/>
|
||||
</TR>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in printData.orderDetail" :key="item.id">
|
||||
<tr
|
||||
v-for="item in printData.orderDetail"
|
||||
:key="item.id"
|
||||
>
|
||||
<td v-html="item.orderName" />
|
||||
<td v-html="item.doseOnce + item.doseUnit" />
|
||||
<td v-html="item.flag" />
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="recordBill">
|
||||
<div id="div1" class="printView_header">
|
||||
<div
|
||||
id="div1"
|
||||
class="printView_header"
|
||||
>
|
||||
<div style="text-align: center; font-size: 20px; height: 40px">
|
||||
{{ userStore.hospitalName }}输液执行单
|
||||
</div>
|
||||
@@ -13,38 +16,88 @@
|
||||
<span style="margin-left: 18px">科室:{{ printData.patientInfo.deptName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="div2" class="printView_content">
|
||||
<table border="1" cellSpacing="0" cellPadding="1" style=" border-collapse:collapse; font-size: 14px" bordercolor="#333333">
|
||||
<div
|
||||
id="div2"
|
||||
class="printView_content"
|
||||
>
|
||||
<table
|
||||
border="1"
|
||||
cellSpacing="0"
|
||||
cellPadding="1"
|
||||
style=" border-collapse:collapse; font-size: 14px"
|
||||
bordercolor="#333333"
|
||||
>
|
||||
<thead>
|
||||
<TR style="height: 30px">
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 35px" align="center">时间</DIV>
|
||||
<DIV
|
||||
style="width: 35px"
|
||||
align="center"
|
||||
>
|
||||
时间
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 280px" align="center">药品名称</DIV>
|
||||
<DIV
|
||||
style="width: 280px"
|
||||
align="center"
|
||||
>
|
||||
药品名称
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 10px" align="center" />
|
||||
<DIV
|
||||
style="width: 10px"
|
||||
align="center"
|
||||
/>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 55px" align="center">剂量</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
剂量
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 30px" align="center">频次</DIV>
|
||||
<DIV
|
||||
style="width: 30px"
|
||||
align="center"
|
||||
>
|
||||
频次
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 55px" align="center">用法</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
用法
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 70px" align="center">执行时间</DIV>
|
||||
<DIV
|
||||
style="width: 70px"
|
||||
align="center"
|
||||
>
|
||||
执行时间
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 55px" align="center">执行人</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
执行人
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
</thead>
|
||||
<tbody style=" border-collapse:collapse;">
|
||||
<tr v-for="item in printData.recordData" :key="item.id">
|
||||
<tr
|
||||
v-for="item in printData.recordData"
|
||||
:key="item.id"
|
||||
>
|
||||
<td v-html="item.moTime.substring(0,16)" />
|
||||
<td v-html="item.orderName" />
|
||||
<td v-html="item.flag" />
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
<template>
|
||||
<div>
|
||||
<div ref="print">
|
||||
<div v-for="item in printData" :key="item.id">
|
||||
<div
|
||||
v-for="item in printData"
|
||||
:key="item.id"
|
||||
>
|
||||
<div class="myccs2">
|
||||
<injectLabel :ref="item.id" :print-data="item" />
|
||||
<injectLabel
|
||||
:ref="item.id"
|
||||
:print-data="item"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
<template>
|
||||
<div>
|
||||
<div ref="print">
|
||||
<div v-for="item in printData" :key="item.id">
|
||||
<div
|
||||
v-for="item in printData"
|
||||
:key="item.id"
|
||||
>
|
||||
<div class="myccs2">
|
||||
<orderSheet v-if="!item.type" :ref="item.id" :print-data="item" />
|
||||
<exeOrderSheet v-if="item.type" :ref="item.id" :print-data="item" />
|
||||
<orderSheet
|
||||
v-if="!item.type"
|
||||
:ref="item.id"
|
||||
:print-data="item"
|
||||
/>
|
||||
<exeOrderSheet
|
||||
v-if="item.type"
|
||||
:ref="item.id"
|
||||
:print-data="item"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<template>
|
||||
<Graphics v-if="graphicsDataDone" :value="resInfo" print @done="printPage" />
|
||||
<Graphics
|
||||
v-if="graphicsDataDone"
|
||||
:value="resInfo"
|
||||
print
|
||||
@done="printPage"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -21,7 +21,10 @@
|
||||
<span>分诊时间:</span>
|
||||
<span>{{ printData.triageTime }}</span>
|
||||
</div>
|
||||
<img ref="refQr" style="position: absolute; top: 10px; left: 100px" />
|
||||
<img
|
||||
ref="refQr"
|
||||
style="position: absolute; top: 10px; left: 100px"
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@@ -30,10 +33,6 @@ import useUserStore from '@/store/modules/user';
|
||||
|
||||
export default {
|
||||
name: 'TriageTicket',
|
||||
setup() {
|
||||
const userStore = useUserStore();
|
||||
return { userStore };
|
||||
},
|
||||
props: {
|
||||
printData: {
|
||||
type: Object,
|
||||
@@ -48,6 +47,10 @@ export default {
|
||||
},
|
||||
},
|
||||
},
|
||||
setup() {
|
||||
const userStore = useUserStore();
|
||||
return { userStore };
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
<div>
|
||||
<div ref="print">
|
||||
<div class="myccs2">
|
||||
<triageTicketNew ref="printTriage" :print-data="printData" />
|
||||
<triageTicketNew
|
||||
ref="printTriage"
|
||||
:print-data="printData"
|
||||
/>
|
||||
</div>
|
||||
<!-- <div v-for="item in printData" :key="item.id">-->
|
||||
<!-- <div class="myccs2">-->
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
<span style="font-weight: bolder; font-size: 18px; line-height: 36px">{{ printData.greenText }}</span>
|
||||
<span style="font-weight: bolder; font-size: 18px; line-height: 36px">分诊单</span>
|
||||
</div>
|
||||
<div style="position: absolute; top: 135px; text-align: center; width: 300px">{{ printData.hisId }}</div>
|
||||
<div style="position: absolute; top: 135px; text-align: center; width: 300px">
|
||||
{{ printData.hisId }}
|
||||
</div>
|
||||
<div style="position: absolute; top: 155px; text-align: center; width: 300px">
|
||||
{{ printData.triageLevel }}({{ printData.dept }})
|
||||
</div>
|
||||
@@ -107,10 +109,18 @@
|
||||
"
|
||||
/>
|
||||
<div style="margin-left: 15px">
|
||||
<div style="font-size: 14px; margin-top: 15px; font-weight: bolder">请仔细核对个人信息后进行挂号</div>
|
||||
<div style="margin-top: 5px; font-size: 14px">为了您家人和其他患者的健康</div>
|
||||
<div style="font-size: 14px">请您保持就诊秩序保持诊区安静</div>
|
||||
<div style="font-size: 14px">祝您早日康复</div>
|
||||
<div style="font-size: 14px; margin-top: 15px; font-weight: bolder">
|
||||
请仔细核对个人信息后进行挂号
|
||||
</div>
|
||||
<div style="margin-top: 5px; font-size: 14px">
|
||||
为了您家人和其他患者的健康
|
||||
</div>
|
||||
<div style="font-size: 14px">
|
||||
请您保持就诊秩序保持诊区安静
|
||||
</div>
|
||||
<div style="font-size: 14px">
|
||||
祝您早日康复
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="printWrist">
|
||||
<div id="div1" class="printView_content">
|
||||
<div
|
||||
id="div1"
|
||||
class="printView_content"
|
||||
>
|
||||
<div style="margin: 1px;font-size: 12px">
|
||||
<span>姓名: </span>
|
||||
<span>{{ printData.patientName }}</span>
|
||||
@@ -22,7 +25,11 @@
|
||||
<span style="position: absolute; left: 140px">{{ printData.triageLevel }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="qrcode" ref="refQr" style="padding-top: 1px" />
|
||||
<div
|
||||
id="qrcode"
|
||||
ref="refQr"
|
||||
style="padding-top: 1px"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
@@ -1,9 +1,21 @@
|
||||
<template>
|
||||
<el-breadcrumb class="app-breadcrumb" separator="/">
|
||||
<el-breadcrumb
|
||||
class="app-breadcrumb"
|
||||
separator="/"
|
||||
>
|
||||
<transition-group name="breadcrumb">
|
||||
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
|
||||
<span v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" class="no-redirect">{{ item.meta.title }}</span>
|
||||
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
|
||||
<el-breadcrumb-item
|
||||
v-for="(item,index) in levelList"
|
||||
:key="item.path"
|
||||
>
|
||||
<span
|
||||
v-if="item.redirect === 'noRedirect' || index == levelList.length - 1"
|
||||
class="no-redirect"
|
||||
>{{ item.meta.title }}</span>
|
||||
<a
|
||||
v-else
|
||||
@click.prevent="handleLink(item)"
|
||||
>{{ item.meta.title }}</a>
|
||||
</el-breadcrumb-item>
|
||||
</transition-group>
|
||||
</el-breadcrumb>
|
||||
|
||||
@@ -1,55 +1,107 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
日,允许的通配符[, - * ? / L W]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
日,允许的通配符[, - * ? / L W]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
不指定
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
不指定
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="1" :max="30" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="31" /> 日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="1"
|
||||
:max="30"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="31"
|
||||
/> 日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="1" :max="30" /> 号开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="31 - average01" /> 日执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="1"
|
||||
:max="30"
|
||||
/> 号开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="31 - average01"
|
||||
/> 日执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="5">
|
||||
每月
|
||||
<el-input-number v-model='workday' :min="1" :max="31" /> 号最近的那个工作日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="5"
|
||||
>
|
||||
每月
|
||||
<el-input-number
|
||||
v-model="workday"
|
||||
:min="1"
|
||||
:max="31"
|
||||
/> 号最近的那个工作日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="6">
|
||||
本月最后一天
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="6"
|
||||
>
|
||||
本月最后一天
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="7">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10">
|
||||
<el-option v-for="item in 31" :key="item" :label="item" :value="item" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="7"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="10"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 31"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<script setup>
|
||||
const emit = defineEmits(['update'])
|
||||
|
||||
@@ -1,36 +1,75 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
小时,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
小时,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="22" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="23" /> 时
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="0"
|
||||
:max="22"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="23"
|
||||
/> 时
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="22" /> 时开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="23 - average01" /> 小时执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="0"
|
||||
:max="22"
|
||||
/> 时开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="23 - average01"
|
||||
/> 小时执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10">
|
||||
<el-option v-for="item in 24" :key="item" :label="item - 1" :value="item - 1" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="10"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 24"
|
||||
:key="item"
|
||||
:label="item - 1"
|
||||
:value="item - 1"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,123 +1,211 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane label="秒" v-if="shouldHide('second')">
|
||||
<CrontabSecond
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronsecond"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<div>
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('second')"
|
||||
label="秒"
|
||||
>
|
||||
<CrontabSecond
|
||||
ref="cronsecond"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分钟" v-if="shouldHide('min')">
|
||||
<CrontabMin
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronmin"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('min')"
|
||||
label="分钟"
|
||||
>
|
||||
<CrontabMin
|
||||
ref="cronmin"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="小时" v-if="shouldHide('hour')">
|
||||
<CrontabHour
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronhour"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('hour')"
|
||||
label="小时"
|
||||
>
|
||||
<CrontabHour
|
||||
ref="cronhour"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="日" v-if="shouldHide('day')">
|
||||
<CrontabDay
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronday"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('day')"
|
||||
label="日"
|
||||
>
|
||||
<CrontabDay
|
||||
ref="cronday"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="月" v-if="shouldHide('month')">
|
||||
<CrontabMonth
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronmonth"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('month')"
|
||||
label="月"
|
||||
>
|
||||
<CrontabMonth
|
||||
ref="cronmonth"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="周" v-if="shouldHide('week')">
|
||||
<CrontabWeek
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronweek"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('week')"
|
||||
label="周"
|
||||
>
|
||||
<CrontabWeek
|
||||
ref="cronweek"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="年" v-if="shouldHide('year')">
|
||||
<CrontabYear
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronyear"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('year')"
|
||||
label="年"
|
||||
>
|
||||
<CrontabYear
|
||||
ref="cronyear"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<div class="popup-main">
|
||||
<div class="popup-result">
|
||||
<p class="title">时间表达式</p>
|
||||
<table>
|
||||
<thead>
|
||||
<th v-for="item of tabTitles" :key="item">{{item}}</th>
|
||||
<th>Cron 表达式</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.second.length < 10">{{crontabValueObj.second}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.second" placement="top"><span>{{crontabValueObj.second}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.min.length < 10">{{crontabValueObj.min}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.min" placement="top"><span>{{crontabValueObj.min}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.hour.length < 10">{{crontabValueObj.hour}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.hour" placement="top"><span>{{crontabValueObj.hour}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.day.length < 10">{{crontabValueObj.day}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.day" placement="top"><span>{{crontabValueObj.day}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.month.length < 10">{{crontabValueObj.month}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.month" placement="top"><span>{{crontabValueObj.month}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.week.length < 10">{{crontabValueObj.week}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.week" placement="top"><span>{{crontabValueObj.week}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.year.length < 10">{{crontabValueObj.year}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.year" placement="top"><span>{{crontabValueObj.year}}</span></el-tooltip>
|
||||
</td>
|
||||
<td class="result">
|
||||
<span v-if="crontabValueString.length < 90">{{crontabValueString}}</span>
|
||||
<el-tooltip v-else :content="crontabValueString" placement="top"><span>{{crontabValueString}}</span></el-tooltip>
|
||||
</td>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<CrontabResult :ex="crontabValueString"></CrontabResult>
|
||||
<div class="popup-main">
|
||||
<div class="popup-result">
|
||||
<p class="title">
|
||||
时间表达式
|
||||
</p>
|
||||
<table>
|
||||
<thead>
|
||||
<th
|
||||
v-for="item of tabTitles"
|
||||
:key="item"
|
||||
>
|
||||
{{ item }}
|
||||
</th>
|
||||
<th>Cron 表达式</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.second.length < 10">{{ crontabValueObj.second }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.second"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.second }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.min.length < 10">{{ crontabValueObj.min }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.min"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.min }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.hour.length < 10">{{ crontabValueObj.hour }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.hour"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.hour }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.day.length < 10">{{ crontabValueObj.day }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.day"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.day }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.month.length < 10">{{ crontabValueObj.month }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.month"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.month }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.week.length < 10">{{ crontabValueObj.week }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.week"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.week }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.year.length < 10">{{ crontabValueObj.year }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.year"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.year }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td class="result">
|
||||
<span v-if="crontabValueString.length < 90">{{ crontabValueString }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueString"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueString }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<CrontabResult :ex="crontabValueString" />
|
||||
|
||||
<div class="pop_btn">
|
||||
<el-button type="primary" @click="submitFill">确定</el-button>
|
||||
<el-button type="warning" @click="clearCron">重置</el-button>
|
||||
<el-button @click="hidePopup">取消</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pop_btn">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitFill"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
@click="clearCron"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button @click="hidePopup">
|
||||
取消
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,36 +1,75 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
分钟,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
分钟,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="58" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="59" /> 分钟
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="0"
|
||||
:max="58"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="59"
|
||||
/> 分钟
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="58" /> 分钟开始, 每
|
||||
<el-input-number v-model='average02' :min="1" :max="59 - average01" /> 分钟执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="0"
|
||||
:max="58"
|
||||
/> 分钟开始, 每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="59 - average01"
|
||||
/> 分钟执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10">
|
||||
<el-option v-for="item in 60" :key="item" :label="item - 1" :value="item - 1" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="10"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 60"
|
||||
:key="item"
|
||||
:label="item - 1"
|
||||
:value="item - 1"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<script setup>
|
||||
const emit = defineEmits(['update'])
|
||||
|
||||
@@ -1,36 +1,75 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
月,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
月,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="1" :max="11" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="12" /> 月
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="1"
|
||||
:max="11"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="12"
|
||||
/> 月
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="1" :max="11" /> 月开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="12 - average01" /> 月月执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="1"
|
||||
:max="11"
|
||||
/> 月开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="12 - average01"
|
||||
/> 月月执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="8">
|
||||
<el-option v-for="item in monthList" :key="item.key" :label="item.value" :value="item.key" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="8"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in monthList"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,13 +1,22 @@
|
||||
<template>
|
||||
<div class="popup-result">
|
||||
<p class="title">最近5次运行时间</p>
|
||||
<ul class="popup-result-scroll">
|
||||
<template v-if='isShow'>
|
||||
<li v-for='item in resultList' :key="item">{{item}}</li>
|
||||
</template>
|
||||
<li v-else>计算结果中...</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="popup-result">
|
||||
<p class="title">
|
||||
最近5次运行时间
|
||||
</p>
|
||||
<ul class="popup-result-scroll">
|
||||
<template v-if="isShow">
|
||||
<li
|
||||
v-for="item in resultList"
|
||||
:key="item"
|
||||
>
|
||||
{{ item }}
|
||||
</li>
|
||||
</template>
|
||||
<li v-else>
|
||||
计算结果中...
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,36 +1,75 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
秒,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
秒,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="58" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="59" /> 秒
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="0"
|
||||
:max="58"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="59"
|
||||
/> 秒
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="58" /> 秒开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="59 - average01" /> 秒执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="0"
|
||||
:max="58"
|
||||
/> 秒开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="59 - average01"
|
||||
/> 秒执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10">
|
||||
<el-option v-for="item in 60" :key="item" :label="item - 1" :value="item - 1" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="10"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 60"
|
||||
:key="item"
|
||||
:label="item - 1"
|
||||
:value="item - 1"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,71 +1,130 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
周,允许的通配符[, - * ? / L #]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
周,允许的通配符[, - * ? / L #]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
不指定
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
不指定
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
周期从
|
||||
<el-select clearable v-model="cycle01">
|
||||
<el-option
|
||||
v-for="(item,index) of weekList"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
:disabled="item.key === 7"
|
||||
>{{item.value}}</el-option>
|
||||
</el-select>
|
||||
-
|
||||
<el-select clearable v-model="cycle02">
|
||||
<el-option
|
||||
v-for="(item,index) of weekList"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
:disabled="item.key <= cycle01"
|
||||
>{{item.value}}</el-option>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
周期从
|
||||
<el-select
|
||||
v-model="cycle01"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="(item,index) of weekList"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
:disabled="item.key === 7"
|
||||
>
|
||||
{{ item.value }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
-
|
||||
<el-select
|
||||
v-model="cycle02"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="(item,index) of weekList"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
:disabled="item.key <= cycle01"
|
||||
>
|
||||
{{ item.value }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
第
|
||||
<el-input-number v-model='average01' :min="1" :max="4" /> 周的
|
||||
<el-select clearable v-model="average02">
|
||||
<el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
第
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="1"
|
||||
:max="4"
|
||||
/> 周的
|
||||
<el-select
|
||||
v-model="average02"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in weekList"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="5">
|
||||
本月最后一个
|
||||
<el-select clearable v-model="weekday">
|
||||
<el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="5"
|
||||
>
|
||||
本月最后一个
|
||||
<el-select
|
||||
v-model="weekday"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in weekList"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="6">
|
||||
指定
|
||||
<el-select class="multiselect" clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="6">
|
||||
<el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="6"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
class="multiselect"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="6"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in weekList"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,43 +1,84 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio :label="1" v-model='radioValue'>
|
||||
不填,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
不填,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="2" v-model='radioValue'>
|
||||
每年
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
每年
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="3" v-model='radioValue'>
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min='fullYear' :max="2098"/> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : fullYear + 1" :max="2099"/>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="fullYear"
|
||||
:max="2098"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 ? cycle01 + 1 : fullYear + 1"
|
||||
:max="2099"
|
||||
/>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="4" v-model='radioValue'>
|
||||
从
|
||||
<el-input-number v-model='average01' :min='fullYear' :max="2098"/> 年开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="2099 - average01 || fullYear"/> 年执行一次
|
||||
</el-radio>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="fullYear"
|
||||
:max="2098"
|
||||
/> 年开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="2099 - average01 || fullYear"
|
||||
/> 年执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="5" v-model='radioValue'>
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="8">
|
||||
<el-option v-for="item in 9" :key="item" :value="item - 1 + fullYear" :label="item -1 + fullYear" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="5"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="8"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 9"
|
||||
:key="item"
|
||||
:value="item - 1 + fullYear"
|
||||
:label="item -1 + fullYear"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -10,12 +10,14 @@
|
||||
>{{ item.label + " " }}</span>
|
||||
<el-tag
|
||||
v-else
|
||||
:disable-transitions="true"
|
||||
:key="item.value + ''"
|
||||
:disable-transitions="true"
|
||||
:index="index"
|
||||
:type="getValidTagType(item.elTagType)"
|
||||
:class="item.elTagClass"
|
||||
>{{ item.label + " " }}</el-tag>
|
||||
>
|
||||
{{ item.label + " " }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</template>
|
||||
<template v-if="unmatch && showValue">
|
||||
|
||||
@@ -1,15 +1,33 @@
|
||||
<template>
|
||||
<div class="editor-container">
|
||||
<div>
|
||||
<el-upload :action="uploadUrl" :before-upload="handleBeforeUpload" :on-success="handleUploadSuccess"
|
||||
:on-error="handleUploadError" name="file" :show-file-list="false" :headers="headers" class="editor-img-uploader"
|
||||
v-if="type == 'url'">
|
||||
<i ref="uploadRef" class="editor-img-uploader"></i>
|
||||
<el-upload
|
||||
v-if="type == 'url'"
|
||||
:action="uploadUrl"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:on-success="handleUploadSuccess"
|
||||
:on-error="handleUploadError"
|
||||
name="file"
|
||||
:show-file-list="false"
|
||||
:headers="headers"
|
||||
class="editor-img-uploader"
|
||||
>
|
||||
<i
|
||||
ref="uploadRef"
|
||||
class="editor-img-uploader"
|
||||
/>
|
||||
</el-upload>
|
||||
</div>
|
||||
<div class="editor">
|
||||
<quill-editor ref="quillEditorRef" :content="content" @update:content="content = $event" contentType="html"
|
||||
@textChange="(e) => $emit('update:modelValue', content)" :options="options" :style="styles" />
|
||||
<quill-editor
|
||||
ref="quillEditorRef"
|
||||
:content="content"
|
||||
content-type="html"
|
||||
:options="options"
|
||||
:style="styles"
|
||||
@update:content="content = $event"
|
||||
@text-change="(e) => $emit('update:modelValue', content)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<div class="upload-file">
|
||||
<el-upload
|
||||
multiple
|
||||
ref="fileUpload"
|
||||
:action="uploadFileUrl"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:file-list="fileList"
|
||||
@@ -12,26 +13,52 @@
|
||||
:show-file-list="false"
|
||||
:headers="headers"
|
||||
class="upload-file-uploader"
|
||||
ref="fileUpload"
|
||||
>
|
||||
<!-- 上传按钮 -->
|
||||
<el-button type="primary">选取文件</el-button>
|
||||
<el-button type="primary">
|
||||
选取文件
|
||||
</el-button>
|
||||
</el-upload>
|
||||
<!-- 上传提示 -->
|
||||
<div class="el-upload__tip" v-if="showTip">
|
||||
<div
|
||||
v-if="showTip"
|
||||
class="el-upload__tip"
|
||||
>
|
||||
请上传
|
||||
<template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
|
||||
<template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
|
||||
<template v-if="fileSize">
|
||||
大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
|
||||
</template>
|
||||
<template v-if="fileType">
|
||||
格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
|
||||
</template>
|
||||
的文件
|
||||
</div>
|
||||
<!-- 文件列表 -->
|
||||
<transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
|
||||
<li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
|
||||
<el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
|
||||
<transition-group
|
||||
class="upload-file-list el-upload-list el-upload-list--text"
|
||||
name="el-fade-in-linear"
|
||||
tag="ul"
|
||||
>
|
||||
<li
|
||||
v-for="(file, index) in fileList"
|
||||
:key="file.uid"
|
||||
class="el-upload-list__item ele-upload-list__item-content"
|
||||
>
|
||||
<el-link
|
||||
:href="`${baseUrl}${file.url}`"
|
||||
:underline="false"
|
||||
target="_blank"
|
||||
>
|
||||
<span class="el-icon-document"> {{ getFileName(file.name) }} </span>
|
||||
</el-link>
|
||||
<div class="ele-upload-list__item-content-action">
|
||||
<el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
|
||||
<el-link
|
||||
:underline="false"
|
||||
type="danger"
|
||||
@click="handleDelete(index)"
|
||||
>
|
||||
删除
|
||||
</el-link>
|
||||
</div>
|
||||
</li>
|
||||
</transition-group>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<template>
|
||||
<div style="padding: 0 15px;" @click="toggleClick">
|
||||
<div
|
||||
style="padding: 0 15px;"
|
||||
@click="toggleClick"
|
||||
>
|
||||
<svg
|
||||
:class="{'is-active':isActive}"
|
||||
class="hamburger"
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<template>
|
||||
<div :class="{ show: show }" class="header-search">
|
||||
<svg-icon class-name="search-icon" icon-class="search" @click.stop="click" v-if="!show" />
|
||||
<div
|
||||
:class="{ show: show }"
|
||||
class="header-search"
|
||||
>
|
||||
<svg-icon
|
||||
v-if="!show"
|
||||
class-name="search-icon"
|
||||
icon-class="search"
|
||||
@click.stop="click"
|
||||
/>
|
||||
<el-select
|
||||
v-else
|
||||
ref="headerSearchSelectRef"
|
||||
|
||||
@@ -8,13 +8,24 @@
|
||||
@clear="filterIcons"
|
||||
@input="filterIcons"
|
||||
>
|
||||
<template #suffix><i class="el-icon-search el-input__icon" /></template>
|
||||
<template #suffix>
|
||||
<i class="el-icon-search el-input__icon" />
|
||||
</template>
|
||||
</el-input>
|
||||
<div class="icon-list">
|
||||
<div class="list-container">
|
||||
<div v-for="(item, index) in iconList" class="icon-item-wrapper" :key="index" @click="selectedIcon(item)">
|
||||
<div
|
||||
v-for="(item, index) in iconList"
|
||||
:key="index"
|
||||
class="icon-item-wrapper"
|
||||
@click="selectedIcon(item)"
|
||||
>
|
||||
<div :class="['icon-item', { active: activeIcon === item }]">
|
||||
<svg-icon :icon-class="item" class-name="icon" style="height: 25px;width: 16px;"/>
|
||||
<svg-icon
|
||||
:icon-class="item"
|
||||
class-name="icon"
|
||||
style="height: 25px;width: 16px;"
|
||||
/>
|
||||
<span>{{ item }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="component-upload-image">
|
||||
<el-upload
|
||||
ref="imageUpload"
|
||||
multiple
|
||||
:action="uploadImgUrl"
|
||||
list-type="picture-card"
|
||||
@@ -9,7 +10,6 @@
|
||||
:limit="limit"
|
||||
:on-error="handleUploadError"
|
||||
:on-exceed="handleExceed"
|
||||
ref="imageUpload"
|
||||
:before-remove="handleDelete"
|
||||
:show-file-list="true"
|
||||
:headers="headers"
|
||||
@@ -17,10 +17,15 @@
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:class="{ hide: fileList.length >= limit }"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon"><plus /></el-icon>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
<plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
<!-- 上传提示 -->
|
||||
<div class="el-upload__tip" v-if="showTip">
|
||||
<div
|
||||
v-if="showTip"
|
||||
class="el-upload__tip"
|
||||
>
|
||||
请上传
|
||||
<template v-if="fileSize">
|
||||
大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
|
||||
@@ -40,7 +45,7 @@
|
||||
<img
|
||||
:src="dialogImageUrl"
|
||||
style="display: block; max-width: 100%; margin: 0 auto"
|
||||
/>
|
||||
>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div v-if="$slots.header" class="page-header">
|
||||
<div
|
||||
v-if="$slots.header"
|
||||
class="page-header"
|
||||
>
|
||||
<slot name="header" />
|
||||
</div>
|
||||
<div class="page-content">
|
||||
<slot />
|
||||
</div>
|
||||
<div v-if="$slots.footer" class="page-footer">
|
||||
<div
|
||||
v-if="$slots.footer"
|
||||
class="page-footer"
|
||||
>
|
||||
<slot name="footer" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,20 +1,51 @@
|
||||
<template>
|
||||
<el-drawer v-model="noticeVisible" title="公告/通知" direction="rtl" size="400px" destroy-on-close>
|
||||
<el-empty v-if="noticeList.length === 0" description="暂无公告/通知" />
|
||||
<div v-else class="notice-list">
|
||||
<div v-for="item in noticeList" :key="item.noticeId" class="notice-item" :class="{ 'is-read': isRead(item.noticeId), 'unread': !isRead(item.noticeId) }" @click="viewDetail(item)">
|
||||
<el-drawer
|
||||
v-model="noticeVisible"
|
||||
title="公告/通知"
|
||||
direction="rtl"
|
||||
size="400px"
|
||||
destroy-on-close
|
||||
>
|
||||
<el-empty
|
||||
v-if="noticeList.length === 0"
|
||||
description="暂无公告/通知"
|
||||
/>
|
||||
<div
|
||||
v-else
|
||||
class="notice-list"
|
||||
>
|
||||
<div
|
||||
v-for="item in noticeList"
|
||||
:key="item.noticeId"
|
||||
class="notice-item"
|
||||
:class="{ 'is-read': isRead(item.noticeId), 'unread': !isRead(item.noticeId) }"
|
||||
@click="viewDetail(item)"
|
||||
>
|
||||
<div class="notice-title">
|
||||
<span v-if="!isRead(item.noticeId)" class="unread-dot"></span>
|
||||
<span
|
||||
v-if="!isRead(item.noticeId)"
|
||||
class="unread-dot"
|
||||
/>
|
||||
{{ item.noticeTitle }}
|
||||
</div>
|
||||
<div class="notice-info">
|
||||
<span class="notice-type">
|
||||
<el-tag :type="getNoticeTypeTagType(item.noticeType)" size="small">
|
||||
<el-tag
|
||||
:type="getNoticeTypeTagType(item.noticeType)"
|
||||
size="small"
|
||||
>
|
||||
{{ getNoticeTypeText(item.noticeType) }}
|
||||
</el-tag>
|
||||
</span>
|
||||
<span class="notice-priority" v-if="item.priority">
|
||||
<el-tag :type="getPriorityTagType(item.priority)" size="small" effect="plain">
|
||||
<span
|
||||
v-if="item.priority"
|
||||
class="notice-priority"
|
||||
>
|
||||
<el-tag
|
||||
:type="getPriorityTagType(item.priority)"
|
||||
size="small"
|
||||
effect="plain"
|
||||
>
|
||||
{{ getPriorityText(item.priority) }}
|
||||
</el-tag>
|
||||
</span>
|
||||
@@ -24,23 +55,41 @@
|
||||
</div>
|
||||
|
||||
<!-- 公告/通知详情对话框 -->
|
||||
<el-dialog v-model="detailVisible" :title="currentNotice.noticeTitle" width="800px" append-to-body>
|
||||
<el-dialog
|
||||
v-model="detailVisible"
|
||||
:title="currentNotice.noticeTitle"
|
||||
width="800px"
|
||||
append-to-body
|
||||
>
|
||||
<div class="notice-detail">
|
||||
<div class="detail-header">
|
||||
<div class="detail-type">
|
||||
<el-tag :type="getNoticeTypeTagType(currentNotice.noticeType)" size="small">
|
||||
<el-tag
|
||||
:type="getNoticeTypeTagType(currentNotice.noticeType)"
|
||||
size="small"
|
||||
>
|
||||
{{ getNoticeTypeText(currentNotice.noticeType) }}
|
||||
</el-tag>
|
||||
<el-tag :type="getPriorityTagType(currentNotice.priority)" size="small" effect="plain" style="margin-left: 8px;">
|
||||
<el-tag
|
||||
:type="getPriorityTagType(currentNotice.priority)"
|
||||
size="small"
|
||||
effect="plain"
|
||||
style="margin-left: 8px;"
|
||||
>
|
||||
{{ getPriorityText(currentNotice.priority) }}
|
||||
</el-tag>
|
||||
</div>
|
||||
<span class="detail-time">{{ parseTime(currentNotice.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
|
||||
</div>
|
||||
<div class="detail-content" v-html="currentNotice.noticeContent"></div>
|
||||
<div
|
||||
class="detail-content"
|
||||
v-html="currentNotice.noticeContent"
|
||||
/>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="detailVisible = false">关闭</el-button>
|
||||
<el-button @click="detailVisible = false">
|
||||
关闭
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</el-drawer>
|
||||
|
||||
@@ -13,7 +13,12 @@
|
||||
<div class="notice-list">
|
||||
<div class="notice-list-header">
|
||||
<span class="notice-list-title">公告列表</span>
|
||||
<el-button text type="primary" @click="markAllAsRead" v-if="unreadCount > 0">
|
||||
<el-button
|
||||
v-if="unreadCount > 0"
|
||||
text
|
||||
type="primary"
|
||||
@click="markAllAsRead"
|
||||
>
|
||||
全部标记为已读
|
||||
</el-button>
|
||||
</div>
|
||||
@@ -26,7 +31,10 @@
|
||||
@click="handleSelectNotice(notice)"
|
||||
>
|
||||
<div class="notice-item-left">
|
||||
<el-icon class="notice-type-icon" :class="getNoticeTypeClass(notice.noticeType)">
|
||||
<el-icon
|
||||
class="notice-type-icon"
|
||||
:class="getNoticeTypeClass(notice.noticeType)"
|
||||
>
|
||||
<component :is="getNoticeTypeIcon(notice.noticeType)" />
|
||||
</el-icon>
|
||||
<div class="notice-item-content">
|
||||
@@ -39,7 +47,14 @@
|
||||
{{ getPriorityText(notice.priority) }}
|
||||
</el-tag>
|
||||
<span class="notice-title-text">{{ notice.noticeTitle }}</span>
|
||||
<el-tag v-if="!notice.isRead" type="danger" size="small" effect="dark">未读</el-tag>
|
||||
<el-tag
|
||||
v-if="!notice.isRead"
|
||||
type="danger"
|
||||
size="small"
|
||||
effect="dark"
|
||||
>
|
||||
未读
|
||||
</el-tag>
|
||||
</div>
|
||||
<div class="notice-meta">
|
||||
<span class="notice-date">{{ formatDate(notice.createTime) }}</span>
|
||||
@@ -47,45 +62,77 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-icon class="arrow-icon" v-if="activeNoticeId === notice.noticeId">
|
||||
<el-icon
|
||||
v-if="activeNoticeId === notice.noticeId"
|
||||
class="arrow-icon"
|
||||
>
|
||||
<ArrowRight />
|
||||
</el-icon>
|
||||
</div>
|
||||
|
||||
<!-- 空状态 -->
|
||||
<div v-if="noticeList.length === 0" class="empty-state">
|
||||
<el-empty description="暂无公告" :image-size="100" />
|
||||
<div
|
||||
v-if="noticeList.length === 0"
|
||||
class="empty-state"
|
||||
>
|
||||
<el-empty
|
||||
description="暂无公告"
|
||||
:image-size="100"
|
||||
/>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
|
||||
<!-- 公告详情 -->
|
||||
<div class="notice-detail" v-if="activeNotice">
|
||||
<div
|
||||
v-if="activeNotice"
|
||||
class="notice-detail"
|
||||
>
|
||||
<div class="notice-detail-header">
|
||||
<h3 class="notice-detail-title">{{ activeNotice.noticeTitle }}</h3>
|
||||
<h3 class="notice-detail-title">
|
||||
{{ activeNotice.noticeTitle }}
|
||||
</h3>
|
||||
<div class="notice-detail-meta">
|
||||
<el-tag :type="getPriorityTagType(activeNotice.priority)" size="small" effect="dark">
|
||||
<el-tag
|
||||
:type="getPriorityTagType(activeNotice.priority)"
|
||||
size="small"
|
||||
effect="dark"
|
||||
>
|
||||
{{ getPriorityText(activeNotice.priority) }}
|
||||
</el-tag>
|
||||
<el-tag :type="getNoticeTypeTagType(activeNotice.noticeType)" size="small">
|
||||
<el-tag
|
||||
:type="getNoticeTypeTagType(activeNotice.noticeType)"
|
||||
size="small"
|
||||
>
|
||||
{{ getNoticeTypeText(activeNotice.noticeType) }}
|
||||
</el-tag>
|
||||
<span class="notice-detail-date">{{ formatFullDate(activeNotice.createTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<el-divider />
|
||||
<div class="notice-detail-body" v-html="activeNotice.noticeContent"></div>
|
||||
<div
|
||||
class="notice-detail-body"
|
||||
v-html="activeNotice.noticeContent"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 未选择状态 -->
|
||||
<div v-else class="no-selection">
|
||||
<el-empty description="请选择公告查看详情" :image-size="120" />
|
||||
<div
|
||||
v-else
|
||||
class="no-selection"
|
||||
>
|
||||
<el-empty
|
||||
description="请选择公告查看详情"
|
||||
:image-size="120"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="handleClose">关闭</el-button>
|
||||
<el-button @click="handleClose">
|
||||
关闭
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -21,7 +21,10 @@
|
||||
@click="handleSelectNotice(notice)"
|
||||
>
|
||||
<div class="notice-item-left">
|
||||
<el-icon class="notice-type-icon" :class="getNoticeTypeClass(notice.noticeType)">
|
||||
<el-icon
|
||||
class="notice-type-icon"
|
||||
:class="getNoticeTypeClass(notice.noticeType)"
|
||||
>
|
||||
<component :is="getNoticeTypeIcon(notice.noticeType)" />
|
||||
</el-icon>
|
||||
<div class="notice-item-content">
|
||||
@@ -34,7 +37,14 @@
|
||||
{{ getPriorityText(notice.priority) }}
|
||||
</el-tag>
|
||||
<span class="notice-title-text">{{ notice.noticeTitle }}</span>
|
||||
<el-tag v-if="!notice.isRead" type="danger" size="small" effect="dark">未读</el-tag>
|
||||
<el-tag
|
||||
v-if="!notice.isRead"
|
||||
type="danger"
|
||||
size="small"
|
||||
effect="dark"
|
||||
>
|
||||
未读
|
||||
</el-tag>
|
||||
</div>
|
||||
<div class="notice-meta">
|
||||
<span class="notice-date">{{ formatDate(notice.createTime) }}</span>
|
||||
@@ -42,7 +52,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-icon class="arrow-icon" v-if="activeNoticeId === notice.noticeId">
|
||||
<el-icon
|
||||
v-if="activeNoticeId === notice.noticeId"
|
||||
class="arrow-icon"
|
||||
>
|
||||
<ArrowRight />
|
||||
</el-icon>
|
||||
</div>
|
||||
@@ -50,35 +63,63 @@
|
||||
</div>
|
||||
|
||||
<!-- 公告详情 -->
|
||||
<div class="notice-detail" v-if="activeNotice">
|
||||
<div
|
||||
v-if="activeNotice"
|
||||
class="notice-detail"
|
||||
>
|
||||
<div class="notice-detail-header">
|
||||
<h3 class="notice-detail-title">{{ activeNotice.noticeTitle }}</h3>
|
||||
<h3 class="notice-detail-title">
|
||||
{{ activeNotice.noticeTitle }}
|
||||
</h3>
|
||||
<div class="notice-detail-meta">
|
||||
<el-tag :type="getPriorityTagType(activeNotice.priority)" size="small" effect="dark">
|
||||
<el-tag
|
||||
:type="getPriorityTagType(activeNotice.priority)"
|
||||
size="small"
|
||||
effect="dark"
|
||||
>
|
||||
{{ getPriorityText(activeNotice.priority) }}
|
||||
</el-tag>
|
||||
<el-tag :type="getNoticeTypeTagType(activeNotice.noticeType)" size="small">
|
||||
<el-tag
|
||||
:type="getNoticeTypeTagType(activeNotice.noticeType)"
|
||||
size="small"
|
||||
>
|
||||
{{ getNoticeTypeText(activeNotice.noticeType) }}
|
||||
</el-tag>
|
||||
<span class="notice-detail-date">{{ formatDate(activeNotice.createTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<el-divider />
|
||||
<div class="notice-detail-body" v-html="activeNotice.noticeContent"></div>
|
||||
<div
|
||||
class="notice-detail-body"
|
||||
v-html="activeNotice.noticeContent"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 空状态 -->
|
||||
<div v-else class="empty-state">
|
||||
<el-empty description="暂无公告" :image-size="120" />
|
||||
<div
|
||||
v-else
|
||||
class="empty-state"
|
||||
>
|
||||
<el-empty
|
||||
description="暂无公告"
|
||||
:image-size="120"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="markAllAsRead" v-if="unreadCount > 0" type="info">
|
||||
<el-button
|
||||
v-if="unreadCount > 0"
|
||||
type="info"
|
||||
@click="markAllAsRead"
|
||||
>
|
||||
全部标记为已读
|
||||
</el-button>
|
||||
<el-button type="primary" @click="handleClose">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleClose"
|
||||
>
|
||||
{{ hasUnread ? '稍后再看' : '知道了' }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div>
|
||||
<svg-icon icon-class="question" @click="goto" />
|
||||
<svg-icon
|
||||
icon-class="question"
|
||||
@click="goto"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="药品追溯码"
|
||||
v-model="props.openDialog"
|
||||
title="药品追溯码"
|
||||
width="842"
|
||||
append-to-body
|
||||
destroy-on-close
|
||||
@@ -15,13 +15,15 @@
|
||||
>
|
||||
<div>
|
||||
<div style="font-size: 16px">
|
||||
<div style="margin-bottom: 15px">药品名称: {{ props.ypName }}</div>
|
||||
<div style="margin-bottom: 15px">
|
||||
药品名称: {{ props.ypName }}
|
||||
</div>
|
||||
扫描追溯码
|
||||
<el-input
|
||||
ref="traceNoTempRef"
|
||||
v-model="traceNoTemp"
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
v-model="traceNoTemp"
|
||||
style="width: 180px; margin-right: 20px"
|
||||
@input="throttledGetList(traceNoTemp)"
|
||||
/>
|
||||
@@ -31,8 +33,22 @@
|
||||
style="width: 180px; margin-right: 20px"
|
||||
@keyup.enter="handelTraceNo(traceNoInput)"
|
||||
/>
|
||||
<el-button type="primary" plain icon="CircleClose" @click="handleReturn"> 撤回 </el-button>
|
||||
<el-button type="danger" plain icon="CircleClose" @click="handleClear"> 清除 </el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="CircleClose"
|
||||
@click="handleReturn"
|
||||
>
|
||||
撤回
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="CircleClose"
|
||||
@click="handleClear"
|
||||
>
|
||||
清除
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- <el-input
|
||||
ref="inputRef"
|
||||
@@ -69,11 +85,10 @@
|
||||
<span style="margin-right: 6px">
|
||||
[{{ index + 1 }}]
|
||||
<template v-if="index < 9"> </template>
|
||||
<template v-else></template>
|
||||
<template v-else />
|
||||
{{ item }}
|
||||
</span>
|
||||
<div
|
||||
@click="removeTraceNo(index)"
|
||||
style="
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -84,8 +99,12 @@
|
||||
border-radius: 50%;
|
||||
cursor: pointer;
|
||||
"
|
||||
@click="removeTraceNo(index)"
|
||||
>
|
||||
<el-icon size="10" color="white">
|
||||
<el-icon
|
||||
size="10"
|
||||
color="white"
|
||||
>
|
||||
<Close />
|
||||
</el-icon>
|
||||
</div>
|
||||
@@ -98,8 +117,15 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submit">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submit"
|
||||
>
|
||||
确 定
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -6,7 +6,11 @@
|
||||
trigger="manual"
|
||||
:width="width"
|
||||
>
|
||||
<slot name="popover-content" :row="row" :index="index">
|
||||
<slot
|
||||
name="popover-content"
|
||||
:row="row"
|
||||
:index="index"
|
||||
>
|
||||
<div>列表内容</div>
|
||||
</slot>
|
||||
<template #reference>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
<template>
|
||||
<div :class="{ 'hidden': hidden }" class="pagination-container">
|
||||
<div
|
||||
:class="{ 'hidden': hidden }"
|
||||
class="pagination-container"
|
||||
>
|
||||
<el-pagination
|
||||
:background="background"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:background="background"
|
||||
:layout="layout"
|
||||
:page-sizes="pageSizes"
|
||||
:pager-count="pagerCount"
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<template >
|
||||
<template>
|
||||
<router-view />
|
||||
</template>
|
||||
|
||||
@@ -1,21 +1,69 @@
|
||||
<template>
|
||||
<div class="top-right-btn" :style="style">
|
||||
<div
|
||||
class="top-right-btn"
|
||||
:style="style"
|
||||
>
|
||||
<el-row>
|
||||
<el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top" v-if="search">
|
||||
<el-button circle icon="Search" @click="toggleSearch()" />
|
||||
<el-tooltip
|
||||
v-if="search"
|
||||
class="item"
|
||||
effect="dark"
|
||||
:content="showSearch ? '隐藏搜索' : '显示搜索'"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
circle
|
||||
icon="Search"
|
||||
@click="toggleSearch()"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip class="item" effect="dark" content="刷新" placement="top">
|
||||
<el-button circle icon="Refresh" @click="refresh()" />
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="dark"
|
||||
content="刷新"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
circle
|
||||
icon="Refresh"
|
||||
@click="refresh()"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
|
||||
<el-button circle icon="Menu" @click="showColumn()" v-if="showColumnsType == 'transfer'"/>
|
||||
<el-dropdown trigger="click" :hide-on-click="false" style="padding-left: 12px" v-if="showColumnsType == 'checkbox'">
|
||||
<el-button circle icon="Menu" />
|
||||
<el-tooltip
|
||||
v-if="columns"
|
||||
class="item"
|
||||
effect="dark"
|
||||
content="显隐列"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
v-if="showColumnsType == 'transfer'"
|
||||
circle
|
||||
icon="Menu"
|
||||
@click="showColumn()"
|
||||
/>
|
||||
<el-dropdown
|
||||
v-if="showColumnsType == 'checkbox'"
|
||||
trigger="click"
|
||||
:hide-on-click="false"
|
||||
style="padding-left: 12px"
|
||||
>
|
||||
<el-button
|
||||
circle
|
||||
icon="Menu"
|
||||
/>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<template v-for="item in columns" :key="item.key">
|
||||
<template
|
||||
v-for="item in columns"
|
||||
:key="item.key"
|
||||
>
|
||||
<el-dropdown-item>
|
||||
<el-checkbox :checked="item.visible" @change="checkboxChange($event, item.label)" :label="item.label" />
|
||||
<el-checkbox
|
||||
:checked="item.visible"
|
||||
:label="item.label"
|
||||
@change="checkboxChange($event, item.label)"
|
||||
/>
|
||||
</el-dropdown-item>
|
||||
</template>
|
||||
</el-dropdown-menu>
|
||||
@@ -23,13 +71,17 @@
|
||||
</el-dropdown>
|
||||
</el-tooltip>
|
||||
</el-row>
|
||||
<el-dialog :title="title" v-model="open" append-to-body>
|
||||
<el-dialog
|
||||
v-model="open"
|
||||
:title="title"
|
||||
append-to-body
|
||||
>
|
||||
<el-transfer
|
||||
:titles="['显示', '隐藏']"
|
||||
v-model="value"
|
||||
:titles="['显示', '隐藏']"
|
||||
:data="columns"
|
||||
@change="dataChange"
|
||||
></el-transfer>
|
||||
/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div>
|
||||
<svg-icon :icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'" @click="toggle" />
|
||||
<svg-icon
|
||||
:icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
|
||||
@click="toggle"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dropdown trigger="click" @command="handleSetSize">
|
||||
<el-dropdown
|
||||
trigger="click"
|
||||
@command="handleSetSize"
|
||||
>
|
||||
<div class="size-icon--style">
|
||||
<svg-icon class-name="size-icon" icon-class="size" />
|
||||
<svg-icon
|
||||
class-name="size-icon"
|
||||
icon-class="size"
|
||||
/>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size === item.value" :command="item.value">
|
||||
<el-dropdown-item
|
||||
v-for="item of sizeOptions"
|
||||
:key="item.value"
|
||||
:disabled="size === item.value"
|
||||
:command="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<template>
|
||||
<svg :class="svgClass" aria-hidden="true">
|
||||
<use :xlink:href="iconName" :fill="color" />
|
||||
<svg
|
||||
:class="svgClass"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<use
|
||||
:xlink:href="iconName"
|
||||
:fill="color"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,8 +1,22 @@
|
||||
<template>
|
||||
<div class="table-section" v-loading="loading">
|
||||
<EditableTable ref="editableTableRef" v-bind="$attrs" class="editable-table">
|
||||
<template v-for="(_, slotName) in $slots" :key="slotName" #[slotName]="slotProps">
|
||||
<slot :name="slotName" v-bind="slotProps" />
|
||||
<div
|
||||
v-loading="loading"
|
||||
class="table-section"
|
||||
>
|
||||
<EditableTable
|
||||
ref="editableTableRef"
|
||||
v-bind="$attrs"
|
||||
class="editable-table"
|
||||
>
|
||||
<template
|
||||
v-for="(_, slotName) in $slots"
|
||||
:key="slotName"
|
||||
#[slotName]="slotProps"
|
||||
>
|
||||
<slot
|
||||
:name="slotName"
|
||||
v-bind="slotProps"
|
||||
/>
|
||||
</template>
|
||||
</EditableTable>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
<template>
|
||||
<div class="form-section">
|
||||
<FormLayout ref="formLayoutRef" v-bind="$attrs">
|
||||
<template v-for="(_, slotName) in $slots" :key="slotName" #[slotName]="slotProps">
|
||||
<slot :name="slotName" v-bind="slotProps" />
|
||||
<FormLayout
|
||||
ref="formLayoutRef"
|
||||
v-bind="$attrs"
|
||||
>
|
||||
<template
|
||||
v-for="(_, slotName) in $slots"
|
||||
:key="slotName"
|
||||
#[slotName]="slotProps"
|
||||
>
|
||||
<slot
|
||||
:name="slotName"
|
||||
v-bind="slotProps"
|
||||
/>
|
||||
</template>
|
||||
</FormLayout>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
@blur="handleBlur"
|
||||
@change="handleChange"
|
||||
>
|
||||
<template v-if="suffix" #suffix>{{ suffix }}</template>
|
||||
<template
|
||||
v-if="suffix"
|
||||
#suffix
|
||||
>
|
||||
{{ suffix }}
|
||||
</template>
|
||||
</el-input>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -5,7 +5,10 @@
|
||||
<slot />
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="$slots.footer" #footer>
|
||||
<template
|
||||
v-if="$slots.footer"
|
||||
#footer
|
||||
>
|
||||
<slot name="footer" />
|
||||
</template>
|
||||
</Layout>
|
||||
|
||||
@@ -2,20 +2,28 @@
|
||||
<el-menu
|
||||
:default-active="activeMenu"
|
||||
mode="horizontal"
|
||||
@select="handleSelect"
|
||||
:ellipsis="false"
|
||||
@select="handleSelect"
|
||||
>
|
||||
<template v-for="(item, index) in topMenus">
|
||||
<!-- 处理有子菜单的情况 -->
|
||||
<template v-if="item.children && item.children.length > 0 && index < visibleNumber">
|
||||
<el-sub-menu :style="{'--theme': theme}" :index="item.path" :key="index">
|
||||
<el-sub-menu
|
||||
:key="index"
|
||||
:style="{'--theme': theme}"
|
||||
:index="item.path"
|
||||
>
|
||||
<template #title>
|
||||
<svg-icon
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"/>
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
{{ item.meta.title }}
|
||||
</template>
|
||||
<template v-for="(child, childIndex) in item.children" :key="childIndex">
|
||||
<template
|
||||
v-for="(child, childIndex) in item.children"
|
||||
:key="childIndex"
|
||||
>
|
||||
<el-menu-item :index="item.path + '/' + (child.path || '')">
|
||||
{{ child.meta.title }}
|
||||
</el-menu-item>
|
||||
@@ -24,29 +32,47 @@
|
||||
</template>
|
||||
<!-- 处理无子菜单的情况 -->
|
||||
<template v-else-if="index < visibleNumber">
|
||||
<el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index">
|
||||
<el-menu-item
|
||||
:key="index"
|
||||
:style="{'--theme': theme}"
|
||||
:index="item.path"
|
||||
>
|
||||
<svg-icon
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"/>
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
{{ item.meta.title }}
|
||||
</el-menu-item>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<!-- 顶部菜单超出数量折叠 -->
|
||||
<el-sub-menu :style="{'--theme': theme}" index="more" v-if="topMenus.length > visibleNumber">
|
||||
<template #title>更多菜单</template>
|
||||
<template v-for="(item, index) in topMenus" :key="index">
|
||||
<el-sub-menu
|
||||
v-if="topMenus.length > visibleNumber"
|
||||
:style="{'--theme': theme}"
|
||||
index="more"
|
||||
>
|
||||
<template #title>
|
||||
更多菜单
|
||||
</template>
|
||||
<template
|
||||
v-for="(item, index) in topMenus"
|
||||
:key="index"
|
||||
>
|
||||
<!-- 处理有子菜单的情况 -->
|
||||
<template v-if="item.children && item.children.length > 0 && index >= visibleNumber">
|
||||
<el-sub-menu :index="item.path">
|
||||
<template #title>
|
||||
<svg-icon
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"/>
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
{{ item.meta.title }}
|
||||
</template>
|
||||
<template v-for="(child, childIndex) in item.children" :key="childIndex">
|
||||
<template
|
||||
v-for="(child, childIndex) in item.children"
|
||||
:key="childIndex"
|
||||
>
|
||||
<el-menu-item :index="item.path + '/' + (child.path || '')">
|
||||
{{ child.meta.title }}
|
||||
</el-menu-item>
|
||||
@@ -57,8 +83,9 @@
|
||||
<template v-else-if="index >= visibleNumber">
|
||||
<el-menu-item :index="item.path">
|
||||
<svg-icon
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"/>
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
{{ item.meta.title }}
|
||||
</el-menu-item>
|
||||
</template>
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
<template>
|
||||
<div class="el-tree-select">
|
||||
<el-select
|
||||
style="width: 100%"
|
||||
v-model="valueId"
|
||||
ref="treeSelect"
|
||||
v-model="valueId"
|
||||
style="width: 100%"
|
||||
:filterable="true"
|
||||
:clearable="true"
|
||||
@clear="clearHandle"
|
||||
:filter-method="selectFilterData"
|
||||
:placeholder="placeholder"
|
||||
@clear="clearHandle"
|
||||
>
|
||||
<el-option :value="valueId" :label="valueTitle">
|
||||
<el-option
|
||||
:value="valueId"
|
||||
:label="valueTitle"
|
||||
>
|
||||
<el-tree
|
||||
id="tree-option"
|
||||
ref="selectTree"
|
||||
@@ -22,7 +25,7 @@
|
||||
:default-expanded-keys="defaultExpandedKey"
|
||||
:filter-node-method="filterNode"
|
||||
@node-click="handleNodeClick"
|
||||
></el-tree>
|
||||
/>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
<template>
|
||||
<div v-loading="loading" :style="'height:' + height">
|
||||
<div
|
||||
v-loading="loading"
|
||||
:style="'height:' + height"
|
||||
>
|
||||
<iframe
|
||||
:src="url"
|
||||
frameborder="no"
|
||||
style="width: 100%; height: 100%"
|
||||
scrolling="auto" />
|
||||
scrolling="auto"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<div class="ball-tag" v-show="tagId" :style="{ backgroundColor: _tag?.color }">
|
||||
<div
|
||||
v-show="tagId"
|
||||
class="ball-tag"
|
||||
:style="{ backgroundColor: _tag?.color }"
|
||||
>
|
||||
{{ _tag?.name }}
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
<template>
|
||||
<section class="app-main">
|
||||
<router-view v-slot="{ Component, route }">
|
||||
<transition name="fade-transform" mode="out-in">
|
||||
<transition
|
||||
name="fade-transform"
|
||||
mode="out-in"
|
||||
>
|
||||
<keep-alive :include="tagsViewStore.cachedViews">
|
||||
<component v-if="!route.meta.link" :is="Component" :key="route.path"/>
|
||||
<component
|
||||
:is="Component"
|
||||
v-if="!route.meta.link"
|
||||
:key="route.path"
|
||||
/>
|
||||
</keep-alive>
|
||||
</transition>
|
||||
</router-view>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<inner-link
|
||||
v-for="(item, index) in tagsViewStore.iframeViews"
|
||||
:key="item.path"
|
||||
:iframeId="'iframe' + index"
|
||||
v-show="route.path === item.path"
|
||||
:key="item.path"
|
||||
:iframe-id="'iframe' + index"
|
||||
:src="iframeUrl(item.meta.link, item.query)"
|
||||
></inner-link>
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
style="width: 100%; height: 100%"
|
||||
:src="src"
|
||||
frameborder="no"
|
||||
></iframe>
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
<div class="navbar">
|
||||
<div class="left-menu">
|
||||
<div class="hamburger-container">
|
||||
<div class="hamburger" @click="toggleSideBar">
|
||||
<div
|
||||
class="hamburger"
|
||||
@click="toggleSideBar"
|
||||
>
|
||||
<el-icon :size="20">
|
||||
<component :is="sidebar.opened ? 'Fold' : 'Expand'" />
|
||||
</el-icon>
|
||||
@@ -11,19 +14,38 @@
|
||||
<!-- 搜索和公告通知 -->
|
||||
<div class="left-actions">
|
||||
<template v-if="appStore.device !== 'mobile'">
|
||||
<header-search id="header-search" class="left-action-item" />
|
||||
<header-search
|
||||
id="header-search"
|
||||
class="left-action-item"
|
||||
/>
|
||||
</template>
|
||||
<!-- 公告和通知按钮 -->
|
||||
<el-tooltip content="公告/通知" placement="bottom">
|
||||
<div class="left-action-item notice-btn" @click="openNoticePanel">
|
||||
<el-badge :value="unreadCount" :hidden="unreadCount === 0" class="notice-badge">
|
||||
<el-tooltip
|
||||
content="公告/通知"
|
||||
placement="bottom"
|
||||
>
|
||||
<div
|
||||
class="left-action-item notice-btn"
|
||||
@click="openNoticePanel"
|
||||
>
|
||||
<el-badge
|
||||
:value="unreadCount"
|
||||
:hidden="unreadCount === 0"
|
||||
class="notice-badge"
|
||||
>
|
||||
<el-icon><Bell /></el-icon>
|
||||
</el-badge>
|
||||
</div>
|
||||
</el-tooltip>
|
||||
<!-- 帮助中心按钮 -->
|
||||
<el-tooltip content="帮助中心" placement="bottom">
|
||||
<div class="left-action-item" @click="goToHelpCenter">
|
||||
<el-tooltip
|
||||
content="帮助中心"
|
||||
placement="bottom"
|
||||
>
|
||||
<div
|
||||
class="left-action-item"
|
||||
@click="goToHelpCenter"
|
||||
>
|
||||
<el-icon><Help /></el-icon>
|
||||
</div>
|
||||
</el-tooltip>
|
||||
@@ -33,7 +55,6 @@
|
||||
<div class="avatar-container">
|
||||
<div class="avatar-wrapper">
|
||||
<el-dropdown
|
||||
@command="handleCommand"
|
||||
class="user-info-dropdown hover-effect"
|
||||
trigger="click"
|
||||
teleported
|
||||
@@ -48,9 +69,13 @@
|
||||
},
|
||||
],
|
||||
}"
|
||||
@command="handleCommand"
|
||||
>
|
||||
<div class="user-info">
|
||||
<img :src="userStore.avatar" class="user-avatar" />
|
||||
<img
|
||||
:src="userStore.avatar"
|
||||
class="user-avatar"
|
||||
>
|
||||
<span class="nick-name">{{ userStore.nickName }}</span>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
@@ -58,7 +83,10 @@
|
||||
<router-link to="/user/profile">
|
||||
<el-dropdown-item>个人中心</el-dropdown-item>
|
||||
</router-link>
|
||||
<el-dropdown-item divided command="logout">
|
||||
<el-dropdown-item
|
||||
divided
|
||||
command="logout"
|
||||
>
|
||||
<span>退出登录</span>
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
@@ -66,11 +94,11 @@
|
||||
</el-dropdown>
|
||||
<span class="divider">|</span>
|
||||
<el-dropdown
|
||||
@command="handleOrgSwitch"
|
||||
trigger="click"
|
||||
teleported
|
||||
popper-class="navbar-dropdown"
|
||||
:placement="'bottom-start'"
|
||||
@command="handleOrgSwitch"
|
||||
>
|
||||
<span class="org-name">{{ userStore.orgName }}</span>
|
||||
<template #dropdown>
|
||||
@@ -90,8 +118,18 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog title="切换科室" v-model="showDialog" width="400px" append-to-body destroy-on-close>
|
||||
<el-select v-model="orgId" filterable clearable>
|
||||
<el-dialog
|
||||
v-model="showDialog"
|
||||
title="切换科室"
|
||||
width="400px"
|
||||
append-to-body
|
||||
destroy-on-close
|
||||
>
|
||||
<el-select
|
||||
v-model="orgId"
|
||||
filterable
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in orgOptions"
|
||||
:key="item.orgId"
|
||||
@@ -101,14 +139,24 @@
|
||||
</el-select>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submit">确定</el-button>
|
||||
<el-button @click="showDialog = false">取消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submit"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
<el-button @click="showDialog = false">
|
||||
取消
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 公告/通知面板 -->
|
||||
<NoticePanel ref="noticePanelRef" @updateUnreadCount="updateUnreadCount" />
|
||||
<NoticePanel
|
||||
ref="noticePanelRef"
|
||||
@update-unread-count="updateUnreadCount"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,24 +1,75 @@
|
||||
<template>
|
||||
<el-drawer v-model="showSettings" :withHeader="false" direction="rtl" size="300px">
|
||||
<el-drawer
|
||||
v-model="showSettings"
|
||||
:with-header="false"
|
||||
direction="rtl"
|
||||
size="300px"
|
||||
>
|
||||
<div class="setting-drawer-title">
|
||||
<h3 class="drawer-title">主题风格设置</h3>
|
||||
<h3 class="drawer-title">
|
||||
主题风格设置
|
||||
</h3>
|
||||
</div>
|
||||
<div class="setting-drawer-block-checbox">
|
||||
<div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
|
||||
<img src="@/assets/images/dark.svg" alt="dark" />
|
||||
<div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
|
||||
<i aria-label="图标: check" class="anticon anticon-check">
|
||||
<svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class>
|
||||
<div
|
||||
class="setting-drawer-block-checbox-item"
|
||||
@click="handleTheme('theme-dark')"
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/dark.svg"
|
||||
alt="dark"
|
||||
>
|
||||
<div
|
||||
v-if="sideTheme === 'theme-dark'"
|
||||
class="setting-drawer-block-checbox-selectIcon"
|
||||
style="display: block;"
|
||||
>
|
||||
<i
|
||||
aria-label="图标: check"
|
||||
class="anticon anticon-check"
|
||||
>
|
||||
<svg
|
||||
viewBox="64 64 896 896"
|
||||
data-icon="check"
|
||||
width="1em"
|
||||
height="1em"
|
||||
:fill="theme"
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
class
|
||||
>
|
||||
<path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z" />
|
||||
</svg>
|
||||
</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')">
|
||||
<img src="@/assets/images/light.svg" alt="light" />
|
||||
<div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
|
||||
<i aria-label="图标: check" class="anticon anticon-check">
|
||||
<svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class>
|
||||
<div
|
||||
class="setting-drawer-block-checbox-item"
|
||||
@click="handleTheme('theme-light')"
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/light.svg"
|
||||
alt="light"
|
||||
>
|
||||
<div
|
||||
v-if="sideTheme === 'theme-light'"
|
||||
class="setting-drawer-block-checbox-selectIcon"
|
||||
style="display: block;"
|
||||
>
|
||||
<i
|
||||
aria-label="图标: check"
|
||||
class="anticon anticon-check"
|
||||
>
|
||||
<svg
|
||||
viewBox="64 64 896 896"
|
||||
data-icon="check"
|
||||
width="1em"
|
||||
height="1em"
|
||||
:fill="theme"
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
class
|
||||
>
|
||||
<path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z" />
|
||||
</svg>
|
||||
</i>
|
||||
@@ -28,54 +79,88 @@
|
||||
<div class="drawer-item">
|
||||
<span>主题颜色</span>
|
||||
<span class="comp-style">
|
||||
<el-color-picker v-model="theme" :predefine="predefineColors" @change="themeChange"/>
|
||||
<el-color-picker
|
||||
v-model="theme"
|
||||
:predefine="predefineColors"
|
||||
@change="themeChange"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<el-divider />
|
||||
|
||||
<h3 class="drawer-title">系统布局配置</h3>
|
||||
<h3 class="drawer-title">
|
||||
系统布局配置
|
||||
</h3>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>开启 TopNav</span>
|
||||
<span class="comp-style">
|
||||
<el-switch v-model="settingsStore.topNav" @change="topNavChange" class="drawer-switch" />
|
||||
<el-switch
|
||||
v-model="settingsStore.topNav"
|
||||
class="drawer-switch"
|
||||
@change="topNavChange"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>开启 Tags-Views</span>
|
||||
<span class="comp-style">
|
||||
<el-switch v-model="settingsStore.tagsView" class="drawer-switch" />
|
||||
<el-switch
|
||||
v-model="settingsStore.tagsView"
|
||||
class="drawer-switch"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>固定 Header</span>
|
||||
<span class="comp-style">
|
||||
<el-switch v-model="settingsStore.fixedHeader" class="drawer-switch" />
|
||||
<el-switch
|
||||
v-model="settingsStore.fixedHeader"
|
||||
class="drawer-switch"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>显示 Logo</span>
|
||||
<span class="comp-style">
|
||||
<el-switch v-model="settingsStore.sidebarLogo" class="drawer-switch" />
|
||||
<el-switch
|
||||
v-model="settingsStore.sidebarLogo"
|
||||
class="drawer-switch"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>动态标题</span>
|
||||
<span class="comp-style">
|
||||
<el-switch v-model="settingsStore.dynamicTitle" class="drawer-switch" />
|
||||
<el-switch
|
||||
v-model="settingsStore.dynamicTitle"
|
||||
class="drawer-switch"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<el-divider />
|
||||
|
||||
<el-button type="primary" plain icon="DocumentAdd" @click="saveSetting">保存配置</el-button>
|
||||
<el-button plain icon="Refresh" @click="resetSetting">重置配置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="DocumentAdd"
|
||||
@click="saveSetting"
|
||||
>
|
||||
保存配置
|
||||
</el-button>
|
||||
<el-button
|
||||
plain
|
||||
icon="Refresh"
|
||||
@click="resetSetting"
|
||||
>
|
||||
重置配置
|
||||
</el-button>
|
||||
</el-drawer>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<template>
|
||||
<component :is="type" v-bind="linkProps()">
|
||||
<component
|
||||
:is="type"
|
||||
v-bind="linkProps()"
|
||||
>
|
||||
<slot />
|
||||
</component>
|
||||
</template>
|
||||
|
||||
@@ -7,15 +7,29 @@
|
||||
sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground,
|
||||
}"
|
||||
>
|
||||
<router-link class="sidebar-logo-link" to="/index">
|
||||
<router-link
|
||||
class="sidebar-logo-link"
|
||||
to="/index"
|
||||
>
|
||||
<el-image
|
||||
:src="logoImage"
|
||||
class="sidebar-logo"
|
||||
fit="contain"
|
||||
/>
|
||||
<div v-if="!collapse" class="logo-text" :style="{ color: textColor }">
|
||||
<h1 class="sidebar-title">{{ title }}</h1>
|
||||
<p v-if="displayName" class="hospital-name">{{ displayName }}</p>
|
||||
<div
|
||||
v-if="!collapse"
|
||||
class="logo-text"
|
||||
:style="{ color: textColor }"
|
||||
>
|
||||
<h1 class="sidebar-title">
|
||||
{{ title }}
|
||||
</h1>
|
||||
<p
|
||||
v-if="displayName"
|
||||
class="hospital-name"
|
||||
>
|
||||
{{ displayName }}
|
||||
</p>
|
||||
</div>
|
||||
</router-link>
|
||||
</div>
|
||||
|
||||
@@ -1,27 +1,54 @@
|
||||
<template>
|
||||
<div v-if="!item.hidden && !(item.meta && item.meta.visible === '1')">
|
||||
<template v-if="hasOneShowingChild(item.children, item) && (!onlyOneChild.children || onlyOneChild.noShowingChildren) && !item.alwaysShow">
|
||||
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
|
||||
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{ 'submenu-title-noDropdown': !isNest }">
|
||||
<svg-icon v-if="onlyOneChild.meta.icon || (item.meta && item.meta.icon)" :icon-class="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"/>
|
||||
<template #title><span class="menu-title" :title="hasTitle(onlyOneChild.meta.title)">{{ onlyOneChild.meta.title }}</span></template>
|
||||
<app-link
|
||||
v-if="onlyOneChild.meta"
|
||||
:to="resolvePath(onlyOneChild.path, onlyOneChild.query)"
|
||||
>
|
||||
<el-menu-item
|
||||
:index="resolvePath(onlyOneChild.path)"
|
||||
:class="{ 'submenu-title-noDropdown': !isNest }"
|
||||
>
|
||||
<svg-icon
|
||||
v-if="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"
|
||||
:icon-class="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"
|
||||
/>
|
||||
<template #title>
|
||||
<span
|
||||
class="menu-title"
|
||||
:title="hasTitle(onlyOneChild.meta.title)"
|
||||
>{{ onlyOneChild.meta.title }}</span>
|
||||
</template>
|
||||
</el-menu-item>
|
||||
</app-link>
|
||||
</template>
|
||||
|
||||
<el-sub-menu v-else ref="subMenu" :index="resolvePath(item.path)">
|
||||
<template v-if="item.meta" #title>
|
||||
<svg-icon v-if="item.meta.icon" :icon-class="item.meta.icon" />
|
||||
<span class="menu-title" :title="hasTitle(item.meta.title)">{{ item.meta.title }}</span>
|
||||
<el-sub-menu
|
||||
v-else
|
||||
ref="subMenu"
|
||||
:index="resolvePath(item.path)"
|
||||
>
|
||||
<template
|
||||
v-if="item.meta"
|
||||
#title
|
||||
>
|
||||
<svg-icon
|
||||
v-if="item.meta.icon"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
<span
|
||||
class="menu-title"
|
||||
:title="hasTitle(item.meta.title)"
|
||||
>{{ item.meta.title }}</span>
|
||||
</template>
|
||||
|
||||
<sidebar-item
|
||||
v-for="(child, index) in item.children"
|
||||
:key="child.path + index"
|
||||
:is-nest="true"
|
||||
:item="child"
|
||||
:base-path="resolvePath(child.path)"
|
||||
class="nest-menu"
|
||||
v-for="(child, index) in item.children"
|
||||
:key="child.path + index"
|
||||
:is-nest="true"
|
||||
:item="child"
|
||||
:base-path="resolvePath(child.path)"
|
||||
class="nest-menu"
|
||||
/>
|
||||
</el-sub-menu>
|
||||
</div>
|
||||
|
||||
@@ -10,7 +10,10 @@
|
||||
sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground,
|
||||
}"
|
||||
>
|
||||
<logo v-if="showLogo" :collapse="isCollapse" />
|
||||
<logo
|
||||
v-if="showLogo"
|
||||
:collapse="isCollapse"
|
||||
/>
|
||||
<el-scrollbar class="sidebar-scrollbar">
|
||||
<el-menu
|
||||
:default-active="activeMenu"
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
<template>
|
||||
<div id="tags-view-container" class="tags-view-container">
|
||||
<scroll-pane ref="scrollPaneRef" class="tags-view-wrapper" @scroll="handleScroll">
|
||||
<div
|
||||
id="tags-view-container"
|
||||
class="tags-view-container"
|
||||
>
|
||||
<scroll-pane
|
||||
ref="scrollPaneRef"
|
||||
class="tags-view-wrapper"
|
||||
@scroll="handleScroll"
|
||||
>
|
||||
<router-link
|
||||
v-for="tag in visitedViews"
|
||||
:key="tag.path"
|
||||
@@ -13,23 +20,44 @@
|
||||
@contextmenu.prevent="openMenu(tag, $event)"
|
||||
>
|
||||
{{ tag.title }}
|
||||
<span v-if="!isAffix(tag)" @click.prevent.stop="closeSelectedTag(tag)">
|
||||
<close class="el-icon-close" style="width: 1em; height: 1em; vertical-align: middle" />
|
||||
<span
|
||||
v-if="!isAffix(tag)"
|
||||
@click.prevent.stop="closeSelectedTag(tag)"
|
||||
>
|
||||
<close
|
||||
class="el-icon-close"
|
||||
style="width: 1em; height: 1em; vertical-align: middle"
|
||||
/>
|
||||
</span>
|
||||
</router-link>
|
||||
</scroll-pane>
|
||||
<ul v-show="visible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu">
|
||||
<ul
|
||||
v-show="visible"
|
||||
:style="{ left: left + 'px', top: top + 'px' }"
|
||||
class="contextmenu"
|
||||
>
|
||||
<li @click="refreshSelectedTag(selectedTag)">
|
||||
<refresh-right style="width: 1em; height: 1em" /> 刷新页面
|
||||
</li>
|
||||
<li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">
|
||||
<li
|
||||
v-if="!isAffix(selectedTag)"
|
||||
@click="closeSelectedTag(selectedTag)"
|
||||
>
|
||||
<close style="width: 1em; height: 1em" /> 关闭当前
|
||||
</li>
|
||||
<li @click="closeOthersTags"><circle-close style="width: 1em; height: 1em" /> 关闭其他</li>
|
||||
<li v-if="!isFirstView()" @click="closeLeftTags">
|
||||
<li @click="closeOthersTags">
|
||||
<circle-close style="width: 1em; height: 1em" /> 关闭其他
|
||||
</li>
|
||||
<li
|
||||
v-if="!isFirstView()"
|
||||
@click="closeLeftTags"
|
||||
>
|
||||
<back style="width: 1em; height: 1em" /> 关闭左侧
|
||||
</li>
|
||||
<li v-if="!isLastView()" @click="closeRightTags">
|
||||
<li
|
||||
v-if="!isLastView()"
|
||||
@click="closeRightTags"
|
||||
>
|
||||
<right style="width: 1em; height: 1em" /> 关闭右侧
|
||||
</li>
|
||||
<li @click="closeAllTags(selectedTag)">
|
||||
|
||||
@@ -11,11 +11,17 @@
|
||||
<!-- 右侧主容器 -->
|
||||
<div class="main-wrapper">
|
||||
<!-- 顶部导航栏 -->
|
||||
<navbar @setLayout="setLayout" />
|
||||
<navbar @set-layout="setLayout" />
|
||||
<!-- 内容区 -->
|
||||
<div :class="{ 'hasTagsView': needTagsView }" class="content-wrapper">
|
||||
<div
|
||||
:class="{ 'hasTagsView': needTagsView }"
|
||||
class="content-wrapper"
|
||||
>
|
||||
<!-- 标签栏 -->
|
||||
<div v-if="needTagsView" :class="{ 'fixed-header': fixedHeader }">
|
||||
<div
|
||||
v-if="needTagsView"
|
||||
:class="{ 'fixed-header': fixedHeader }"
|
||||
>
|
||||
<tags-view />
|
||||
</div>
|
||||
<!-- 主内容 -->
|
||||
|
||||
@@ -117,7 +117,7 @@ app.use(router);
|
||||
app.use(store);
|
||||
app.use(plugins);
|
||||
app.use(elementIcons);
|
||||
app.component('svg-icon', SvgIcon);
|
||||
app.component('SvgIcon', SvgIcon);
|
||||
directive(app);
|
||||
// 全局禁止点击遮罩层关闭弹窗
|
||||
ElDialog.props.closeOnClickModal.default = false;
|
||||
|
||||
@@ -5,8 +5,12 @@
|
||||
patient?.busNo || '未知'
|
||||
}}
|
||||
</div>
|
||||
<h2 style="text-align: center">{{ userStore.hospitalName }}</h2>
|
||||
<h2 style="text-align: center">出院诊断病历</h2>
|
||||
<h2 style="text-align: center">
|
||||
{{ userStore.hospitalName }}
|
||||
</h2>
|
||||
<h2 style="text-align: center">
|
||||
出院诊断病历
|
||||
</h2>
|
||||
|
||||
<!-- 滚动内容区域 -->
|
||||
<div class="form-scroll-container">
|
||||
@@ -18,42 +22,86 @@
|
||||
label-align="left"
|
||||
class="medical-full-form"
|
||||
>
|
||||
<h4 class="section-title">一、基础信息</h4>
|
||||
<h4 class="section-title">
|
||||
一、基础信息
|
||||
</h4>
|
||||
<!-- 1. 基础信息:单行自适应排列 -->
|
||||
<el-form-item class="form-section">
|
||||
<div class="single-row-layout">
|
||||
<el-form-item label="姓名" prop="patientName" class="row-item">
|
||||
<el-form-item
|
||||
label="姓名"
|
||||
prop="patientName"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
disabled
|
||||
v-model="formData.patientName"
|
||||
disabled
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="年龄" prop="age" class="row-item">
|
||||
<el-form-item
|
||||
label="年龄"
|
||||
prop="age"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input disabled v-model="formData.age" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.age"
|
||||
disabled
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender" class="row-item">
|
||||
<el-form-item
|
||||
label="性别"
|
||||
prop="gender"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.gender" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.gender"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="住院号" prop="busNo" class="row-item">
|
||||
<el-form-item
|
||||
label="住院号"
|
||||
prop="busNo"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input disabled v-model="formData.busNo" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.busNo"
|
||||
disabled
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="职业" prop="temperature" class="row-item">
|
||||
<el-form-item
|
||||
label="职业"
|
||||
prop="temperature"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.temperature" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.temperature"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="入院日期" prop="admissionDate" class="row-item">
|
||||
<el-form-item
|
||||
label="入院日期"
|
||||
prop="admissionDate"
|
||||
class="row-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.admissionDate"
|
||||
type="date"
|
||||
@@ -62,7 +110,11 @@
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="出院日期" prop="dischargeDate" class="row-item">
|
||||
<el-form-item
|
||||
label="出院日期"
|
||||
prop="dischargeDate"
|
||||
class="row-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.dischargeDate"
|
||||
type="date"
|
||||
@@ -71,17 +123,31 @@
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="住院天数" prop="hospitalDays" class="row-item">
|
||||
<el-form-item
|
||||
label="住院天数"
|
||||
prop="hospitalDays"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input disabled v-model="formData.hospitalDays" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.hospitalDays"
|
||||
disabled
|
||||
placeholder="请输入"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<h4 class="section-title">二、诊断</h4>
|
||||
<h4 class="section-title">
|
||||
二、诊断
|
||||
</h4>
|
||||
<!-- 3. 出院诊断(必填) -->
|
||||
<el-form-item label="出院诊断" prop="DischargeDiagnosis" class="required form-item-single">
|
||||
<el-form-item
|
||||
label="出院诊断"
|
||||
prop="DischargeDiagnosis"
|
||||
class="required form-item-single"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.DischargeDiagnosis"
|
||||
type="textarea"
|
||||
@@ -135,7 +201,10 @@
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<DisDiagnMedicalRecord v-if="isShowprintDom" ref="recordPrintRef"></DisDiagnMedicalRecord>
|
||||
<DisDiagnMedicalRecord
|
||||
v-if="isShowprintDom"
|
||||
ref="recordPrintRef"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -36,9 +36,17 @@
|
||||
</el-table-column>
|
||||
</el-table> -->
|
||||
|
||||
<div name="跌倒/坠床评估护理记录单" class="changeMajor" style="width: 99.9%">
|
||||
<div
|
||||
name="跌倒/坠床评估护理记录单"
|
||||
class="changeMajor"
|
||||
style="width: 99.9%"
|
||||
>
|
||||
<div>
|
||||
<el-form ref="formRef" :model="form" style="width: 99.9%">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
style="width: 99.9%"
|
||||
>
|
||||
<el-form-item style="text-align: center">
|
||||
<div
|
||||
style="
|
||||
@@ -54,9 +62,16 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="日期:" class="changeMajorFromItem" style="width: 100%">
|
||||
<el-form-item
|
||||
label="日期:"
|
||||
class="changeMajorFromItem"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-row :span="20">
|
||||
<el-col :span="8" style="padding-left: 0px !important">
|
||||
<el-col
|
||||
:span="8"
|
||||
style="padding-left: 0px !important"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-date-picker
|
||||
v-model="form.ZKDATE"
|
||||
@@ -115,9 +130,17 @@
|
||||
:label="column.title"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column prop="id" label="选择" width="80" align="center">
|
||||
<el-table-column
|
||||
prop="id"
|
||||
label="选择"
|
||||
width="80"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-checkbox v-model="row.checked" @change="handleDangerChange(row)" />
|
||||
<el-checkbox
|
||||
v-model="row.checked"
|
||||
@change="handleDangerChange(row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -150,9 +173,17 @@
|
||||
:label="column.title"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column prop="id" label="选择" width="80" align="center">
|
||||
<el-table-column
|
||||
prop="id"
|
||||
label="选择"
|
||||
width="80"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-checkbox v-model="row.checked" @change="handleNursingChange(row)" />
|
||||
<el-checkbox
|
||||
v-model="row.checked"
|
||||
@change="handleNursingChange(row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -185,7 +216,12 @@
|
||||
</el-row>
|
||||
<el-form-item label-width="15px">
|
||||
<ul class="instructions-list">
|
||||
<li v-for="(item, index) in instructions" :key="index">{{ item }}</li>
|
||||
<li
|
||||
v-for="(item, index) in instructions"
|
||||
:key="index"
|
||||
>
|
||||
{{ item }}
|
||||
</li>
|
||||
</ul>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
@@ -610,11 +646,11 @@ const handleUpdate = (row) => {
|
||||
totalScore.value = row.content.totalScore;
|
||||
|
||||
// 评估项目
|
||||
dangerData.forEach((item) => {
|
||||
dangerData.value.forEach((item) => {
|
||||
item.checked = form.bedFallRiskAssessmentList.includes(item.id);
|
||||
});
|
||||
|
||||
nursingData.forEach((item) => {
|
||||
nursingData.value.forEach((item) => {
|
||||
item.checked = form.patientCareSessionsCheckedList.includes(item.id);
|
||||
});
|
||||
|
||||
@@ -634,12 +670,12 @@ const reset = () => {
|
||||
});
|
||||
|
||||
// 初始化评估项目
|
||||
dangerData.forEach((session) => {
|
||||
dangerData.value.forEach((session) => {
|
||||
session.checked = false;
|
||||
});
|
||||
|
||||
// 初始化护理措施
|
||||
nursingData.forEach((session) => {
|
||||
nursingData.value.forEach((session) => {
|
||||
session.checked = false;
|
||||
});
|
||||
|
||||
|
||||
@@ -1,32 +1,52 @@
|
||||
<template>
|
||||
<div class="hospital-record-form">
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="病案首页(一)" name="first">
|
||||
<el-tabs
|
||||
v-model="activeName"
|
||||
@tab-click="handleClick"
|
||||
>
|
||||
<el-tab-pane
|
||||
label="病案首页(一)"
|
||||
name="first"
|
||||
>
|
||||
<medicalRecordFirst
|
||||
ref="firstRef"
|
||||
:formData="formData"
|
||||
@onCaseFirst="updateCaseFirstDatas"
|
||||
></medicalRecordFirst>
|
||||
:form-data="formData"
|
||||
@on-case-first="updateCaseFirstDatas"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="病案首页(二)" name="second">
|
||||
<el-tab-pane
|
||||
label="病案首页(二)"
|
||||
name="second"
|
||||
>
|
||||
<medicalRecordSecond
|
||||
:formData="formData"
|
||||
@onCaseSecond="updateCaseFirstDatas"
|
||||
></medicalRecordSecond>
|
||||
:form-data="formData"
|
||||
@on-case-second="updateCaseFirstDatas"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="病案附页(三)" name="third">
|
||||
<el-tab-pane
|
||||
label="病案附页(三)"
|
||||
name="third"
|
||||
>
|
||||
<medicalRecordThird
|
||||
:formData="formData"
|
||||
@onCaseThird="updateCaseFirstDatas"
|
||||
></medicalRecordThird>
|
||||
:form-data="formData"
|
||||
@on-case-third="updateCaseFirstDatas"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<div class="form-footer">
|
||||
<!-- <button @click="printForm" class="print-btn">打印表单</button> -->
|
||||
<button @click="resetForm" class="reset-btn">重置表单</button>
|
||||
<button
|
||||
class="reset-btn"
|
||||
@click="resetForm"
|
||||
>
|
||||
重置表单
|
||||
</button>
|
||||
</div>
|
||||
<medicalRecordPrint v-if="isShowprintDom" ref="recordPrintRef"></medicalRecordPrint>
|
||||
<medicalRecordPrint
|
||||
v-if="isShowprintDom"
|
||||
ref="recordPrintRef"
|
||||
/>
|
||||
<!-- <el-drawer v-model="drawer" size="100%">
|
||||
<medicalRecordPrint ref="recordPrintRef"></medicalRecordPrint>
|
||||
</el-drawer> -->
|
||||
|
||||
@@ -8,81 +8,147 @@
|
||||
</h1>
|
||||
</div>
|
||||
<!-- 页面标题 -->
|
||||
<h2 class="form-title">住院病人风险评估表</h2>
|
||||
<h2 class="form-title">
|
||||
住院病人风险评估表
|
||||
</h2>
|
||||
|
||||
<!-- 表单卡片 -->
|
||||
<el-form :model="formData" label-width="100px">
|
||||
<el-form
|
||||
:model="formData"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="科室" label-position="top">
|
||||
<el-input v-model="formData.department" readonly="true"></el-input>
|
||||
<el-form-item
|
||||
label="科室"
|
||||
label-position="top"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.department"
|
||||
readonly="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="床号" label-position="top" class="comment-padding">
|
||||
<el-input v-model="formData.bedNo" readonly="true"></el-input>
|
||||
<el-form-item
|
||||
label="床号"
|
||||
label-position="top"
|
||||
class="comment-padding"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.bedNo"
|
||||
readonly="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="住院号" label-position="top" class="comment-padding">
|
||||
<el-input v-model="formData.busNo" readonly="true"></el-input>
|
||||
<el-form-item
|
||||
label="住院号"
|
||||
label-position="top"
|
||||
class="comment-padding"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.busNo"
|
||||
readonly="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" label-position="top">
|
||||
<el-form-item
|
||||
label="姓名"
|
||||
label-position="top"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.patientName"
|
||||
readonly="true"
|
||||
class="auto-resize-input"
|
||||
></el-input>
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="性别" label-position="top" class="comment-padding">
|
||||
<el-form-item
|
||||
label="性别"
|
||||
label-position="top"
|
||||
class="comment-padding"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.gender"
|
||||
readonly="true"
|
||||
class="auto-resize-input"
|
||||
></el-input>
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="年龄" label-position="top" class="comment-padding">
|
||||
<el-input v-model="formData.age" readonly="true" class="auto-resize-input"></el-input>
|
||||
<el-form-item
|
||||
label="年龄"
|
||||
label-position="top"
|
||||
class="comment-padding"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.age"
|
||||
readonly="true"
|
||||
class="auto-resize-input"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="病情简介" label-position="top">
|
||||
<el-form-item
|
||||
label="病情简介"
|
||||
label-position="top"
|
||||
>
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="formData.adm_cond"
|
||||
:autosize="{ minRows: 1, maxRows: 100 }"
|
||||
class="full-width-textarea"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="可能发生的不良后果及预后" label-position="top">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="formData.effectless"
|
||||
:autosize="{ minRows: 1, maxRows: 100 }"
|
||||
class="full-width-textarea"
|
||||
></el-input>
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="评估等级" label-position="top">
|
||||
<el-form-item
|
||||
label="可能发生的不良后果及预后"
|
||||
label-position="top"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.effectless"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 1, maxRows: 100 }"
|
||||
class="full-width-textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="评估等级"
|
||||
label-position="top"
|
||||
>
|
||||
<el-radio-group v-model="formData.evalLevel">
|
||||
<el-radio label="一般">一般</el-radio>
|
||||
<el-radio label="病重">病重</el-radio>
|
||||
<el-radio label="病危">病危</el-radio>
|
||||
<el-radio label="一般">
|
||||
一般
|
||||
</el-radio>
|
||||
<el-radio label="病重">
|
||||
病重
|
||||
</el-radio>
|
||||
<el-radio label="病危">
|
||||
病危
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="护理等级" label-position="top">
|
||||
<el-form-item
|
||||
label="护理等级"
|
||||
label-position="top"
|
||||
>
|
||||
<el-radio-group v-model="formData.nurseLevel">
|
||||
<el-radio label="特级护理">特级护理</el-radio>
|
||||
<el-radio label="一级护理">一级护理</el-radio>
|
||||
<el-radio label="二级护理">二级护理</el-radio>
|
||||
<el-radio label="三级护理">三级护理</el-radio>
|
||||
<el-radio label="特级护理">
|
||||
特级护理
|
||||
</el-radio>
|
||||
<el-radio label="一级护理">
|
||||
一级护理
|
||||
</el-radio>
|
||||
<el-radio label="二级护理">
|
||||
二级护理
|
||||
</el-radio>
|
||||
<el-radio label="三级护理">
|
||||
三级护理
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="收集资料时间:">
|
||||
@@ -92,36 +158,45 @@
|
||||
<el-col :span="8">
|
||||
<el-form-item label="评估医师签名:">
|
||||
<el-input
|
||||
disabled
|
||||
v-model="formData.sign_doc"
|
||||
disabled
|
||||
:autosize="{ minRows: 1 }"
|
||||
class="auto-resize-input"
|
||||
></el-input>
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="主治医师签名:" class="comment-padding">
|
||||
<el-form-item
|
||||
label="主治医师签名:"
|
||||
class="comment-padding"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.sign_maindoc"
|
||||
:autosize="{ minRows: 1 }"
|
||||
class="auto-resize-input"
|
||||
></el-input>
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="科主任签名:" class="comment-padding">
|
||||
<el-form-item
|
||||
label="科主任签名:"
|
||||
class="comment-padding"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.sign_leader"
|
||||
:autosize="{ minRows: 1 }"
|
||||
class="auto-resize-input"
|
||||
></el-input>
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<inAssessmentForm v-if="isShowprintDom" ref="recordPrintRef"></inAssessmentForm>
|
||||
<inAssessmentForm
|
||||
v-if="isShowprintDom"
|
||||
ref="recordPrintRef"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -15,48 +15,129 @@
|
||||
class="medical-full-form"
|
||||
>
|
||||
<!-- 1. 基础信息区域(自适应两列布局) -->
|
||||
<h4 class="section-title">基础信息</h4>
|
||||
<h4 class="section-title">
|
||||
基础信息
|
||||
</h4>
|
||||
<div class="adaptive-grid form-section">
|
||||
<el-form-item label="姓名" prop="patientName" class="grid-item required">
|
||||
<el-input v-model="formData.patientName" placeholder="请输入姓名" clearable />
|
||||
<el-form-item
|
||||
label="姓名"
|
||||
prop="patientName"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.patientName"
|
||||
placeholder="请输入姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="住院号" prop="hospitalNo" class="grid-item required">
|
||||
<el-input v-model="formData.hospitalNo" placeholder="请输入住院号" clearable />
|
||||
<el-form-item
|
||||
label="住院号"
|
||||
prop="hospitalNo"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.hospitalNo"
|
||||
placeholder="请输入住院号"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender" class="grid-item required">
|
||||
<el-select v-model="formData.gender" placeholder="请选择" style="width: 100%">
|
||||
<el-option label="男" value="男"></el-option>
|
||||
<el-option label="女" value="女"></el-option>
|
||||
<el-form-item
|
||||
label="性别"
|
||||
prop="gender"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.gender"
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
label="男"
|
||||
value="男"
|
||||
/>
|
||||
<el-option
|
||||
label="女"
|
||||
value="女"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<el-form-item
|
||||
label="年龄"
|
||||
prop="age"
|
||||
class="grid-item required"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model.number="formData.age" placeholder="请输入年龄" clearable />
|
||||
<el-input
|
||||
v-model.number="formData.age"
|
||||
placeholder="请输入年龄"
|
||||
clearable
|
||||
/>
|
||||
<span class="unit">岁</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="民族" prop="nation" class="grid-item">
|
||||
<el-input v-model="formData.nation" placeholder="请输入民族" clearable />
|
||||
<el-form-item
|
||||
label="民族"
|
||||
prop="nation"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.nation"
|
||||
placeholder="请输入民族"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="职业" prop="occupation" class="grid-item">
|
||||
<el-input v-model="formData.occupation" placeholder="请输入职业" clearable />
|
||||
<el-form-item
|
||||
label="职业"
|
||||
prop="occupation"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.occupation"
|
||||
placeholder="请输入职业"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="婚姻状况" prop="marriage" class="grid-item">
|
||||
<el-form-item
|
||||
label="婚姻状况"
|
||||
prop="marriage"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.marriage"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option label="已婚" value="已婚"></el-option>
|
||||
<el-option label="未婚" value="未婚"></el-option>
|
||||
<el-option label="离异" value="离异"></el-option>
|
||||
<el-option
|
||||
label="已婚"
|
||||
value="已婚"
|
||||
/>
|
||||
<el-option
|
||||
label="未婚"
|
||||
value="未婚"
|
||||
/>
|
||||
<el-option
|
||||
label="离异"
|
||||
value="离异"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="出生地" prop="birthplace" class="grid-item">
|
||||
<el-input v-model="formData.birthplace" placeholder="请输入出生地" clearable />
|
||||
<el-form-item
|
||||
label="出生地"
|
||||
prop="birthplace"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.birthplace"
|
||||
placeholder="请输入出生地"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="入院时间" prop="admissionTime" class="grid-item required">
|
||||
<el-form-item
|
||||
label="入院时间"
|
||||
prop="admissionTime"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.admissionTime"
|
||||
type="datetime"
|
||||
@@ -65,7 +146,11 @@
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="记录时间" prop="recordTime" class="grid-item required">
|
||||
<el-form-item
|
||||
label="记录时间"
|
||||
prop="recordTime"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.recordTime"
|
||||
type="datetime"
|
||||
@@ -74,22 +159,53 @@
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="病史陈述者" prop="historyReporter" class="grid-item">
|
||||
<el-input v-model="formData.historyReporter" placeholder="请输入陈述者" clearable />
|
||||
<el-form-item
|
||||
label="病史陈述者"
|
||||
prop="historyReporter"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.historyReporter"
|
||||
placeholder="请输入陈述者"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="可靠程度" prop="reliability" class="grid-item">
|
||||
<el-select v-model="formData.reliability" placeholder="请选择" style="width: 100%">
|
||||
<el-option label="可靠" value="可靠"></el-option>
|
||||
<el-option label="基本可靠" value="基本可靠"></el-option>
|
||||
<el-option label="不可靠" value="不可靠"></el-option>
|
||||
<el-form-item
|
||||
label="可靠程度"
|
||||
prop="reliability"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.reliability"
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
label="可靠"
|
||||
value="可靠"
|
||||
/>
|
||||
<el-option
|
||||
label="基本可靠"
|
||||
value="基本可靠"
|
||||
/>
|
||||
<el-option
|
||||
label="不可靠"
|
||||
value="不可靠"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 2. 病史信息 -->
|
||||
<h4 class="section-title">病史信息</h4>
|
||||
<h4 class="section-title">
|
||||
病史信息
|
||||
</h4>
|
||||
<div class="form-section">
|
||||
<el-form-item label="主诉" prop="complaint" class="history-item required">
|
||||
<el-form-item
|
||||
label="主诉"
|
||||
prop="complaint"
|
||||
class="history-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.complaint"
|
||||
type="textarea"
|
||||
@@ -100,7 +216,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="现病史" prop="presentIllness" class="history-item">
|
||||
<el-form-item
|
||||
label="现病史"
|
||||
prop="presentIllness"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.presentIllness"
|
||||
type="textarea"
|
||||
@@ -111,7 +231,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="既往史" prop="pastHistory" class="history-item">
|
||||
<el-form-item
|
||||
label="既往史"
|
||||
prop="pastHistory"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.pastHistory"
|
||||
type="textarea"
|
||||
@@ -122,7 +246,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="个人史" prop="personalHistory" class="history-item">
|
||||
<el-form-item
|
||||
label="个人史"
|
||||
prop="personalHistory"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.personalHistory"
|
||||
type="textarea"
|
||||
@@ -133,7 +261,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="婚育史" prop="maritalHistory" class="history-item">
|
||||
<el-form-item
|
||||
label="婚育史"
|
||||
prop="maritalHistory"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.maritalHistory"
|
||||
type="textarea"
|
||||
@@ -144,7 +276,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="月经史" prop="menstrualHistory" class="history-item">
|
||||
<el-form-item
|
||||
label="月经史"
|
||||
prop="menstrualHistory"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.menstrualHistory"
|
||||
type="textarea"
|
||||
@@ -155,7 +291,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="家族史" prop="familyHistory" class="history-item">
|
||||
<el-form-item
|
||||
label="家族史"
|
||||
prop="familyHistory"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.familyHistory"
|
||||
type="textarea"
|
||||
@@ -168,9 +308,15 @@
|
||||
</div>
|
||||
|
||||
<!-- 3. 中医望闻问切 -->
|
||||
<h4 class="section-title">中医望闻问切</h4>
|
||||
<h4 class="section-title">
|
||||
中医望闻问切
|
||||
</h4>
|
||||
<div class="form-section">
|
||||
<el-form-item label="望闻问切" prop="tcmInfo" class="history-item">
|
||||
<el-form-item
|
||||
label="望闻问切"
|
||||
prop="tcmInfo"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.tcmInfo"
|
||||
type="textarea"
|
||||
@@ -183,10 +329,16 @@
|
||||
</div>
|
||||
|
||||
<!-- 4. 体格检查 -->
|
||||
<h4 class="section-title">体格检查</h4>
|
||||
<h4 class="section-title">
|
||||
体格检查
|
||||
</h4>
|
||||
<div class="form-section">
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="体温" prop="temp" class="grid-item">
|
||||
<el-form-item
|
||||
label="体温"
|
||||
prop="temp"
|
||||
class="grid-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.temp"
|
||||
@@ -199,7 +351,11 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="脉搏" prop="pulse" class="grid-item">
|
||||
<el-form-item
|
||||
label="脉搏"
|
||||
prop="pulse"
|
||||
class="grid-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.pulse"
|
||||
@@ -211,7 +367,11 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="呼吸" prop="respiration" class="grid-item">
|
||||
<el-form-item
|
||||
label="呼吸"
|
||||
prop="respiration"
|
||||
class="grid-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.respiration"
|
||||
@@ -223,7 +383,11 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="血压" prop="bp" class="grid-item">
|
||||
<el-form-item
|
||||
label="血压"
|
||||
prop="bp"
|
||||
class="grid-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model="formData.bp"
|
||||
@@ -235,7 +399,11 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="身高" prop="height" class="grid-item">
|
||||
<el-form-item
|
||||
label="身高"
|
||||
prop="height"
|
||||
class="grid-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.height"
|
||||
@@ -247,7 +415,11 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="体重" prop="weight" class="grid-item">
|
||||
<el-form-item
|
||||
label="体重"
|
||||
prop="weight"
|
||||
class="grid-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.weight"
|
||||
@@ -259,15 +431,27 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="BMI" prop="bmi" class="grid-item">
|
||||
<el-form-item
|
||||
label="BMI"
|
||||
prop="bmi"
|
||||
class="grid-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.bmi" placeholder="如29.02" readonly />
|
||||
<el-input
|
||||
v-model="formData.bmi"
|
||||
placeholder="如29.02"
|
||||
readonly
|
||||
/>
|
||||
<span class="unit">kg/m²</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-form-item label="一般情况" prop="general" class="history-item">
|
||||
<el-form-item
|
||||
label="一般情况"
|
||||
prop="general"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.general"
|
||||
type="textarea"
|
||||
@@ -278,7 +462,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="皮肤粘膜" prop="skin" class="history-item">
|
||||
<el-form-item
|
||||
label="皮肤粘膜"
|
||||
prop="skin"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.skin"
|
||||
type="textarea"
|
||||
@@ -289,7 +477,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="胸部(心、肺)" prop="chest" class="history-item">
|
||||
<el-form-item
|
||||
label="胸部(心、肺)"
|
||||
prop="chest"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.chest"
|
||||
type="textarea"
|
||||
@@ -300,7 +492,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="腹部" prop="abdomen" class="history-item">
|
||||
<el-form-item
|
||||
label="腹部"
|
||||
prop="abdomen"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.abdomen"
|
||||
type="textarea"
|
||||
@@ -311,7 +507,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="四肢/神经系统" prop="limbsNervous" class="history-item">
|
||||
<el-form-item
|
||||
label="四肢/神经系统"
|
||||
prop="limbsNervous"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.limbsNervous"
|
||||
type="textarea"
|
||||
@@ -324,9 +524,15 @@
|
||||
</div>
|
||||
|
||||
<!-- 5. 辅助检查 -->
|
||||
<h4 class="section-title">辅助检查</h4>
|
||||
<h4 class="section-title">
|
||||
辅助检查
|
||||
</h4>
|
||||
<div class="form-section">
|
||||
<el-form-item label="检查结果" prop="auxExam" class="history-item">
|
||||
<el-form-item
|
||||
label="检查结果"
|
||||
prop="auxExam"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.auxExam"
|
||||
type="textarea"
|
||||
@@ -339,9 +545,15 @@
|
||||
</div>
|
||||
|
||||
<!-- 6. 初步诊断 -->
|
||||
<h4 class="section-title">初步诊断</h4>
|
||||
<h4 class="section-title">
|
||||
初步诊断
|
||||
</h4>
|
||||
<div class="form-section">
|
||||
<el-form-item label="中医诊断" prop="tcmDiagnosis" class="history-item">
|
||||
<el-form-item
|
||||
label="中医诊断"
|
||||
prop="tcmDiagnosis"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.tcmDiagnosis"
|
||||
type="textarea"
|
||||
@@ -352,7 +564,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="西医诊断" prop="westernDiagnosis" class="history-item">
|
||||
<el-form-item
|
||||
label="西医诊断"
|
||||
prop="westernDiagnosis"
|
||||
class="history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.westernDiagnosis"
|
||||
type="textarea"
|
||||
@@ -365,17 +581,42 @@
|
||||
</div>
|
||||
|
||||
<!-- 7. 签名信息(三列布局) -->
|
||||
<h4 class="section-title">签名信息</h4>
|
||||
<div class="adaptive-grid form-section" style="grid-template-columns: repeat(3, 1fr)">
|
||||
<el-form-item label="医师签名" prop="doctorSign" class="grid-item">
|
||||
<el-input v-model="formData.doctorSign" placeholder="请签名" clearable />
|
||||
<h4 class="section-title">
|
||||
签名信息
|
||||
</h4>
|
||||
<div
|
||||
class="adaptive-grid form-section"
|
||||
style="grid-template-columns: repeat(3, 1fr)"
|
||||
>
|
||||
<el-form-item
|
||||
label="医师签名"
|
||||
prop="doctorSign"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.doctorSign"
|
||||
placeholder="请签名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="上级医师签名" prop="superiorSign" class="grid-item">
|
||||
<el-input v-model="formData.superiorSign" placeholder="请签名" clearable />
|
||||
<el-form-item
|
||||
label="上级医师签名"
|
||||
prop="superiorSign"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.superiorSign"
|
||||
placeholder="请签名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="记录日期" prop="signDate" class="grid-item">
|
||||
<el-form-item
|
||||
label="记录日期"
|
||||
prop="signDate"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.signDate"
|
||||
type="datetime"
|
||||
@@ -388,12 +629,20 @@
|
||||
|
||||
<!-- 新增:表单操作按钮组(重置按钮) -->
|
||||
<div class="form-btn-group">
|
||||
<el-button type="warning" @click="handleReset">重置表单</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
@click="handleReset"
|
||||
>
|
||||
重置表单
|
||||
</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<admissionRecord v-if="isShowprintDom" ref="recordPrintRef"></admissionRecord>
|
||||
<admissionRecord
|
||||
v-if="isShowprintDom"
|
||||
ref="recordPrintRef"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -2,8 +2,12 @@
|
||||
<div class="medical-document">
|
||||
<!-- 标题区域 -->
|
||||
<div class="doc-header">
|
||||
<h1 class="doc-title">{{ hospitalName }} 住院手术记录单</h1>
|
||||
<div class="doc-subtitle">住院号: {{ formData.busNo || '待填写' }}</div>
|
||||
<h1 class="doc-title">
|
||||
{{ hospitalName }} 住院手术记录单
|
||||
</h1>
|
||||
<div class="doc-subtitle">
|
||||
住院号: {{ formData.busNo || '待填写' }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 内容区域 -->
|
||||
@@ -18,34 +22,84 @@
|
||||
>
|
||||
<!-- 患者与手术基础信息 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">一、患者与手术基本信息</h2>
|
||||
<h2 class="section-title">
|
||||
一、患者与手术基本信息
|
||||
</h2>
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="患者姓名" prop="patientName" class="grid-item required">
|
||||
<el-input v-model="formData.patientName" placeholder="请输入患者姓名" clearable />
|
||||
<el-form-item
|
||||
label="患者姓名"
|
||||
prop="patientName"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.patientName"
|
||||
placeholder="请输入患者姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender" class="grid-item required">
|
||||
<el-select v-model="formData.gender" placeholder="请选择性别">
|
||||
<el-option label="男" value="男" />
|
||||
<el-option label="女" value="女" />
|
||||
<el-form-item
|
||||
label="性别"
|
||||
prop="gender"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.gender"
|
||||
placeholder="请选择性别"
|
||||
>
|
||||
<el-option
|
||||
label="男"
|
||||
value="男"
|
||||
/>
|
||||
<el-option
|
||||
label="女"
|
||||
value="女"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<el-form-item
|
||||
label="年龄"
|
||||
prop="age"
|
||||
class="grid-item required"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model.number="formData.age" placeholder="请输入年龄" />
|
||||
<el-input
|
||||
v-model.number="formData.age"
|
||||
placeholder="请输入年龄"
|
||||
/>
|
||||
<span class="unit">岁</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室" prop="department" class="grid-item required">
|
||||
<el-input v-model="formData.department" placeholder="如:普外科" clearable />
|
||||
<el-form-item
|
||||
label="科室"
|
||||
prop="department"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.department"
|
||||
placeholder="如:普外科"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="病房/床号" prop="bedNo" class="grid-item required">
|
||||
<el-input v-model="formData.bedNo" placeholder="如:502-03" clearable />
|
||||
<el-form-item
|
||||
label="病房/床号"
|
||||
prop="bedNo"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.bedNo"
|
||||
placeholder="如:502-03"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="手术日期/时间" prop="operationDateTime" class="grid-item required">
|
||||
<el-form-item
|
||||
label="手术日期/时间"
|
||||
prop="operationDateTime"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.operationDateTime"
|
||||
type="datetime"
|
||||
@@ -58,39 +112,95 @@
|
||||
|
||||
<!-- 手术团队信息 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">二、手术团队信息</h2>
|
||||
<h2 class="section-title">
|
||||
二、手术团队信息
|
||||
</h2>
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="手术者" prop="surgeon" class="grid-item required">
|
||||
<el-input v-model="formData.surgeon" placeholder="主刀医师姓名" clearable />
|
||||
<el-form-item
|
||||
label="手术者"
|
||||
prop="surgeon"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.surgeon"
|
||||
placeholder="主刀医师姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="第一助手" prop="firstAssistant" class="grid-item required">
|
||||
<el-input v-model="formData.firstAssistant" placeholder="第一助手姓名" clearable />
|
||||
<el-form-item
|
||||
label="第一助手"
|
||||
prop="firstAssistant"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.firstAssistant"
|
||||
placeholder="第一助手姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="第二助手" prop="secondAssistant" class="grid-item">
|
||||
<el-input v-model="formData.secondAssistant" placeholder="第二助手姓名" clearable />
|
||||
<el-form-item
|
||||
label="第二助手"
|
||||
prop="secondAssistant"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.secondAssistant"
|
||||
placeholder="第二助手姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="麻醉医师" prop="anesthesiologist" class="grid-item required">
|
||||
<el-input v-model="formData.anesthesiologist" placeholder="麻醉医师姓名" clearable />
|
||||
<el-form-item
|
||||
label="麻醉医师"
|
||||
prop="anesthesiologist"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.anesthesiologist"
|
||||
placeholder="麻醉医师姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="巡回护士" prop="circulatingNurse" class="grid-item required">
|
||||
<el-input v-model="formData.circulatingNurse" placeholder="巡回护士姓名" clearable />
|
||||
<el-form-item
|
||||
label="巡回护士"
|
||||
prop="circulatingNurse"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.circulatingNurse"
|
||||
placeholder="巡回护士姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="器械护士" prop="scrubNurse" class="grid-item required">
|
||||
<el-input v-model="formData.scrubNurse" placeholder="器械护士姓名" clearable />
|
||||
<el-form-item
|
||||
label="器械护士"
|
||||
prop="scrubNurse"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.scrubNurse"
|
||||
placeholder="器械护士姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 手术详情 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">三、手术详情</h2>
|
||||
<h2 class="section-title">
|
||||
三、手术详情
|
||||
</h2>
|
||||
|
||||
<el-form-item label="手术名称" prop="operationName" class="full-width-item required">
|
||||
<el-form-item
|
||||
label="手术名称"
|
||||
prop="operationName"
|
||||
class="full-width-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.operationName"
|
||||
placeholder="规范手术名称(如:腹腔镜下胆囊切除术)"
|
||||
@@ -98,15 +208,35 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="手术方式" prop="operationMethod" class="full-width-item required">
|
||||
<el-select v-model="formData.operationMethod" placeholder="选择手术方式">
|
||||
<el-option label="开放手术" value="开放手术" />
|
||||
<el-option label="微创手术" value="微创手术" />
|
||||
<el-option label="介入手术" value="介入手术" />
|
||||
<el-form-item
|
||||
label="手术方式"
|
||||
prop="operationMethod"
|
||||
class="full-width-item required"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.operationMethod"
|
||||
placeholder="选择手术方式"
|
||||
>
|
||||
<el-option
|
||||
label="开放手术"
|
||||
value="开放手术"
|
||||
/>
|
||||
<el-option
|
||||
label="微创手术"
|
||||
value="微创手术"
|
||||
/>
|
||||
<el-option
|
||||
label="介入手术"
|
||||
value="介入手术"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="手术入路" prop="surgicalApproach" class="full-width-item required">
|
||||
<el-form-item
|
||||
label="手术入路"
|
||||
prop="surgicalApproach"
|
||||
class="full-width-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.surgicalApproach"
|
||||
placeholder="如:右上腹经腹直肌切口"
|
||||
@@ -128,7 +258,11 @@
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="手术过程" prop="operationProcess" class="full-width-item required">
|
||||
<el-form-item
|
||||
label="手术过程"
|
||||
prop="operationProcess"
|
||||
class="full-width-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.operationProcess"
|
||||
type="textarea"
|
||||
@@ -142,9 +276,15 @@
|
||||
|
||||
<!-- 术后情况 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">四、术后情况</h2>
|
||||
<h2 class="section-title">
|
||||
四、术后情况
|
||||
</h2>
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="术中出血量" prop="bloodLoss" class="grid-item required">
|
||||
<el-form-item
|
||||
label="术中出血量"
|
||||
prop="bloodLoss"
|
||||
class="grid-item required"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input
|
||||
v-model.number="formData.bloodLoss"
|
||||
@@ -155,18 +295,43 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="输血情况" prop="bloodTransfusion" class="grid-item">
|
||||
<el-select v-model="formData.bloodTransfusion" placeholder="是否输血">
|
||||
<el-option label="是" value="是" />
|
||||
<el-option label="否" value="否" />
|
||||
<el-form-item
|
||||
label="输血情况"
|
||||
prop="bloodTransfusion"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.bloodTransfusion"
|
||||
placeholder="是否输血"
|
||||
>
|
||||
<el-option
|
||||
label="是"
|
||||
value="是"
|
||||
/>
|
||||
<el-option
|
||||
label="否"
|
||||
value="否"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="引流管放置" prop="drainageTube" class="grid-item">
|
||||
<el-input v-model="formData.drainageTube" placeholder="如:腹腔引流管1根" clearable />
|
||||
<el-form-item
|
||||
label="引流管放置"
|
||||
prop="drainageTube"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.drainageTube"
|
||||
placeholder="如:腹腔引流管1根"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="标本处理" prop="specimenDisposal" class="grid-item required">
|
||||
<el-form-item
|
||||
label="标本处理"
|
||||
prop="specimenDisposal"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.specimenDisposal"
|
||||
placeholder="如:胆囊标本送病理检查"
|
||||
@@ -174,7 +339,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="手术结束时间" prop="operationEndTime" class="grid-item required">
|
||||
<el-form-item
|
||||
label="手术结束时间"
|
||||
prop="operationEndTime"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.operationEndTime"
|
||||
type="datetime"
|
||||
@@ -182,10 +351,23 @@
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="患者去向" prop="patientDestination" class="grid-item required">
|
||||
<el-select v-model="formData.patientDestination" placeholder="选择去向">
|
||||
<el-option label="ICU" value="ICU" />
|
||||
<el-option label="普通病房" value="普通病房" />
|
||||
<el-form-item
|
||||
label="患者去向"
|
||||
prop="patientDestination"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.patientDestination"
|
||||
placeholder="选择去向"
|
||||
>
|
||||
<el-option
|
||||
label="ICU"
|
||||
value="ICU"
|
||||
/>
|
||||
<el-option
|
||||
label="普通病房"
|
||||
value="普通病房"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
@@ -193,20 +375,46 @@
|
||||
|
||||
<!-- 签署区域 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">五、签署确认</h2>
|
||||
<h2 class="section-title">
|
||||
五、签署确认
|
||||
</h2>
|
||||
<div
|
||||
class="adaptive-grid signature-area"
|
||||
style="grid-template-columns: repeat(auto-fit, minmax(240px, 1fr))"
|
||||
>
|
||||
<el-form-item label="手术者签名" prop="surgeonSignature" class="grid-item required">
|
||||
<el-input v-model="formData.surgeonSignature" placeholder="主刀医师签字" clearable />
|
||||
<div class="signature-tip">请手术者亲笔签名</div>
|
||||
<el-form-item
|
||||
label="手术者签名"
|
||||
prop="surgeonSignature"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.surgeonSignature"
|
||||
placeholder="主刀医师签字"
|
||||
clearable
|
||||
/>
|
||||
<div class="signature-tip">
|
||||
请手术者亲笔签名
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="记录者签名" prop="recorderSignature" class="grid-item required">
|
||||
<el-input v-model="formData.recorderSignature" placeholder="记录者签字" clearable />
|
||||
<div class="signature-tip">请记录者(如第一助手)签字</div>
|
||||
<el-form-item
|
||||
label="记录者签名"
|
||||
prop="recorderSignature"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.recorderSignature"
|
||||
placeholder="记录者签字"
|
||||
clearable
|
||||
/>
|
||||
<div class="signature-tip">
|
||||
请记录者(如第一助手)签字
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="记录日期" prop="recordDate" class="grid-item required">
|
||||
<el-form-item
|
||||
label="记录日期"
|
||||
prop="recordDate"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.recordDate"
|
||||
type="date"
|
||||
@@ -221,12 +429,30 @@
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<div class="btn-group">
|
||||
<el-button type="primary" @click="submit">保存记录</el-button>
|
||||
<el-button type="success" @click="handlePrint">打印记录</el-button>
|
||||
<el-button type="warning" @click="handleReset">重置表单</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submit"
|
||||
>
|
||||
保存记录
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
@click="handlePrint"
|
||||
>
|
||||
打印记录
|
||||
</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
@click="handleReset"
|
||||
>
|
||||
重置表单
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<intOperRecordSheet v-if="isShowprintDom" ref="recordPrintRef"></intOperRecordSheet>
|
||||
<intOperRecordSheet
|
||||
v-if="isShowprintDom"
|
||||
ref="recordPrintRef"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@@ -242,7 +468,7 @@ const recordPrintRef = ref();
|
||||
// 医院名称
|
||||
const hospitalName = userStore.hospitalName;
|
||||
defineOptions({
|
||||
name: 'iInHospitalSurgicalRecord',
|
||||
name: 'IInHospitalSurgicalRecord',
|
||||
});
|
||||
// 表单引用
|
||||
const formRef = ref(null);
|
||||
|
||||
@@ -2,8 +2,12 @@
|
||||
<div class="medical-document">
|
||||
<!-- 标题区域 -->
|
||||
<div class="doc-header">
|
||||
<h1 class="doc-title">{{ hospitalName }} 住院患者入院沟通记录单</h1>
|
||||
<div class="doc-subtitle">住院号: {{ formData.hospitalNo || '待填写' }}</div>
|
||||
<h1 class="doc-title">
|
||||
{{ hospitalName }} 住院患者入院沟通记录单
|
||||
</h1>
|
||||
<div class="doc-subtitle">
|
||||
住院号: {{ formData.hospitalNo || '待填写' }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 内容区域 -->
|
||||
@@ -17,34 +21,85 @@
|
||||
>
|
||||
<!-- 患者基础信息 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">一、患者基础信息</h2>
|
||||
<h2 class="section-title">
|
||||
一、患者基础信息
|
||||
</h2>
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="姓名" prop="patientName" class="grid-item required">
|
||||
<el-input v-model="formData.patientName" placeholder="请输入患者姓名" clearable />
|
||||
<el-form-item
|
||||
label="姓名"
|
||||
prop="patientName"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.patientName"
|
||||
placeholder="请输入患者姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender" class="grid-item required">
|
||||
<el-select v-model="formData.gender" placeholder="请选择性别">
|
||||
<el-option label="男" value="男" />
|
||||
<el-option label="女" value="女" />
|
||||
<el-form-item
|
||||
label="性别"
|
||||
prop="gender"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.gender"
|
||||
placeholder="请选择性别"
|
||||
>
|
||||
<el-option
|
||||
label="男"
|
||||
value="男"
|
||||
/>
|
||||
<el-option
|
||||
label="女"
|
||||
value="女"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<el-form-item
|
||||
label="年龄"
|
||||
prop="age"
|
||||
class="grid-item required"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model.number="formData.age" placeholder="请输入年龄" clearable />
|
||||
<el-input
|
||||
v-model.number="formData.age"
|
||||
placeholder="请输入年龄"
|
||||
clearable
|
||||
/>
|
||||
<span class="unit">岁</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室/病区" prop="department" class="grid-item required">
|
||||
<el-input v-model="formData.department" placeholder="如:内科疗区" clearable />
|
||||
<el-form-item
|
||||
label="科室/病区"
|
||||
prop="department"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.department"
|
||||
placeholder="如:内科疗区"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="病房/床号" prop="bedNo" class="grid-item required">
|
||||
<el-input v-model="formData.bedNo" placeholder="如:307-12" clearable />
|
||||
<el-form-item
|
||||
label="病房/床号"
|
||||
prop="bedNo"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.bedNo"
|
||||
placeholder="如:307-12"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="入院日期" prop="admissionDate" class="grid-item required">
|
||||
<el-form-item
|
||||
label="入院日期"
|
||||
prop="admissionDate"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.admissionDate"
|
||||
type="date"
|
||||
@@ -57,26 +112,58 @@
|
||||
|
||||
<!-- 医疗团队信息 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">二、医疗团队信息</h2>
|
||||
<h2 class="section-title">
|
||||
二、医疗团队信息
|
||||
</h2>
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="经治医师" prop="treatingDoctor" class="grid-item required">
|
||||
<el-input v-model="formData.treatingDoctor" placeholder="请输入医师姓名" clearable />
|
||||
<el-form-item
|
||||
label="经治医师"
|
||||
prop="treatingDoctor"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.treatingDoctor"
|
||||
placeholder="请输入医师姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="主治医师" prop="attendingDoctor" class="grid-item required">
|
||||
<el-input v-model="formData.attendingDoctor" placeholder="请输入医师姓名" clearable />
|
||||
<el-form-item
|
||||
label="主治医师"
|
||||
prop="attendingDoctor"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.attendingDoctor"
|
||||
placeholder="请输入医师姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科主任" prop="departmentHead" class="grid-item required">
|
||||
<el-input v-model="formData.departmentHead" placeholder="请输入主任姓名" clearable />
|
||||
<el-form-item
|
||||
label="科主任"
|
||||
prop="departmentHead"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.departmentHead"
|
||||
placeholder="请输入主任姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 病情与诊断 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">三、病情与诊断</h2>
|
||||
<el-form-item label="病情状况" prop="condition" class="full-width-item required">
|
||||
<h2 class="section-title">
|
||||
三、病情与诊断
|
||||
</h2>
|
||||
<el-form-item
|
||||
label="病情状况"
|
||||
prop="condition"
|
||||
class="full-width-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.condition"
|
||||
type="textarea"
|
||||
@@ -87,7 +174,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<div class="diagnosis-container">
|
||||
<el-form-item label="中医诊断" prop="tcmDiagnosis" class="diagnosis-item">
|
||||
<el-form-item
|
||||
label="中医诊断"
|
||||
prop="tcmDiagnosis"
|
||||
class="diagnosis-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.tcmDiagnosis"
|
||||
type="textarea"
|
||||
@@ -97,7 +188,11 @@
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="西医诊断" prop="westernDiagnosis" class="diagnosis-item">
|
||||
<el-form-item
|
||||
label="西医诊断"
|
||||
prop="westernDiagnosis"
|
||||
class="diagnosis-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.westernDiagnosis"
|
||||
type="textarea"
|
||||
@@ -112,8 +207,14 @@
|
||||
|
||||
<!-- 治疗与检查计划 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">四、治疗与检查计划</h2>
|
||||
<el-form-item label="治疗方案" prop="treatmentPlan" class="full-width-item required">
|
||||
<h2 class="section-title">
|
||||
四、治疗与检查计划
|
||||
</h2>
|
||||
<el-form-item
|
||||
label="治疗方案"
|
||||
prop="treatmentPlan"
|
||||
class="full-width-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.treatmentPlan"
|
||||
type="textarea"
|
||||
@@ -142,8 +243,14 @@
|
||||
|
||||
<!-- 风险告知 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">五、风险告知</h2>
|
||||
<el-form-item label="告知内容" prop="riskNotification" class="full-width-item required">
|
||||
<h2 class="section-title">
|
||||
五、风险告知
|
||||
</h2>
|
||||
<el-form-item
|
||||
label="告知内容"
|
||||
prop="riskNotification"
|
||||
class="full-width-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.riskNotification"
|
||||
type="textarea"
|
||||
@@ -157,17 +264,33 @@
|
||||
|
||||
<!-- 签署区域(优化后:三列自适应+细节样式) -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">六、签署确认</h2>
|
||||
<h2 class="section-title">
|
||||
六、签署确认
|
||||
</h2>
|
||||
<div
|
||||
class="adaptive-grid signature-area"
|
||||
style="grid-template-columns: repeat(auto-fit, minmax(240px, 1fr))"
|
||||
>
|
||||
<el-form-item label="患者或家属签字" prop="patientSignature" class="grid-item required">
|
||||
<el-input v-model="formData.patientSignature" placeholder="请签字" clearable />
|
||||
<div class="signature-tip">请填写患者或家属签字</div>
|
||||
<el-form-item
|
||||
label="患者或家属签字"
|
||||
prop="patientSignature"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.patientSignature"
|
||||
placeholder="请签字"
|
||||
clearable
|
||||
/>
|
||||
<div class="signature-tip">
|
||||
请填写患者或家属签字
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="与患者关系" prop="relationship" class="grid-item">
|
||||
<el-form-item
|
||||
label="与患者关系"
|
||||
prop="relationship"
|
||||
class="grid-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.relationship"
|
||||
placeholder="如:本人、配偶、子女"
|
||||
@@ -175,7 +298,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="签字日期" prop="signatureDate" class="grid-item required">
|
||||
<el-form-item
|
||||
label="签字日期"
|
||||
prop="signatureDate"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.signatureDate"
|
||||
type="date"
|
||||
@@ -185,11 +312,25 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="沟通医师签字" prop="doctorSignature" class="grid-item required">
|
||||
<el-input v-model="formData.doctorSignature" placeholder="请签字" clearable />
|
||||
<div class="signature-tip">请填写沟通医师签字</div>
|
||||
<el-form-item
|
||||
label="沟通医师签字"
|
||||
prop="doctorSignature"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.doctorSignature"
|
||||
placeholder="请签字"
|
||||
clearable
|
||||
/>
|
||||
<div class="signature-tip">
|
||||
请填写沟通医师签字
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="沟通日期" prop="communicationDate" class="grid-item required">
|
||||
<el-form-item
|
||||
label="沟通日期"
|
||||
prop="communicationDate"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.communicationDate"
|
||||
type="datetime"
|
||||
@@ -204,9 +345,24 @@
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<div class="btn-group">
|
||||
<el-button type="primary" @click="submit">保存记录</el-button>
|
||||
<el-button type="success" @click="handlePrint">打印记录</el-button>
|
||||
<el-button type="warning" @click="handleReset">重置表单</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submit"
|
||||
>
|
||||
保存记录
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
@click="handlePrint"
|
||||
>
|
||||
打印记录
|
||||
</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
@click="handleReset"
|
||||
>
|
||||
重置表单
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -6,40 +6,69 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<h2 class="title">{{ userStore.hospitalName }}</h2>
|
||||
<h3 class="subtitle">患者护理记录单</h3>
|
||||
<h2 class="title">
|
||||
{{ userStore.hospitalName }}
|
||||
</h2>
|
||||
<h3 class="subtitle">
|
||||
患者护理记录单
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<el-form :model="state.formData" label-position="top" class="nursing-form">
|
||||
<el-form
|
||||
:model="state.formData"
|
||||
label-position="top"
|
||||
class="nursing-form"
|
||||
>
|
||||
<!-- 患者基本信息 -->
|
||||
<div class="patient-info">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="2">
|
||||
<el-form-item label="姓名">
|
||||
<el-input v-model="state.formData.name" placeholder="请输入姓名"></el-input>
|
||||
<el-input
|
||||
v-model="state.formData.name"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-form-item label="年龄">
|
||||
<el-input v-model="state.formData.age" placeholder="请输入年龄"></el-input>
|
||||
<el-input
|
||||
v-model="state.formData.age"
|
||||
placeholder="请输入年龄"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="性别">
|
||||
<el-select v-model="state.formData.gender" placeholder="请选择性别">
|
||||
<el-option label="男" value="male"></el-option>
|
||||
<el-option label="女" value="female"></el-option>
|
||||
<el-select
|
||||
v-model="state.formData.gender"
|
||||
placeholder="请选择性别"
|
||||
>
|
||||
<el-option
|
||||
label="男"
|
||||
value="male"
|
||||
/>
|
||||
<el-option
|
||||
label="女"
|
||||
value="female"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="病区">
|
||||
<el-input v-model="state.formData.ward" placeholder="请输入病区"></el-input>
|
||||
<el-input
|
||||
v-model="state.formData.ward"
|
||||
placeholder="请输入病区"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="床号">
|
||||
<el-input v-model="state.formData.bedNumber" placeholder="请输入床号"></el-input>
|
||||
<el-input
|
||||
v-model="state.formData.bedNumber"
|
||||
placeholder="请输入床号"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
@@ -47,12 +76,15 @@
|
||||
<el-input
|
||||
v-model="state.formData.hospitalNumber"
|
||||
placeholder="请输入住院号"
|
||||
></el-input>
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="入院诊断">
|
||||
<el-input v-model="state.formData.diagnosis" placeholder="请输入入院诊断"></el-input>
|
||||
<el-input
|
||||
v-model="state.formData.diagnosis"
|
||||
placeholder="请输入入院诊断"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -60,8 +92,15 @@
|
||||
|
||||
<!-- 基本信息记录表格 -->
|
||||
<div class="vital-signs-table">
|
||||
<el-table :data="state.formData.vitalSigns" border style="width: 100%">
|
||||
<el-table-column label="日期" width="100">
|
||||
<el-table
|
||||
:data="state.formData.vitalSigns"
|
||||
border
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column
|
||||
label="日期"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-date-picker
|
||||
v-model="scope.row.date"
|
||||
@@ -70,10 +109,13 @@
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
style="width: 100%"
|
||||
></el-date-picker>
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="时间" width="100">
|
||||
<el-table-column
|
||||
label="时间"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-time-picker
|
||||
v-model="scope.row.time"
|
||||
@@ -81,133 +123,290 @@
|
||||
format="HH:mm"
|
||||
value-format="HH:mm"
|
||||
style="width: 100%"
|
||||
></el-time-picker>
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="基本信息">
|
||||
<el-table-column label="意识" width="80">
|
||||
<el-table-column
|
||||
label="意识"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.consciousness" placeholder="选择">
|
||||
<el-option label="清醒" value="清醒"></el-option>
|
||||
<el-option label="嗜睡" value="嗜睡"></el-option>
|
||||
<el-option label="昏迷" value="昏迷"></el-option>
|
||||
<el-select
|
||||
v-model="scope.row.consciousness"
|
||||
placeholder="选择"
|
||||
>
|
||||
<el-option
|
||||
label="清醒"
|
||||
value="清醒"
|
||||
/>
|
||||
<el-option
|
||||
label="嗜睡"
|
||||
value="嗜睡"
|
||||
/>
|
||||
<el-option
|
||||
label="昏迷"
|
||||
value="昏迷"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="体温℃" width="80">
|
||||
<el-table-column
|
||||
label="体温℃"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.temperature" placeholder="体温"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.temperature"
|
||||
placeholder="体温"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="心率次/分" width="100">
|
||||
<el-table-column
|
||||
label="心率次/分"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.heartRate" placeholder="心率"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.heartRate"
|
||||
placeholder="心率"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="脉搏次/分" width="100">
|
||||
<el-table-column
|
||||
label="脉搏次/分"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.heartRate" placeholder="心率"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.heartRate"
|
||||
placeholder="心率"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="呼吸次/分" width="100">
|
||||
<el-table-column
|
||||
label="呼吸次/分"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.respiratoryRate" placeholder="呼吸"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.respiratoryRate"
|
||||
placeholder="呼吸"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="血压mmHg" width="120">
|
||||
<el-table-column
|
||||
label="血压mmHg"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.bloodPressure" placeholder="血压"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.bloodPressure"
|
||||
placeholder="血压"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="血氧饱和度" width="120">
|
||||
<el-table-column
|
||||
label="血氧饱和度"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.bloodPressure" placeholder="血压"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.bloodPressure"
|
||||
placeholder="血压"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="氧疗L/min" width="200">
|
||||
<el-table-column label="方式" >
|
||||
<el-table-column
|
||||
label="氧疗L/min"
|
||||
width="200"
|
||||
>
|
||||
<el-table-column label="方式">
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.intake" placeholder="选择">
|
||||
<el-option label="鼻导管" value="鼻导管"></el-option>
|
||||
<el-option label="面罩" value="面罩"></el-option>
|
||||
<el-option label="无" value="无"></el-option>
|
||||
<el-select
|
||||
v-model="scope.row.intake"
|
||||
placeholder="选择"
|
||||
>
|
||||
<el-option
|
||||
label="鼻导管"
|
||||
value="鼻导管"
|
||||
/>
|
||||
<el-option
|
||||
label="面罩"
|
||||
value="面罩"
|
||||
/>
|
||||
<el-option
|
||||
label="无"
|
||||
value="无"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流量" width="80">
|
||||
<el-table-column
|
||||
label="流量"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.flowRate" placeholder="流量"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.flowRate"
|
||||
placeholder="流量"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="入量" width="200">
|
||||
<el-table-column label="名称" >
|
||||
<el-table-column
|
||||
label="入量"
|
||||
width="200"
|
||||
>
|
||||
<el-table-column label="名称">
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.intake" placeholder="选择">
|
||||
<el-option label="鼻导管" value="鼻导管"></el-option>
|
||||
<el-option label="面罩" value="面罩"></el-option>
|
||||
<el-option label="无" value="无"></el-option>
|
||||
<el-select
|
||||
v-model="scope.row.intake"
|
||||
placeholder="选择"
|
||||
>
|
||||
<el-option
|
||||
label="鼻导管"
|
||||
value="鼻导管"
|
||||
/>
|
||||
<el-option
|
||||
label="面罩"
|
||||
value="面罩"
|
||||
/>
|
||||
<el-option
|
||||
label="无"
|
||||
value="无"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="ml" width="80">
|
||||
<el-table-column
|
||||
label="ml"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.flowRate" placeholder="流量"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.flowRate"
|
||||
placeholder="流量"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="途径" width="80">
|
||||
<el-table-column
|
||||
label="途径"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.flowRate" placeholder="流量"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.flowRate"
|
||||
placeholder="流量"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="出量" width="200">
|
||||
<el-table-column label="名称" >
|
||||
<el-table-column
|
||||
label="出量"
|
||||
width="200"
|
||||
>
|
||||
<el-table-column label="名称">
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.intake" placeholder="选择">
|
||||
<el-option label="鼻导管" value="鼻导管"></el-option>
|
||||
<el-option label="面罩" value="面罩"></el-option>
|
||||
<el-option label="无" value="无"></el-option>
|
||||
<el-select
|
||||
v-model="scope.row.intake"
|
||||
placeholder="选择"
|
||||
>
|
||||
<el-option
|
||||
label="鼻导管"
|
||||
value="鼻导管"
|
||||
/>
|
||||
<el-option
|
||||
label="面罩"
|
||||
value="面罩"
|
||||
/>
|
||||
<el-option
|
||||
label="无"
|
||||
value="无"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="ml" width="80">
|
||||
<el-table-column
|
||||
label="ml"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.flowRate" placeholder="流量"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.flowRate"
|
||||
placeholder="流量"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="皮肤情况" width="80">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.flowRate" placeholder="流量"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="管路护理" width="80">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.flowRate" placeholder="流量"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="病情与措施" width="80">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.flowRate" placeholder="流量"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="护士签名" width="100">
|
||||
<el-table-column
|
||||
label="皮肤情况"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.nurseSignature" placeholder="签名"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.flowRate"
|
||||
placeholder="流量"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column
|
||||
label="管路护理"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button type="danger" size="small" @click="removeVitalSign(scope.$index)"
|
||||
>删除</el-button
|
||||
<el-input
|
||||
v-model="scope.row.flowRate"
|
||||
placeholder="流量"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="病情与措施"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.flowRate"
|
||||
placeholder="流量"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="护士签名"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.nurseSignature"
|
||||
placeholder="签名"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="120"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
@click="removeVitalSign(scope.$index)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="add-row">
|
||||
<el-button type="primary" @click="addVitalSign">添加记录</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="addVitalSign"
|
||||
>
|
||||
添加记录
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -216,13 +415,13 @@
|
||||
<div>
|
||||
一、意识:①清醒;②嗜睡;③意识模糊;④昏睡;⑤谗妄;⑥浅昏迷;⑦中度昏迷;⑧深昏迷;⑨全麻未醒;⑩镇静。
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
二、氧疗方式:①鼻导管;②面罩;③HFNC;④HIPPV;⑤IMV。
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
三、皮肤情况:①完好;②压疮;③出血点;④破损;⑤水肿;⑥瘀斑;⑦过敏;⑧其他。
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
四、管路护理:①胃管;②尿导管;③静脉置管;④吸氧管;⑤“T”管;⑥胸腔引流管;⑦腹腔引流管;⑧伤口引流管;⑨脑室引流管;⑩其他。
|
||||
</div>
|
||||
</div>
|
||||
@@ -330,7 +529,7 @@ onMounted(() => {
|
||||
});
|
||||
const submit = () => {
|
||||
// ElMessage.success('提交成功');
|
||||
emits('submitOk', state.formData);
|
||||
emits('submitOk', state.value.formData);
|
||||
};
|
||||
const setFormData = (data) => {
|
||||
if (data) {
|
||||
|
||||
@@ -5,8 +5,12 @@
|
||||
patient?.busNo || '未知'
|
||||
}}
|
||||
</div>
|
||||
<h2 style="text-align: center">{{ userStore.hospitalName }}</h2>
|
||||
<h2 style="text-align: center">门诊病历</h2>
|
||||
<h2 style="text-align: center">
|
||||
{{ userStore.hospitalName }}
|
||||
</h2>
|
||||
<h2 style="text-align: center">
|
||||
门诊病历
|
||||
</h2>
|
||||
|
||||
<!-- 滚动内容区域 -->
|
||||
<div class="form-scroll-container">
|
||||
@@ -18,35 +22,73 @@
|
||||
label-align="left"
|
||||
class="medical-full-form"
|
||||
>
|
||||
<h4 class="section-title">基础信息</h4>
|
||||
<h4 class="section-title">
|
||||
基础信息
|
||||
</h4>
|
||||
<!-- 1. 基础信息:单行自适应排列 -->
|
||||
<el-form-item class="form-section">
|
||||
<div class="single-row-layout">
|
||||
<el-form-item label="身高" prop="height" class="row-item">
|
||||
<el-form-item
|
||||
label="身高"
|
||||
prop="height"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.height" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.height"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
<span class="unit">cm</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="体重" prop="weight" class="row-item">
|
||||
<el-form-item
|
||||
label="体重"
|
||||
prop="weight"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.weight" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.weight"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
<span class="unit">kg</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="体温" prop="temperature" class="row-item">
|
||||
<el-form-item
|
||||
label="体温"
|
||||
prop="temperature"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.temperature" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.temperature"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
<span class="unit">℃</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="脉搏" prop="pulse" class="row-item">
|
||||
<el-form-item
|
||||
label="脉搏"
|
||||
prop="pulse"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.pulse" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.pulse"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
<span class="unit">次/分</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="发病日期" prop="onsetDate" class="row-item">
|
||||
<el-form-item
|
||||
label="发病日期"
|
||||
prop="onsetDate"
|
||||
class="row-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.onsetDate"
|
||||
type="date"
|
||||
@@ -58,11 +100,17 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<h4 class="section-title">病史信息</h4>
|
||||
<h4 class="section-title">
|
||||
病史信息
|
||||
</h4>
|
||||
<!-- 2. 病史信息:单行自适应排列(新增调整) -->
|
||||
<el-form-item class="form-section">
|
||||
<div class="single-row-layout">
|
||||
<el-form-item label="现病史" prop="presentIllness" class="row-item history-item">
|
||||
<el-form-item
|
||||
label="现病史"
|
||||
prop="presentIllness"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.presentIllness"
|
||||
type="textarea"
|
||||
@@ -70,10 +118,23 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="既往史" prop="pastIllness" class="row-item history-item">
|
||||
<el-input v-model="formData.pastIllness" type="textarea" placeholder="无" autosize />
|
||||
<el-form-item
|
||||
label="既往史"
|
||||
prop="pastIllness"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.pastIllness"
|
||||
type="textarea"
|
||||
placeholder="无"
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="个人史" prop="personalHistory" class="row-item history-item">
|
||||
<el-form-item
|
||||
label="个人史"
|
||||
prop="personalHistory"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.personalHistory"
|
||||
type="textarea"
|
||||
@@ -81,7 +142,11 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="过敏史" prop="allergyHistory" class="row-item history-item">
|
||||
<el-form-item
|
||||
label="过敏史"
|
||||
prop="allergyHistory"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.allergyHistory"
|
||||
type="textarea"
|
||||
@@ -89,7 +154,11 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="家族史" prop="familyHistory" class="row-item history-item">
|
||||
<el-form-item
|
||||
label="家族史"
|
||||
prop="familyHistory"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.familyHistory"
|
||||
type="textarea"
|
||||
@@ -99,9 +168,15 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<h4 class="section-title">主诉、查体(治疗)、处置、辅助检查</h4>
|
||||
<h4 class="section-title">
|
||||
主诉、查体(治疗)、处置、辅助检查
|
||||
</h4>
|
||||
<!-- 3. 主诉(必填) -->
|
||||
<el-form-item label="主诉" prop="complaint" class="required form-item-single">
|
||||
<el-form-item
|
||||
label="主诉"
|
||||
prop="complaint"
|
||||
class="required form-item-single"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.complaint"
|
||||
type="textarea"
|
||||
@@ -111,7 +186,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 4. 查体、处理、辅助检查 -->
|
||||
<el-form-item label="查体(治疗)" prop="physicalExam" class="form-item-single">
|
||||
<el-form-item
|
||||
label="查体(治疗)"
|
||||
prop="physicalExam"
|
||||
class="form-item-single"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.physicalExam"
|
||||
type="textarea"
|
||||
@@ -121,7 +200,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="处置" prop="treatment" class="form-item-single">
|
||||
<el-form-item
|
||||
label="处置"
|
||||
prop="treatment"
|
||||
class="form-item-single"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.treatment"
|
||||
type="textarea"
|
||||
@@ -131,7 +214,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="辅助检查" prop="auxiliaryExam" class="form-item-single">
|
||||
<el-form-item
|
||||
label="辅助检查"
|
||||
prop="auxiliaryExam"
|
||||
class="form-item-single"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.auxiliaryExam"
|
||||
type="textarea"
|
||||
|
||||
@@ -5,9 +5,13 @@
|
||||
patient?.busNo || '未知'
|
||||
}}
|
||||
</div>
|
||||
<h2 style="text-align: center">{{ userStore.hospitalName }}</h2>
|
||||
<h2 style="text-align: center">
|
||||
{{ userStore.hospitalName }}
|
||||
</h2>
|
||||
|
||||
<h2 style="text-align: center">门诊病历</h2>
|
||||
<h2 style="text-align: center">
|
||||
门诊病历
|
||||
</h2>
|
||||
|
||||
<!-- 滚动内容区域 -->
|
||||
<div class="form-scroll-container">
|
||||
@@ -19,13 +23,23 @@
|
||||
label-align="left"
|
||||
class="medical-full-form"
|
||||
>
|
||||
<h4 class="section-title">基础信息</h4>
|
||||
<h4 class="section-title">
|
||||
基础信息
|
||||
</h4>
|
||||
<!-- 1. 基础信息:单行自适应排列 -->
|
||||
<el-form-item class="form-section">
|
||||
<div class="single-row-layout">
|
||||
<el-form-item label="呼吸" prop="breathe" class="row-item">
|
||||
<el-form-item
|
||||
label="呼吸"
|
||||
prop="breathe"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.breathe" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.breathe"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
<span class="unit">次/分</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
@@ -35,7 +49,11 @@
|
||||
<span class="unit">mmHg</span>
|
||||
</div>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="血压" prop="blood" class="row-item">
|
||||
<el-form-item
|
||||
label="血压"
|
||||
prop="blood"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit blood-input-group">
|
||||
<el-input
|
||||
v-model="formData.bloodHigh"
|
||||
@@ -53,19 +71,39 @@
|
||||
<span class="unit">(高/低)mmHg</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="体温" prop="temperature" class="row-item">
|
||||
<el-form-item
|
||||
label="体温"
|
||||
prop="temperature"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.temperature" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.temperature"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
<span class="unit">℃</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="脉搏" prop="pulse" class="row-item">
|
||||
<el-form-item
|
||||
label="脉搏"
|
||||
prop="pulse"
|
||||
class="row-item"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.pulse" type="text" placeholder="请输入" />
|
||||
<el-input
|
||||
v-model="formData.pulse"
|
||||
type="text"
|
||||
placeholder="请输入"
|
||||
/>
|
||||
<span class="unit">次/分</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="就诊日期" prop="onsetDate" class="row-item">
|
||||
<el-form-item
|
||||
label="就诊日期"
|
||||
prop="onsetDate"
|
||||
class="row-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.onsetDate"
|
||||
type="date"
|
||||
@@ -77,11 +115,17 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<h4 class="section-title">病史信息</h4>
|
||||
<h4 class="section-title">
|
||||
病史信息
|
||||
</h4>
|
||||
<!-- 2. 病史信息:单行自适应排列(新增调整) -->
|
||||
<el-form-item class="form-section">
|
||||
<div class="single-row-layout">
|
||||
<el-form-item label="现病史" prop="presentIllness" class="row-item history-item">
|
||||
<el-form-item
|
||||
label="现病史"
|
||||
prop="presentIllness"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.presentIllness"
|
||||
type="textarea"
|
||||
@@ -89,10 +133,23 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="既往史" prop="pastIllness" class="row-item history-item">
|
||||
<el-input v-model="formData.pastIllness" type="textarea" placeholder="无" autosize />
|
||||
<el-form-item
|
||||
label="既往史"
|
||||
prop="pastIllness"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.pastIllness"
|
||||
type="textarea"
|
||||
placeholder="无"
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="个人史" prop="personalHistory" class="row-item history-item">
|
||||
<el-form-item
|
||||
label="个人史"
|
||||
prop="personalHistory"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.personalHistory"
|
||||
type="textarea"
|
||||
@@ -100,7 +157,11 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="过敏史" prop="allergyHistory" class="row-item history-item">
|
||||
<el-form-item
|
||||
label="过敏史"
|
||||
prop="allergyHistory"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.allergyHistory"
|
||||
type="textarea"
|
||||
@@ -108,7 +169,11 @@
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="家族史" prop="familyHistory" class="row-item history-item">
|
||||
<el-form-item
|
||||
label="家族史"
|
||||
prop="familyHistory"
|
||||
class="row-item history-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.familyHistory"
|
||||
type="textarea"
|
||||
@@ -118,9 +183,15 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<h4 class="section-title">主诉、处置、辅助检查</h4>
|
||||
<h4 class="section-title">
|
||||
主诉、处置、辅助检查
|
||||
</h4>
|
||||
<!-- 3. 主诉(必填) -->
|
||||
<el-form-item label="主诉" prop="complaint" class="required form-item-single">
|
||||
<el-form-item
|
||||
label="主诉"
|
||||
prop="complaint"
|
||||
class="required form-item-single"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.complaint"
|
||||
type="textarea"
|
||||
@@ -140,7 +211,11 @@
|
||||
/>
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item label="处置" prop="treatment" class="form-item-single">
|
||||
<el-form-item
|
||||
label="处置"
|
||||
prop="treatment"
|
||||
class="form-item-single"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.treatment"
|
||||
type="textarea"
|
||||
@@ -150,7 +225,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="辅助检查" prop="auxiliaryExam" class="form-item-single">
|
||||
<el-form-item
|
||||
label="辅助检查"
|
||||
prop="auxiliaryExam"
|
||||
class="form-item-single"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.auxiliaryExam"
|
||||
type="textarea"
|
||||
|
||||
@@ -7,66 +7,99 @@
|
||||
<div class="surgicalPatientHandover-container">
|
||||
<div class="handover-form">
|
||||
<div class="form-header">
|
||||
<h1 class="hospital-name">{{ userStore.hospitalName }}</h1>
|
||||
<h2 class="form-title">手术患者交接单</h2>
|
||||
<h1 class="hospital-name">
|
||||
{{ userStore.hospitalName }}
|
||||
</h1>
|
||||
<h2 class="form-title">
|
||||
手术患者交接单
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="patient-info">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<div class="info-item">日期:{{ state.formData.date }}</div>
|
||||
<div class="info-item">
|
||||
日期:{{ state.formData.date }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">姓名:{{ state.formData.patientName }}</div>
|
||||
<div class="info-item">
|
||||
姓名:{{ state.formData.patientName }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">性别:{{ state.formData.sex }}</div>
|
||||
<div class="info-item">
|
||||
性别:{{ state.formData.sex }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">年龄:{{ state.formData.age }}岁</div>
|
||||
<div class="info-item">
|
||||
年龄:{{ state.formData.age }}岁
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<div class="info-item">科室:{{ state.formData.department }}</div>
|
||||
<div class="info-item">
|
||||
科室:{{ state.formData.department }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">床号:{{ state.formData.bedNumber }}</div>
|
||||
<div class="info-item">
|
||||
床号:{{ state.formData.bedNumber }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">住院号:{{ state.formData.hospitalNumber }}</div>
|
||||
<div class="info-item">
|
||||
住院号:{{ state.formData.hospitalNumber }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">术前诊断:{{ state.formData.preDiagnosis }}</div>
|
||||
<div class="info-item">
|
||||
术前诊断:{{ state.formData.preDiagnosis }}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<div class="info-item">拟行手术方式:{{ state.formData.surgeryMethod }}</div>
|
||||
<div class="info-item">
|
||||
拟行手术方式:{{ state.formData.surgeryMethod }}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
<el-form :model="state.formData" label-width="0" class="handover-form-content">
|
||||
<el-form
|
||||
:model="state.formData"
|
||||
label-width="0"
|
||||
class="handover-form-content"
|
||||
>
|
||||
<!-- 一、病房护士与手术室护士交接记录 -->
|
||||
<div class="form-section">
|
||||
<div class="section-title">一、病房护士与手术室护士交接记录</div>
|
||||
<div class="section-title">
|
||||
一、病房护士与手术室护士交接记录
|
||||
</div>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<div class="form-item">
|
||||
<span class="item-label">药物过敏史</span>
|
||||
<el-radio-group v-model="state.formData.drugAllergy">
|
||||
<el-radio :label="1">无</el-radio>
|
||||
<el-radio :label="2">有</el-radio>
|
||||
<el-radio :label="1">
|
||||
无
|
||||
</el-radio>
|
||||
<el-radio :label="2">
|
||||
有
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<div class="form-item">
|
||||
<span v-if="state.formData.drugAllergy === 2"
|
||||
>药物名称:
|
||||
<el-input v-model="state.formData.allergyDrugName" class="inline-input"
|
||||
/></span>
|
||||
<span v-if="state.formData.drugAllergy === 2">药物名称:
|
||||
<el-input
|
||||
v-model="state.formData.allergyDrugName"
|
||||
class="inline-input"
|
||||
/></span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -76,9 +109,15 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">身份确认</span>
|
||||
<el-checkbox-group v-model="state.formData.identityConfirm">
|
||||
<el-checkbox :label="1">患者姓名核实</el-checkbox>
|
||||
<el-checkbox :label="2">病例核实</el-checkbox>
|
||||
<el-checkbox :label="3">腕带核</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
患者姓名核实
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
病例核实
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
腕带核
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -93,8 +132,9 @@
|
||||
v-for="item in getStatisticsOptionList('surgeryMark')"
|
||||
:key="item.dictValue"
|
||||
:label="item.dictValue"
|
||||
>{{ item.dictLabel }}</el-radio
|
||||
>
|
||||
{{ item.dictLabel }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -123,29 +163,35 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">生命体征</span>
|
||||
<span>
|
||||
<el-input v-model="state.formData.temperature" class="inline-input">
|
||||
<el-input
|
||||
v-model="state.formData.temperature"
|
||||
class="inline-input"
|
||||
>
|
||||
<template #prepend>T</template>
|
||||
<template #append>℃</template>
|
||||
</el-input>
|
||||
</span>
|
||||
<span class="ml-20"
|
||||
><el-input v-model="state.formData.pulse" class="inline-input">
|
||||
<template #prepend>P</template>
|
||||
<template #append>次/分</template>
|
||||
</el-input></span
|
||||
<span class="ml-20"><el-input
|
||||
v-model="state.formData.pulse"
|
||||
class="inline-input"
|
||||
>
|
||||
<span class="ml-20"
|
||||
><el-input v-model="state.formData.respiration" class="inline-input">
|
||||
<template #prepend>R</template>
|
||||
<template #append>次/分</template>
|
||||
</el-input></span
|
||||
<template #prepend>P</template>
|
||||
<template #append>次/分</template>
|
||||
</el-input></span>
|
||||
<span class="ml-20"><el-input
|
||||
v-model="state.formData.respiration"
|
||||
class="inline-input"
|
||||
>
|
||||
<span class="ml-20"
|
||||
><el-input v-model="state.formData.respiration" class="inline-input">
|
||||
<template #prepend>BP</template>
|
||||
<template #append>mmHg</template>
|
||||
</el-input></span
|
||||
<template #prepend>R</template>
|
||||
<template #append>次/分</template>
|
||||
</el-input></span>
|
||||
<span class="ml-20"><el-input
|
||||
v-model="state.formData.respiration"
|
||||
class="inline-input"
|
||||
>
|
||||
<template #prepend>BP</template>
|
||||
<template #append>mmHg</template>
|
||||
</el-input></span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -155,12 +201,24 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">意识状态</span>
|
||||
<el-checkbox-group v-model="state.formData.consciousness">
|
||||
<el-checkbox :label="1">清醒</el-checkbox>
|
||||
<el-checkbox :label="2">嗜睡</el-checkbox>
|
||||
<el-checkbox :label="3">意识模糊</el-checkbox>
|
||||
<el-checkbox :label="4">躁动</el-checkbox>
|
||||
<el-checkbox :label="5">偏瘫</el-checkbox>
|
||||
<el-checkbox :label="6">昏迷</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
清醒
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
嗜睡
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
意识模糊
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
躁动
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="5">
|
||||
偏瘫
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="6">
|
||||
昏迷
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -171,13 +229,22 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">皮肤情况</span>
|
||||
<el-checkbox-group v-model="state.formData.skinCondition">
|
||||
<el-checkbox :label="1">正常</el-checkbox>
|
||||
<el-checkbox :label="2">破损</el-checkbox>
|
||||
<el-checkbox :label="3">压力性损伤</el-checkbox>
|
||||
<el-checkbox :label="4">其他</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
正常
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
破损
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
压力性损伤
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
其他
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<span v-if="state.formData.skinCondition.includes(4)"
|
||||
>其他: <el-input v-model="state.formData.skinOther" class="inline-input"
|
||||
<span v-if="state.formData.skinCondition.includes(4)">其他: <el-input
|
||||
v-model="state.formData.skinOther"
|
||||
class="inline-input"
|
||||
/></span>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -236,13 +303,27 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">留置管路</span>
|
||||
<el-checkbox-group v-model="state.formData.preOperativePipeline">
|
||||
<el-checkbox :label="1">无</el-checkbox>
|
||||
<el-checkbox :label="2">中心静脉置管</el-checkbox>
|
||||
<el-checkbox :label="3">动脉置管</el-checkbox>
|
||||
<el-checkbox :label="4">气管插管</el-checkbox>
|
||||
<el-checkbox :label="5">胃管</el-checkbox>
|
||||
<el-checkbox :label="6">尿管</el-checkbox>
|
||||
<el-checkbox :label="7">引流管</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
无
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
中心静脉置管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
动脉置管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
气管插管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="5">
|
||||
胃管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="6">
|
||||
尿管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="7">
|
||||
引流管
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -258,11 +339,22 @@
|
||||
style="width: 50px"
|
||||
/>
|
||||
<span>条</span>
|
||||
<el-checkbox-group v-model="state.formData.veinPosition" class="ml-20">
|
||||
<el-checkbox :label="1">右上肢</el-checkbox>
|
||||
<el-checkbox :label="2">右下肢</el-checkbox>
|
||||
<el-checkbox :label="3">左上肢</el-checkbox>
|
||||
<el-checkbox :label="4">左下肢</el-checkbox>
|
||||
<el-checkbox-group
|
||||
v-model="state.formData.veinPosition"
|
||||
class="ml-20"
|
||||
>
|
||||
<el-checkbox :label="1">
|
||||
右上肢
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
右下肢
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
左上肢
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
左下肢
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -273,13 +365,27 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">确认事项</span>
|
||||
<el-checkbox-group v-model="state.formData.confirmItems">
|
||||
<el-checkbox :label="1">禁食水</el-checkbox>
|
||||
<el-checkbox :label="2">备皮</el-checkbox>
|
||||
<el-checkbox :label="3">无活动义齿</el-checkbox>
|
||||
<el-checkbox :label="4">无随形眼镜</el-checkbox>
|
||||
<el-checkbox :label="5">摘首饰</el-checkbox>
|
||||
<el-checkbox :label="6">非月经期</el-checkbox>
|
||||
<el-checkbox :label="7">病员服</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
禁食水
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
备皮
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
无活动义齿
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
无随形眼镜
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="5">
|
||||
摘首饰
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="6">
|
||||
非月经期
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="7">
|
||||
病员服
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -290,11 +396,21 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">携带物品</span>
|
||||
<el-checkbox-group v-model="state.formData.carryItems">
|
||||
<el-checkbox :label="1">病例</el-checkbox>
|
||||
<el-checkbox :label="2">药物</el-checkbox>
|
||||
<el-checkbox :label="3">影像资料</el-checkbox>
|
||||
<el-checkbox :label="4">胸/腹带</el-checkbox>
|
||||
<el-checkbox :label="5">血制品</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
病例
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
药物
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
影像资料
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
胸/腹带
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="5">
|
||||
血制品
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -304,19 +420,28 @@
|
||||
<el-col :span="8">
|
||||
<div class="form-item">
|
||||
<span class="item-label">病房护士签名</span>
|
||||
<el-input v-model="state.formData.wardNurseName" class="inline-input" />
|
||||
<el-input
|
||||
v-model="state.formData.wardNurseName"
|
||||
class="inline-input"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="form-item">
|
||||
<span class="item-label">手术护士签名</span>
|
||||
<el-input v-model="state.formData.surgeryNurseName" class="inline-input" />
|
||||
<el-input
|
||||
v-model="state.formData.surgeryNurseName"
|
||||
class="inline-input"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="form-item">
|
||||
<span class="item-label">交接时间</span>
|
||||
<el-input v-model="state.formData.handoverTime" class="inline-input" />
|
||||
<el-input
|
||||
v-model="state.formData.handoverTime"
|
||||
class="inline-input"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -324,7 +449,9 @@
|
||||
|
||||
<!-- 二、手术室护士与麻醉复苏室护士/病房护士交接记录 -->
|
||||
<div class="form-section">
|
||||
<div class="section-title">二、手术室护士与麻醉复苏室护士/病房护士交接记录</div>
|
||||
<div class="section-title">
|
||||
二、手术室护士与麻醉复苏室护士/病房护士交接记录
|
||||
</div>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
@@ -345,7 +472,10 @@
|
||||
/>
|
||||
<span>次/分</span>
|
||||
<span class="ml-20">BP</span>
|
||||
<el-input v-model="state.formData.postBloodPressure" class="inline-input" />
|
||||
<el-input
|
||||
v-model="state.formData.postBloodPressure"
|
||||
class="inline-input"
|
||||
/>
|
||||
<span>mmHg</span>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -356,14 +486,21 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">意识状态</span>
|
||||
<el-checkbox-group v-model="state.formData.postConsciousness">
|
||||
<el-checkbox :label="1">清醒</el-checkbox>
|
||||
<el-checkbox :label="2">未清醒</el-checkbox>
|
||||
<el-checkbox :label="3">其他</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
清醒
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
未清醒
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
其他
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<span v-if="state.formData.postConsciousness.includes(3)"
|
||||
>其他:
|
||||
<el-input v-model="state.formData.postConsciousnessOther" class="inline-input"
|
||||
/></span>
|
||||
<span v-if="state.formData.postConsciousness.includes(3)">其他:
|
||||
<el-input
|
||||
v-model="state.formData.postConsciousnessOther"
|
||||
class="inline-input"
|
||||
/></span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -373,13 +510,22 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">皮肤情况</span>
|
||||
<el-checkbox-group v-model="state.formData.postSkinCondition">
|
||||
<el-checkbox :label="1">正常</el-checkbox>
|
||||
<el-checkbox :label="2">破损</el-checkbox>
|
||||
<el-checkbox :label="3">压力性损伤</el-checkbox>
|
||||
<el-checkbox :label="4">其他</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
正常
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
破损
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
压力性损伤
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
其他
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<span v-if="state.formData.postSkinCondition.includes(4)"
|
||||
>其他: <el-input v-model="state.formData.postSkinOther" class="inline-input"
|
||||
<span v-if="state.formData.postSkinCondition.includes(4)">其他: <el-input
|
||||
v-model="state.formData.postSkinOther"
|
||||
class="inline-input"
|
||||
/></span>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -438,13 +584,27 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">术后管路</span>
|
||||
<el-checkbox-group v-model="state.formData.postOperativePipeline">
|
||||
<el-checkbox :label="1">无</el-checkbox>
|
||||
<el-checkbox :label="2">中心静脉置管</el-checkbox>
|
||||
<el-checkbox :label="3">动脉置管</el-checkbox>
|
||||
<el-checkbox :label="4">气管插管</el-checkbox>
|
||||
<el-checkbox :label="5">胃管</el-checkbox>
|
||||
<el-checkbox :label="6">尿管</el-checkbox>
|
||||
<el-checkbox :label="7">引流管</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
无
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
中心静脉置管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
动脉置管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
气管插管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="5">
|
||||
胃管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="6">
|
||||
尿管
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="7">
|
||||
引流管
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -460,11 +620,22 @@
|
||||
style="width: 50px"
|
||||
/>
|
||||
<span>条</span>
|
||||
<el-checkbox-group v-model="state.formData.postVeinPosition" class="ml-20">
|
||||
<el-checkbox :label="1">右上肢</el-checkbox>
|
||||
<el-checkbox :label="2">右下肢</el-checkbox>
|
||||
<el-checkbox :label="3">左上肢</el-checkbox>
|
||||
<el-checkbox :label="4">左下肢</el-checkbox>
|
||||
<el-checkbox-group
|
||||
v-model="state.formData.postVeinPosition"
|
||||
class="ml-20"
|
||||
>
|
||||
<el-checkbox :label="1">
|
||||
右上肢
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
右下肢
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
左上肢
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
左下肢
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -475,11 +646,21 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">携带物品</span>
|
||||
<el-checkbox-group v-model="state.formData.postCarryItems">
|
||||
<el-checkbox :label="1">病历</el-checkbox>
|
||||
<el-checkbox :label="2">药物</el-checkbox>
|
||||
<el-checkbox :label="3">影像资料</el-checkbox>
|
||||
<el-checkbox :label="4">胸/腹带</el-checkbox>
|
||||
<el-checkbox :label="5">血制品</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
病历
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
药物
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="3">
|
||||
影像资料
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="4">
|
||||
胸/腹带
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="5">
|
||||
血制品
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -490,8 +671,12 @@
|
||||
<div class="form-item">
|
||||
<span class="item-label">镇痛泵</span>
|
||||
<el-radio-group v-model="state.formData.painPump">
|
||||
<el-radio :label="1">无</el-radio>
|
||||
<el-radio :label="2">有</el-radio>
|
||||
<el-radio :label="1">
|
||||
无
|
||||
</el-radio>
|
||||
<el-radio :label="2">
|
||||
有
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -500,14 +685,23 @@
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<div class="form-item">
|
||||
<span class="item-label" style="width: 220px">手术室/麻醉复苏室护士签名</span>
|
||||
<el-input v-model="state.formData.surgeryRecoveryNurseName" class="inline-input" />
|
||||
<span
|
||||
class="item-label"
|
||||
style="width: 220px"
|
||||
>手术室/麻醉复苏室护士签名</span>
|
||||
<el-input
|
||||
v-model="state.formData.surgeryRecoveryNurseName"
|
||||
class="inline-input"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<div class="form-item">
|
||||
<span class="item-label">病房护士签名</span>
|
||||
<el-input v-model="state.formData.postWardNurseName" class="inline-input" />
|
||||
<el-input
|
||||
v-model="state.formData.postWardNurseName"
|
||||
class="inline-input"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -532,7 +726,10 @@
|
||||
<el-col :span="12">
|
||||
<div class="form-item">
|
||||
<span class="item-label">交接时间</span>
|
||||
<el-input v-model="state.formData.postHandoverTime" class="inline-input" />
|
||||
<el-input
|
||||
v-model="state.formData.postHandoverTime"
|
||||
class="inline-input"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -540,13 +737,19 @@
|
||||
|
||||
<!-- 其他 -->
|
||||
<div class="form-section">
|
||||
<div class="section-title">其他</div>
|
||||
<div class="section-title">
|
||||
其他
|
||||
</div>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<div class="form-item">
|
||||
<el-checkbox-group v-model="state.formData.otherItems">
|
||||
<el-checkbox :label="1">离院</el-checkbox>
|
||||
<el-checkbox :label="2">死亡</el-checkbox>
|
||||
<el-checkbox :label="1">
|
||||
离院
|
||||
</el-checkbox>
|
||||
<el-checkbox :label="2">
|
||||
死亡
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
|
||||
@@ -1,15 +1,26 @@
|
||||
<template>
|
||||
<div class="medical-document" >
|
||||
<!-- 操作按钮 -->
|
||||
<div class="btn-group">
|
||||
<el-button type="success" @click="handlePrint">打印记录</el-button>
|
||||
<!-- <el-button type="warning" @click="handleReset">重置表单</el-button> -->
|
||||
</div>
|
||||
<div class="medical-document">
|
||||
<!-- 操作按钮 -->
|
||||
<div class="btn-group">
|
||||
<el-button
|
||||
type="success"
|
||||
@click="handlePrint"
|
||||
>
|
||||
打印记录
|
||||
</el-button>
|
||||
<!-- <el-button type="warning" @click="handleReset">重置表单</el-button> -->
|
||||
</div>
|
||||
<!-- 标题区域 -->
|
||||
<div class="doc-header">
|
||||
<h2 class="doc-title">{{ userStore.hospitalName}}</h2>
|
||||
<h1 class="doc-title">手术记录</h1>
|
||||
<div class="doc-subtitle">病历号: {{ formData.busNo || '待填写' }}</div>
|
||||
<h2 class="doc-title">
|
||||
{{ userStore.hospitalName }}
|
||||
</h2>
|
||||
<h1 class="doc-title">
|
||||
手术记录
|
||||
</h1>
|
||||
<div class="doc-subtitle">
|
||||
病历号: {{ formData.busNo || '待填写' }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 内容区域 -->
|
||||
@@ -24,34 +35,76 @@
|
||||
>
|
||||
<!-- 患者基础信息 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">一、患者基础信息</h2>
|
||||
<h2 class="section-title">
|
||||
一、患者基础信息
|
||||
</h2>
|
||||
<div class="adaptive-grid">
|
||||
<el-form-item label="姓名" prop="patientName" class="grid-item required">
|
||||
<el-input v-model="formData.patientName" placeholder="请输入患者姓名" clearable />
|
||||
<el-form-item
|
||||
label="姓名"
|
||||
prop="patientName"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.patientName"
|
||||
placeholder="请输入患者姓名"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="性别" prop="gender" class="grid-item required">
|
||||
<el-select v-model="formData.gender" placeholder="请选择性别">
|
||||
<el-option label="男性" value="男性" />
|
||||
<el-option label="女性" value="女性" />
|
||||
<el-form-item
|
||||
label="性别"
|
||||
prop="gender"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.gender"
|
||||
placeholder="请选择性别"
|
||||
>
|
||||
<el-option
|
||||
label="男性"
|
||||
value="男性"
|
||||
/>
|
||||
<el-option
|
||||
label="女性"
|
||||
value="女性"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="年龄" prop="age" class="grid-item required">
|
||||
<el-form-item
|
||||
label="年龄"
|
||||
prop="age"
|
||||
class="grid-item required"
|
||||
>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model.number="formData.age" placeholder="请输入年龄" />
|
||||
<el-input
|
||||
v-model.number="formData.age"
|
||||
placeholder="请输入年龄"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室" prop="department" class="grid-item required">
|
||||
<el-input v-model="formData.department" placeholder="如:普外科" clearable />
|
||||
<el-form-item
|
||||
label="科室"
|
||||
prop="department"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.department"
|
||||
placeholder="如:普外科"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<!--
|
||||
<!--
|
||||
<el-form-item label="病房/床号" prop="bedNo" class="grid-item required">
|
||||
<el-input v-model="formData.bedNo" placeholder="如:502-03" clearable />
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item label="手术日期" prop="operationDate" class="grid-item required">
|
||||
<el-form-item
|
||||
label="手术日期"
|
||||
prop="operationDate"
|
||||
class="grid-item required"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="formData.operationDate"
|
||||
type="date"
|
||||
@@ -65,8 +118,14 @@
|
||||
|
||||
<!-- 手术综合信息 -->
|
||||
<section class="doc-section">
|
||||
<h2 class="section-title">二、手术综合信息</h2>
|
||||
<el-form-item label="详细记录" prop="surgicalDetails" class="full-width-item required">
|
||||
<h2 class="section-title">
|
||||
二、手术综合信息
|
||||
</h2>
|
||||
<el-form-item
|
||||
label="详细记录"
|
||||
prop="surgicalDetails"
|
||||
class="full-width-item required"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.surgicalDetails"
|
||||
type="textarea"
|
||||
@@ -75,8 +134,6 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
</section>
|
||||
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
@@ -100,7 +157,7 @@ import useUserStore from '../store/modules/user';
|
||||
import { previewPrint } from '@/utils/printUtils.js';
|
||||
|
||||
defineOptions({
|
||||
name: 'tySurgicalRecord'
|
||||
name: 'TySurgicalRecord'
|
||||
});
|
||||
// 表单引用
|
||||
const formRef = ref(null);
|
||||
|
||||
@@ -1,8 +1,19 @@
|
||||
<template>
|
||||
<div class="app-container" v-loading="loading">
|
||||
<div
|
||||
v-loading="loading"
|
||||
class="app-container"
|
||||
>
|
||||
<!-- 筛选区 -->
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" class="filter-form">
|
||||
<el-form-item label="卫生机构" prop="orgName">
|
||||
<el-form
|
||||
ref="queryRef"
|
||||
:model="queryParams"
|
||||
:inline="true"
|
||||
class="filter-form"
|
||||
>
|
||||
<el-form-item
|
||||
label="卫生机构"
|
||||
prop="orgName"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.orgName"
|
||||
placeholder="请选择"
|
||||
@@ -18,7 +29,10 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="诊室名称" prop="roomName">
|
||||
<el-form-item
|
||||
label="诊室名称"
|
||||
prop="roomName"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.roomName"
|
||||
placeholder="请输入诊室名称"
|
||||
@@ -29,9 +43,26 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">查询</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="Plus" @click="handleAdd">新增</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="Search"
|
||||
@click="handleQuery"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
icon="Refresh"
|
||||
@click="resetQuery"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@@ -43,61 +74,131 @@
|
||||
style="width: 100%"
|
||||
class="clinic-room-table"
|
||||
>
|
||||
<el-table-column prop="id" label="ID" width="180" align="center" />
|
||||
<el-table-column label="卫生机构" width="200" align="center" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<!-- 用==忽略类型匹配,string的"3"和number的3就能匹配上 -->
|
||||
{{ tenantOptions.find(item => item.id == scope.row.orgName)?.tenantName || scope.row.orgName || '未知机构' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="roomName" label="诊室名称" width="160" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="department" label="科室名称" width="160" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="building" label="诊室楼号" width="120" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="floor" label="诊室楼层" width="90" align="center" />
|
||||
<el-table-column prop="roomNo" label="诊室房间号" width="120" align="center" />
|
||||
<el-table-column prop="isDisabled" label="停用" width="90" align="center">
|
||||
<el-table-column
|
||||
prop="id"
|
||||
label="ID"
|
||||
width="180"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="卫生机构"
|
||||
width="200"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="scope">
|
||||
<!-- 用==忽略类型匹配,string的"3"和number的3就能匹配上 -->
|
||||
{{ tenantOptions.find(item => item.id == scope.row.orgName)?.tenantName || scope.row.orgName || '未知机构' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="roomName"
|
||||
label="诊室名称"
|
||||
width="160"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="department"
|
||||
label="科室名称"
|
||||
width="160"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="building"
|
||||
label="诊室楼号"
|
||||
width="120"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="floor"
|
||||
label="诊室楼层"
|
||||
width="90"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="roomNo"
|
||||
label="诊室房间号"
|
||||
width="120"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="isDisabled"
|
||||
label="停用"
|
||||
width="90"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-tag :type="scope.row.isDisabled ? 'danger' : 'success'">
|
||||
{{ scope.row.isDisabled ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remarks" label="备注" min-width="100" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="void" label="作废" width="90" align="center">
|
||||
<el-table-column
|
||||
prop="remarks"
|
||||
label="备注"
|
||||
min-width="100"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="void"
|
||||
label="作废"
|
||||
width="90"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-tag :type="scope.row.void ? 'danger' : 'success'">
|
||||
{{ scope.row.void ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作人" width="120" align="center" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
{{ scope.row.updateBy || scope.row.createBy || '系统默认' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="250" align="center" fixed="right">
|
||||
<el-table-column
|
||||
label="操作人"
|
||||
width="120"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.updateBy || scope.row.createBy || '系统默认' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="250"
|
||||
align="center"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
v-hasPermi="['appoinment:clinicRoom:edit']"
|
||||
type="primary"
|
||||
link
|
||||
icon="EditPen"
|
||||
@click="handleEdit(scope.row)"
|
||||
v-hasPermi="['appoinment:clinicRoom:edit']"
|
||||
>编辑</el-button>
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-hasPermi="['appoinment:clinicRoom:query']"
|
||||
type="info"
|
||||
link
|
||||
icon="View"
|
||||
@click="handleView(scope.row)"
|
||||
v-hasPermi="['appoinment:clinicRoom:query']"
|
||||
>查看</el-button>
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
v-hasPermi="['appoinment:clinicRoom:remove']"
|
||||
type="danger"
|
||||
link
|
||||
icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['appoinment:clinicRoom:remove']"
|
||||
>删除</el-button>
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -105,16 +206,16 @@
|
||||
<!-- 分页区 -->
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
:total="total"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 新增/编辑/查看弹窗 -->
|
||||
<el-dialog
|
||||
:title="dialogTitle"
|
||||
v-model="dialogVisible"
|
||||
:title="dialogTitle"
|
||||
width="500px"
|
||||
append-to-body
|
||||
:close-on-click-modal="false"
|
||||
@@ -127,93 +228,136 @@
|
||||
label-width="100px"
|
||||
:disabled="dialogType === 'view'"
|
||||
>
|
||||
<el-form-item label="科室名称" prop="department">
|
||||
<el-select
|
||||
v-model="form.department"
|
||||
placeholder="请选择科室"
|
||||
style="width: 100%"
|
||||
filterable
|
||||
:disabled="dialogType === 'view'"
|
||||
<el-form-item
|
||||
label="科室名称"
|
||||
prop="department"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in departmentOptions"
|
||||
:key="item.deptId || item.id"
|
||||
:label="item.deptName || item.name"
|
||||
:value="item.deptName || item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="卫生机构" prop="orgName">
|
||||
<el-select
|
||||
v-model="form.orgName"
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
:disabled="dialogType === 'view'"
|
||||
<el-select
|
||||
v-model="form.department"
|
||||
placeholder="请选择科室"
|
||||
style="width: 100%"
|
||||
filterable
|
||||
:disabled="dialogType === 'view'"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in departmentOptions"
|
||||
:key="item.deptId || item.id"
|
||||
:label="item.deptName || item.name"
|
||||
:value="item.deptName || item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="卫生机构"
|
||||
prop="orgName"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in addEditTenantOptions"
|
||||
:key="item.id"
|
||||
:label="item.tenantName"
|
||||
:value="item.id"
|
||||
<el-select
|
||||
v-model="form.orgName"
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
:disabled="dialogType === 'view'"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in addEditTenantOptions"
|
||||
:key="item.id"
|
||||
:label="item.tenantName"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="诊室名称"
|
||||
prop="roomName"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.roomName"
|
||||
placeholder="请输入诊室名称"
|
||||
maxlength="20"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="诊室名称" prop="roomName">
|
||||
<el-input
|
||||
v-model="form.roomName"
|
||||
placeholder="请输入诊室名称"
|
||||
maxlength="20"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="诊室楼号" prop="building">
|
||||
<el-input
|
||||
v-model="form.building"
|
||||
placeholder="请输入诊室楼号"
|
||||
maxlength="50"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="诊室楼层" prop="floor">
|
||||
<el-input
|
||||
v-model="form.floor"
|
||||
placeholder="请输入诊室楼层"
|
||||
maxlength="10"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="诊室房间号" prop="roomNo">
|
||||
<el-input
|
||||
v-model="form.roomNo"
|
||||
placeholder="请输入诊室房间号"
|
||||
maxlength="50"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用状态" prop="isDisabled">
|
||||
<el-radio-group v-model="form.isDisabled">
|
||||
<el-radio :label="false">启用</el-radio>
|
||||
<el-radio :label="true">停用</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remarks">
|
||||
<el-input
|
||||
v-model="form.remarks"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入备注"
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="作废" prop="void">
|
||||
<el-radio-group v-model="form.void">
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-radio :label="true">是</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="诊室楼号"
|
||||
prop="building"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.building"
|
||||
placeholder="请输入诊室楼号"
|
||||
maxlength="50"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="诊室楼层"
|
||||
prop="floor"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.floor"
|
||||
placeholder="请输入诊室楼层"
|
||||
maxlength="10"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="诊室房间号"
|
||||
prop="roomNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.roomNo"
|
||||
placeholder="请输入诊室房间号"
|
||||
maxlength="50"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="停用状态"
|
||||
prop="isDisabled"
|
||||
>
|
||||
<el-radio-group v-model="form.isDisabled">
|
||||
<el-radio :label="false">
|
||||
启用
|
||||
</el-radio>
|
||||
<el-radio :label="true">
|
||||
停用
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="备注"
|
||||
prop="remarks"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.remarks"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入备注"
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="作废"
|
||||
prop="void"
|
||||
>
|
||||
<el-radio-group v-model="form.void">
|
||||
<el-radio :label="false">
|
||||
否
|
||||
</el-radio>
|
||||
<el-radio :label="true">
|
||||
是
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button v-if="dialogType !== 'view'" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button
|
||||
v-if="dialogType !== 'view'"
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -1,20 +1,34 @@
|
||||
<template>
|
||||
<div class="doctorschedule-container">
|
||||
<div class="doctorschedule-header">
|
||||
<h2 class="doctorschedule-title">医生排班</h2>
|
||||
<h2 class="doctorschedule-title">
|
||||
医生排班
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="doctorschedule-content">
|
||||
<!-- 筛选条件 -->
|
||||
<div class="filter-condition">
|
||||
<span class="filter-label">卫生机构</span>
|
||||
<el-select v-model="filterParams.orgName" class="filter-select">
|
||||
<el-option label="演示医院" value="演示医院"></el-option>
|
||||
<el-select
|
||||
v-model="filterParams.orgName"
|
||||
class="filter-select"
|
||||
>
|
||||
<el-option
|
||||
label="演示医院"
|
||||
value="演示医院"
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
<span class="filter-label">科室名称</span>
|
||||
<el-select v-model="filterParams.deptName" class="filter-select">
|
||||
<el-option label="测试内科" value="测试内科"></el-option>
|
||||
<el-select
|
||||
v-model="filterParams.deptName"
|
||||
class="filter-select"
|
||||
>
|
||||
<el-option
|
||||
label="测试内科"
|
||||
value="测试内科"
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
<span class="filter-label">开始日期</span>
|
||||
@@ -27,22 +41,51 @@
|
||||
|
||||
<span class="filter-label">排班类型</span>
|
||||
<div class="radio-group">
|
||||
<el-radio v-model="filterParams.appointmentType" label="普通" @change="handleAppointmentTypeChange">普通</el-radio>
|
||||
<el-radio v-model="filterParams.appointmentType" label="专家" @change="handleAppointmentTypeChange">专家</el-radio>
|
||||
<el-radio
|
||||
v-model="filterParams.appointmentType"
|
||||
label="普通"
|
||||
@change="handleAppointmentTypeChange"
|
||||
>
|
||||
普通
|
||||
</el-radio>
|
||||
<el-radio
|
||||
v-model="filterParams.appointmentType"
|
||||
label="专家"
|
||||
@change="handleAppointmentTypeChange"
|
||||
>
|
||||
专家
|
||||
</el-radio>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 排班表格 -->
|
||||
<div class="schedule-table-container">
|
||||
<!-- 按日期分组显示排班 -->
|
||||
<div v-for="(dateGroup, index) in groupedSchedule" :key="index" class="daily-schedule">
|
||||
<div
|
||||
v-for="(dateGroup, index) in groupedSchedule"
|
||||
:key="index"
|
||||
class="daily-schedule"
|
||||
>
|
||||
<div class="daily-header">
|
||||
<span class="date-text">{{ dateGroup.date }}</span>
|
||||
<span class="weekday-text">{{ dateGroup.weekday }}</span>
|
||||
</div>
|
||||
<el-table :data="dateGroup.items" border style="width: 100%" class="schedule-table">
|
||||
<el-table-column prop="timeSlot" label="时段" width="100"></el-table-column>
|
||||
<el-table-column prop="doctorName" :label="filterParams.appointmentType === '专家' ? '专家' : '医生'" width="150">
|
||||
<el-table
|
||||
:data="dateGroup.items"
|
||||
border
|
||||
style="width: 100%"
|
||||
class="schedule-table"
|
||||
>
|
||||
<el-table-column
|
||||
prop="timeSlot"
|
||||
label="时段"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="doctorName"
|
||||
:label="filterParams.appointmentType === '专家' ? '专家' : '医生'"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.doctorName"
|
||||
@@ -55,11 +98,15 @@
|
||||
:key="doctor.value"
|
||||
:label="doctor.label"
|
||||
:value="doctor.value"
|
||||
></el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="room" label="诊室" width="100">
|
||||
<el-table-column
|
||||
prop="room"
|
||||
label="诊室"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.room"
|
||||
@@ -67,14 +114,30 @@
|
||||
class="inline-select"
|
||||
:disabled="!isEditMode"
|
||||
>
|
||||
<el-option label="诊室1" value="诊室1"></el-option>
|
||||
<el-option label="诊室2" value="诊室2"></el-option>
|
||||
<el-option label="诊室3" value="诊室3"></el-option>
|
||||
<el-option label="诊室4" value="诊室4"></el-option>
|
||||
<el-option
|
||||
label="诊室1"
|
||||
value="诊室1"
|
||||
/>
|
||||
<el-option
|
||||
label="诊室2"
|
||||
value="诊室2"
|
||||
/>
|
||||
<el-option
|
||||
label="诊室3"
|
||||
value="诊室3"
|
||||
/>
|
||||
<el-option
|
||||
label="诊室4"
|
||||
value="诊室4"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="startTime" label="开始时间" width="120">
|
||||
<el-table-column
|
||||
prop="startTime"
|
||||
label="开始时间"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-time-picker
|
||||
v-model="scope.row.startTime"
|
||||
@@ -87,7 +150,11 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="endTime" label="结束时间" width="120">
|
||||
<el-table-column
|
||||
prop="endTime"
|
||||
label="结束时间"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-time-picker
|
||||
v-model="scope.row.endTime"
|
||||
@@ -100,27 +167,39 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="maxNumber" label="限号数量" width="80">
|
||||
<el-table-column
|
||||
prop="maxNumber"
|
||||
label="限号数量"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.maxNumber"
|
||||
type="number"
|
||||
:disabled="!isEditMode"
|
||||
/>
|
||||
v-model="scope.row.maxNumber"
|
||||
type="number"
|
||||
:disabled="!isEditMode"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="record" label="号源记录" width="80">
|
||||
<el-table-column
|
||||
prop="record"
|
||||
label="号源记录"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-icon
|
||||
@click="handleViewRecord(scope.row)"
|
||||
class="record-icon"
|
||||
class="record-icon"
|
||||
title="查看号源记录"
|
||||
@click="handleViewRecord(scope.row)"
|
||||
>
|
||||
<View />
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="appointmentItem" label="挂号项目" width="120">
|
||||
<el-table-column
|
||||
prop="appointmentItem"
|
||||
label="挂号项目"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.appointmentItem"
|
||||
@@ -129,19 +208,39 @@
|
||||
:disabled="!isEditMode"
|
||||
@change="handleAppointmentItemChange(scope.row)"
|
||||
>
|
||||
<el-option label="挂号费 50" value="挂号费 50"></el-option>
|
||||
<el-option label="一般诊疗费 10" value="一般诊疗费 10"></el-option>
|
||||
<el-option label="主任医师 27" value="主任医师 27"></el-option>
|
||||
<el-option label="副主任 15" value="副主任 15"></el-option>
|
||||
<el-option
|
||||
label="挂号费 50"
|
||||
value="挂号费 50"
|
||||
/>
|
||||
<el-option
|
||||
label="一般诊疗费 10"
|
||||
value="一般诊疗费 10"
|
||||
/>
|
||||
<el-option
|
||||
label="主任医师 27"
|
||||
value="主任医师 27"
|
||||
/>
|
||||
<el-option
|
||||
label="副主任 15"
|
||||
value="副主任 15"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="registrationFee" label="挂号费(元)" width="100">
|
||||
<el-table-column
|
||||
prop="registrationFee"
|
||||
label="挂号费(元)"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.registrationFee || '0' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="clinicItem" label="诊查项目" width="150">
|
||||
<el-table-column
|
||||
prop="clinicItem"
|
||||
label="诊查项目"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.clinicItem"
|
||||
@@ -150,53 +249,91 @@
|
||||
:disabled="!isEditMode"
|
||||
@change="handleClinicItemChange(scope.row)"
|
||||
>
|
||||
<el-option label="常规诊查" value="常规诊查"></el-option>
|
||||
<el-option label="专科诊查" value="专科诊查"></el-option>
|
||||
<el-option label="特殊诊查" value="特殊诊查"></el-option>
|
||||
<el-option label="专家诊查" value="专家诊查"></el-option>
|
||||
<el-option
|
||||
label="常规诊查"
|
||||
value="常规诊查"
|
||||
/>
|
||||
<el-option
|
||||
label="专科诊查"
|
||||
value="专科诊查"
|
||||
/>
|
||||
<el-option
|
||||
label="特殊诊查"
|
||||
value="特殊诊查"
|
||||
/>
|
||||
<el-option
|
||||
label="专家诊查"
|
||||
value="专家诊查"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="treatmentFee" label="诊疗费(元)" width="100">
|
||||
<el-table-column
|
||||
prop="treatmentFee"
|
||||
label="诊疗费(元)"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.treatmentFee || '0' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="online" label="线上" width="60">
|
||||
<el-table-column
|
||||
prop="online"
|
||||
label="线上"
|
||||
width="60"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-checkbox v-model="scope.row.online" :disabled="!isEditMode"></el-checkbox>
|
||||
<el-checkbox
|
||||
v-model="scope.row.online"
|
||||
:disabled="!isEditMode"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="stopClinic" label="停诊" width="60">
|
||||
<el-table-column
|
||||
prop="stopClinic"
|
||||
label="停诊"
|
||||
width="60"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-checkbox v-model="scope.row.stopClinic" :disabled="!isEditMode"></el-checkbox>
|
||||
<el-checkbox
|
||||
v-model="scope.row.stopClinic"
|
||||
:disabled="!isEditMode"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="stopReason" label="停诊原因" width="150">
|
||||
<el-table-column
|
||||
prop="stopReason"
|
||||
label="停诊原因"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.stopReason"
|
||||
:placeholder="scope.row.stopClinic ? '请输入停诊原因' : ''"
|
||||
class="inline-input"
|
||||
:disabled="!isEditMode || !scope.row.stopClinic"
|
||||
></el-input>
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="150" fixed="right">
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="150"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handleAddSchedule(scope.row)"
|
||||
:disabled="!isEditMode"
|
||||
@click="handleAddSchedule(scope.row)"
|
||||
>
|
||||
添加
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
@click="handleDeleteSchedule(scope.row)"
|
||||
:disabled="!isEditMode"
|
||||
@click="handleDeleteSchedule(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
@@ -208,8 +345,16 @@
|
||||
|
||||
<!-- 底部操作按钮 -->
|
||||
<div class="bottom-buttons">
|
||||
<el-button type="primary" @click="handleSave" :disabled="!isEditMode">确定</el-button>
|
||||
<el-button @click="handleCancel">取消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
:disabled="!isEditMode"
|
||||
@click="handleSave"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
<el-button @click="handleCancel">
|
||||
取消
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -221,13 +366,19 @@
|
||||
:close-on-click-modal="true"
|
||||
>
|
||||
<div class="appointment-records">
|
||||
<div class="record-item" v-for="record in appointmentRecords" :key="record.index">
|
||||
<div
|
||||
v-for="record in appointmentRecords"
|
||||
:key="record.index"
|
||||
class="record-item"
|
||||
>
|
||||
<span class="record-time">{{ record.time }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="recordDialogVisible = false">确定</el-button>
|
||||
<el-button @click="recordDialogVisible = false">
|
||||
确定
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -2,30 +2,80 @@
|
||||
<div class="appoinmentmanage-wrapper">
|
||||
<div class="appoinmentmanage-container">
|
||||
<div class="appoinmentmanage-header">
|
||||
<h2 class="appoinmentmanage-title">科室排班管理</h2>
|
||||
<h2 class="appoinmentmanage-title">
|
||||
科室排班管理
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="appoinmentmanage-content">
|
||||
<!-- 查询条件 -->
|
||||
<div class="query-condition">
|
||||
<el-select v-model="queryParams.orgName" placeholder="全部机构" class="query-select" clearable @change="handleOrgChange">
|
||||
<el-option label="全部机构" value=""></el-option>
|
||||
<el-option v-for="org in organizationOptions" :key="org.id || org.code" :label="org.name || org.orgName" :value="org.name || org.orgName"></el-option>
|
||||
<el-select
|
||||
v-model="queryParams.orgName"
|
||||
placeholder="全部机构"
|
||||
class="query-select"
|
||||
clearable
|
||||
@change="handleOrgChange"
|
||||
>
|
||||
<el-option
|
||||
label="全部机构"
|
||||
value=""
|
||||
/>
|
||||
<el-option
|
||||
v-for="org in organizationOptions"
|
||||
:key="org.id || org.code"
|
||||
:label="org.name || org.orgName"
|
||||
:value="org.name || org.orgName"
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
<el-select v-model="queryParams.deptName" placeholder="全部科室" class="query-select">
|
||||
<el-option label="全部科室" value=""></el-option>
|
||||
<el-option v-for="dept in departmentOptions" :key="dept.id || dept.code" :label="dept.name || dept.deptName" :value="dept.name || dept.deptName"></el-option>
|
||||
<el-select
|
||||
v-model="queryParams.deptName"
|
||||
placeholder="全部科室"
|
||||
class="query-select"
|
||||
>
|
||||
<el-option
|
||||
label="全部科室"
|
||||
value=""
|
||||
/>
|
||||
<el-option
|
||||
v-for="dept in departmentOptions"
|
||||
:key="dept.id || dept.code"
|
||||
:label="dept.name || dept.deptName"
|
||||
:value="dept.name || dept.deptName"
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
<el-button type="primary" @click="handleQuery" class="query-button">查询</el-button>
|
||||
<el-button @click="handleReset" class="reset-button">重置</el-button>
|
||||
<el-button type="success" @click="handleAppointmentSetting" class="appointment-setting-button">预约设置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="query-button"
|
||||
@click="handleQuery"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
class="reset-button"
|
||||
@click="handleReset"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
class="appointment-setting-button"
|
||||
@click="handleAppointmentSetting"
|
||||
>
|
||||
预约设置
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 科室列表 -->
|
||||
<div class="dept-table-container">
|
||||
<el-table :data="deptList" border style="width: 100%" class="centered-table">
|
||||
<el-table
|
||||
:data="deptList"
|
||||
border
|
||||
style="width: 100%"
|
||||
class="centered-table"
|
||||
>
|
||||
<!-- 添加空状态提示 -->
|
||||
<template #empty>
|
||||
<div style="padding: 20px 0;">
|
||||
@@ -35,35 +85,66 @@
|
||||
</template>
|
||||
|
||||
<!-- 适配常见的后端字段名 -->
|
||||
<el-table-column prop="id" label="ID" width="150"></el-table-column>
|
||||
<el-table-column prop="orgName" label="卫生机构" width="350">
|
||||
<el-table-column
|
||||
prop="id"
|
||||
label="ID"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="orgName"
|
||||
label="卫生机构"
|
||||
width="350"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.orgName || scope.row.organizationName || scope.row.org || '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="deptName" label="科室名称" width="350">
|
||||
<el-table-column
|
||||
prop="deptName"
|
||||
label="科室名称"
|
||||
width="350"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.deptName || scope.row.departmentName || scope.row.name || '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" width="400">
|
||||
<el-table-column
|
||||
prop="remark"
|
||||
label="备注"
|
||||
width="400"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.remark || scope.row.description || scope.row.note || '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="status" label="作废标志">
|
||||
<el-table-column
|
||||
prop="status"
|
||||
label="作废标志"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-tag :type="(scope.row.status === 1 || scope.row.status === true || scope.row.status === '1') ? 'success' : 'danger'">
|
||||
{{ (scope.row.status === 1 || scope.row.status === true || scope.row.status === '1') ? '有效' : '无效' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="350" fixed="right">
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="350"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button type="primary" size="small" @click="handleEdit(scope.row)">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
<el-icon><EditPen /></el-icon>
|
||||
</el-button>
|
||||
<el-button type="info" size="small" @click="handleView(scope.row)">
|
||||
<el-button
|
||||
type="info"
|
||||
size="small"
|
||||
@click="handleView(scope.row)"
|
||||
>
|
||||
<el-icon><View /></el-icon>
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -97,12 +178,28 @@
|
||||
top="50%"
|
||||
:before-close="handleAppointmentSettingCancel"
|
||||
>
|
||||
<el-form label-position="top" :model="appointmentSettingForm">
|
||||
<el-form
|
||||
label-position="top"
|
||||
:model="appointmentSettingForm"
|
||||
>
|
||||
<el-form-item label="取消预约时间类型">
|
||||
<el-select v-model="appointmentSettingForm.cancelAppointmentType" placeholder="请选择" style="width: 200px">
|
||||
<el-option label="年" value="YEAR"></el-option>
|
||||
<el-option label="月" value="MONTH"></el-option>
|
||||
<el-option label="日" value="DAY"></el-option>
|
||||
<el-select
|
||||
v-model="appointmentSettingForm.cancelAppointmentType"
|
||||
placeholder="请选择"
|
||||
style="width: 200px"
|
||||
>
|
||||
<el-option
|
||||
label="年"
|
||||
value="YEAR"
|
||||
/>
|
||||
<el-option
|
||||
label="月"
|
||||
value="MONTH"
|
||||
/>
|
||||
<el-option
|
||||
label="日"
|
||||
value="DAY"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="取消预约次数">
|
||||
@@ -111,13 +208,20 @@
|
||||
:min="0"
|
||||
:step="1"
|
||||
placeholder="请输入"
|
||||
></el-input-number>
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="handleAppointmentSettingCancel">取消</el-button>
|
||||
<el-button type="primary" @click="handleAppointmentSettingConfirm">确定</el-button>
|
||||
<el-button @click="handleAppointmentSettingCancel">
|
||||
取消
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleAppointmentSettingConfirm"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@@ -135,11 +239,22 @@
|
||||
<!-- 筛选条件 -->
|
||||
<div class="filter-condition">
|
||||
<span class="filter-label">卫生机构</span>
|
||||
<el-input v-model="displayedInstitutionName" class="filter-select" disabled></el-input>
|
||||
<el-input
|
||||
v-model="displayedInstitutionName"
|
||||
class="filter-select"
|
||||
disabled
|
||||
/>
|
||||
|
||||
<span class="filter-label">科室名称</span>
|
||||
<el-select v-model="filterParams.deptName" class="filter-select" disabled>
|
||||
<el-option :label="filterParams.deptName" :value="filterParams.deptName"></el-option>
|
||||
<el-select
|
||||
v-model="filterParams.deptName"
|
||||
class="filter-select"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
:label="filterParams.deptName"
|
||||
:value="filterParams.deptName"
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
<span class="filter-label">开始日期</span>
|
||||
@@ -152,21 +267,45 @@
|
||||
|
||||
<span class="filter-label">排班类型</span>
|
||||
<div class="radio-group">
|
||||
<el-radio v-model="filterParams.appointmentType" label="普通" @change="handleAppointmentTypeChange">普通</el-radio>
|
||||
<el-radio v-model="filterParams.appointmentType" label="专家" @change="handleAppointmentTypeChange">专家</el-radio>
|
||||
<el-radio
|
||||
v-model="filterParams.appointmentType"
|
||||
label="普通"
|
||||
@change="handleAppointmentTypeChange"
|
||||
>
|
||||
普通
|
||||
</el-radio>
|
||||
<el-radio
|
||||
v-model="filterParams.appointmentType"
|
||||
label="专家"
|
||||
@change="handleAppointmentTypeChange"
|
||||
>
|
||||
专家
|
||||
</el-radio>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 排班表格 -->
|
||||
<div class="schedule-table-container">
|
||||
<!-- 按日期分组显示排班 -->
|
||||
<div v-for="(dateGroup, index) in groupedSchedule" :key="index" class="daily-schedule">
|
||||
<div
|
||||
v-for="(dateGroup, index) in groupedSchedule"
|
||||
:key="index"
|
||||
class="daily-schedule"
|
||||
>
|
||||
<div class="daily-header">
|
||||
<span class="date-text">{{ dateGroup.date }}</span>
|
||||
<span class="weekday-text">{{ dateGroup.weekday }}</span>
|
||||
</div>
|
||||
<el-table :data="dateGroup.items" border style="width: 100%" class="schedule-table">
|
||||
<el-table-column label="时段" width="100">
|
||||
<el-table
|
||||
:data="dateGroup.items"
|
||||
border
|
||||
style="width: 100%"
|
||||
class="schedule-table"
|
||||
>
|
||||
<el-table-column
|
||||
label="时段"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.timeSlot"
|
||||
@@ -174,19 +313,29 @@
|
||||
:disabled="!isEditMode"
|
||||
@change="(val) => handleTimeSlotChange(val, scope.row)"
|
||||
>
|
||||
<el-option label="上午" value="上午"></el-option>
|
||||
<el-option label="下午" value="下午"></el-option>
|
||||
<el-option
|
||||
label="上午"
|
||||
value="上午"
|
||||
/>
|
||||
<el-option
|
||||
label="下午"
|
||||
value="下午"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="doctorName" :label="filterParams.appointmentType === '专家' ? '专家' : '医生'" width="150">
|
||||
<el-table-column
|
||||
prop="doctorName"
|
||||
:label="filterParams.appointmentType === '专家' ? '专家' : '医生'"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
:key="`doctor-${filterParams.appointmentType}-${scope.row.id}`"
|
||||
v-model="scope.row.doctorId"
|
||||
placeholder="请选"
|
||||
placeholder="请选"
|
||||
class="inline-select"
|
||||
:disabled="!isEditMode"
|
||||
:key="`doctor-${filterParams.appointmentType}-${scope.row.id}`"
|
||||
@change="(selectedId) => handleDoctorChange(selectedId, scope.row)"
|
||||
>
|
||||
<el-option
|
||||
@@ -194,11 +343,15 @@
|
||||
:key="doctor.id"
|
||||
:label="doctor.label"
|
||||
:value="String(doctor.id)"
|
||||
></el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="room" label="诊室" width="100">
|
||||
<el-table-column
|
||||
prop="room"
|
||||
label="诊室"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.room"
|
||||
@@ -213,11 +366,15 @@
|
||||
:key="room.id"
|
||||
:label="room.label"
|
||||
:value="room.value"
|
||||
></el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="startTime" label="开始时间" width="120">
|
||||
<el-table-column
|
||||
prop="startTime"
|
||||
label="开始时间"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-time-picker
|
||||
v-model="scope.row.startTime"
|
||||
@@ -231,7 +388,11 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="endTime" label="结束时间" width="120">
|
||||
<el-table-column
|
||||
prop="endTime"
|
||||
label="结束时间"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-time-picker
|
||||
v-model="scope.row.endTime"
|
||||
@@ -244,27 +405,39 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="maxNumber" label="限号数量" width="80">
|
||||
<el-table-column
|
||||
prop="maxNumber"
|
||||
label="限号数量"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.maxNumber"
|
||||
type="number"
|
||||
:disabled="!isEditMode"
|
||||
/>
|
||||
v-model="scope.row.maxNumber"
|
||||
type="number"
|
||||
:disabled="!isEditMode"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="record" label="号源记录" width="80">
|
||||
<el-table-column
|
||||
prop="record"
|
||||
label="号源记录"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-icon
|
||||
@click="handleViewRecord(scope.row)"
|
||||
class="record-icon"
|
||||
class="record-icon"
|
||||
title="查看号源记录"
|
||||
@click="handleViewRecord(scope.row)"
|
||||
>
|
||||
<View />
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="appointmentItem" label="挂号项目" width="120">
|
||||
<el-table-column
|
||||
prop="appointmentItem"
|
||||
label="挂号项目"
|
||||
width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.appointmentItem"
|
||||
@@ -278,16 +451,24 @@
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="registrationFee" label="挂号费(元)" width="100">
|
||||
<el-table-column
|
||||
prop="registrationFee"
|
||||
label="挂号费(元)"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.registrationFee || '0' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="clinicItem" label="诊查项目" width="150">
|
||||
<el-table-column
|
||||
prop="clinicItem"
|
||||
label="诊查项目"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.clinicItem"
|
||||
@@ -301,50 +482,76 @@
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="treatmentFee" label="诊疗费(元)" width="100">
|
||||
<el-table-column
|
||||
prop="treatmentFee"
|
||||
label="诊疗费(元)"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.treatmentFee || '0' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="online" label="线上" width="60">
|
||||
<el-table-column
|
||||
prop="online"
|
||||
label="线上"
|
||||
width="60"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-checkbox v-model="scope.row.online" :disabled="!isEditMode"></el-checkbox>
|
||||
<el-checkbox
|
||||
v-model="scope.row.online"
|
||||
:disabled="!isEditMode"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="stopClinic" label="停诊" width="60">
|
||||
<el-table-column
|
||||
prop="stopClinic"
|
||||
label="停诊"
|
||||
width="60"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-checkbox v-model="scope.row.stopClinic" :disabled="!isEditMode"></el-checkbox>
|
||||
<el-checkbox
|
||||
v-model="scope.row.stopClinic"
|
||||
:disabled="!isEditMode"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="stopReason" label="停诊原因" width="150">
|
||||
<el-table-column
|
||||
prop="stopReason"
|
||||
label="停诊原因"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.stopReason"
|
||||
:placeholder="scope.row.stopClinic ? '请输入停诊原因' : ''"
|
||||
class="inline-input"
|
||||
:disabled="!isEditMode || !scope.row.stopClinic"
|
||||
></el-input>
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="150" fixed="right">
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="150"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handleAddSchedule(scope.row)"
|
||||
:disabled="!isEditMode"
|
||||
@click="handleAddSchedule(scope.row)"
|
||||
>
|
||||
添加
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
@click="handleDeleteSchedule(scope.row)"
|
||||
:disabled="!isEditMode || isLastDraftRowInSlot(scope.row)"
|
||||
@click="handleDeleteSchedule(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
@@ -356,8 +563,16 @@
|
||||
|
||||
<!-- 底部操作按钮 -->
|
||||
<div class="bottom-buttons">
|
||||
<el-button type="primary" @click="handleSave" :disabled="!isEditMode">确定</el-button>
|
||||
<el-button @click="handleCancel">取消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
:disabled="!isEditMode"
|
||||
@click="handleSave"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
<el-button @click="handleCancel">
|
||||
取消
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -369,13 +584,19 @@
|
||||
:close-on-click-modal="true"
|
||||
>
|
||||
<div class="appointment-records">
|
||||
<div class="record-item" v-for="record in appointmentRecords" :key="record.index">
|
||||
<div
|
||||
v-for="record in appointmentRecords"
|
||||
:key="record.index"
|
||||
class="record-item"
|
||||
>
|
||||
<span class="record-time">{{ record.time }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="recordDialogVisible = false">确定</el-button>
|
||||
<el-button @click="recordDialogVisible = false">
|
||||
确定
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -2,13 +2,24 @@
|
||||
<div class="dept-appthours-container">
|
||||
<!-- 页头区域 -->
|
||||
<div class="page-header">
|
||||
<h1 class="page-title">科室预约工作时间维护</h1>
|
||||
<h1 class="page-title">
|
||||
科室预约工作时间维护
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<!-- 筛选控制区 -->
|
||||
<div class="filter-section">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" class="filter-row">
|
||||
<el-form-item label="所属机构" prop="institution" class="filter-item">
|
||||
<el-form
|
||||
ref="queryRef"
|
||||
:model="queryParams"
|
||||
:inline="true"
|
||||
class="filter-row"
|
||||
>
|
||||
<el-form-item
|
||||
label="所属机构"
|
||||
prop="institution"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.institution"
|
||||
placeholder="请选择"
|
||||
@@ -24,7 +35,11 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="科室名称" prop="department" class="filter-item">
|
||||
<el-form-item
|
||||
label="科室名称"
|
||||
prop="department"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.department"
|
||||
placeholder="全部科室"
|
||||
@@ -42,15 +57,35 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div class="filter-buttons">
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">查询</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="Plus" @click="handleAdd">新增</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="Search"
|
||||
@click="handleQuery"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
icon="Refresh"
|
||||
@click="resetQuery"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<!-- 数据表格区 -->
|
||||
<div class="table-section" v-loading="loading">
|
||||
<div
|
||||
v-loading="loading"
|
||||
class="table-section"
|
||||
>
|
||||
<el-table
|
||||
:data="deptAppthoursList"
|
||||
border
|
||||
@@ -61,40 +96,111 @@
|
||||
stripe
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="institution" label="所属机构" min-width="150" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="department" label="科室名称" min-width="150" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="morningStart" label="上午开始时间" min-width="120" align="center">
|
||||
<el-table-column
|
||||
prop="institution"
|
||||
label="所属机构"
|
||||
min-width="150"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="department"
|
||||
label="科室名称"
|
||||
min-width="150"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="morningStart"
|
||||
label="上午开始时间"
|
||||
min-width="120"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ formatTime(scope.row.morningStart) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="morningEnd" label="上午结束时间" min-width="120" align="center">
|
||||
<el-table-column
|
||||
prop="morningEnd"
|
||||
label="上午结束时间"
|
||||
min-width="120"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ formatTime(scope.row.morningEnd) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="afternoonStart" label="下午开始时间" min-width="120" align="center">
|
||||
<el-table-column
|
||||
prop="afternoonStart"
|
||||
label="下午开始时间"
|
||||
min-width="120"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ formatTime(scope.row.afternoonStart) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="afternoonEnd" label="下午结束时间" min-width="120" align="center">
|
||||
<el-table-column
|
||||
prop="afternoonEnd"
|
||||
label="下午结束时间"
|
||||
min-width="120"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ formatTime(scope.row.afternoonEnd) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="quota" label="限号数量" min-width="100" align="center" />
|
||||
<el-table-column prop="operator" label="操作人" min-width="100" align="center" show-overflow-tooltip />
|
||||
<el-table-column width="120" align="center" fixed="right">
|
||||
<el-table-column
|
||||
prop="quota"
|
||||
label="限号数量"
|
||||
min-width="100"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="operator"
|
||||
label="操作人"
|
||||
min-width="100"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
width="120"
|
||||
align="center"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-tooltip content="编辑" placement="top">
|
||||
<el-button type="primary" link icon="EditPen" @click="handleEdit(scope.row)" />
|
||||
<el-tooltip
|
||||
content="编辑"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
link
|
||||
icon="EditPen"
|
||||
@click="handleEdit(scope.row)"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="查看" placement="top">
|
||||
<el-button type="info" link icon="View" @click="handleView(scope.row)" />
|
||||
<el-tooltip
|
||||
content="查看"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
type="info"
|
||||
link
|
||||
icon="View"
|
||||
@click="handleView(scope.row)"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button type="danger" link icon="Delete" @click="handleDelete(scope.row)" />
|
||||
<el-tooltip
|
||||
content="删除"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
/>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -117,8 +223,8 @@
|
||||
</div>
|
||||
|
||||
<el-dialog
|
||||
:title="dialogTitle"
|
||||
v-model="dialogVisible"
|
||||
:title="dialogTitle"
|
||||
width="600px"
|
||||
append-to-body
|
||||
:close-on-click-modal="false"
|
||||
@@ -130,7 +236,10 @@
|
||||
label-width="100px"
|
||||
:disabled="dialogType === 'view'"
|
||||
>
|
||||
<el-form-item label="所属机构" prop="institution">
|
||||
<el-form-item
|
||||
label="所属机构"
|
||||
prop="institution"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.institution"
|
||||
placeholder="请选择"
|
||||
@@ -145,7 +254,10 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="科室名称" prop="department">
|
||||
<el-form-item
|
||||
label="科室名称"
|
||||
prop="department"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.department"
|
||||
placeholder="请选择"
|
||||
@@ -161,7 +273,10 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="上午时段" prop="morningStart">
|
||||
<el-form-item
|
||||
label="上午时段"
|
||||
prop="morningStart"
|
||||
>
|
||||
<el-col :span="11">
|
||||
<el-time-picker
|
||||
v-model="form.morningStart"
|
||||
@@ -171,7 +286,12 @@
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-col>
|
||||
<el-col :span="2" style="text-align: center">-</el-col>
|
||||
<el-col
|
||||
:span="2"
|
||||
style="text-align: center"
|
||||
>
|
||||
-
|
||||
</el-col>
|
||||
<el-col :span="11">
|
||||
<el-time-picker
|
||||
v-model="form.morningEnd"
|
||||
@@ -182,7 +302,10 @@
|
||||
/>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="下午时段" prop="afternoonStart">
|
||||
<el-form-item
|
||||
label="下午时段"
|
||||
prop="afternoonStart"
|
||||
>
|
||||
<el-col :span="11">
|
||||
<el-time-picker
|
||||
v-model="form.afternoonStart"
|
||||
@@ -192,7 +315,12 @@
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-col>
|
||||
<el-col :span="2" style="text-align: center">-</el-col>
|
||||
<el-col
|
||||
:span="2"
|
||||
style="text-align: center"
|
||||
>
|
||||
-
|
||||
</el-col>
|
||||
<el-col :span="11">
|
||||
<el-time-picker
|
||||
v-model="form.afternoonEnd"
|
||||
@@ -203,7 +331,10 @@
|
||||
/>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="限号数量" prop="quota">
|
||||
<el-form-item
|
||||
label="限号数量"
|
||||
prop="quota"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="form.quota"
|
||||
:min="0"
|
||||
@@ -214,8 +345,16 @@
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button v-if="dialogType !== 'view'" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button
|
||||
v-if="dialogType !== 'view'"
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -1,24 +1,44 @@
|
||||
<template>
|
||||
<div class="ticket-management-container">
|
||||
<!-- 顶部搜索区域 -->
|
||||
<div id="topSearchArea" class="top-search-area">
|
||||
<div
|
||||
id="topSearchArea"
|
||||
class="top-search-area"
|
||||
>
|
||||
<!-- 搜索标签行 -->
|
||||
<div class="search-labels">
|
||||
<div class="search-label">号源日期</div>
|
||||
<div class="search-label">状态</div>
|
||||
<div class="search-label">患者姓名</div>
|
||||
<div class="search-label">就诊卡号</div>
|
||||
<div class="search-label">手机号</div>
|
||||
<div class="search-label"></div> <!-- 为查询按钮预留空间 -->
|
||||
<div class="search-label">
|
||||
号源日期
|
||||
</div>
|
||||
<div class="search-label">
|
||||
状态
|
||||
</div>
|
||||
<div class="search-label">
|
||||
患者姓名
|
||||
</div>
|
||||
<div class="search-label">
|
||||
就诊卡号
|
||||
</div>
|
||||
<div class="search-label">
|
||||
手机号
|
||||
</div>
|
||||
<div class="search-label" /> <!-- 为查询按钮预留空间 -->
|
||||
</div>
|
||||
|
||||
<!-- 搜索输入行 -->
|
||||
<div class="search-inputs">
|
||||
<!-- 移动端汉堡菜单按钮 -->
|
||||
<div class="hamburger-menu" @click="toggleSidebar" v-if="isMobile">
|
||||
<i class="el-icon-menu"></i>
|
||||
<div
|
||||
v-if="isMobile"
|
||||
class="hamburger-menu"
|
||||
@click="toggleSidebar"
|
||||
>
|
||||
<i class="el-icon-menu" />
|
||||
</div>
|
||||
<div id="datePicker" class="date-picker">
|
||||
<div
|
||||
id="datePicker"
|
||||
class="date-picker"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="selectedDate"
|
||||
type="date"
|
||||
@@ -30,29 +50,83 @@
|
||||
@change="onDateChange"
|
||||
/>
|
||||
</div>
|
||||
<div id="statusFilter" class="status-filter">
|
||||
<select id="status-select" class="search-select" v-model="selectedStatus" @change="onSearch">
|
||||
<option value="all">全部</option>
|
||||
<option value="unbooked">未预约</option>
|
||||
<option value="locked">已锁定</option>
|
||||
<option value="booked">已预约</option>
|
||||
<option value="checked">已取号</option>
|
||||
<option value="cancelled">已停诊</option>
|
||||
<option value="returned">已退号</option>
|
||||
<div
|
||||
id="statusFilter"
|
||||
class="status-filter"
|
||||
>
|
||||
<select
|
||||
id="status-select"
|
||||
v-model="selectedStatus"
|
||||
class="search-select"
|
||||
@change="onSearch"
|
||||
>
|
||||
<option value="all">
|
||||
全部
|
||||
</option>
|
||||
<option value="unbooked">
|
||||
未预约
|
||||
</option>
|
||||
<option value="locked">
|
||||
已锁定
|
||||
</option>
|
||||
<option value="booked">
|
||||
已预约
|
||||
</option>
|
||||
<option value="checked">
|
||||
已取号
|
||||
</option>
|
||||
<option value="cancelled">
|
||||
已停诊
|
||||
</option>
|
||||
<option value="returned">
|
||||
已退号
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="patientSearch" class="patient-search">
|
||||
<input id="patient-name-input" class="search-input" placeholder="姓名" v-model="patientName">
|
||||
<div
|
||||
id="patientSearch"
|
||||
class="patient-search"
|
||||
>
|
||||
<input
|
||||
id="patient-name-input"
|
||||
v-model="patientName"
|
||||
class="search-input"
|
||||
placeholder="姓名"
|
||||
>
|
||||
</div>
|
||||
<div id="cardSearch" class="card-search">
|
||||
<input id="patient-card-input" class="search-input" placeholder="就诊卡号" v-model="patientCard">
|
||||
<div
|
||||
id="cardSearch"
|
||||
class="card-search"
|
||||
>
|
||||
<input
|
||||
id="patient-card-input"
|
||||
v-model="patientCard"
|
||||
class="search-input"
|
||||
placeholder="就诊卡号"
|
||||
>
|
||||
</div>
|
||||
<div id="phoneSearch" class="phone-search">
|
||||
<input id="patient-phone-input" class="search-input" placeholder="手机号" v-model="patientPhone">
|
||||
<div
|
||||
id="phoneSearch"
|
||||
class="phone-search"
|
||||
>
|
||||
<input
|
||||
id="patient-phone-input"
|
||||
v-model="patientPhone"
|
||||
class="search-input"
|
||||
placeholder="手机号"
|
||||
>
|
||||
</div>
|
||||
<div class="search-button">
|
||||
<button id="search-button" class="search-btn" @click="onSearch" :disabled="isLoading">
|
||||
<span v-if="isLoading" class="loading-text">搜索中...</span>
|
||||
<button
|
||||
id="search-button"
|
||||
class="search-btn"
|
||||
:disabled="isLoading"
|
||||
@click="onSearch"
|
||||
>
|
||||
<span
|
||||
v-if="isLoading"
|
||||
class="loading-text"
|
||||
>搜索中...</span>
|
||||
<span v-else>查询</span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -60,15 +134,35 @@
|
||||
</div>
|
||||
|
||||
<!-- 主要内容区域 -->
|
||||
<div id="mainContent" class="main-content">
|
||||
<div
|
||||
id="mainContent"
|
||||
class="main-content"
|
||||
>
|
||||
<!-- 左侧筛选区域 -->
|
||||
<div id="leftSidebar" class="left-sidebar" :class="{ 'sidebar-hidden': isMobile && !showSidebar, 'sidebar-mobile': isMobile }">
|
||||
<div
|
||||
id="leftSidebar"
|
||||
class="left-sidebar"
|
||||
:class="{ 'sidebar-hidden': isMobile && !showSidebar, 'sidebar-mobile': isMobile }"
|
||||
>
|
||||
<!-- 科室列表 -->
|
||||
<div class="section">
|
||||
<h3 class="section-title">科室列表</h3>
|
||||
<select id="department-list" class="search-select" v-model="selectedDepartment" @change="onDepartmentChange">
|
||||
<option value="all">全部科室</option>
|
||||
<option v-for="department in departments" :key="department.value" :value="department.value">
|
||||
<h3 class="section-title">
|
||||
科室列表
|
||||
</h3>
|
||||
<select
|
||||
id="department-list"
|
||||
v-model="selectedDepartment"
|
||||
class="search-select"
|
||||
@change="onDepartmentChange"
|
||||
>
|
||||
<option value="all">
|
||||
全部科室
|
||||
</option>
|
||||
<option
|
||||
v-for="department in departments"
|
||||
:key="department.value"
|
||||
:value="department.value"
|
||||
>
|
||||
{{ department.label }}
|
||||
</option>
|
||||
</select>
|
||||
@@ -76,14 +170,28 @@
|
||||
|
||||
<!-- 号源类型 -->
|
||||
<div class="section">
|
||||
<h3 class="section-title">号源类型</h3>
|
||||
<h3 class="section-title">
|
||||
号源类型
|
||||
</h3>
|
||||
<div class="radio-group">
|
||||
<label>
|
||||
<input type="radio" name="type" value="general" v-model="selectedType" @change="onTypeChange">
|
||||
<input
|
||||
v-model="selectedType"
|
||||
type="radio"
|
||||
name="type"
|
||||
value="general"
|
||||
@change="onTypeChange"
|
||||
>
|
||||
<span>普通号</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" name="type" value="expert" v-model="selectedType" @change="onTypeChange">
|
||||
<input
|
||||
v-model="selectedType"
|
||||
type="radio"
|
||||
name="type"
|
||||
value="expert"
|
||||
@change="onTypeChange"
|
||||
>
|
||||
<span>专家号</span>
|
||||
</label>
|
||||
</div>
|
||||
@@ -91,53 +199,111 @@
|
||||
|
||||
<!-- 医生号源列表 -->
|
||||
<div class="section">
|
||||
<h3 class="section-title">医生号源列表</h3>
|
||||
<input id="doctor-search" class="search-input" placeholder="搜索医生姓名" v-model="searchQuery" @input="onDoctorSearch">
|
||||
<h3 class="section-title">
|
||||
医生号源列表
|
||||
</h3>
|
||||
<input
|
||||
id="doctor-search"
|
||||
v-model="searchQuery"
|
||||
class="search-input"
|
||||
placeholder="搜索医生姓名"
|
||||
@input="onDoctorSearch"
|
||||
>
|
||||
<div class="doctor-list">
|
||||
<div class="doctor-item" v-for="doctor in filteredDoctors" :key="doctor.id" :class="{ selected: selectedDoctorId === doctor.id }" @click="selectDoctor(doctor.id)">
|
||||
<div class="doctor-name">{{ doctor.name }} <span class="doctor-available">余号:{{ doctor.available }}</span></div>
|
||||
<div
|
||||
v-for="doctor in filteredDoctors"
|
||||
:key="doctor.id"
|
||||
class="doctor-item"
|
||||
:class="{ selected: selectedDoctorId === doctor.id }"
|
||||
@click="selectDoctor(doctor.id)"
|
||||
>
|
||||
<div class="doctor-name">
|
||||
{{ doctor.name }} <span class="doctor-available">余号:{{ doctor.available }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 右侧号源卡片区域 -->
|
||||
<div class="right-content" :class="{ 'right-content-full': isMobile && !showSidebar }">
|
||||
<div
|
||||
class="right-content"
|
||||
:class="{ 'right-content-full': isMobile && !showSidebar }"
|
||||
>
|
||||
<!-- 使用网格布局的号源卡片列表 -->
|
||||
<div class="ticket-grid" v-if="filteredTickets.length > 0">
|
||||
<div v-for="(item, index) in filteredTickets" :key="item.slot_id" class="ticket-card" @dblclick="handleDoubleClick(item)" @contextmenu.prevent="handleRightClick($event, item)">
|
||||
<div
|
||||
v-if="filteredTickets.length > 0"
|
||||
class="ticket-grid"
|
||||
>
|
||||
<div
|
||||
v-for="(item, index) in filteredTickets"
|
||||
:key="item.slot_id"
|
||||
class="ticket-card"
|
||||
@dblclick="handleDoubleClick(item)"
|
||||
@contextmenu.prevent="handleRightClick($event, item)"
|
||||
>
|
||||
<!-- 序号放在最右侧 -->
|
||||
<div class="ticket-index">{{ item.seqNo != null ? item.seqNo : index + 1 }}</div>
|
||||
<div class="ticket-index">
|
||||
{{ item.seqNo != null ? item.seqNo : index + 1 }}
|
||||
</div>
|
||||
<!-- 1.时间 -->
|
||||
<div class="ticket-id-time">{{ item.dateTime }}</div>
|
||||
<div class="ticket-id-time">
|
||||
{{ item.dateTime }}
|
||||
</div>
|
||||
<!-- 2. 状态标签 -->
|
||||
<div class="ticket-status" :class="getStatusClass(item.status)">
|
||||
<span class="status-dot"></span>
|
||||
<div
|
||||
class="ticket-status"
|
||||
:class="getStatusClass(item.status)"
|
||||
>
|
||||
<span class="status-dot" />
|
||||
{{ item.status }}
|
||||
</div>
|
||||
<!-- 3. 医生姓名(截断显示,悬停展示完整信息) -->
|
||||
<div class="ticket-doctor" :title="item.doctor">{{ item.doctor }}</div>
|
||||
<div
|
||||
class="ticket-doctor"
|
||||
:title="item.doctor"
|
||||
>
|
||||
{{ item.doctor }}
|
||||
</div>
|
||||
<!-- 4. 科室名称 -->
|
||||
<div class="ticket-department" :title="item.department || '未知科室'">
|
||||
<div
|
||||
class="ticket-department"
|
||||
:title="item.department || '未知科室'"
|
||||
>
|
||||
科室:{{ item.department || '未知科室' }}
|
||||
</div>
|
||||
<!-- 5. 挂号费 -->
|
||||
<div class="ticket-fee">挂号费:{{ item.fee }}元</div>
|
||||
<div class="ticket-fee">
|
||||
挂号费:{{ item.fee }}元
|
||||
</div>
|
||||
<!-- 6. 号源类型 -->
|
||||
<div class="ticket-type">{{ item.ticketType === 'general' ? '普通' : '专家' }}</div>
|
||||
<div class="ticket-type">
|
||||
{{ item.ticketType === 'general' ? '普通' : '专家' }}
|
||||
</div>
|
||||
<!-- 7. 已预约患者信息 -->
|
||||
<div v-if="(item.status === '已预约' || item.status === '已取号') && item.patientName" class="ticket-patient">
|
||||
<div
|
||||
v-if="(item.status === '已预约' || item.status === '已取号') && item.patientName"
|
||||
class="ticket-patient"
|
||||
>
|
||||
{{ item.patientName }}({{ item.patientId }},{{ getGenderText(item.gender || item.patientGender) }})
|
||||
</div>
|
||||
<div class="ticket-actions">
|
||||
<button class="action-button book-button" @click="openPatientSelectModal(item.slot_id)" :disabled="item.status !== '未预约'" :class="{ 'disabled': item.status !== '未预约' }">
|
||||
<i class="el-icon-tickets"></i>
|
||||
<button
|
||||
class="action-button book-button"
|
||||
:disabled="item.status !== '未预约'"
|
||||
:class="{ 'disabled': item.status !== '未预约' }"
|
||||
@click="openPatientSelectModal(item.slot_id)"
|
||||
>
|
||||
<i class="el-icon-tickets" />
|
||||
预约
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pagination-container" v-if="totalTickets > 0">
|
||||
<div
|
||||
v-if="totalTickets > 0"
|
||||
class="pagination-container"
|
||||
>
|
||||
<el-pagination
|
||||
background
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
@@ -149,33 +315,63 @@
|
||||
@size-change="handlePageSizeChange"
|
||||
/>
|
||||
</div>
|
||||
<div v-if="filteredTickets.length === 0" class="empty-state">
|
||||
<div class="empty-text">暂无号源数据</div>
|
||||
<div
|
||||
v-if="filteredTickets.length === 0"
|
||||
class="empty-state"
|
||||
>
|
||||
<div class="empty-text">
|
||||
暂无号源数据
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 患者选择弹窗 -->
|
||||
<div id="patient-select-modal" class="modal" v-if="showPatientModal">
|
||||
<div
|
||||
v-if="showPatientModal"
|
||||
id="patient-select-modal"
|
||||
class="modal"
|
||||
>
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3>选择患者</h3>
|
||||
<button class="close-btn" @click="closePatientSelectModal">×</button>
|
||||
<button
|
||||
class="close-btn"
|
||||
@click="closePatientSelectModal"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="patient-search-toolbar">
|
||||
<input
|
||||
id="patient-keyword"
|
||||
v-model.trim="patientKeyword"
|
||||
class="search-input patient-keyword-input"
|
||||
placeholder="姓名/就诊卡号/手机号/证件号回车查询"
|
||||
v-model.trim="patientKeyword"
|
||||
@keyup.enter="searchPatients"
|
||||
>
|
||||
<button id="patient-search-btn" class="search-btn" @click="searchPatients">查询</button>
|
||||
<button id="patient-reset-btn" class="reset-btn" @click="resetPatientSearch">重置</button>
|
||||
<button
|
||||
id="patient-search-btn"
|
||||
class="search-btn"
|
||||
@click="searchPatients"
|
||||
>
|
||||
查询
|
||||
</button>
|
||||
<button
|
||||
id="patient-reset-btn"
|
||||
class="reset-btn"
|
||||
@click="resetPatientSearch"
|
||||
>
|
||||
重置
|
||||
</button>
|
||||
</div>
|
||||
<div class="patient-table-container">
|
||||
<table id="patient-table" class="patient-table" v-if="patients.length > 0">
|
||||
<table
|
||||
v-if="patients.length > 0"
|
||||
id="patient-table"
|
||||
class="patient-table"
|
||||
>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>序号</th>
|
||||
@@ -201,21 +397,40 @@
|
||||
<td>{{ patient.idCard }}</td>
|
||||
<td>{{ patient.phone }}</td>
|
||||
<td>
|
||||
<button class="select-btn" @click.stop="selectPatient(patient._rowKey)" :disabled="!patient._rowKey">选择</button>
|
||||
<button
|
||||
class="select-btn"
|
||||
:disabled="!patient._rowKey"
|
||||
@click.stop="selectPatient(patient._rowKey)"
|
||||
>
|
||||
选择
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- 无搜索结果提示 -->
|
||||
<div v-else-if="hasSearchCriteria && !isLoading" class="no-results">
|
||||
<div
|
||||
v-else-if="hasSearchCriteria && !isLoading"
|
||||
class="no-results"
|
||||
>
|
||||
未找到符合条件的患者,请检查搜索条件
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="confirm-btn" @click="confirmPatientSelection">确认</button>
|
||||
<button class="cancel-btn" @click="closePatientSelectModal">取消</button>
|
||||
<button
|
||||
class="confirm-btn"
|
||||
@click="confirmPatientSelection"
|
||||
>
|
||||
确认
|
||||
</button>
|
||||
<button
|
||||
class="cancel-btn"
|
||||
@click="closePatientSelectModal"
|
||||
>
|
||||
取消
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -230,9 +445,13 @@
|
||||
@click.stop
|
||||
@contextmenu.prevent
|
||||
>
|
||||
<div v-if="selectedTicketForCancel && selectedTicketForCancel.status === '已预约'" class="menu-item" @click="confirmCancelAppointment">
|
||||
取消预约
|
||||
</div>
|
||||
<div
|
||||
v-if="selectedTicketForCancel && selectedTicketForCancel.status === '已预约'"
|
||||
class="menu-item"
|
||||
@click="confirmCancelAppointment"
|
||||
>
|
||||
取消预约
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 点击页面其他地方关闭右键菜单 -->
|
||||
@@ -241,7 +460,7 @@
|
||||
class="context-menu-overlay"
|
||||
@click="closeContextMenu"
|
||||
@contextmenu.prevent
|
||||
></div>
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -341,6 +560,22 @@ export default {
|
||||
return !!this.patientKeyword?.trim();
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.addEventListener('click', this.closeContextMenu);
|
||||
// 初始化数据
|
||||
this.selectedDate = new Date().toISOString().split('T')[0];
|
||||
// 调用onSearch获取初始数据
|
||||
this.onSearch();
|
||||
// 检测是否为移动设备
|
||||
this.checkMobileDevice();
|
||||
// 监听窗口大小变化
|
||||
window.addEventListener('resize', this.checkMobileDevice);
|
||||
},
|
||||
beforeUnmount() {
|
||||
document.removeEventListener('click', this.closeContextMenu);
|
||||
// 移除窗口大小变化监听
|
||||
window.removeEventListener('resize', this.checkMobileDevice);
|
||||
},
|
||||
methods: {
|
||||
selectDoctor(doctorId) {
|
||||
this.selectedDoctorId = this.selectedDoctorId === doctorId ? null : doctorId;
|
||||
@@ -903,22 +1138,6 @@ export default {
|
||||
this.departments = [{ value: 'all', label: '全部科室' }];
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.addEventListener('click', this.closeContextMenu);
|
||||
// 初始化数据
|
||||
this.selectedDate = new Date().toISOString().split('T')[0];
|
||||
// 调用onSearch获取初始数据
|
||||
this.onSearch();
|
||||
// 检测是否为移动设备
|
||||
this.checkMobileDevice();
|
||||
// 监听窗口大小变化
|
||||
window.addEventListener('resize', this.checkMobileDevice);
|
||||
},
|
||||
beforeUnmount() {
|
||||
document.removeEventListener('click', this.closeContextMenu);
|
||||
// 移除窗口大小变化监听
|
||||
window.removeEventListener('resize', this.checkMobileDevice);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -8,19 +8,35 @@
|
||||
|
||||
<!-- 操作按钮区域 -->
|
||||
<div class="button-group">
|
||||
<button @click="addNewRow" class="pan-btn blue-btn">
|
||||
<i class="icon-plus"></i> 添加新行
|
||||
</button>
|
||||
<button @click="saveData" class="pan-btn green-btn" :disabled="saveButtonText === '保存中...'">
|
||||
{{ saveButtonText }}
|
||||
</button>
|
||||
<button
|
||||
class="pan-btn blue-btn"
|
||||
@click="addNewRow"
|
||||
>
|
||||
<i class="icon-plus" /> 添加新行
|
||||
</button>
|
||||
<button
|
||||
class="pan-btn green-btn"
|
||||
:disabled="saveButtonText === '保存中...'"
|
||||
@click="saveData"
|
||||
>
|
||||
{{ saveButtonText }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- 错误提示区域 -->
|
||||
<div v-if="validationErrors.length > 0" class="alert alert-danger error-messages">
|
||||
<h4 class="error-title">验证失败</h4>
|
||||
<div
|
||||
v-if="validationErrors.length > 0"
|
||||
class="alert alert-danger error-messages"
|
||||
>
|
||||
<h4 class="error-title">
|
||||
验证失败
|
||||
</h4>
|
||||
<ul class="error-list">
|
||||
<li v-for="(error, index) in validationErrors" :key="index" class="error-item">
|
||||
<li
|
||||
v-for="(error, index) in validationErrors"
|
||||
:key="index"
|
||||
class="error-item"
|
||||
>
|
||||
{{ error }}
|
||||
</li>
|
||||
</ul>
|
||||
@@ -49,7 +65,9 @@
|
||||
:key="item.keyId"
|
||||
:class="{'editing-row': item.isActive }"
|
||||
>
|
||||
<td class="sequence-number">{{ index + 1 }}</td>
|
||||
<td class="sequence-number">
|
||||
{{ index + 1 }}
|
||||
</td>
|
||||
<td class="employee-info">
|
||||
<div class="input-container">
|
||||
<!-- 超级管理员可以编辑操作员字段,普通用户不可编辑 -->
|
||||
@@ -59,7 +77,9 @@
|
||||
class="form-control"
|
||||
@change="updateOperatorFromEmployeeId(item)"
|
||||
>
|
||||
<option value="">请选择操作员</option>
|
||||
<option value="">
|
||||
请选择操作员
|
||||
</option>
|
||||
<option
|
||||
v-for="user in userList"
|
||||
:key="user.employeeId"
|
||||
@@ -68,7 +88,10 @@
|
||||
{{ user.name }} ({{ user.employeeAccount }})
|
||||
</option>
|
||||
</select>
|
||||
<span v-else class="employee-name">{{ item.operator || '-' }}</span>
|
||||
<span
|
||||
v-else
|
||||
class="employee-name"
|
||||
>{{ item.operator || '-' }}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="employee-account-cell">
|
||||
@@ -85,7 +108,7 @@
|
||||
type="date"
|
||||
class="form-control"
|
||||
placeholder="领用日期"
|
||||
/>
|
||||
>
|
||||
<span v-else>{{ item.date || '-' }}</span>
|
||||
</div>
|
||||
</td>
|
||||
@@ -97,8 +120,11 @@
|
||||
class="form-control"
|
||||
placeholder="请输入起始号码"
|
||||
maxlength="12"
|
||||
/>
|
||||
<span v-else class="invoice-number">{{ item.startNum || '-' }}</span>
|
||||
>
|
||||
<span
|
||||
v-else
|
||||
class="invoice-number"
|
||||
>{{ item.startNum || '-' }}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
@@ -109,8 +135,11 @@
|
||||
class="form-control"
|
||||
placeholder="请输入终止号码"
|
||||
maxlength="12"
|
||||
/>
|
||||
<span v-else class="invoice-number">{{ item.endNum || '-' }}</span>
|
||||
>
|
||||
<span
|
||||
v-else
|
||||
class="invoice-number"
|
||||
>{{ item.endNum || '-' }}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
@@ -121,38 +150,44 @@
|
||||
class="form-control"
|
||||
placeholder="当前使用号码"
|
||||
maxlength="12"
|
||||
/>
|
||||
<span v-else class="invoice-number current">{{ item.currentNum || '-' }}</span>
|
||||
>
|
||||
<span
|
||||
v-else
|
||||
class="invoice-number current"
|
||||
>{{ item.currentNum || '-' }}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="action-buttons">
|
||||
<button
|
||||
v-if="!item.isActive"
|
||||
@click="toggleEdit(item.keyId)"
|
||||
class="pan-btn-link blue-btn-link"
|
||||
class="pan-btn-link blue-btn-link"
|
||||
title="编辑"
|
||||
@click="toggleEdit(item.keyId)"
|
||||
>
|
||||
<i class="icon-edit"></i> 编辑
|
||||
<i class="icon-edit" /> 编辑
|
||||
</button>
|
||||
<button
|
||||
v-if="item.isActive"
|
||||
@click="toggleEdit(item.keyId)"
|
||||
class="pan-btn-link info-btn-link"
|
||||
class="pan-btn-link info-btn-link"
|
||||
title="取消"
|
||||
@click="toggleEdit(item.keyId)"
|
||||
>
|
||||
<i class="icon-cancel"></i> 取消
|
||||
<i class="icon-cancel" /> 取消
|
||||
</button>
|
||||
<button
|
||||
@click="deleteRow(item)"
|
||||
class="pan-btn-link red-btn-link"
|
||||
class="pan-btn-link red-btn-link"
|
||||
title="删除"
|
||||
@click="deleteRow(item)"
|
||||
>
|
||||
<i class="icon-delete"></i> 删除
|
||||
<i class="icon-delete" /> 删除
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="filteredData.length === 0">
|
||||
<td colspan="8" class="no-data-row">
|
||||
<td
|
||||
colspan="8"
|
||||
class="no-data-row"
|
||||
>
|
||||
暂无数据,请添加新记录
|
||||
</td>
|
||||
</tr>
|
||||
@@ -213,6 +248,16 @@ export default {
|
||||
return userStore.name === 'admin';
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
// 监听invoiceData变化,自动更新过滤后的数据
|
||||
invoiceData: {
|
||||
handler() {
|
||||
this.filterDataByPermission();
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
created() {
|
||||
console.log('组件初始化,开始加载数据');
|
||||
|
||||
@@ -240,14 +285,9 @@ export default {
|
||||
this.filterDataByPermission();
|
||||
},
|
||||
|
||||
watch: {
|
||||
// 监听invoiceData变化,自动更新过滤后的数据
|
||||
invoiceData: {
|
||||
handler() {
|
||||
this.filterDataByPermission();
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
mounted() {
|
||||
// 页面加载后初始化数据
|
||||
this.filterDataByPermission();
|
||||
},
|
||||
methods: {
|
||||
// 获取用户列表
|
||||
@@ -1311,11 +1351,6 @@ export default {
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
|
||||
mounted() {
|
||||
// 页面加载后初始化数据
|
||||
this.filterDataByPermission();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-row
|
||||
:gutter="10"
|
||||
class="mb8"
|
||||
>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd"> 新增 </el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-tooltip
|
||||
@@ -16,17 +26,35 @@
|
||||
icon="Delete"
|
||||
:disabled="selectRowIds.length == 0"
|
||||
@click="handleDelete"
|
||||
>删除</el-button
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="" plain icon="Download" @click="handleExport"> 导出 </el-button>
|
||||
<el-button
|
||||
type=""
|
||||
plain
|
||||
icon="Download"
|
||||
@click="handleExport"
|
||||
>
|
||||
导出
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="" plain icon="Refresh" @click="getPageList">刷新</el-button>
|
||||
<el-button
|
||||
type=""
|
||||
plain
|
||||
icon="Refresh"
|
||||
@click="getPageList"
|
||||
>
|
||||
刷新
|
||||
</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
<right-toolbar
|
||||
v-model:show-search="showSearch"
|
||||
@query-table="getList"
|
||||
/>
|
||||
</el-row>
|
||||
<el-table
|
||||
ref="bodyStructureTableRef"
|
||||
@@ -35,23 +63,63 @@
|
||||
row-key="id"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="部位名称" align="left" prop="name" />
|
||||
<el-table-column label="拼音" align="left" prop="pyStr" />
|
||||
<el-table-column label="五笔拼音" align="left" prop="wbStr" />
|
||||
<el-table-column label="状态" align="center" prop="statusEnum_enumText" />
|
||||
<el-table-column label="操作" align="center">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
/>
|
||||
<el-table-column
|
||||
label="部位名称"
|
||||
align="left"
|
||||
prop="name"
|
||||
/>
|
||||
<el-table-column
|
||||
label="拼音"
|
||||
align="left"
|
||||
prop="pyStr"
|
||||
/>
|
||||
<el-table-column
|
||||
label="五笔拼音"
|
||||
align="left"
|
||||
prop="wbStr"
|
||||
/>
|
||||
<el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
prop="statusEnum_enumText"
|
||||
/>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handelEdit(scope.row)">编辑</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="handleDisabled(scope.row.id)"
|
||||
v-if="scope.row.statusEnum == '2'"
|
||||
>停用</el-button
|
||||
@click="handelEdit(scope.row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.statusEnum == '2'"
|
||||
link
|
||||
type="primary"
|
||||
@click="handleDisabled(scope.row.id)"
|
||||
>
|
||||
停用
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else
|
||||
link
|
||||
type="primary"
|
||||
@click="handelEnable(scope.row.id)"
|
||||
>
|
||||
启用
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="handleAddInferior(scope.row)"
|
||||
>
|
||||
<el-button link type="primary" @click="handelEnable(scope.row.id)" v-else>启用</el-button>
|
||||
<el-button link type="primary" @click="handleAddInferior(scope.row)">
|
||||
添加下级
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -60,24 +128,58 @@
|
||||
|
||||
|
||||
<!-- 添加或修改参数配置对话框 -->
|
||||
<el-dialog :title="title" v-model="open" width="600px" @close="cancel" append-to-body>
|
||||
<el-form ref="bodyStructureRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="id" prop="id" v-show="false">
|
||||
<el-input v-model="form.id" placeholder="请输入部位编号" />
|
||||
<el-dialog
|
||||
v-model="open"
|
||||
:title="title"
|
||||
width="600px"
|
||||
append-to-body
|
||||
@close="cancel"
|
||||
>
|
||||
<el-form
|
||||
ref="bodyStructureRef"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item
|
||||
v-show="false"
|
||||
label="id"
|
||||
prop="id"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.id"
|
||||
placeholder="请输入部位编号"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部位编号" prop="busNo" v-show="false">
|
||||
<el-input v-model="form.busNo" placeholder="请输入部位编号" />
|
||||
<el-form-item
|
||||
v-show="false"
|
||||
label="部位编号"
|
||||
prop="busNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.busNo"
|
||||
placeholder="请输入部位编号"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部位名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入部位名称" />
|
||||
<el-form-item
|
||||
label="部位名称"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="请输入部位名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-col>
|
||||
<el-form-item label="上级部位" prop="busNoParent">
|
||||
<el-form-item
|
||||
label="上级部位"
|
||||
prop="busNoParent"
|
||||
>
|
||||
<el-tree-select
|
||||
v-model="form.busNoParent"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
v-model="form.busNoParent"
|
||||
:data="bodyStructure"
|
||||
:props="{ value: 'busNo', label: 'name', children: 'children' }"
|
||||
value-key="id"
|
||||
@@ -88,8 +190,15 @@
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
<template>
|
||||
<template>
|
||||
<!-- 病历文件基本信息弹窗 -->
|
||||
<el-dialog
|
||||
:title="title"
|
||||
v-model="dialogVisible"
|
||||
:title="title"
|
||||
width="900px"
|
||||
destroy-on-close
|
||||
@open="handleOpen"
|
||||
>
|
||||
<!-- 使用el-form包裹表单 -->
|
||||
<el-form :model="formData" ref="formRef" :rules="rules" label-width="120px">
|
||||
<el-form-item label="一级菜单" prop="primaryMenuEnum">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="rules"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-form-item
|
||||
label="一级菜单"
|
||||
prop="primaryMenuEnum"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.primaryMenuEnum"
|
||||
placeholder="请选择一级菜单"
|
||||
@@ -23,18 +31,42 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="二级菜单" prop="subMenu">
|
||||
<el-input v-model="formData.subMenu" placeholder="二级菜单"></el-input>
|
||||
<el-form-item
|
||||
label="二级菜单"
|
||||
prop="subMenu"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.subMenu"
|
||||
placeholder="二级菜单"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="版本" prop="version">
|
||||
<el-input v-model="formData.version" placeholder="请输入版本"></el-input>
|
||||
<el-form-item
|
||||
label="版本"
|
||||
prop="version"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.version"
|
||||
placeholder="请输入版本"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="formData.name" placeholder="请输入名称"></el-input>
|
||||
<el-form-item
|
||||
label="名称"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.name"
|
||||
placeholder="请输入名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="文件" prop="vueRouter">
|
||||
<el-select v-model="formData.vueRouter" placeholder="请选择文件路径">
|
||||
<el-form-item
|
||||
label="文件"
|
||||
prop="vueRouter"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.vueRouter"
|
||||
placeholder="请选择文件路径"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in components"
|
||||
:key="item.name"
|
||||
@@ -44,24 +76,40 @@
|
||||
</el-select>
|
||||
<!-- <el-input v-model="formData.vueRouter" placeholder="请输入文件路径"></el-input>s -->
|
||||
</el-form-item>
|
||||
<el-form-item label="显示顺序" prop="displayOrder">
|
||||
<el-input-number v-model="formData.displayOrder" :min="1" label="描述文字"></el-input-number>
|
||||
<el-form-item
|
||||
label="显示顺序"
|
||||
prop="displayOrder"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="formData.displayOrder"
|
||||
:min="1"
|
||||
label="描述文字"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="使用范围" prop="useRangeEnum">
|
||||
<el-form-item
|
||||
label="使用范围"
|
||||
prop="useRangeEnum"
|
||||
>
|
||||
<div class="radio-group">
|
||||
<el-radio
|
||||
v-for="item in props.useRanges"
|
||||
:key="item.value"
|
||||
v-model="formData.useRangeEnum"
|
||||
:label="item.value"
|
||||
>{{item.info}}</el-radio>
|
||||
>
|
||||
{{ item.info }}
|
||||
</el-radio>
|
||||
|
||||
{{ formData.organizationIds }}
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 科室选择框,仅当使用范围为科室使用时显示 -->
|
||||
<el-form-item v-if="formData.useRangeEnum === 2" label="科室选择" prop="organizationIds">
|
||||
<el-form-item
|
||||
v-if="formData.useRangeEnum === 2"
|
||||
label="科室选择"
|
||||
prop="organizationIds"
|
||||
>
|
||||
<el-transfer
|
||||
v-model="formData.organizationIds"
|
||||
filterable
|
||||
@@ -73,15 +121,21 @@
|
||||
}"
|
||||
:props="{key: 'id', label: 'name',}"
|
||||
:data="transferData"
|
||||
>
|
||||
</el-transfer>
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer"></div>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||
<div class="dialog-footer" />
|
||||
<el-button @click="dialogVisible = false">
|
||||
取消
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -2,11 +2,30 @@
|
||||
<div class="case-templates-container">
|
||||
<!-- 顶部工具栏 -->
|
||||
<div class="toolbar">
|
||||
<el-button type="primary" @click="newTemplate">新建</el-button>
|
||||
<el-button type="primary" @click="editTemplate">编辑</el-button>
|
||||
<el-button @click="refresh">刷新</el-button>
|
||||
<el-button type="danger" @click="deleteTemplate">删除</el-button>
|
||||
<el-button @click="printTemplate">打印</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="newTemplate"
|
||||
>
|
||||
新建
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="editTemplate"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button @click="refresh">
|
||||
刷新
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
@click="deleteTemplate"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<el-button @click="printTemplate">
|
||||
打印
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<div class="content-area">
|
||||
@@ -14,6 +33,7 @@
|
||||
<div class="left-panel">
|
||||
<div style="margin-bottom: 10px">
|
||||
<el-tree-select
|
||||
ref="locationTreeRef"
|
||||
v-model="orgId"
|
||||
:data="orgOptions"
|
||||
:props="{
|
||||
@@ -26,21 +46,25 @@
|
||||
check-strictly
|
||||
:expand-on-click-node="false"
|
||||
:filter-node-method="filterNode"
|
||||
ref="locationTreeRef"
|
||||
node-key="id"
|
||||
highlight-current
|
||||
default-expand-all
|
||||
clearable
|
||||
@node-click="initTemplateTree"
|
||||
@clear="handleOrgClear"
|
||||
clearable
|
||||
/>
|
||||
</div>
|
||||
<div class="search-box">
|
||||
<el-input
|
||||
placeholder="病历名称搜索..."
|
||||
v-model="searchKeyword"
|
||||
></el-input>
|
||||
<el-button class="search-btn" @click="handleSearch">查询</el-button>
|
||||
placeholder="病历名称搜索..."
|
||||
/>
|
||||
<el-button
|
||||
class="search-btn"
|
||||
@click="handleSearch"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-tree
|
||||
@@ -48,14 +72,24 @@
|
||||
:data="templateData"
|
||||
:props="defaultProps"
|
||||
node-key="id"
|
||||
@node-click="handleNodeClick"
|
||||
class="template-tree"
|
||||
></el-tree>
|
||||
<el-button @click="toggleExpand">{{ isExpanded ? '全部收起' : '全部展开' }}</el-button>
|
||||
@node-click="handleNodeClick"
|
||||
/>
|
||||
<el-button @click="toggleExpand">
|
||||
{{ isExpanded ? '全部收起' : '全部展开' }}
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="middle-panel">
|
||||
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick">
|
||||
<el-tab-pane label="打印预览" name="first">
|
||||
<el-tabs
|
||||
v-model="activeName"
|
||||
type="card"
|
||||
class="demo-tabs"
|
||||
@tab-click="handleClick"
|
||||
>
|
||||
<el-tab-pane
|
||||
label="打印预览"
|
||||
name="first"
|
||||
>
|
||||
<!-- {{components}} -->
|
||||
<component :is="currentComponent" />
|
||||
</el-tab-pane>
|
||||
@@ -66,13 +100,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<EditTemplate
|
||||
v-model:dialogVisible="dialogVisible"
|
||||
v-model:dialog-visible="dialogVisible"
|
||||
:title="currentNodeData ? '编辑病历文件信息' : '病历文件基本信息'"
|
||||
:formData="formData"
|
||||
:currentNodeData="currentNodeData"
|
||||
@submitOk="handleSubmitOk"
|
||||
:docTypes="templateDataInit.docTypes"
|
||||
:useRanges="templateDataInit.useRanges"
|
||||
:form-data="formData"
|
||||
:current-node-data="currentNodeData"
|
||||
:doc-types="templateDataInit.docTypes"
|
||||
:use-ranges="templateDataInit.useRanges"
|
||||
@submit-ok="handleSubmitOk"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,41 +1,86 @@
|
||||
<template>
|
||||
<!-- 病历文件基本信息弹窗 -->
|
||||
<el-dialog
|
||||
:title="formData.id ? '编辑模板' : '新增模板'"
|
||||
v-model="dialogVisible"
|
||||
:title="formData.id ? '编辑模板' : '新增模板'"
|
||||
width="900px"
|
||||
destroy-on-close
|
||||
@open="handleOpen"
|
||||
>
|
||||
<!-- 使用el-form包裹表单 -->
|
||||
<el-form :model="formData" ref="formRef" :rules="rules" label-width="120px">
|
||||
<el-row :gutter="24" class="mb8">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="rules"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-row
|
||||
:gutter="24"
|
||||
class="mb8"
|
||||
>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="模板名称" prop="name">
|
||||
<el-input v-model="formData.name" placeholder="请输入模板名称"></el-input>
|
||||
<el-form-item
|
||||
label="模板名称"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.name"
|
||||
placeholder="请输入模板名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="使用范围" prop="useRange">
|
||||
<el-form-item
|
||||
label="使用范围"
|
||||
prop="useRange"
|
||||
>
|
||||
<el-radio-group v-model="formData.useRange">
|
||||
<el-radio :value="0" size="large">全院</el-radio>
|
||||
<el-radio :value="1" size="large">指定机构</el-radio>
|
||||
<el-radio :value="2" size="large">指定用户</el-radio>
|
||||
<el-radio
|
||||
:value="0"
|
||||
size="large"
|
||||
>
|
||||
全院
|
||||
</el-radio>
|
||||
<el-radio
|
||||
:value="1"
|
||||
size="large"
|
||||
>
|
||||
指定机构
|
||||
</el-radio>
|
||||
<el-radio
|
||||
:value="2"
|
||||
size="large"
|
||||
>
|
||||
指定用户
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" placeholder="请输入版本"></el-input>
|
||||
<el-form-item
|
||||
label="备注"
|
||||
prop="remark"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.remark"
|
||||
placeholder="请输入版本"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer"></div>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||
<div class="dialog-footer" />
|
||||
<el-button @click="dialogVisible = false">
|
||||
取消
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
<template>
|
||||
<div class="app-container case-templates-statistics-container">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
|
||||
<el-form-item label="名称" prop="searchKey">
|
||||
<el-form
|
||||
v-show="showSearch"
|
||||
ref="queryRef"
|
||||
:model="queryParams"
|
||||
:inline="true"
|
||||
>
|
||||
<el-form-item
|
||||
label="名称"
|
||||
prop="searchKey"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="请输入名称搜索"
|
||||
@@ -11,41 +19,104 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="Search"
|
||||
@click="handleQuery"
|
||||
>
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button
|
||||
icon="Refresh"
|
||||
@click="resetQuery"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-row
|
||||
:gutter="10"
|
||||
class="mb8"
|
||||
>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
<right-toolbar
|
||||
v-model:show-search="showSearch"
|
||||
@query-table="getList"
|
||||
/>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="statisticsList">
|
||||
<el-table-column label="属性名称" align="center" prop="name" />
|
||||
<el-table-column label="属性代码" align="center" prop="code" />
|
||||
<el-table-column label="属性类型" align="center" prop="typeEnum">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="statisticsList"
|
||||
>
|
||||
<el-table-column
|
||||
label="属性名称"
|
||||
align="center"
|
||||
prop="name"
|
||||
/>
|
||||
<el-table-column
|
||||
label="属性代码"
|
||||
align="center"
|
||||
prop="code"
|
||||
/>
|
||||
<el-table-column
|
||||
label="属性类型"
|
||||
align="center"
|
||||
prop="typeEnum"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ typeEnums(scope.row.typeEnum) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="统计值单位" align="center" prop="unit" />
|
||||
<el-table-column label="是否必填" align="center" prop="required">
|
||||
<el-table-column
|
||||
label="统计值单位"
|
||||
align="center"
|
||||
prop="unit"
|
||||
/>
|
||||
<el-table-column
|
||||
label="是否必填"
|
||||
align="center"
|
||||
prop="required"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.required === 1 ? '必填' : '不必填' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否统计" align="center" prop="isStatistics">
|
||||
<el-table-column
|
||||
label="是否统计"
|
||||
align="center"
|
||||
prop="isStatistics"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.isStatistics === 1 ? '统计' : '不统计' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="字典名称" align="center" prop="dictName"> </el-table-column>
|
||||
<el-table-column label="字典类型" align="center" prop="dictType"> </el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark"> </el-table-column>
|
||||
<el-table-column
|
||||
label="字典名称"
|
||||
align="center"
|
||||
prop="dictName"
|
||||
/>
|
||||
<el-table-column
|
||||
label="字典类型"
|
||||
align="center"
|
||||
prop="dictType"
|
||||
/>
|
||||
<el-table-column
|
||||
label="备注"
|
||||
align="center"
|
||||
prop="remark"
|
||||
/>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="180"
|
||||
@@ -53,47 +124,104 @@
|
||||
class-name="small-padding fixed-width"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||
>修改</el-button
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
icon="Edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
||||
>删除</el-button
|
||||
修改
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
:total="total"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改岗位对话框 -->
|
||||
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
||||
<el-form ref="statisticsRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="属性名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入属性名称" />
|
||||
<el-dialog
|
||||
v-model="open"
|
||||
:title="title"
|
||||
width="500px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form
|
||||
ref="statisticsRef"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item
|
||||
label="属性名称"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="请输入属性名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="属性代码" prop="code">
|
||||
<el-input v-model="form.code" placeholder="请输入属性代码" />
|
||||
<el-form-item
|
||||
label="属性代码"
|
||||
prop="code"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.code"
|
||||
placeholder="请输入属性代码"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="体温单类型编码" prop="typeCode">
|
||||
<el-input v-model="form.typeCode" placeholder="请输入体温单属性编码" />
|
||||
<el-form-item
|
||||
label="体温单类型编码"
|
||||
prop="typeCode"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.typeCode"
|
||||
placeholder="请输入体温单属性编码"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="岗位顺序" prop="displayOrder">
|
||||
<el-input-number v-model="form.displayOrder" controls-position="right" :min="0" />
|
||||
<el-form-item
|
||||
label="岗位顺序"
|
||||
prop="displayOrder"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="form.displayOrder"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="属性类型" prop="typeEnum">
|
||||
<el-form-item
|
||||
label="属性类型"
|
||||
prop="typeEnum"
|
||||
>
|
||||
<el-radio-group v-model="form.typeEnum">
|
||||
<el-radio v-for="dict in typeEnumsOptions" :key="dict.value" :label="dict.value">{{
|
||||
dict.info
|
||||
}}</el-radio>
|
||||
<el-radio
|
||||
v-for="dict in typeEnumsOptions"
|
||||
:key="dict.value"
|
||||
:label="dict.value"
|
||||
>
|
||||
{{
|
||||
dict.info
|
||||
}}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否必填" prop="required">
|
||||
<el-form-item
|
||||
label="是否必填"
|
||||
prop="required"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.required"
|
||||
:active-value="1"
|
||||
@@ -103,7 +231,10 @@
|
||||
inline-prompt
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否统计" prop="isStatistics">
|
||||
<el-form-item
|
||||
label="是否统计"
|
||||
prop="isStatistics"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.isStatistics"
|
||||
:active-value="1"
|
||||
@@ -113,11 +244,24 @@
|
||||
inline-prompt
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="单位" prop="unit">
|
||||
<el-input v-model="form.unit" placeholder="请输入统计值单位" />
|
||||
<el-form-item
|
||||
label="单位"
|
||||
prop="unit"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.unit"
|
||||
placeholder="请输入统计值单位"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="字典名称" prop="dictType">
|
||||
<el-select v-model="form.dictType" style="width: 100%" filterable>
|
||||
<el-form-item
|
||||
label="字典名称"
|
||||
prop="dictType"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.dictType"
|
||||
style="width: 100%"
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in typeOptions"
|
||||
:key="item.dictId"
|
||||
@@ -129,14 +273,28 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||
<el-form-item
|
||||
label="备注"
|
||||
prop="remark"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -1,38 +1,63 @@
|
||||
<template>
|
||||
<div class="case-templates-statistics-container">
|
||||
<div class="toolbar">
|
||||
<el-space>
|
||||
|
||||
<el-input v-model="queryParams.searchKey" placeholder="请输入名称搜索" clearable />
|
||||
<el-button @click="refresh">查询</el-button>
|
||||
<div class="toolbar">
|
||||
<el-space>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="请输入名称搜索"
|
||||
clearable
|
||||
/>
|
||||
<el-button @click="refresh">
|
||||
查询
|
||||
</el-button>
|
||||
|
||||
<el-button type="primary" @click="newTemplate">新建</el-button>
|
||||
</el-space>
|
||||
</div>
|
||||
<div class="statistics-data-container">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="newTemplate"
|
||||
>
|
||||
新建
|
||||
</el-button>
|
||||
</el-space>
|
||||
</div>
|
||||
<div class="statistics-data-container">
|
||||
<el-table
|
||||
:data="statisticsData"
|
||||
node-key="id"
|
||||
>
|
||||
<el-table-column prop="name" label="名称" />
|
||||
<el-table-column prop="count" label="数量" />
|
||||
<el-table-column label="操作" >
|
||||
<el-table-column
|
||||
prop="name"
|
||||
label="名称"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="count"
|
||||
label="数量"
|
||||
/>
|
||||
<el-table-column label="操作">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" @click="editStatistics(scope.row)">编辑</el-button>
|
||||
<el-button type="danger" @click="deleteStatistics(scope.row)">删除</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="editStatistics(scope.row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
@click="deleteStatistics(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<EditStatistics
|
||||
v-model:dialogVisible="dialogVisible"
|
||||
:title="currentNodeData ? '编辑病历文件信息' : '病历文件基本信息'"
|
||||
:formData="formData"
|
||||
:currentNodeData="currentNodeData"
|
||||
@submitOk="handleSubmitOk"
|
||||
/>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<EditStatistics
|
||||
v-model:dialog-visible="dialogVisible"
|
||||
:title="currentNodeData ? '编辑病历文件信息' : '病历文件基本信息'"
|
||||
:form-data="formData"
|
||||
:current-node-data="currentNodeData"
|
||||
@submit-ok="handleSubmitOk"
|
||||
/>
|
||||
</template>
|
||||
<script setup>
|
||||
// 从Vue导入所需的API
|
||||
|
||||
@@ -1,14 +1,37 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-table ref="medicineRef" height="400" :data="activityList" @cell-click="clickRow" border>
|
||||
<el-table-column label="项目名称" align="center" prop="name" width="300" />
|
||||
<el-table-column label="类型" align="center" prop="typeEnum_enumText" />
|
||||
<el-table-column label="价格" align="right" prop="retailPrice">
|
||||
<el-table
|
||||
ref="medicineRef"
|
||||
height="400"
|
||||
:data="activityList"
|
||||
border
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<el-table-column
|
||||
label="项目名称"
|
||||
align="center"
|
||||
prop="name"
|
||||
width="300"
|
||||
/>
|
||||
<el-table-column
|
||||
label="类型"
|
||||
align="center"
|
||||
prop="typeEnum_enumText"
|
||||
/>
|
||||
<el-table-column
|
||||
label="价格"
|
||||
align="right"
|
||||
prop="retailPrice"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.retailPrice.toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="说明" align="center" prop="descriptionText" />
|
||||
<el-table-column
|
||||
label="说明"
|
||||
align="center"
|
||||
prop="descriptionText"
|
||||
/>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,52 +1,99 @@
|
||||
<template>
|
||||
<div style="width: 100%">
|
||||
<div class="mb8">
|
||||
<el-button type="primary" plain @click="handleAddPrescription()" :disabled="buttonDisabled">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
:disabled="buttonDisabled"
|
||||
@click="handleAddPrescription()"
|
||||
>
|
||||
添加绑定项目
|
||||
</el-button>
|
||||
</div>
|
||||
<el-form :model="form" :rules="rules" ref="formRef">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
>
|
||||
<el-table
|
||||
ref="prescriptionRef"
|
||||
v-loading="props.loading"
|
||||
:data="form.consumablesList"
|
||||
row-key="patientId"
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
v-loading="props.loading"
|
||||
>
|
||||
<el-table-column label="项目类型" align="center" prop="type" width="150">
|
||||
<el-table-column
|
||||
label="项目类型"
|
||||
align="center"
|
||||
prop="type"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">{{ scope.row.type_dictText }}</span>
|
||||
<el-form-item v-else :prop="`consumablesList.${scope.$index}.type`" :rules="rules.type">
|
||||
<el-select v-model="scope.row.type" placeholder="" @change="handleTypeChange">
|
||||
<el-option v-if="props.tab == 1 || props.tab == 3" label="诊疗" value="1" />
|
||||
<el-option v-if="props.tab != 3" label="耗材" value="2" />
|
||||
<el-form-item
|
||||
v-else
|
||||
:prop="`consumablesList.${scope.$index}.type`"
|
||||
:rules="rules.type"
|
||||
>
|
||||
<el-select
|
||||
v-model="scope.row.type"
|
||||
placeholder=""
|
||||
@change="handleTypeChange"
|
||||
>
|
||||
<el-option
|
||||
v-if="props.tab == 1 || props.tab == 3"
|
||||
label="诊疗"
|
||||
value="1"
|
||||
/>
|
||||
<el-option
|
||||
v-if="props.tab != 3"
|
||||
label="耗材"
|
||||
value="2"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名" align="center" prop="name">
|
||||
<el-table-column
|
||||
label="项目名"
|
||||
align="center"
|
||||
prop="name"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">{{ scope.row.name }}</span>
|
||||
<el-form-item v-else :prop="`consumablesList.${scope.$index}.name`" :rules="rules.name">
|
||||
<PopoverList @search="handleSearch" :width="800" :modelValue="scope.row.name">
|
||||
<el-form-item
|
||||
v-else
|
||||
:prop="`consumablesList.${scope.$index}.name`"
|
||||
:rules="rules.name"
|
||||
>
|
||||
<PopoverList
|
||||
:width="800"
|
||||
:model-value="scope.row.name"
|
||||
@search="handleSearch"
|
||||
>
|
||||
<template #popover-content="{}">
|
||||
<DeviceList
|
||||
v-if="scope.row.type == '2' || props.tab == 2"
|
||||
@selectRow="(row) => selectRow(row, scope.$index)"
|
||||
:searchKey="searchKey"
|
||||
:search-key="searchKey"
|
||||
@select-row="(row) => selectRow(row, scope.$index)"
|
||||
/>
|
||||
<ActivityList
|
||||
v-else
|
||||
@selectRow="(row) => selectRow(row, scope.$index)"
|
||||
:searchKey="searchKey"
|
||||
:search-key="searchKey"
|
||||
@select-row="(row) => selectRow(row, scope.$index)"
|
||||
/>
|
||||
</template>
|
||||
</PopoverList>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="绑定数量" align="center" prop="quantity" width="250">
|
||||
<el-table-column
|
||||
label="绑定数量"
|
||||
align="center"
|
||||
prop="quantity"
|
||||
width="250"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">{{ scope.row.quantity }}</span>
|
||||
<el-form-item
|
||||
@@ -54,11 +101,19 @@
|
||||
:prop="`consumablesList.${scope.$index}.quantity`"
|
||||
:rules="rules.quantity"
|
||||
>
|
||||
<el-input v-model="scope.row.quantity" placeholder="" />
|
||||
<el-input
|
||||
v-model="scope.row.quantity"
|
||||
placeholder=""
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" align="center" prop="unitCode_dictText" width="100">
|
||||
<el-table-column
|
||||
label="单位"
|
||||
align="center"
|
||||
prop="unitCode_dictText"
|
||||
width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">{{ scope.row.unitCode_dictText }}</span>
|
||||
<el-form-item
|
||||
@@ -66,13 +121,16 @@
|
||||
:prop="`consumablesList.${scope.$index}.unitCode`"
|
||||
:rules="rules.unitCode"
|
||||
>
|
||||
<el-select v-model="scope.row.unitCode" placeholder="">
|
||||
<el-select
|
||||
v-model="scope.row.unitCode"
|
||||
placeholder=""
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in scope.row.unitCodeList"
|
||||
@click="handleUnitCodeClick(item)"
|
||||
:key="index"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
@click="handleUnitCodeClick(item)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -109,7 +167,12 @@
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="启用状态" align="center" prop="statusEnum" width="250">
|
||||
<el-table-column
|
||||
label="启用状态"
|
||||
align="center"
|
||||
prop="statusEnum"
|
||||
width="250"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">{{ scope.row.statusEnum_dictText }}</span>
|
||||
<el-form-item
|
||||
@@ -117,7 +180,11 @@
|
||||
:prop="`consumablesList.${scope.$index}.statusEnum`"
|
||||
:rules="rules.statusEnum"
|
||||
>
|
||||
<el-select v-model="scope.row.statusEnum" placeholder="" @change="handleTypeChange">
|
||||
<el-select
|
||||
v-model="scope.row.statusEnum"
|
||||
placeholder=""
|
||||
@change="handleTypeChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in statusOptions"
|
||||
:key="item.value"
|
||||
@@ -128,7 +195,12 @@
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" width="250">
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
fixed="right"
|
||||
width="250"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
v-if="!scope.row.isEdit"
|
||||
@@ -162,7 +234,11 @@
|
||||
>
|
||||
取消
|
||||
</el-button>
|
||||
<el-button link type="primary" @click.stop="handleDelete(scope.row, scope.$index)">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click.stop="handleDelete(scope.row, scope.$index)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
@@ -1,16 +1,48 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-table ref="medicineRef" height="400" :data="deviceList" @cell-click="clickRow" border>
|
||||
<el-table-column label="项目名称" align="center" prop="name" width="200" />
|
||||
<el-table-column label="分类" align="center" prop="categoryCode_dictText" width="150" />
|
||||
<el-table-column label="种类" align="center" prop="typeCode_dictText" />
|
||||
<el-table-column label="规格" align="center" prop="size" />
|
||||
<el-table-column label="价格" align="right" prop="retailPrice">
|
||||
<el-table
|
||||
ref="medicineRef"
|
||||
height="400"
|
||||
:data="deviceList"
|
||||
border
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<el-table-column
|
||||
label="项目名称"
|
||||
align="center"
|
||||
prop="name"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column
|
||||
label="分类"
|
||||
align="center"
|
||||
prop="categoryCode_dictText"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
label="种类"
|
||||
align="center"
|
||||
prop="typeCode_dictText"
|
||||
/>
|
||||
<el-table-column
|
||||
label="规格"
|
||||
align="center"
|
||||
prop="size"
|
||||
/>
|
||||
<el-table-column
|
||||
label="价格"
|
||||
align="right"
|
||||
prop="retailPrice"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.retailPrice.toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="生产厂家" align="center" prop="supplyId_dictText" />
|
||||
<el-table-column
|
||||
label="生产厂家"
|
||||
align="center"
|
||||
prop="supplyId_dictText"
|
||||
/>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -3,18 +3,28 @@
|
||||
<div style="height: 780px; display: flex; justify-content: space-between">
|
||||
<el-card style="height: 100%; width: 25%">
|
||||
<el-tabs v-model="activeTab">
|
||||
<el-tab-pane label="用法" :name="1">
|
||||
<el-tab-pane
|
||||
label="用法"
|
||||
:name="1"
|
||||
>
|
||||
<el-table
|
||||
:data="method_code"
|
||||
border
|
||||
@cell-click="clickRow"
|
||||
highlight-current-row
|
||||
max-height="650"
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<el-table-column label="项目名" align="center" prop="label" />
|
||||
<el-table-column
|
||||
label="项目名"
|
||||
align="center"
|
||||
prop="label"
|
||||
/>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="诊疗" :name="2">
|
||||
<el-tab-pane
|
||||
label="诊疗"
|
||||
:name="2"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="请输入项目名"
|
||||
@@ -23,20 +33,30 @@
|
||||
@keyup.enter="getList"
|
||||
>
|
||||
<template #append>
|
||||
<el-button icon="Search" @click="getList" />
|
||||
<el-button
|
||||
icon="Search"
|
||||
@click="getList"
|
||||
/>
|
||||
</template>
|
||||
</el-input>
|
||||
<el-table
|
||||
:data="activityList"
|
||||
border
|
||||
@cell-click="clickRow"
|
||||
highlight-current-row
|
||||
max-height="650"
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<el-table-column label="项目名" align="center" prop="name" />
|
||||
<el-table-column
|
||||
label="项目名"
|
||||
align="center"
|
||||
prop="name"
|
||||
/>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="号源" :name="3">
|
||||
<el-tab-pane
|
||||
label="号源"
|
||||
:name="3"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParamsRegistration.searchKey"
|
||||
placeholder="请输入项目名"
|
||||
@@ -45,25 +65,32 @@
|
||||
@keyup.enter="getRegistrationList"
|
||||
>
|
||||
<template #append>
|
||||
<el-button icon="Search" @click="getRegistrationList" />
|
||||
<el-button
|
||||
icon="Search"
|
||||
@click="getRegistrationList"
|
||||
/>
|
||||
</template>
|
||||
</el-input>
|
||||
<el-table
|
||||
:data="RegistrationfeeList"
|
||||
border
|
||||
@cell-click="clickRow"
|
||||
highlight-current-row
|
||||
max-height="650"
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<el-table-column label="项目名" align="center" prop="name" />
|
||||
<el-table-column
|
||||
label="项目名"
|
||||
align="center"
|
||||
prop="name"
|
||||
/>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-card>
|
||||
<el-card style="height: 100%; width: 74%">
|
||||
<ConsumablesList
|
||||
:bindList="bindList"
|
||||
:bindInfo="bindInfo"
|
||||
:bind-list="bindList"
|
||||
:bind-info="bindInfo"
|
||||
:tab="activeTab"
|
||||
:loading="loading"
|
||||
@refresh="clickRow(currentRow)"
|
||||
|
||||
@@ -1,165 +1,185 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="添加频次详情"
|
||||
v-model="dialogVisible"
|
||||
width="520px"
|
||||
top="8vh"
|
||||
:close-on-click-modal="false"
|
||||
@close="resetForm"
|
||||
v-model="dialogVisible"
|
||||
title="添加频次详情"
|
||||
width="520px"
|
||||
top="8vh"
|
||||
:close-on-click-modal="false"
|
||||
@close="resetForm"
|
||||
>
|
||||
<!-- 表单区域 -->
|
||||
<el-form
|
||||
:model="formData"
|
||||
ref="form"
|
||||
label-width="120px"
|
||||
class="freq-form"
|
||||
ref="form"
|
||||
:model="formData"
|
||||
label-width="120px"
|
||||
class="freq-form"
|
||||
>
|
||||
<!-- 字典代码 -->
|
||||
<el-form-item label="字典代码">
|
||||
<el-input
|
||||
v-model="formData.rateCode"
|
||||
readonly
|
||||
class="input-readonly"
|
||||
v-model="formData.rateCode"
|
||||
readonly
|
||||
class="input-readonly"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 分割线 -->
|
||||
<el-divider content-position="left">每日执行</el-divider>
|
||||
<el-divider content-position="left">
|
||||
每日执行
|
||||
</el-divider>
|
||||
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="次数">
|
||||
<el-input-number
|
||||
v-model="formData.dayCount"
|
||||
:min="1"
|
||||
:max="99"
|
||||
controls-position="right"
|
||||
v-model="formData.dayCount"
|
||||
:min="1"
|
||||
:max="99"
|
||||
controls-position="right"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="间隔(天)">
|
||||
<el-input-number
|
||||
v-model="formData.dayInterval"
|
||||
:min="0"
|
||||
:max="99"
|
||||
controls-position="right"
|
||||
v-model="formData.dayInterval"
|
||||
:min="0"
|
||||
:max="99"
|
||||
controls-position="right"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="时间点">
|
||||
<el-select v-model="formData.dayTimes" multiple placeholder="选择时间点">
|
||||
<el-select
|
||||
v-model="formData.dayTimes"
|
||||
multiple
|
||||
placeholder="选择时间点"
|
||||
>
|
||||
<el-option
|
||||
v-for="time in timeOptions"
|
||||
:key="time"
|
||||
:value="time"
|
||||
:label="time"
|
||||
v-for="time in timeOptions"
|
||||
:key="time"
|
||||
:value="time"
|
||||
:label="time"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <!– 分割线 –>-->
|
||||
<!-- <el-divider content-position="left">每周执行</el-divider>-->
|
||||
<!-- <!– 分割线 –>-->
|
||||
<!-- <el-divider content-position="left">每周执行</el-divider>-->
|
||||
|
||||
<!-- <el-row :gutter="16">-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item label="是否启用">-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="formData.weekCycleFlag"-->
|
||||
<!-- :active-value="1"-->
|
||||
<!-- :inactive-value="0"-->
|
||||
<!-- active-text="是"-->
|
||||
<!-- inactive-text="否"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item label="间隔(周)">-->
|
||||
<!-- <el-input-number-->
|
||||
<!-- v-model="formData.weekInterval"-->
|
||||
<!-- :min="1"-->
|
||||
<!-- :max="52"-->
|
||||
<!-- controls-position="right"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<!-- <el-row :gutter="16">-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item label="是否启用">-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="formData.weekCycleFlag"-->
|
||||
<!-- :active-value="1"-->
|
||||
<!-- :inactive-value="0"-->
|
||||
<!-- active-text="是"-->
|
||||
<!-- inactive-text="否"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item label="间隔(周)">-->
|
||||
<!-- <el-input-number-->
|
||||
<!-- v-model="formData.weekInterval"-->
|
||||
<!-- :min="1"-->
|
||||
<!-- :max="52"-->
|
||||
<!-- controls-position="right"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
|
||||
<!-- <el-form-item label="周次数">-->
|
||||
<!-- <el-input-number-->
|
||||
<!-- v-model="formData.weekTimes"-->
|
||||
<!-- :min="1"-->
|
||||
<!-- :max="7"-->
|
||||
<!-- controls-position="right"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="周次数">-->
|
||||
<!-- <el-input-number-->
|
||||
<!-- v-model="formData.weekTimes"-->
|
||||
<!-- :min="1"-->
|
||||
<!-- :max="7"-->
|
||||
<!-- controls-position="right"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<!-- 分割线 -->
|
||||
<el-divider content-position="left">周期与总计</el-divider>
|
||||
<el-divider content-position="left">
|
||||
周期与总计
|
||||
</el-divider>
|
||||
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="总次数">
|
||||
<el-input-number
|
||||
v-model="formData.totalExecutionCount"
|
||||
:min="1"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
v-model="formData.totalExecutionCount"
|
||||
:min="1"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="周期长度">
|
||||
<el-input-number
|
||||
v-model="formData.executionPeriod"
|
||||
:min="1"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
v-model="formData.executionPeriod"
|
||||
:min="1"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="周期单位">
|
||||
<el-select v-model="formData.executionPeriodUnit" style="width: 100%">
|
||||
<el-option label="分钟" value="minute" />
|
||||
<el-option label="天" value="day" />
|
||||
<el-option label="周" value="week" />
|
||||
<el-option label="月" value="month" />
|
||||
<el-select
|
||||
v-model="formData.executionPeriodUnit"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
label="分钟"
|
||||
value="minute"
|
||||
/>
|
||||
<el-option
|
||||
label="天"
|
||||
value="day"
|
||||
/>
|
||||
<el-option
|
||||
label="周"
|
||||
value="week"
|
||||
/>
|
||||
<el-option
|
||||
label="月"
|
||||
value="month"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="formData.memo"
|
||||
:rows="2"
|
||||
maxlength="200"
|
||||
show-word-limit
|
||||
v-model="formData.memo"
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
maxlength="200"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<!-- 底部按钮 -->
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">
|
||||
取 消
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
|
||||
<style scoped>
|
||||
.freq-form {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.input-readonly {
|
||||
background-color: #f5f7fa;
|
||||
color: #c0c4cc;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script setup>
|
||||
import {defineEmits, defineProps, ref, watch} from "vue";
|
||||
|
||||
@@ -220,4 +240,14 @@ watch(
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.freq-form {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.input-readonly {
|
||||
background-color: #f5f7fa;
|
||||
color: #c0c4cc;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
@@ -2,8 +2,13 @@
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20">
|
||||
<!--诊疗目录-->
|
||||
<el-col :span="4" :xs="24">
|
||||
<div class="head-title">频次字典</div>
|
||||
<el-col
|
||||
:span="4"
|
||||
:xs="24"
|
||||
>
|
||||
<div class="head-title">
|
||||
频次字典
|
||||
</div>
|
||||
<div>
|
||||
<el-table
|
||||
ref="freTableRef"
|
||||
@@ -11,161 +16,177 @@
|
||||
:data="frequency"
|
||||
row-key="id"
|
||||
@row-click="handleRowClick"
|
||||
>
|
||||
<el-table-column label="字典频次名称" align="left" prop="dictLabel" />
|
||||
<el-table-column label="字典频次代码" align="left" prop="dictValue" />
|
||||
>
|
||||
<el-table-column
|
||||
label="字典频次名称"
|
||||
align="left"
|
||||
prop="dictLabel"
|
||||
/>
|
||||
<el-table-column
|
||||
label="字典频次代码"
|
||||
align="left"
|
||||
prop="dictValue"
|
||||
/>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="frequencyTotal > 0"
|
||||
:total="frequencyTotal"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getFrequencyList"
|
||||
v-show="frequencyTotal > 0"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
:total="frequencyTotal"
|
||||
@pagination="getFrequencyList"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="20" :xs="24">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col
|
||||
:span="20"
|
||||
:xs="24"
|
||||
>
|
||||
<el-row
|
||||
:gutter="10"
|
||||
class="mb8"
|
||||
>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="Plus"
|
||||
@click="openDialog"
|
||||
v-hasPermi="['system:user:add']"
|
||||
>添加频次详情</el-button
|
||||
v-hasPermi="['system:user:add']"
|
||||
type="primary"
|
||||
plain
|
||||
icon="Plus"
|
||||
@click="openDialog"
|
||||
>
|
||||
添加频次详情
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="frequencyDetail"
|
||||
v-loading="loading"
|
||||
:data="frequencyDetail"
|
||||
>
|
||||
<!-- 定义表格列 -->
|
||||
<el-table-column
|
||||
prop="rateCode"
|
||||
label="频次代码"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
prop="rateCode"
|
||||
label="频次代码"
|
||||
width="180"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="name"
|
||||
label="名称"
|
||||
width="200">
|
||||
</el-table-column>
|
||||
prop="name"
|
||||
label="名称"
|
||||
width="200"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="dayCount"
|
||||
label="每天执行次数"
|
||||
width="120">
|
||||
</el-table-column>
|
||||
prop="dayCount"
|
||||
label="每天执行次数"
|
||||
width="120"
|
||||
/>
|
||||
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="dayInterval"-->
|
||||
<!-- label="每次执行间隔(天数)"-->
|
||||
<!-- width="180">-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="dayInterval"-->
|
||||
<!-- label="每次执行间隔(天数)"-->
|
||||
<!-- width="180">-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
<el-table-column
|
||||
prop="dayTimes"
|
||||
label="执行时间点"
|
||||
width="300">
|
||||
</el-table-column>
|
||||
prop="dayTimes"
|
||||
label="执行时间点"
|
||||
width="300"
|
||||
/>
|
||||
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="weekCycleFlag"-->
|
||||
<!-- label="是否周期性每周执行"-->
|
||||
<!-- width="150">-->
|
||||
<!-- <template #default="scope">-->
|
||||
<!-- {{ scope.row.weekCycleFlag === 1 ? '是' : '否' }}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="weekCycleFlag"-->
|
||||
<!-- label="是否周期性每周执行"-->
|
||||
<!-- width="150">-->
|
||||
<!-- <template #default="scope">-->
|
||||
<!-- {{ scope.row.weekCycleFlag === 1 ? '是' : '否' }}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="weekInterval"-->
|
||||
<!-- label="每周执行的间隔"-->
|
||||
<!-- width="150">-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="weekInterval"-->
|
||||
<!-- label="每周执行的间隔"-->
|
||||
<!-- width="150">-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="weekTimes"-->
|
||||
<!-- label="每周执行的次数"-->
|
||||
<!-- width="120">-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="weekTimes"-->
|
||||
<!-- label="每周执行的次数"-->
|
||||
<!-- width="120">-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="continueFlag"-->
|
||||
<!-- label="是否为连续执行"-->
|
||||
<!-- width="150">-->
|
||||
<!-- <template #default="scope">-->
|
||||
<!-- {{ scope.row.continueFlag === 1 ? '是' : '否' }}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="continueFlag"-->
|
||||
<!-- label="是否为连续执行"-->
|
||||
<!-- width="150">-->
|
||||
<!-- <template #default="scope">-->
|
||||
<!-- {{ scope.row.continueFlag === 1 ? '是' : '否' }}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
<el-table-column
|
||||
prop="totalExecutionCount"
|
||||
label="执行总次数"
|
||||
width="120">
|
||||
</el-table-column>
|
||||
prop="totalExecutionCount"
|
||||
label="执行总次数"
|
||||
width="120"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="executionPeriod"
|
||||
label="执行周期长度"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
prop="executionPeriod"
|
||||
label="执行周期长度"
|
||||
width="150"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="executionPeriodUnit"
|
||||
label="执行周期单位"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="memo"-->
|
||||
<!-- label="备注信息"-->
|
||||
<!-- width="200">-->
|
||||
<!-- </el-table-column>-->
|
||||
prop="executionPeriodUnit"
|
||||
label="执行周期单位"
|
||||
width="150"
|
||||
/>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="memo"-->
|
||||
<!-- label="备注信息"-->
|
||||
<!-- width="200">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
width="150"
|
||||
class-name="small-padding fixed-width"
|
||||
fixed="right"
|
||||
label="操作"
|
||||
align="center"
|
||||
width="150"
|
||||
class-name="small-padding fixed-width"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
icon="Edit"
|
||||
@click="openSave(scope.row, scope.$index)"
|
||||
v-hasPermi="['system:user:edit']"
|
||||
>编辑</el-button
|
||||
v-hasPermi="['system:user:edit']"
|
||||
link
|
||||
type="primary"
|
||||
icon="Edit"
|
||||
@click="openSave(scope.row, scope.$index)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
icon="Delete"
|
||||
:disabled="scope.row.id == ''"
|
||||
@click="deleteSelectedRows(scope.row)"
|
||||
type="danger"
|
||||
link
|
||||
icon="Delete"
|
||||
:disabled="scope.row.id == ''"
|
||||
@click="deleteSelectedRows(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- <pagination-->
|
||||
<!-- v-show="frequencyDetailTotal > 0"-->
|
||||
<!-- :total="frequencyDetailTotal"-->
|
||||
<!-- v-model:page="queryDetailParams.pageNum"-->
|
||||
<!-- v-model:limit="queryDetailParams.pageSize"-->
|
||||
<!-- @pagination="getDetailList"-->
|
||||
<!-- />-->
|
||||
<!-- <pagination-->
|
||||
<!-- v-show="frequencyDetailTotal > 0"-->
|
||||
<!-- :total="frequencyDetailTotal"-->
|
||||
<!-- v-model:page="queryDetailParams.pageNum"-->
|
||||
<!-- v-model:limit="queryDetailParams.pageSize"-->
|
||||
<!-- @pagination="getDetailList"-->
|
||||
<!-- />-->
|
||||
</el-col>
|
||||
</el-row>
|
||||
<FreForm
|
||||
v-model="dialogVisible"
|
||||
:initialFormData="showFormData"
|
||||
@submit="handleFormSubmit"
|
||||
v-model="dialogVisible"
|
||||
:initial-form-data="showFormData"
|
||||
@submit="handleFormSubmit"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -3,23 +3,31 @@
|
||||
<el-dialog
|
||||
title="批量导入项目"
|
||||
:model-value="props.dialogVisible"
|
||||
@update:modelValue="(val) => emit('update:dialogVisible', val)"
|
||||
width="842"
|
||||
append-to-body
|
||||
destroy-on-close
|
||||
:draggable="true"
|
||||
@update:model-value="(val) => emit('update:dialogVisible', val)"
|
||||
>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="24">
|
||||
<el-form ref="formEl" :rules="rules" :model="form" label-width="100px">
|
||||
<el-form-item label="项目类型" prop="clinicalType">
|
||||
<el-form
|
||||
ref="formEl"
|
||||
:rules="rules"
|
||||
:model="form"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item
|
||||
label="项目类型"
|
||||
prop="clinicalType"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.clinicalType"
|
||||
placeholder="请选择"
|
||||
@change="getList()"
|
||||
filterable
|
||||
clearable
|
||||
style="width: 200px"
|
||||
@change="getList()"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in categoryCodeList"
|
||||
@@ -32,7 +40,10 @@
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="30" style="margin-top: 30px">
|
||||
<el-row
|
||||
:gutter="30"
|
||||
style="margin-top: 30px"
|
||||
>
|
||||
<el-col :span="24">
|
||||
<el-transfer
|
||||
v-model="transferValue"
|
||||
@@ -47,8 +58,15 @@
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="onCancel">取消</el-button>
|
||||
<el-button type="primary" @click="onConfirm"> 确认 </el-button>
|
||||
<el-button @click="onCancel">
|
||||
取消
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="onConfirm"
|
||||
>
|
||||
确认
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@@ -132,7 +150,7 @@ function onCancel() {
|
||||
|
||||
// 批量添加
|
||||
async function onConfirm() {
|
||||
if (!formEl) return;
|
||||
if (!formEl.value) return;
|
||||
formEl.value.validate(async (valid) => {
|
||||
if (!valid) return;
|
||||
if (!transferValue.value || transferValue.value.length === 0) {
|
||||
|
||||
@@ -2,15 +2,20 @@
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20">
|
||||
<!--诊疗目录-->
|
||||
<el-col :span="4" :xs="24">
|
||||
<div class="head-title">执行科室配置</div>
|
||||
<el-col
|
||||
:span="4"
|
||||
:xs="24"
|
||||
>
|
||||
<div class="head-title">
|
||||
执行科室配置
|
||||
</div>
|
||||
<div class="head-container">
|
||||
<el-tree
|
||||
ref="treeRef"
|
||||
:data="organization"
|
||||
:props="{ label: 'name', children: 'children' }"
|
||||
:expand-on-click-node="true"
|
||||
:filter-node-method="filterNode"
|
||||
ref="treeRef"
|
||||
node-key="id"
|
||||
highlight-current
|
||||
check-strictly
|
||||
@@ -20,29 +25,37 @@
|
||||
</div>
|
||||
</el-col>
|
||||
<!--诊疗目录-->
|
||||
<el-col :span="20" :xs="24">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col
|
||||
:span="20"
|
||||
:xs="24"
|
||||
>
|
||||
<el-row
|
||||
:gutter="10"
|
||||
class="mb8"
|
||||
>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-hasPermi="['system:user:add']"
|
||||
type="primary"
|
||||
plain
|
||||
icon="Plus"
|
||||
:disabled="isAddDisable"
|
||||
@click="handleAddItem"
|
||||
v-hasPermi="['system:user:add']"
|
||||
>添加新项目</el-button
|
||||
>
|
||||
添加新项目
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-hasPermi="['system:user:add']"
|
||||
type="warning"
|
||||
plain
|
||||
icon="Plus"
|
||||
:disabled="isAddDisable"
|
||||
@click="handleBacthAddItem"
|
||||
v-hasPermi="['system:user:add']"
|
||||
>批量新增项目配置</el-button
|
||||
>
|
||||
批量新增项目配置
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
@@ -51,7 +64,11 @@
|
||||
:data="catagoryList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="100" align="center" />
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="100"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="诊疗目录"
|
||||
width="150"
|
||||
@@ -60,9 +77,9 @@
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
ref="dropdown"
|
||||
v-model="scope.row.activityCategoryCode"
|
||||
placeholder="请选择"
|
||||
ref="dropdown"
|
||||
:class="{ 'error-border': scope.row.error }"
|
||||
clearable
|
||||
>
|
||||
@@ -75,7 +92,11 @@
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" align="center" :show-overflow-tooltip="true">
|
||||
<el-table-column
|
||||
label="项目名称"
|
||||
align="center"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.activityDefinitionId"
|
||||
@@ -98,9 +119,9 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
key="startTime"
|
||||
label="开始时间"
|
||||
align="center"
|
||||
key="startTime"
|
||||
prop="startTime"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
@@ -110,15 +131,14 @@
|
||||
placeholder="选择时间"
|
||||
format="HH:mm:ss"
|
||||
value-format="HH:mm:ss"
|
||||
>
|
||||
</el-time-picker>
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
key="endTime"
|
||||
label="结束时间"
|
||||
align="center"
|
||||
key="endTime"
|
||||
prop="endTime"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
@@ -128,8 +148,7 @@
|
||||
placeholder="选择时间"
|
||||
format="HH:mm:ss"
|
||||
value-format="HH:mm:ss"
|
||||
>
|
||||
</el-time-picker>
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -141,13 +160,14 @@
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
v-hasPermi="['system:user:edit']"
|
||||
link
|
||||
type="primary"
|
||||
icon="Edit"
|
||||
@click="openSaveImplementDepartment(scope.row, scope.$index)"
|
||||
v-hasPermi="['system:user:edit']"
|
||||
>保存</el-button
|
||||
>
|
||||
保存
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@@ -162,17 +182,17 @@
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
:total="total"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<BacthAddItemDialog
|
||||
v-model:dialogVisible="bacthAddItemDialogVisible"
|
||||
:organizationId="organizationId"
|
||||
@submitOk="getList"
|
||||
v-model:dialog-visible="bacthAddItemDialogVisible"
|
||||
:organization-id="organizationId"
|
||||
@submit-ok="getList"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user