|
|
|
@ -3,7 +3,7 @@ |
|
|
|
<div style="height: 100%" class="div-box"> |
|
|
|
<div v-if="reportDetail1"> |
|
|
|
<!-- 患者信息 --> |
|
|
|
<el-card class="box-card" style=""> |
|
|
|
<el-card class="box-card" style="padding-top: 0"> |
|
|
|
<div slot="header"> |
|
|
|
<div class="clearfix"> |
|
|
|
<h1 class="box-card-header">患者信息</h1> |
|
|
|
@ -17,65 +17,29 @@ |
|
|
|
<i class="el-icon-document-checked"></i> |
|
|
|
保存修改 |
|
|
|
</div> |
|
|
|
<!-- <div |
|
|
|
class="div-derive cardRig-but" |
|
|
|
style="width: 130px; margin-right: 10px" |
|
|
|
@click="handleExport('合并版', true)" |
|
|
|
> |
|
|
|
<i class="el-icon-upload2"></i>导出(合并版) |
|
|
|
</div> |
|
|
|
<div |
|
|
|
v-if="!isAPP" |
|
|
|
class="div-print cardRig-but" |
|
|
|
@click="handlePrinting('合并版')" |
|
|
|
style="width: 130px; margin-right: 10px" |
|
|
|
> |
|
|
|
<i class="el-icon-printer"></i>打印(合并版) |
|
|
|
</div> --> |
|
|
|
<div |
|
|
|
class="div-derive cardRig-but" |
|
|
|
style="width: 130px; margin-right: 10px" |
|
|
|
@click="handleExport('医生版', true)" |
|
|
|
> |
|
|
|
<i class="el-icon-upload2"></i>导出(医生版) |
|
|
|
</div> |
|
|
|
<div |
|
|
|
v-if="!isAPP" |
|
|
|
style="width: 130px; margin-right: 10px" |
|
|
|
class="div-print cardRig-but" |
|
|
|
@click="handlePrinting('医生版', true)" |
|
|
|
> |
|
|
|
<i class="el-icon-printer"></i>打印(医生版) |
|
|
|
</div> |
|
|
|
<div |
|
|
|
class="div-derive cardRig-but" |
|
|
|
style="width: 130px; margin-right: 10px" |
|
|
|
@click="handleExport('阳性版', true)" |
|
|
|
> |
|
|
|
<i class="el-icon-upload2"></i>导出(阳性版) |
|
|
|
</div> |
|
|
|
<div |
|
|
|
v-if="!isAPP" |
|
|
|
style="width: 130px; margin-right: 10px" |
|
|
|
class="div-print cardRig-but" |
|
|
|
@click="handlePrinting('阳性版')" |
|
|
|
> |
|
|
|
<i class="el-icon-printer"></i>打印(阳性版) |
|
|
|
</div> |
|
|
|
<div |
|
|
|
class="div-derive cardRig-but" |
|
|
|
style="width: 130px; margin-right: 10px" |
|
|
|
@click="handleExport('个人版', true)" |
|
|
|
> |
|
|
|
<i class="el-icon-upload2"></i>导出(个人版) |
|
|
|
</div> |
|
|
|
<div |
|
|
|
v-if="!isAPP" |
|
|
|
class="div-print cardRig-but" |
|
|
|
@click="handlePrinting('个人版')" |
|
|
|
style="width: 130px" |
|
|
|
> |
|
|
|
<i class="el-icon-printer"></i>打印(个人版) |
|
|
|
<div v-for="(r, rin) in reportButList" :key="rin"> |
|
|
|
<el-popover placement="bottom" trigger="click"> |
|
|
|
<div |
|
|
|
slot="reference" |
|
|
|
class="div-derive cardRig-but" |
|
|
|
@click="handleReportQuery(r.code, r.type)" |
|
|
|
> |
|
|
|
<i |
|
|
|
:class="r.type ? 'el-icon-printer' : 'el-icon-upload2'" |
|
|
|
></i> |
|
|
|
{{ r.type ? "打印" : "导出" }}({{ r.lable }}) |
|
|
|
</div> |
|
|
|
<div v-loading="loading"> |
|
|
|
<div |
|
|
|
v-for="(item, index) in reportTemplateList" |
|
|
|
:key="index" |
|
|
|
@click="handleReportTemplate(item.id, item.type)" |
|
|
|
class="cardRig-but cardRig-but1" |
|
|
|
> |
|
|
|
{{ item.name }}({{ item.type ? "pdf" : "word" }}) |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-popover> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -250,39 +214,6 @@ |
|
|
|
:index="index" |
|
|
|
:leftShow="leftShow" |
|
|
|
/> |
|
|
|
<!-- 初步印象 --> |
|
|
|
<!-- <div style="margin-top: 20px"> |
|
|
|
<div class="card-header" style="margin-bottom: 10px"> |
|
|
|
<div class="card-header-left"> |
|
|
|
<h1 style="line-height: 44px">初步印象</h1> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
class="div-edit" |
|
|
|
@click="handleEdit(item)" |
|
|
|
v-if="item.isEdit && !leftShow" |
|
|
|
> |
|
|
|
<a-icon type="edit" style="color: #10b77f; font-size: 22px" /> |
|
|
|
</div> |
|
|
|
<div v-if="!item.isEdit"> |
|
|
|
<a-icon |
|
|
|
type="check-circle" |
|
|
|
style="font-size: 40px; color: #5cc0be" |
|
|
|
@click="handleSubmit(item)" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<a-textarea |
|
|
|
:disabled="item.isEdit" |
|
|
|
style=" |
|
|
|
background: #f6f6f6 !important; |
|
|
|
font-size: 16px; |
|
|
|
padding: 10px !important; |
|
|
|
line-height: 30px; |
|
|
|
" |
|
|
|
v-model="item.impression" |
|
|
|
:auto-size="{ minRows: 3, maxRows: 5 }" |
|
|
|
/> |
|
|
|
</div> --> |
|
|
|
</el-card> |
|
|
|
<patientMark :reportDetail1="reportDetail1" :disab="true"></patientMark> |
|
|
|
<div style="height: 1px"></div> |
|
|
|
@ -305,21 +236,6 @@ |
|
|
|
:id="'reportPartIframe' + timestamp" |
|
|
|
style="display: none" |
|
|
|
></iframe> |
|
|
|
<el-dialog |
|
|
|
title="医生签名" |
|
|
|
:visible.sync="open" |
|
|
|
width="50%" |
|
|
|
append-to-body |
|
|
|
class="popup" |
|
|
|
> |
|
|
|
<signatureVue |
|
|
|
v-if="open" |
|
|
|
ref="closeDialog1" |
|
|
|
@close="closeDialog1" |
|
|
|
@handleSing="handleSing" |
|
|
|
> |
|
|
|
</signatureVue> |
|
|
|
</el-dialog> |
|
|
|
</div> |
|
|
|
</switchingSlip> |
|
|
|
</template> |
|
|
|
@ -339,8 +255,9 @@ import { |
|
|
|
queryReport, |
|
|
|
queryReportInfo, |
|
|
|
positiveExport, |
|
|
|
reportExportAll, |
|
|
|
icdQuery, |
|
|
|
reportExportAll, |
|
|
|
reportTemplateAllQuery, |
|
|
|
} from "api/ams"; |
|
|
|
import { |
|
|
|
pasis as pasisConfig, |
|
|
|
@ -361,11 +278,11 @@ export default { |
|
|
|
props: [], |
|
|
|
data() { |
|
|
|
return { |
|
|
|
loading: false, |
|
|
|
timestamp: "", |
|
|
|
type: "", |
|
|
|
apiUrl: apiUrl, |
|
|
|
open: false, |
|
|
|
value: "", |
|
|
|
pasisConfig: pasisConfig, |
|
|
|
careers: careers, |
|
|
|
clinical: clinical, |
|
|
|
@ -373,22 +290,45 @@ export default { |
|
|
|
isEdit: true, |
|
|
|
reportDetail1: null, |
|
|
|
leftShow: false, |
|
|
|
codeItme: {}, |
|
|
|
signData: {}, |
|
|
|
reportPath: "", |
|
|
|
icdList: [], |
|
|
|
isAPP: JSON.parse(localStorage.getItem("isAndroid")), |
|
|
|
reportButList: [ |
|
|
|
{ |
|
|
|
lable: "个人版", |
|
|
|
type: 0, // 导出 |
|
|
|
code: "PERSION", |
|
|
|
}, |
|
|
|
{ |
|
|
|
lable: "个人版", |
|
|
|
type: 1, // 打印 |
|
|
|
code: "PERSION", |
|
|
|
}, |
|
|
|
{ |
|
|
|
lable: "医生版", |
|
|
|
type: 0, |
|
|
|
code: "DOCTOR", |
|
|
|
}, |
|
|
|
{ |
|
|
|
lable: "医生版", |
|
|
|
type: 1, |
|
|
|
code: "DOCTOR", |
|
|
|
}, |
|
|
|
{ |
|
|
|
lable: "阳性版", |
|
|
|
type: 0, |
|
|
|
code: "POSITIVE", |
|
|
|
}, |
|
|
|
{ |
|
|
|
lable: "医生版", |
|
|
|
type: 1, |
|
|
|
code: "POSITIVE", |
|
|
|
}, |
|
|
|
], |
|
|
|
reportTemplateList: [], |
|
|
|
exportType: "", |
|
|
|
}; |
|
|
|
}, |
|
|
|
watch: { |
|
|
|
// reportDetail(newVal, oldVal) { |
|
|
|
// this.reportDetail1 = newVal; |
|
|
|
// this.reportDetail1.patient.isEdit = true; |
|
|
|
// this.reportDetail1.scores.forEach((item) => { |
|
|
|
// item.isEdit = true; |
|
|
|
// }); |
|
|
|
// }, |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
...mapState("user", ["route", "query"]), |
|
|
|
...mapState("ht", ["createId", "patientData"]), |
|
|
|
@ -402,6 +342,10 @@ export default { |
|
|
|
this.setEvaluationPath(null); |
|
|
|
sessionStorage.clear(); |
|
|
|
this.setIsRecord(false); |
|
|
|
if (this.isAPP) { |
|
|
|
this.reportButList = this.reportButList.filter((i) => i.type != 1); |
|
|
|
console.log(" this.reportButList ", this.reportButList); |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
...mapMutations("ht", [ |
|
|
|
@ -417,7 +361,6 @@ export default { |
|
|
|
...mapMutations("user", ["setReportData", "setReportWriteAble"]), |
|
|
|
// 诊断信息 |
|
|
|
async geticdQuery() { |
|
|
|
console.log("icdQuery"); |
|
|
|
let res = await icdQuery(); |
|
|
|
const { code, msg, data } = res; |
|
|
|
if (code === 200) { |
|
|
|
@ -427,71 +370,51 @@ export default { |
|
|
|
handleBack() { |
|
|
|
this.$router.go(-1); |
|
|
|
}, |
|
|
|
// 报告单报出 |
|
|
|
async handleExport(_type, _printFlat) { |
|
|
|
this.type = _type; |
|
|
|
let params = { |
|
|
|
// 查询模版 |
|
|
|
async handleReportQuery(code, type) { |
|
|
|
this.exportType = type; |
|
|
|
this.loading = true; |
|
|
|
let res = await reportTemplateAllQuery({ code }); |
|
|
|
if (res.code === 200) { |
|
|
|
this.reportTemplateList = res.data || []; |
|
|
|
} |
|
|
|
this.loading = false; |
|
|
|
}, |
|
|
|
// 模版导出 |
|
|
|
async handleReportTemplate(templateId, type) { |
|
|
|
let res = await reportExportAll({ |
|
|
|
templateId, |
|
|
|
evaluationId: this.reportDetail1.patient.evaluationId, |
|
|
|
reportId: this.reportDetail1.patient.id, |
|
|
|
signId: this.signData.signId, |
|
|
|
}; |
|
|
|
let res = ""; |
|
|
|
if (_type === "医生版") { |
|
|
|
res = await doctorExport(params); |
|
|
|
} else if (_type === "个人版") { |
|
|
|
res = await personalExport(params); |
|
|
|
} else if (_type === "阳性版") { |
|
|
|
res = await positiveExport(params); |
|
|
|
}else if (_type === "合并版") { |
|
|
|
res = await reportExportAll(params); |
|
|
|
} |
|
|
|
|
|
|
|
const { code, msg, data } = res; |
|
|
|
if (code === 200) { |
|
|
|
// 是否是打印 true为导出不打印 |
|
|
|
if (_printFlat) { |
|
|
|
// 导出下载 |
|
|
|
// window.open(this.apiUrl + data.path); |
|
|
|
this.$download(this.apiUrl + data.path); |
|
|
|
}); |
|
|
|
if (res.code === 200) { |
|
|
|
let path = type ? res.data.path : res.data.word; |
|
|
|
// 导出下载 |
|
|
|
if (!this.exportType) { |
|
|
|
this.$download(this.apiUrl + path); |
|
|
|
} else { |
|
|
|
this.open = false; |
|
|
|
this.handleInvoke( |
|
|
|
`${this.apiUrl}${data.path}?time${new Date().getTime()}`, |
|
|
|
); |
|
|
|
this.timestamp = new Date().getTime(); |
|
|
|
setTimeout(() => { |
|
|
|
this.handleInvoke( |
|
|
|
`${this.apiUrl}${path}?time${new Date().getTime()}`, |
|
|
|
); |
|
|
|
}, 500); |
|
|
|
} |
|
|
|
this.$forceUpdate(); |
|
|
|
} else { |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
|
}, |
|
|
|
// 历史签名选中 |
|
|
|
handleSing(_singData) { |
|
|
|
this.signData = _singData; |
|
|
|
this.handleExport(this.type); |
|
|
|
}, |
|
|
|
// 签名确认 |
|
|
|
closeDialog1(params) { |
|
|
|
const file = params; |
|
|
|
var form = new FormData(); |
|
|
|
form.append("file", file); |
|
|
|
uploadfile(form).then(async (res) => { |
|
|
|
if (res.code === 200) { |
|
|
|
let params = { |
|
|
|
signUrl: res.url, |
|
|
|
}; |
|
|
|
const signRes = await addSign(params); |
|
|
|
const { code, msg, data } = signRes; |
|
|
|
if (code === 200) { |
|
|
|
this.signData = data; |
|
|
|
this.handleExport(this.type); |
|
|
|
} else { |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
|
} else { |
|
|
|
console.log(res); |
|
|
|
this.$message.error("签名保存失败"); |
|
|
|
} |
|
|
|
}); |
|
|
|
// 调用打印方法 |
|
|
|
handleInvoke(_path) { |
|
|
|
try { |
|
|
|
this.reportPath = _path; |
|
|
|
var iframe = document.getElementById( |
|
|
|
"reportPartIframe" + this.timestamp, |
|
|
|
); |
|
|
|
iframe.onload = () => { |
|
|
|
iframe.contentWindow.print(); |
|
|
|
}; |
|
|
|
} catch (error) { |
|
|
|
console.log("error: ", error); |
|
|
|
} |
|
|
|
}, |
|
|
|
// 输入框提交事件 |
|
|
|
async handleInputBlur() { |
|
|
|
@ -516,62 +439,6 @@ export default { |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
|
}, |
|
|
|
// 打印按钮,点击展示签名 |
|
|
|
handlePrinting(_type) { |
|
|
|
this.type = _type; |
|
|
|
this.timestamp = new Date().getTime(); |
|
|
|
// this.open = true; |
|
|
|
this.handleExport(this.type); |
|
|
|
}, |
|
|
|
// 调用打印方法 |
|
|
|
handleInvoke(_path) { |
|
|
|
try { |
|
|
|
// if (JSON.parse(localStorage.getItem("isAndroid"))) { |
|
|
|
// this.$message({ |
|
|
|
// message: "请在wps中预览并打印", |
|
|
|
// type: "success", |
|
|
|
// center: true, |
|
|
|
// duration: 6000, |
|
|
|
// }); |
|
|
|
// // window.open(_path); |
|
|
|
// this.$download(_path); |
|
|
|
// return; |
|
|
|
// } |
|
|
|
this.reportPath = _path; |
|
|
|
var iframe = document.getElementById( |
|
|
|
"reportPartIframe" + this.timestamp, |
|
|
|
); |
|
|
|
iframe.onload = () => { |
|
|
|
iframe.contentWindow.print(); |
|
|
|
}; |
|
|
|
} catch (error) { |
|
|
|
console.log("error: ", error); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 提交初步印象 |
|
|
|
async handleSubmit(item) { |
|
|
|
console.log("item: ", item, this.reportDetail1.patient.id); |
|
|
|
let params = { |
|
|
|
initialImpression: item.impression, |
|
|
|
reportId: this.reportDetail1.patient.id, |
|
|
|
scaleCode: item.code, |
|
|
|
}; |
|
|
|
const res = await updateScaleInitialImpression(params); |
|
|
|
const { code, msg, data } = res; |
|
|
|
if (code === 200) { |
|
|
|
item.isEdit = true; |
|
|
|
this.$message.success("编辑成功"); |
|
|
|
this.$forceUpdate(); |
|
|
|
} else { |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
|
}, |
|
|
|
// 报告单初步印象 |
|
|
|
handleReporEdit() { |
|
|
|
this.reportDetail1.patient.isEdit = false; |
|
|
|
this.$forceUpdate(); |
|
|
|
}, |
|
|
|
// 获取报告单详情 |
|
|
|
async getQueryReportDetail() { |
|
|
|
const params = { |
|
|
|
@ -591,11 +458,6 @@ export default { |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
|
}, |
|
|
|
// code印象修改 |
|
|
|
handleEdit(item) { |
|
|
|
item.isEdit = false; |
|
|
|
this.$forceUpdate(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
</script> |
|
|
|
@ -653,6 +515,9 @@ export default { |
|
|
|
} |
|
|
|
/deep/.ant-input { |
|
|
|
} |
|
|
|
.div-box { |
|
|
|
margin: 16px 0px 0px 0px; |
|
|
|
} |
|
|
|
.div-box /deep/ .el-card { |
|
|
|
margin-bottom: 20px; |
|
|
|
padding: 16px; |
|
|
|
@ -722,22 +587,27 @@ export default { |
|
|
|
border: 1px solid #888888; |
|
|
|
margin-left: 20px; |
|
|
|
} |
|
|
|
.cardRig-but { |
|
|
|
width: 90px; |
|
|
|
height: 40px; |
|
|
|
line-height: 40px; |
|
|
|
border-radius: 4px 4px 4px 4px; |
|
|
|
opacity: 1; |
|
|
|
border: 1px solid #5cc0be; |
|
|
|
text-align: center; |
|
|
|
color: #5cc0be; |
|
|
|
} |
|
|
|
|
|
|
|
.div-derive { |
|
|
|
// margin-right: 20px; |
|
|
|
} |
|
|
|
.div-prin { |
|
|
|
} |
|
|
|
} |
|
|
|
.cardRig-but { |
|
|
|
padding: 0 10px; |
|
|
|
height: 40px; |
|
|
|
line-height: 40px; |
|
|
|
border-radius: 4px 4px 4px 4px; |
|
|
|
opacity: 1; |
|
|
|
border: 1px solid #5cc0be; |
|
|
|
text-align: center; |
|
|
|
color: #5cc0be; |
|
|
|
margin-left: 10px; |
|
|
|
} |
|
|
|
.cardRig-but1 { |
|
|
|
margin: 10px 0 10px 0; |
|
|
|
} |
|
|
|
.info-col { |
|
|
|
border-right: 1px solid #e1e1e1; |
|
|
|
&:last-child { |
|
|
|
@ -825,7 +695,7 @@ p { |
|
|
|
font-size: 24px; |
|
|
|
font-weight: bold; |
|
|
|
color: #222222; |
|
|
|
line-height: 50px; |
|
|
|
line-height: 60px; |
|
|
|
margin-left: 10px; |
|
|
|
} |
|
|
|
.box-card { |
|
|
|
|