|
|
|
|
@ -10,7 +10,9 @@ |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-plus" |
|
|
|
|
@click="handleOpenFile" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && form.status != 5 && form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
新增 |
|
|
|
|
</el-button> |
|
|
|
|
@ -44,7 +46,9 @@ |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-delete" |
|
|
|
|
@click="handleDeleteImg(scope.row, scope.$index)" |
|
|
|
|
v-if="form.status == 1 || form.status == 5" |
|
|
|
|
v-if=" |
|
|
|
|
form.status == 1 || form.status == 5 || form.status == 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
删除 |
|
|
|
|
</el-button> |
|
|
|
|
@ -72,8 +76,33 @@ |
|
|
|
|
? statusList.find((i) => i.value == form.status).label || "" |
|
|
|
|
: "" |
|
|
|
|
}} |
|
|
|
|
{{ |
|
|
|
|
form.status && form.status == 15 |
|
|
|
|
? "(" + |
|
|
|
|
statusList.find((i) => i.value == form.status).label + |
|
|
|
|
"理由:" + |
|
|
|
|
form.status_comment + |
|
|
|
|
")" |
|
|
|
|
: "" |
|
|
|
|
}} |
|
|
|
|
</span> |
|
|
|
|
<div class="btn-group"> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-check" |
|
|
|
|
@click="handlePass()" |
|
|
|
|
v-if="form.status == 10 && form.reviewer_id == userInfo.id" |
|
|
|
|
> |
|
|
|
|
审核通过 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-close" |
|
|
|
|
@click="handleReject()" |
|
|
|
|
v-if="form.status == 10 && form.reviewer_id == userInfo.id" |
|
|
|
|
> |
|
|
|
|
审核拒绝 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-check" |
|
|
|
|
@ -84,7 +113,7 @@ |
|
|
|
|
'暂存成功' |
|
|
|
|
) |
|
|
|
|
" |
|
|
|
|
v-if="form.status == 1 || form.status == 5" |
|
|
|
|
v-if="form.status == 1 || form.status == 5 || form.status == 15" |
|
|
|
|
> |
|
|
|
|
暂存 |
|
|
|
|
</el-button> |
|
|
|
|
@ -98,7 +127,7 @@ |
|
|
|
|
'提交成功' |
|
|
|
|
) |
|
|
|
|
" |
|
|
|
|
v-if="form.status == 1 || form.status == 5" |
|
|
|
|
v-if="form.status == 1 || form.status == 5 || form.status == 15" |
|
|
|
|
> |
|
|
|
|
提交 |
|
|
|
|
</el-button> |
|
|
|
|
@ -106,6 +135,7 @@ |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-printer" |
|
|
|
|
@click="handlePrint" |
|
|
|
|
v-if="form.status == 10 || form.status == 20" |
|
|
|
|
> |
|
|
|
|
打印 |
|
|
|
|
</el-button> |
|
|
|
|
@ -117,243 +147,319 @@ |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<el-form |
|
|
|
|
ref="form" |
|
|
|
|
:model="form" |
|
|
|
|
label-width="90px" |
|
|
|
|
class="report-form" |
|
|
|
|
> |
|
|
|
|
<el-row :gutter="20" style="border-bottom: 2px solid #44931e"> |
|
|
|
|
<el-col :span="20"> |
|
|
|
|
<div |
|
|
|
|
style=" |
|
|
|
|
text-align: center; |
|
|
|
|
vertical-align: middle; |
|
|
|
|
color: #606266; |
|
|
|
|
box-sizing: border-box; |
|
|
|
|
font-weight: 700; |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
远程超声检查报告 |
|
|
|
|
</div> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="4"> |
|
|
|
|
<el-form-item label="检查号"> |
|
|
|
|
{{ form.id }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-row :gutter="20"> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="患者姓名" prop="patient_name"> |
|
|
|
|
{{ form.patient_name }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="3"> |
|
|
|
|
<el-form-item label="性别" prop="patient_sex"> |
|
|
|
|
{{ |
|
|
|
|
form.patient_sex |
|
|
|
|
? patientSexList.find((i) => i.value == form.patient_sex) |
|
|
|
|
.label || "" |
|
|
|
|
: "" |
|
|
|
|
}} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="3"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="年龄" |
|
|
|
|
prop="patient_age" |
|
|
|
|
label-width="60px" |
|
|
|
|
> |
|
|
|
|
{{ form.patient_age }} |
|
|
|
|
{{ |
|
|
|
|
form.patient_age_type |
|
|
|
|
? patientAgeTypeList.find( |
|
|
|
|
(i) => i.value == form.patient_age_type |
|
|
|
|
).label || "" |
|
|
|
|
: "" |
|
|
|
|
}} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="申请医师" prop="request_doctor"> |
|
|
|
|
{{ form.request_doctor }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="病例号" prop="patient_id"> |
|
|
|
|
{{ form.patient_id }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="门诊号" prop="outpatient_number"> |
|
|
|
|
{{ form.outpatient_number }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="住院号" prop="hospitalization_number"> |
|
|
|
|
{{ form.hospitalization_number }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="病区号" prop="area_number"> |
|
|
|
|
{{ form.area_number }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="床位号" prop="bed_number"> |
|
|
|
|
{{ form.bed_number }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24"> |
|
|
|
|
<el-form-item label="检查设备" prop="equipments"> |
|
|
|
|
{{ form.equipments.map((i) => i.name).join("|") }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24" style="border-bottom: 2px solid #44931e"> |
|
|
|
|
<el-form-item label="检查部位" prop="positions"> |
|
|
|
|
{{ |
|
|
|
|
form.positions.length |
|
|
|
|
? form.positions |
|
|
|
|
.map((item) => item.level2.name) |
|
|
|
|
.join("|") + |
|
|
|
|
(form.position_text ? "|" + form.position_text : "") |
|
|
|
|
: form.position_text |
|
|
|
|
}} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col |
|
|
|
|
:span="6" |
|
|
|
|
v-for="(item, idx) in form.attachment" |
|
|
|
|
:key="idx" |
|
|
|
|
v-show="item.showInDoc == 1" |
|
|
|
|
style="margin-top: 10px" |
|
|
|
|
> |
|
|
|
|
<el-form-item> |
|
|
|
|
<el-image |
|
|
|
|
:src=" |
|
|
|
|
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS + |
|
|
|
|
item.bucket_compress + |
|
|
|
|
'/' + |
|
|
|
|
item.object_compress |
|
|
|
|
" |
|
|
|
|
fit="cover" |
|
|
|
|
:preview-src-list="[ |
|
|
|
|
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS + |
|
|
|
|
item.bucket_compress + |
|
|
|
|
'/' + |
|
|
|
|
item.object_compress, |
|
|
|
|
]" |
|
|
|
|
style="width: 100px; height: 80px" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24" style=""> |
|
|
|
|
<el-form-item label="超声所见"> |
|
|
|
|
<el-input |
|
|
|
|
v-model="form.text_comment" |
|
|
|
|
type="textarea" |
|
|
|
|
:rows="9" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24"> |
|
|
|
|
<el-form-item label="检查结论"> |
|
|
|
|
<el-input |
|
|
|
|
v-model="form.text_conclusion" |
|
|
|
|
type="textarea" |
|
|
|
|
:rows="4" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24" v-if="form.experts.length != 0"> |
|
|
|
|
<el-form-item label="专家意见" /> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col |
|
|
|
|
:span="24" |
|
|
|
|
v-for="(item, idx) in form.experts" |
|
|
|
|
:key="idx" |
|
|
|
|
class="expert-item" |
|
|
|
|
> |
|
|
|
|
<el-form-item :label="item.expert_name"> |
|
|
|
|
<el-input |
|
|
|
|
v-model="item.user_comment" |
|
|
|
|
type="textarea" |
|
|
|
|
:rows="3" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
/> |
|
|
|
|
<div class="expert-btns"> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-document-copy" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
> |
|
|
|
|
全部复制 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-check" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
v-if="item.confirm == 0" |
|
|
|
|
<div class="report-container"> |
|
|
|
|
<div class="report-form"> |
|
|
|
|
<el-form ref="form" :model="form" label-width="90px"> |
|
|
|
|
<el-row :gutter="20" class="green-line" id="anchor-top"> |
|
|
|
|
<el-col :span="20"> |
|
|
|
|
<div |
|
|
|
|
style=" |
|
|
|
|
text-align: center; |
|
|
|
|
vertical-align: middle; |
|
|
|
|
color: #606266; |
|
|
|
|
box-sizing: border-box; |
|
|
|
|
font-weight: 700; |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
一键同意 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-warning" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
远程超声检查报告 |
|
|
|
|
</div> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="4"> |
|
|
|
|
<el-form-item label="检查号"> |
|
|
|
|
{{ form.id }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-row :gutter="20"> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="患者姓名" prop="patient_name"> |
|
|
|
|
{{ form.patient_name }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="3"> |
|
|
|
|
<el-form-item label="性别" prop="patient_sex"> |
|
|
|
|
{{ |
|
|
|
|
form.patient_sex |
|
|
|
|
? patientSexList.find( |
|
|
|
|
(i) => i.value == form.patient_sex |
|
|
|
|
).label || "" |
|
|
|
|
: "" |
|
|
|
|
}} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="3"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="年龄" |
|
|
|
|
prop="patient_age" |
|
|
|
|
label-width="60px" |
|
|
|
|
> |
|
|
|
|
待确认 |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
{{ form.patient_age }} |
|
|
|
|
{{ |
|
|
|
|
form.patient_age_type |
|
|
|
|
? patientAgeTypeList.find( |
|
|
|
|
(i) => i.value == form.patient_age_type |
|
|
|
|
).label || "" |
|
|
|
|
: "" |
|
|
|
|
}} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="申请医师" prop="request_doctor"> |
|
|
|
|
{{ form.request_doctor }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="病例号" prop="patient_id"> |
|
|
|
|
{{ form.patient_id }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="门诊号" prop="outpatient_number"> |
|
|
|
|
{{ form.outpatient_number }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="住院号" prop="hospitalization_number"> |
|
|
|
|
{{ form.hospitalization_number }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="病区号" prop="area_number"> |
|
|
|
|
{{ form.area_number }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="床位号" prop="bed_number"> |
|
|
|
|
{{ form.bed_number }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24"> |
|
|
|
|
<el-form-item label="检查设备" prop="equipments"> |
|
|
|
|
{{ form.equipments.map((i) => i.name).join("|") }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24" class="green-line"> |
|
|
|
|
<el-form-item label="检查部位" prop="positions"> |
|
|
|
|
{{ |
|
|
|
|
form.positions.length |
|
|
|
|
? form.positions |
|
|
|
|
.map((item) => item.level2.name) |
|
|
|
|
.join("|") + |
|
|
|
|
(form.position_text ? "|" + form.position_text : "") |
|
|
|
|
: form.position_text |
|
|
|
|
}} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-row :gutter="20"> |
|
|
|
|
<el-col |
|
|
|
|
:span="6" |
|
|
|
|
v-for="(item, idx) in form.attachment" |
|
|
|
|
:key="idx" |
|
|
|
|
v-show="item.showInDoc == 1" |
|
|
|
|
> |
|
|
|
|
<el-form-item> |
|
|
|
|
<el-image |
|
|
|
|
:src=" |
|
|
|
|
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS + |
|
|
|
|
item.bucket_compress + |
|
|
|
|
'/' + |
|
|
|
|
item.object_compress |
|
|
|
|
" |
|
|
|
|
fit="cover" |
|
|
|
|
:preview-src-list="[ |
|
|
|
|
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS + |
|
|
|
|
item.bucket_compress + |
|
|
|
|
'/' + |
|
|
|
|
item.object_compress, |
|
|
|
|
]" |
|
|
|
|
style="width: 100px; height: 80px" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24" id="anchor-comment"> |
|
|
|
|
<el-form-item label="超声所见"> |
|
|
|
|
<el-input |
|
|
|
|
v-model="form.text_comment" |
|
|
|
|
type="textarea" |
|
|
|
|
:rows="9" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24" id="anchor-conclusion"> |
|
|
|
|
<el-form-item label="检查结论"> |
|
|
|
|
<el-input |
|
|
|
|
v-model="form.text_conclusion" |
|
|
|
|
type="textarea" |
|
|
|
|
:rows="4" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24" id="anchor-expert"> |
|
|
|
|
<el-form-item label="专家意见" /> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col |
|
|
|
|
:span="24" |
|
|
|
|
v-for="(item, idx) in form.experts" |
|
|
|
|
:key="idx" |
|
|
|
|
class="expert-item" |
|
|
|
|
> |
|
|
|
|
<el-form-item :label="item.expert_name"> |
|
|
|
|
<el-input |
|
|
|
|
v-model="item.user_comment" |
|
|
|
|
type="textarea" |
|
|
|
|
:rows="3" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
<div class="expert-btns"> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-document-copy" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
全部复制 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-check" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
v-if="item.confirm == 0" |
|
|
|
|
> |
|
|
|
|
一键同意 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-warning" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
待确认 |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
<el-col :span="18"> |
|
|
|
|
<el-form-item label="报告人"> |
|
|
|
|
{{ form.reporter_name }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="18"> |
|
|
|
|
<el-form-item label="报告人"> |
|
|
|
|
{{ form.reporter_name }} |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="审核人"> |
|
|
|
|
<el-select |
|
|
|
|
v-model="form.reviewer_id" |
|
|
|
|
clearable |
|
|
|
|
filterable |
|
|
|
|
style="width: 100%" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
> |
|
|
|
|
<el-option |
|
|
|
|
v-for="item in reviewersList" |
|
|
|
|
:key="item.id" |
|
|
|
|
:label="item.name" |
|
|
|
|
:value="item.id" |
|
|
|
|
> |
|
|
|
|
<span style="float: left">{{ item.name }}</span> |
|
|
|
|
<span |
|
|
|
|
style="float: right; color: #8492a6; font-size: 13px" |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="审核人"> |
|
|
|
|
<el-select |
|
|
|
|
v-model="form.reviewer_id" |
|
|
|
|
clearable |
|
|
|
|
filterable |
|
|
|
|
style="width: 100%" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
{{ item.username }} |
|
|
|
|
</span> |
|
|
|
|
</el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item> |
|
|
|
|
<el-checkbox |
|
|
|
|
v-model="form.isPositive" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
> |
|
|
|
|
阳性 |
|
|
|
|
</el-checkbox> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
</el-form> |
|
|
|
|
<el-option |
|
|
|
|
v-for="item in reviewersList" |
|
|
|
|
:key="item.id" |
|
|
|
|
:label="item.name" |
|
|
|
|
:value="item.id" |
|
|
|
|
> |
|
|
|
|
<span style="float: left">{{ item.name }}</span> |
|
|
|
|
<span |
|
|
|
|
style=" |
|
|
|
|
float: right; |
|
|
|
|
color: #8492a6; |
|
|
|
|
font-size: 13px; |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
{{ item.username }} |
|
|
|
|
</span> |
|
|
|
|
</el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12" id="anchor-bottom"> |
|
|
|
|
<el-form-item> |
|
|
|
|
<el-checkbox |
|
|
|
|
:checked="form.negative === 0" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
@change="(val) => (form.negative = val ? 0 : 1)" |
|
|
|
|
> |
|
|
|
|
阳性 |
|
|
|
|
</el-checkbox> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
</el-form> |
|
|
|
|
</div> |
|
|
|
|
<div class="anchor-nav"> |
|
|
|
|
<el-button type="text" /> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
circle |
|
|
|
|
@click="scrollToAnchor('anchor-top')" |
|
|
|
|
> |
|
|
|
|
顶 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
circle |
|
|
|
|
@click="scrollToAnchor('anchor-comment')" |
|
|
|
|
> |
|
|
|
|
述 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
circle |
|
|
|
|
@click="scrollToAnchor('anchor-conclusion')" |
|
|
|
|
> |
|
|
|
|
诊 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
circle |
|
|
|
|
@click="scrollToAnchor('anchor-expert')" |
|
|
|
|
> |
|
|
|
|
专 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
circle |
|
|
|
|
@click="scrollToAnchor('anchor-bottom')" |
|
|
|
|
> |
|
|
|
|
底 |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</el-card> |
|
|
|
|
</el-col> |
|
|
|
|
<!-- 右侧:部位模板 + 片语 --> |
|
|
|
|
@ -366,7 +472,9 @@ |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-plus" |
|
|
|
|
@click="openTemplateDialog({})" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && form.status != 5 && form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
新增 |
|
|
|
|
</el-button> |
|
|
|
|
@ -405,7 +513,9 @@ |
|
|
|
|
v-model="templateForm.id" |
|
|
|
|
style="width: 100%" |
|
|
|
|
@change="changeTemplate" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && form.status != 5 && form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
<el-option |
|
|
|
|
v-for="item in templateList" |
|
|
|
|
@ -428,7 +538,9 @@ |
|
|
|
|
icon="el-icon-check" |
|
|
|
|
@click="handleComment" |
|
|
|
|
style="float: right" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && form.status != 5 && form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
应用 |
|
|
|
|
</el-button> |
|
|
|
|
@ -446,7 +558,9 @@ |
|
|
|
|
icon="el-icon-check" |
|
|
|
|
@click="handleCnclusion" |
|
|
|
|
style="float: right" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && form.status != 5 && form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
应用 |
|
|
|
|
</el-button> |
|
|
|
|
@ -465,7 +579,9 @@ |
|
|
|
|
phrase: '', |
|
|
|
|
}) |
|
|
|
|
" |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && form.status != 5 && form.status != 15 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
新增 |
|
|
|
|
</el-button> |
|
|
|
|
@ -484,7 +600,11 @@ |
|
|
|
|
<el-table-column label="操作" width="50"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<el-dropdown |
|
|
|
|
:disabled="form.status != 1 && form.status != 5" |
|
|
|
|
:disabled=" |
|
|
|
|
form.status != 1 && |
|
|
|
|
form.status != 5 && |
|
|
|
|
form.status != 15 |
|
|
|
|
" |
|
|
|
|
@command=" |
|
|
|
|
(command) => handlePhraseCommand(command, scope.row) |
|
|
|
|
" |
|
|
|
|
@ -608,6 +728,28 @@ |
|
|
|
|
:min-select-count="1" |
|
|
|
|
@confirm="handleShareToContacts" |
|
|
|
|
/> |
|
|
|
|
<!-- 驳回原因弹窗 --> |
|
|
|
|
<el-dialog title="审核拒绝" :visible.sync="rejectDialogOpen" width="30%"> |
|
|
|
|
<el-form |
|
|
|
|
:model="rejectReason" |
|
|
|
|
label-width="80px" |
|
|
|
|
ref="rejectFormRef" |
|
|
|
|
:rules="rejectRules" |
|
|
|
|
> |
|
|
|
|
<el-form-item label="拒绝理由" prop="comment"> |
|
|
|
|
<el-input |
|
|
|
|
type="textarea" |
|
|
|
|
:rows="4" |
|
|
|
|
v-model="rejectReason.comment" |
|
|
|
|
placeholder="请输入拒绝理由" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-form> |
|
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
|
<el-button @click="rejectDialogOpen = false">取 消</el-button> |
|
|
|
|
<el-button type="primary" @click="confirmReject"> 确 定 </el-button> |
|
|
|
|
</div> |
|
|
|
|
</el-dialog> |
|
|
|
|
<!-- 打印预览弹窗 --> |
|
|
|
|
<UltrasoundReportPrint ref="UltrasoundReportPrintRef" /> |
|
|
|
|
</div> |
|
|
|
|
@ -635,6 +777,7 @@ import { |
|
|
|
|
postReportPhraseCount, |
|
|
|
|
postReportTemplateTree, |
|
|
|
|
postReportPrint, |
|
|
|
|
postReportReview, |
|
|
|
|
} from "@/api/cases/index.js"; |
|
|
|
|
import { postMessagePushToUser } from "@/api/knowledge"; |
|
|
|
|
import { mapGetters } from "vuex"; |
|
|
|
|
@ -662,6 +805,8 @@ export default { |
|
|
|
|
positions: [], |
|
|
|
|
experts: [], |
|
|
|
|
}, |
|
|
|
|
// 原始表单数据副本,用于检测是否有修改 |
|
|
|
|
originalForm: null, |
|
|
|
|
// 字典 |
|
|
|
|
// 性别 |
|
|
|
|
patientSexList: patientSexList(), |
|
|
|
|
@ -710,6 +855,14 @@ export default { |
|
|
|
|
// ====================== ✅ 片语核心(新增) ====================== |
|
|
|
|
phraseTitle: "新增片语", |
|
|
|
|
phraseOpen: false, |
|
|
|
|
// ====================== 审批驳回 ====================== |
|
|
|
|
rejectDialogOpen: false, |
|
|
|
|
rejectReason: { comment: "" }, |
|
|
|
|
rejectRules: { |
|
|
|
|
comment: [ |
|
|
|
|
{ required: true, message: "请输入审核拒绝理由", trigger: "blur" }, |
|
|
|
|
], |
|
|
|
|
}, |
|
|
|
|
phraseList: [], |
|
|
|
|
phraseForm: { |
|
|
|
|
id: 0, |
|
|
|
|
@ -727,6 +880,13 @@ export default { |
|
|
|
|
this.getReportInfo(id); |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
// 锚点滚动 |
|
|
|
|
scrollToAnchor(anchorId) { |
|
|
|
|
const element = document.getElementById(anchorId); |
|
|
|
|
if (element) { |
|
|
|
|
element.scrollIntoView({ behavior: "smooth", block: "start" }); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
// 图片操作 |
|
|
|
|
handleOpenFile() { |
|
|
|
|
this.$refs.fileInput.click(); |
|
|
|
|
@ -805,6 +965,44 @@ export default { |
|
|
|
|
}) |
|
|
|
|
.catch(() => {}); |
|
|
|
|
}, |
|
|
|
|
// 审批通过 |
|
|
|
|
handlePass() { |
|
|
|
|
this.$modal |
|
|
|
|
.confirm("点击确定,病例将审核通过") |
|
|
|
|
.then(() => { |
|
|
|
|
return postReportReview({ |
|
|
|
|
report_id: this.form.id, |
|
|
|
|
status: 1, |
|
|
|
|
comment: "", |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
.then(() => { |
|
|
|
|
this.$modal.msgSuccess("审核通过成功"); |
|
|
|
|
this.getReportInfo(this.form.id); |
|
|
|
|
}) |
|
|
|
|
.catch(() => {}); |
|
|
|
|
}, |
|
|
|
|
// 审批驳回 - 打开驳回原因弹窗 |
|
|
|
|
handleReject() { |
|
|
|
|
this.rejectReason.comment = ""; |
|
|
|
|
this.rejectDialogOpen = true; |
|
|
|
|
}, |
|
|
|
|
// 确认驳回 |
|
|
|
|
confirmReject() { |
|
|
|
|
this.$refs.rejectFormRef.validate((valid) => { |
|
|
|
|
if (valid) { |
|
|
|
|
postReportReview({ |
|
|
|
|
report_id: this.form.id, |
|
|
|
|
status: 0, |
|
|
|
|
comment: this.rejectReason.comment, |
|
|
|
|
}).then(() => { |
|
|
|
|
this.$modal.msgSuccess("审核拒绝成功"); |
|
|
|
|
this.rejectDialogOpen = false; |
|
|
|
|
this.getReportInfo(this.form.id); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
// 根据路由参数获取病例数据 |
|
|
|
|
getReportInfo(id) { |
|
|
|
|
if (id) { |
|
|
|
|
@ -817,6 +1015,8 @@ export default { |
|
|
|
|
this.form.attachment = Array.isArray(res.data.attachment) |
|
|
|
|
? res.data.attachment |
|
|
|
|
: []; |
|
|
|
|
// 保存原始数据副本,用于检测是否有修改 |
|
|
|
|
this.originalForm = JSON.parse(JSON.stringify(this.form)); |
|
|
|
|
this.getReviewers(); |
|
|
|
|
this.loadTemplateList(); |
|
|
|
|
this.loadPhraseList(); |
|
|
|
|
@ -855,7 +1055,7 @@ export default { |
|
|
|
|
patient_type: form.patient_type || 0, |
|
|
|
|
request_doctor: form.request_doctor || "", |
|
|
|
|
reviewer_id: form.reviewer_id || 0, |
|
|
|
|
negative: form.negative || 1, |
|
|
|
|
negative: form.negative ? 0 : 1, |
|
|
|
|
position_text: form.position_text || "", |
|
|
|
|
text_comment: form.text_comment || "", |
|
|
|
|
text_conclusion: form.text_conclusion || "", |
|
|
|
|
@ -888,7 +1088,8 @@ export default { |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
.then(() => { |
|
|
|
|
this.handleClose(); |
|
|
|
|
// 保存成功后直接关闭页面,不再弹出确认框 |
|
|
|
|
this.getReportInfo(form.id); |
|
|
|
|
this.$modal.msgSuccess(msg); |
|
|
|
|
}) |
|
|
|
|
.catch(() => {}); |
|
|
|
|
@ -897,13 +1098,46 @@ export default { |
|
|
|
|
handlePrint() { |
|
|
|
|
this.$refs.UltrasoundReportPrintRef.print(this.form); |
|
|
|
|
}, |
|
|
|
|
// 检测表单是否有修改 |
|
|
|
|
isFormModified() { |
|
|
|
|
if (!this.originalForm) return false; |
|
|
|
|
// 需要比较的关键字段 |
|
|
|
|
const compareKeys = [ |
|
|
|
|
"text_comment", |
|
|
|
|
"text_conclusion", |
|
|
|
|
"reviewer_id", |
|
|
|
|
"isPositive", |
|
|
|
|
"attachment", |
|
|
|
|
"experts", |
|
|
|
|
]; |
|
|
|
|
for (const key of compareKeys) { |
|
|
|
|
const current = this.form[key]; |
|
|
|
|
const original = this.originalForm[key]; |
|
|
|
|
// 对于数组类型,比较JSON字符串 |
|
|
|
|
if (Array.isArray(current) || Array.isArray(original)) { |
|
|
|
|
const currentStr = JSON.stringify(current || []); |
|
|
|
|
const originalStr = JSON.stringify(original || []); |
|
|
|
|
if (currentStr !== originalStr) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} else if (current !== original) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
}, |
|
|
|
|
handleClose() { |
|
|
|
|
this.$modal |
|
|
|
|
.confirm("尚有修改未提交,是否确定退出") |
|
|
|
|
.then(() => { |
|
|
|
|
this.$router.back(); |
|
|
|
|
}) |
|
|
|
|
.catch(() => {}); |
|
|
|
|
// 只有在表单有修改时才弹出确认框 |
|
|
|
|
if (this.isFormModified()) { |
|
|
|
|
this.$modal |
|
|
|
|
.confirm("尚有修改未提交,是否确定退出") |
|
|
|
|
.then(() => { |
|
|
|
|
this.$router.back(); |
|
|
|
|
}) |
|
|
|
|
.catch(() => {}); |
|
|
|
|
} else { |
|
|
|
|
this.$router.back(); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
handleShare() { |
|
|
|
|
this.$refs.createGroupDialogRef.show(); |
|
|
|
|
@ -1005,6 +1239,12 @@ export default { |
|
|
|
|
.then((response) => { |
|
|
|
|
if (response.code === 200 && response.data) { |
|
|
|
|
this.partIdList = response.data; |
|
|
|
|
if ( |
|
|
|
|
this.partIdList.length > 0 && |
|
|
|
|
this.newTemplateForm.id == undefined |
|
|
|
|
) { |
|
|
|
|
this.newTemplateForm.part_id = this.partIdList[0].child[0].id; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.catch((error) => { |
|
|
|
|
@ -1132,6 +1372,15 @@ export default { |
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
|
.center-card, |
|
|
|
|
.left-card { |
|
|
|
|
::v-deep .el-card__body { |
|
|
|
|
background: #f0f0f0 !important; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.el-form-item { |
|
|
|
|
margin-bottom: 5px !important; |
|
|
|
|
} |
|
|
|
|
/* 内部滚动区域高度自适应 */ |
|
|
|
|
.report-form { |
|
|
|
|
height: calc(100vh - 239px); |
|
|
|
|
@ -1139,6 +1388,7 @@ export default { |
|
|
|
|
overflow-x: hidden; |
|
|
|
|
width: 100%; |
|
|
|
|
box-sizing: border-box; |
|
|
|
|
padding: 5px; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.template-form { |
|
|
|
|
@ -1191,4 +1441,38 @@ export default { |
|
|
|
|
justify-content: flex-end; |
|
|
|
|
gap: 8px; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* 绿色分割线 */ |
|
|
|
|
.green-line { |
|
|
|
|
margin-left: 5px; |
|
|
|
|
margin-right: 5px; |
|
|
|
|
margin-bottom: 5px; |
|
|
|
|
border-bottom: 2px solid #44931e; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* 报告容器:弹性布局,表单居左,锚点居右 */ |
|
|
|
|
.report-container { |
|
|
|
|
display: flex; |
|
|
|
|
gap: 12px; |
|
|
|
|
width: 100%; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* 表单区域:占满剩余空间,纵向滚动 */ |
|
|
|
|
.report-form { |
|
|
|
|
flex: 1; |
|
|
|
|
height: calc(100vh - 239px); |
|
|
|
|
overflow-y: auto; |
|
|
|
|
overflow-x: hidden; |
|
|
|
|
padding: 5px; |
|
|
|
|
box-sizing: border-box; |
|
|
|
|
} |
|
|
|
|
/* 锚点导航:垂直排列,靠右固定,不滚动 */ |
|
|
|
|
.anchor-nav { |
|
|
|
|
display: flex; |
|
|
|
|
flex-direction: column; |
|
|
|
|
gap: 10px; |
|
|
|
|
width: 48px; |
|
|
|
|
align-self: center; |
|
|
|
|
flex-shrink: 0; |
|
|
|
|
} |
|
|
|
|
</style> |