You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1224 lines
42 KiB
1224 lines
42 KiB
<template>
|
|
<div>
|
|
<div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="btnQuery"
|
|
>查询</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button
|
|
type="primary"
|
|
class="commonbutton"
|
|
@click="btnImportResult('pacs')"
|
|
>导入检查结果</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button
|
|
type="primary"
|
|
class="commonbutton"
|
|
@click="btnImportResult('lis')"
|
|
>导入检验结果</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="btnReport(true)"
|
|
>预览报告</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="btnReport(false)"
|
|
>打印报告</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button
|
|
type="primary"
|
|
class="commonbutton"
|
|
@click="btnReportExport(false)"
|
|
>导出 pdf 报告</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button
|
|
type="primary"
|
|
class="commonbutton"
|
|
@click="btnGetReport('Y')"
|
|
>领取报告</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="btnUpReport"
|
|
>上传Web</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="btnCheckHistory"
|
|
>历次结果</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<!-- <download-excel :fields="jsonFields" :fetch="btnExport" type="xls" :name="xlsName">
|
|
<el-button type="" class="commonbutton" style="width:100%">人员信息导出</el-button>
|
|
</download-excel> -->
|
|
<el-button type="" class="commonbutton" @click="btnExport"
|
|
>人员信息导出</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="exportZip"
|
|
>导出Zip</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="exportJpg"
|
|
>导出Jpg</el-button
|
|
>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<!-- 通用进度条 -->
|
|
<el-dialog
|
|
title="数据处理中……"
|
|
:visible.sync="elProgress.display"
|
|
width="640px"
|
|
:show-close="false"
|
|
:close-on-click-modal="false"
|
|
:append-to-body="true"
|
|
>
|
|
<ElProgressOCX />
|
|
</el-dialog>
|
|
|
|
<el-dialog
|
|
title="报告领取"
|
|
:visible.sync="dialogGetReport"
|
|
width="350px"
|
|
:show-close="false"
|
|
:close-on-click-modal="false"
|
|
:append-to-body="true"
|
|
>
|
|
<div>
|
|
<div class="query" style="display: flex; margin: 0 0 30px 10px">
|
|
<span class="spanClass">领取人</span>
|
|
<el-input
|
|
placeholder="领取人"
|
|
v-model="receiveReport.reportReceiveName"
|
|
size="small"
|
|
clearable
|
|
style="width: 120px"
|
|
/>
|
|
</div>
|
|
<div style="display: flex; justify-content: space-between">
|
|
<div></div>
|
|
<div style="display: flex">
|
|
<div>
|
|
<el-button
|
|
type="primary"
|
|
class="commonbutton"
|
|
@click="btnGetReportOk"
|
|
>确定</el-button
|
|
>
|
|
</div>
|
|
<div style="margin-left: 10px">
|
|
<el-button
|
|
type="primary"
|
|
class="commonbutton"
|
|
@click="dialogGetReport = false"
|
|
>取消</el-button
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<el-dialog
|
|
title="历次结果"
|
|
:visible.sync="dialogVisibleCheckHistory"
|
|
:close-on-click-modal="false"
|
|
width="900px"
|
|
>
|
|
<div>
|
|
<el-tabs v-model="tabChoosed">
|
|
<!---->
|
|
<el-tab-pane label="明细结果" name="2">
|
|
<CheckDetails
|
|
:patientRegisterId="dataTransOpts.tableS.patient_register.id"
|
|
:refParams="{ place: 'doctor' }"
|
|
/>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="本次图文报告" name="4">
|
|
<ImageTextReport :refParams="{ place: 'doctor' }" />
|
|
</el-tab-pane>
|
|
<!-- <el-tab-pane label="项目对比" name="4">
|
|
<SumItemsType :patientId="doctorCheck.prBase.patientId" />
|
|
</el-tab-pane> -->
|
|
<el-tab-pane label="横向对比" name="5">
|
|
<SumItems
|
|
:patientId="dataTransOpts.tableS.patient_register.id"
|
|
:refParams="{ place: 'doctor' }"
|
|
/>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="历次综述" name="6">
|
|
<SumHistory
|
|
:patientId="dataTransOpts.tableS.patient_register.id"
|
|
:refParams="{ place: 'doctor' }"
|
|
/>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</div>
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import moment from "moment";
|
|
import { mapState } from "vuex";
|
|
import { getapi, postapi, putapi, deletapi } from "@/api/api";
|
|
import { arrayExistObj, deepCopy, parseID, dddw } from "../../utlis/proFunc";
|
|
import ElProgressOCX from "../report/ElProgressOCX.vue";
|
|
//import PatientRegisterList from "../doctorCheck/PatientRegisterList.vue";
|
|
import CheckDetails from "../../components/sumDoctorCheck/CheckDetails.vue";
|
|
import SumItemsType from "../../components/sumDoctorCheck/SumItemsType.vue";
|
|
import SumItems from "../../components/sumDoctorCheck/SumItems.vue";
|
|
import SumHistory from "../../components/sumDoctorCheck/SumHistory.vue";
|
|
import OccDisease from "../../components/occDisease/OccDisease.vue";
|
|
import ImageTextReport from "../../components/occDisease/ImageTextReport.vue";
|
|
import { exportJsonToExcel } from "../../utlis/Export2Excel";
|
|
|
|
export default {
|
|
components: {
|
|
//PatientRegisterList,
|
|
ElProgressOCX,
|
|
CheckDetails,
|
|
SumItemsType,
|
|
SumItems,
|
|
SumHistory,
|
|
OccDisease,
|
|
ImageTextReport,
|
|
},
|
|
data() {
|
|
return {
|
|
dialogGetReport: false,
|
|
dialogVisibleCheckHistory: false,
|
|
tabChoosed: "2",
|
|
receiveReport: {
|
|
patientRegisterIds: [],
|
|
isReceiveReport: "Y",
|
|
reportReceiveName: "", //// 报告领取人
|
|
},
|
|
jsonFields: {},
|
|
xlsName: "",
|
|
|
|
dragCol: [
|
|
{ label: "序号", prop: "sn", minWidth: 40, align: "center" },
|
|
{ label: "打印", prop: "isReportPrint", minWidth: 60, align: "center" },
|
|
{
|
|
label: "领取",
|
|
prop: "isReceiveReport",
|
|
minWidth: 60,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "体检进度",
|
|
prop: "completeFlag",
|
|
minWidth: 90,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "体检日期",
|
|
prop: "medicalStartDate",
|
|
minWidth: 100,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "单位名称",
|
|
prop: "org",
|
|
minWidth: 180,
|
|
align: "left",
|
|
showTooltip: true,
|
|
},
|
|
{
|
|
label: "部门名称",
|
|
prop: "dept",
|
|
minWidth: 150,
|
|
align: "left",
|
|
showTooltip: true,
|
|
},
|
|
{ label: "姓名", prop: "patientName", minWidth: 60, align: "center" },
|
|
{ label: "性别", prop: "sexName", minWidth: 60, align: "center" },
|
|
{ label: "年龄", prop: "age", minWidth: 60, align: "center" },
|
|
{ label: "民族", prop: "nationName", minWidth: 70, align: "center" },
|
|
{ label: "身份证号", prop: "idNo", minWidth: 160, align: "center" },
|
|
{
|
|
label: "条码号",
|
|
prop: "patientRegisterNo",
|
|
minWidth: 110,
|
|
align: "center",
|
|
},
|
|
{ label: "档案号", prop: "patientNo", minWidth: 80, align: "center" },
|
|
{ label: "次数", prop: "medicalTimes", minWidth: 60, align: "center" },
|
|
{ label: "备注", prop: "remark", minWidth: 150, align: "left" },
|
|
{
|
|
label: "分组/套餐",
|
|
prop: "groupPack",
|
|
minWidth: 150,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "手机",
|
|
prop: "mobileTelephone",
|
|
minWidth: 130,
|
|
align: "center",
|
|
},
|
|
{ label: "电话", prop: "telephone", minWidth: 130, align: "center" },
|
|
{ label: "出生日期", prop: "birthDate", minWidth: 90, align: "center" },
|
|
{
|
|
label: "婚姻",
|
|
prop: "maritalStatusName",
|
|
minWidth: 70,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "地址",
|
|
prop: "address",
|
|
minWidth: 400,
|
|
align: "left",
|
|
showTooltip: true,
|
|
},
|
|
{
|
|
label: "体检卡号",
|
|
prop: "medicalCardNo",
|
|
minWidth: 90,
|
|
align: "center",
|
|
},
|
|
{ label: "工卡号", prop: "jobCardNo", minWidth: 90, align: "center" },
|
|
{
|
|
label: "体检类别",
|
|
prop: "medicalTypeName",
|
|
minWidth: 100,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "人员类别",
|
|
prop: "personnelTypeName",
|
|
minWidth: 100,
|
|
align: "center",
|
|
},
|
|
{ label: "职务", prop: "jobPost", minWidth: 70, align: "center" },
|
|
{ label: "职称", prop: "jobTitle", minWidth: 70, align: "center" },
|
|
{ label: "介绍人", prop: "salesman", minWidth: 80, align: "center" },
|
|
{ label: "VIP", prop: "isVip", minWidth: 80, align: "center" },
|
|
{
|
|
label: "总检医生",
|
|
prop: "summaryDoctorName",
|
|
minWidth: 90,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "总检日期",
|
|
prop: "summaryDate",
|
|
minWidth: 140,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "审核医生",
|
|
prop: "auditDoctorName",
|
|
minWidth: 90,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "审核日期",
|
|
prop: "auditDate",
|
|
minWidth: 140,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "登记人",
|
|
prop: "registerName",
|
|
minWidth: 80,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "登记时间",
|
|
prop: "registerDate",
|
|
minWidth: 140,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "打印人",
|
|
prop: "reportPrintName",
|
|
minWidth: 70,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "领取人",
|
|
prop: "reportReceiveName",
|
|
minWidth: 70,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "领取时间",
|
|
prop: "reportReceiveDate",
|
|
minWidth: 140,
|
|
align: "center",
|
|
},
|
|
{ label: "锁住", prop: "isLock", minWidth: 60, align: "center" },
|
|
{
|
|
label: "预约备单",
|
|
prop: "isUploadAppoint",
|
|
minWidth: 90,
|
|
align: "center",
|
|
},
|
|
{ label: "上传", prop: "isUpload", minWidth: 60, align: "center" },
|
|
// { label: "标准金额", prop: "standardAmount", minWidth: 80, align: "center" },
|
|
// { label: "应收金额", prop: "receivableAmount", minWidth: 80, align: "center" },
|
|
// { label: "实收金额", prop: "chargeAmount", minWidth: 80, align: "center" },
|
|
// { label: "支付方式", prop: "chargePayMode", minWidth: 80, align: "center" },
|
|
],
|
|
};
|
|
},
|
|
|
|
created() {},
|
|
|
|
//挂载完成
|
|
mounted() {
|
|
this.dataTransOpts.tableS.patient_register.id = "";
|
|
// this.getPatientRegister(this.dataTransOpts.tableS.patient_register.patientRegisterNo)
|
|
},
|
|
|
|
computed: {
|
|
...mapState([
|
|
"dict",
|
|
"elProgress",
|
|
"dataTransOpts",
|
|
"patientRegister",
|
|
"doctorCheck",
|
|
"sumDoctorCheck",
|
|
"report",
|
|
]),
|
|
},
|
|
|
|
methods: {
|
|
dddw,
|
|
btnQuery() {
|
|
this.patientRegister.query.times++;
|
|
},
|
|
exportJpg() {
|
|
if (!this.$peisAPI) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "此功能,需要在壳客户端才可运行!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (
|
|
!(
|
|
this.dataTransOpts.tableM.patient_register &&
|
|
this.dataTransOpts.tableM.patient_register.length > 0
|
|
)
|
|
) {
|
|
this.$message.warning({ showClose: true, message: "请勾选择记录!" });
|
|
return;
|
|
}
|
|
this.$peisAPI
|
|
.openDirectoryDialog()
|
|
.then((res) => {
|
|
let lres = JSON.parse(res);
|
|
if (lres.code > -1 && lres.data) {
|
|
this.report2Jpg(JSON.parse(lres.data).directory);
|
|
}
|
|
console.log("lres", lres);
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error(err);
|
|
});
|
|
},
|
|
async report2Jpg(path) {
|
|
this.elProgress.display = true;
|
|
this.elProgress.percentage = 0;
|
|
|
|
let token = window.sessionStorage.getItem("token");
|
|
let toOutShell = {
|
|
localPath: path,
|
|
token,
|
|
patientRegisterId: "",
|
|
};
|
|
|
|
for (
|
|
let i = 0;
|
|
i < this.dataTransOpts.tableM.patient_register.length;
|
|
i++
|
|
) {
|
|
let e = this.dataTransOpts.tableM.patient_register[i];
|
|
this.elProgress.percentage = Math.floor(
|
|
((i + 1) * 100) / this.dataTransOpts.tableM.patient_register.length
|
|
);
|
|
|
|
// 导出pdf
|
|
try {
|
|
toOutShell.patientRegisterId = e.patientRegisterId;
|
|
let jsonToOutShell = JSON.stringify(toOutShell);
|
|
console.log("toOutShell", jsonToOutShell);
|
|
let res = await this.$peisAPI.exportDcmjpg(jsonToOutShell);
|
|
if (JSON.parse(res).code < 0) {
|
|
console.log("this.$peisAPI.exportDcmjpg err", res);
|
|
}
|
|
} catch (error) {
|
|
console.log("error", error);
|
|
this.$message.warning({ showClose: true, message: error });
|
|
}
|
|
}
|
|
this.elProgress.display = false;
|
|
},
|
|
|
|
// 历次结果
|
|
btnCheckHistory() {
|
|
if (!this.dataTransOpts.tableS.patient_register.id) return;
|
|
this.dialogVisibleCheckHistory = true;
|
|
this.dataTransOpts.refresh.sumDoctor.M++; //刷新历次明细
|
|
this.dataTransOpts.plus.OccDisease++; //刷新图文报告
|
|
},
|
|
|
|
exportZip() {
|
|
if (!this.$peisAPI) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "此功能,需要在壳客户端才可运行!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (
|
|
!(
|
|
this.dataTransOpts.tableM.patient_register &&
|
|
this.dataTransOpts.tableM.patient_register.length > 0
|
|
)
|
|
) {
|
|
this.$message.warning({ showClose: true, message: "请勾选择记录!" });
|
|
return;
|
|
}
|
|
this.$peisAPI
|
|
.openDirectoryDialog()
|
|
.then((res) => {
|
|
let lres = JSON.parse(res);
|
|
if (lres.code > -1 && lres.data) {
|
|
this.report2Zip(JSON.parse(lres.data).directory);
|
|
}
|
|
console.log("lres", lres);
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error(err);
|
|
});
|
|
},
|
|
async report2Zip(path) {
|
|
this.elProgress.display = true;
|
|
this.elProgress.percentage = 0;
|
|
|
|
let token = window.sessionStorage.getItem("token");
|
|
let toOutShell = {
|
|
localPath: path,
|
|
token,
|
|
patientRegisterId: "",
|
|
};
|
|
|
|
for (
|
|
let i = 0;
|
|
i < this.dataTransOpts.tableM.patient_register.length;
|
|
i++
|
|
) {
|
|
let e = this.dataTransOpts.tableM.patient_register[i];
|
|
this.elProgress.percentage = Math.floor(
|
|
((i + 1) * 100) / this.dataTransOpts.tableM.patient_register.length
|
|
);
|
|
|
|
// 导出pdf
|
|
try {
|
|
toOutShell.patientRegisterId = e.patientRegisterId;
|
|
let jsonToOutShell = JSON.stringify(toOutShell);
|
|
console.log("toOutShell", jsonToOutShell);
|
|
let res = await this.$peisAPI.exportDcmZip(jsonToOutShell);
|
|
if (JSON.parse(res).code < 0) {
|
|
console.log("this.$peisAPI.exportDcmZip err", res);
|
|
}
|
|
} catch (error) {
|
|
console.log("error", error);
|
|
this.$message.warning({ showClose: true, message: error });
|
|
}
|
|
}
|
|
this.elProgress.display = false;
|
|
},
|
|
|
|
// 导入结果
|
|
btnImportResult(checkType) {
|
|
if (!this.dataTransOpts.tableS.patient_register.id) {
|
|
this.$message.warning({ showClose: true, message: "请先选择记录!" });
|
|
return;
|
|
}
|
|
|
|
let patientRegisterId = this.dataTransOpts.tableS.patient_register.id;
|
|
let url = "/api/app/ImportLisResult/ImportResultByPatientRegisterId";
|
|
switch (checkType) {
|
|
case "pacs":
|
|
url = "/api/app/ImportPacsResult/ImportResultByPatientRegisterId";
|
|
postapi(url, { patientRegisterId })
|
|
.then((res) => {
|
|
if (res.code > -1) {
|
|
return postapi(
|
|
"/api/app/ImportElectrocardiogramResult/ImportElectrocardiogramResultByPatientRegisterId",
|
|
{ patientRegisterId }
|
|
);
|
|
}
|
|
})
|
|
.then((res) => {
|
|
if (res && res.code > -1) {
|
|
this.$message.success({
|
|
showClose: true,
|
|
message: "导入成功!",
|
|
});
|
|
}
|
|
});
|
|
break;
|
|
default:
|
|
postapi(url, { patientRegisterId }).then((res) => {
|
|
if (res.code > -1) {
|
|
this.$message.success({ showClose: true, message: "导入成功!" });
|
|
}
|
|
});
|
|
break;
|
|
}
|
|
},
|
|
|
|
//领取体检报告(提交)
|
|
btnGetReportOk() {
|
|
postapi(
|
|
"/api/app/PatientRegister/BatchUpdatePatientRegisterReportReceive",
|
|
this.receiveReport
|
|
).then((res) => {
|
|
if (res.code > -1) {
|
|
this.$message.success({ showClose: true, message: "操作成功!" });
|
|
let reportReceiveDate = moment(new Date()).format(
|
|
"yyyy-MM-DD HH:mm:ss"
|
|
);
|
|
let lfind = -1;
|
|
this.receiveReport.patientRegisterIds.forEach((patientRegisterId) => {
|
|
lfind = arrayExistObj(
|
|
this.patientRegister.prList,
|
|
"patientRegisterId",
|
|
patientRegisterId
|
|
);
|
|
if (lfind > -1) {
|
|
this.patientRegister.prList[lfind].isReceiveReport =
|
|
this.receiveReport.isReceiveReport;
|
|
this.patientRegister.prList[lfind].reportReceiveName =
|
|
this.receiveReport.reportReceiveName;
|
|
this.patientRegister.prList[lfind].reportReceiveDate =
|
|
reportReceiveDate;
|
|
}
|
|
});
|
|
this.dialogGetReport = false;
|
|
}
|
|
});
|
|
},
|
|
|
|
//领取体检报告(按钮)
|
|
btnGetReport(isReceiveReport) {
|
|
//console.log('this.dataTransOpts.tableS.patient_register.id',this.dataTransOpts.tableS.patient_register.id,this.dataTransOpts.tableM.patient_register)
|
|
let rd = [];
|
|
if (
|
|
this.dataTransOpts.tableM.patient_register &&
|
|
this.dataTransOpts.tableM.patient_register.length > 0
|
|
) {
|
|
rd = rd.concat(this.dataTransOpts.tableM.patient_register);
|
|
}
|
|
if (rd.length == 0) {
|
|
if (this.dataTransOpts.tableS.patient_register.id)
|
|
rd.push({
|
|
patientRegisterId: this.dataTransOpts.tableS.patient_register.id,
|
|
});
|
|
}
|
|
if (rd.length == 0) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "请先勾选或选择记录(有勾选人员时,仅操作勾选的记录)!",
|
|
});
|
|
return;
|
|
}
|
|
let lfind = arrayExistObj(
|
|
this.patientRegister.prList,
|
|
"patientRegisterId",
|
|
rd[0].patientRegisterId
|
|
);
|
|
if (lfind > -1) {
|
|
this.receiveReport.reportReceiveName =
|
|
this.patientRegister.prList[lfind].patientName;
|
|
}
|
|
|
|
this.receiveReport.patientRegisterIds = [];
|
|
this.receiveReport.isReceiveReport = isReceiveReport;
|
|
rd.forEach((e) => {
|
|
this.receiveReport.patientRegisterIds.push(e.patientRegisterId);
|
|
});
|
|
//
|
|
// {
|
|
// "patientRegisterIds": [
|
|
// "3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
// ],
|
|
// "isReceiveReport": "string",
|
|
// "reportReceiveName": "string"
|
|
// }
|
|
|
|
this.dialogGetReport = true;
|
|
},
|
|
|
|
//上传报告
|
|
async btnUpReport() {
|
|
if (!this.$peisAPI) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "此功能,需要在壳客户端才可运行!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (
|
|
this.dataTransOpts.tableM.patient_register &&
|
|
this.dataTransOpts.tableM.patient_register.length > 0
|
|
) {
|
|
this.elProgress.display = true;
|
|
this.elProgress.percentage = 0;
|
|
|
|
let ReportCode = "0005";
|
|
let token = window.sessionStorage.getItem("token");
|
|
let user = window.sessionStorage.getItem("user");
|
|
let toOutShell = {
|
|
ReportCode,
|
|
token,
|
|
isBuildImage: "N",
|
|
IsUploadPdf: "N",
|
|
preViewCanPrint: "Y",
|
|
BusinessCode: "",
|
|
Parameters: [
|
|
{ Name: "printer", Value: user },
|
|
{ Name: "LTS", Value: "Y" }, //Y、N N只看不能打印
|
|
{ Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, //报告首页主图
|
|
{ Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, //报告页眉图片
|
|
{ Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, //报告页脚图片
|
|
{ Name: "orgSign", Value: "pic/orgSign.png" }, // 体检章
|
|
{ Name: "picExtOne", Value: "pic/hisLog.jpg" }, // 院徽
|
|
{ Name: "picExtTwo", Value: "pic/orgSignCom.png" }, // 单位公章
|
|
{ Name: "resultSign", Value: "pic/resultSign.png" }, // 结果章,如:职业病(本次体检未发现职业性异常)
|
|
{ Name: "picExtThree", Value: "pic/peisQrCode.jpg" }, // 公众号二维码
|
|
{ Name: "picExtFour", Value: "pic/peisQrCodeMini.jpg" }, // 小程序二维码
|
|
],
|
|
IsHealthReport: "Y",
|
|
};
|
|
|
|
for (
|
|
let i = 0;
|
|
i < this.dataTransOpts.tableM.patient_register.length;
|
|
i++
|
|
) {
|
|
let e = this.dataTransOpts.tableM.patient_register[i];
|
|
this.elProgress.percentage = Math.floor(
|
|
((i + 1) * 100) / this.dataTransOpts.tableM.patient_register.length
|
|
);
|
|
|
|
// 调上传接口
|
|
try {
|
|
if (e.completeFlag == "3") {
|
|
toOutShell.BusinessCode = e.patientRegisterId;
|
|
toOutShell.customerOrgName = e.customerOrgName || ""; // 增加单位名称参数
|
|
toOutShell.departmentName = e.departmentName || "";
|
|
let jsonToOutShell = JSON.stringify(toOutShell);
|
|
console.log("toOutShell", jsonToOutShell);
|
|
let res = await this.$peisAPI.upLoadReportPdf(jsonToOutShell);
|
|
if (JSON.parse(res).code < 0) {
|
|
this.$message.error({ showClose: true, message: res.message });
|
|
console.log("$peisAPI.upLoadReportPdf err", res);
|
|
} else {
|
|
// 上传成功 ,更新上传传状态
|
|
e.isUpload = "Y";
|
|
// console.log('btnUpReport success', JSON.parse(res))
|
|
}
|
|
} else {
|
|
let patientRegisterId = e.patientRegisterId;
|
|
let res2 = await postapi(
|
|
"/api/app/TransToWebPeis/TransPatientRegisterByPatientRegisterId",
|
|
{ patientRegisterId }
|
|
);
|
|
if (res2.code == -1) {
|
|
console.log("TransToWebPeis err", res2);
|
|
} else {
|
|
// 上传成功 ,更新备单状态
|
|
e.isUploadAppoint = "Y";
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.log("error", error);
|
|
this.$message.warning({ showClose: true, message: error });
|
|
}
|
|
}
|
|
this.elProgress.display = false;
|
|
} else {
|
|
this.$message.warning({ showClose: true, message: "请勾选择记录!" });
|
|
return;
|
|
}
|
|
},
|
|
|
|
//体检报告打印(预览)
|
|
async btnReport(isPreview) {
|
|
if (!this.$peisAPI) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "此功能,需要在壳客户端才可运行!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
///3a0c990e-5756-2dc0-19d5-69a617fe4048 isPatientOccupationalDisease patientRegisterId completeFlag isAudit
|
|
let rds = this.getChoosedRds();
|
|
if (rds.length == 0) return;
|
|
|
|
let ReportCode = "0005";
|
|
if (rds[0].isPatientOccupationalDisease == "Y") ReportCode = "0006";
|
|
|
|
let token = window.sessionStorage.getItem("token");
|
|
let user = window.sessionStorage.getItem("user");
|
|
let toOutShell = {
|
|
ReportCode,
|
|
token,
|
|
isBuildImage: "N",
|
|
IsUploadPdf: "N",
|
|
preViewCanPrint: "Y",
|
|
BusinessCode: rds[0].patientRegisterId,
|
|
Parameters: [
|
|
{ Name: "printer", Value: user },
|
|
{ Name: "LTS", Value: "Y" }, //Y、N N只看不能打印
|
|
{ Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, //报告首页主图
|
|
{ Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, //报告页眉图片
|
|
{ Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, //报告页脚图片
|
|
{
|
|
Name: "orgSign",
|
|
Value:
|
|
rds[0].isPatientOccupationalDisease == "Y"
|
|
? "pic/orgSignOcc.png"
|
|
: "pic/orgSign.png",
|
|
}, // 体检章
|
|
{ Name: "picExtOne", Value: "pic/hisLog.jpg" }, // 院徽
|
|
{ Name: "picExtTwo", Value: "pic/orgSignCom.png" }, // 单位公章
|
|
{ Name: "resultSign", Value: "pic/resultSign.png" }, // 结果章,如:职业病(本次体检未发现职业性异常)
|
|
{ Name: "picExtThree", Value: "pic/peisQrCode.jpg" }, // 公众号二维码
|
|
{ Name: "picExtFour", Value: "pic/peisQrCodeMini.jpg" }, // 小程序二维码
|
|
{ Name: "picExtFive", Value: "pic/sumDoctorSign.jpg" }, // 总检签名(部份企业固定才用)
|
|
{ Name: "picExtSix", Value: "pic/auditDoctorSign.jpg" }, // 总检审核签名(部份企业固定才用)
|
|
],
|
|
};
|
|
|
|
// 总检审核后才能打印
|
|
if (rds[0].completeFlag != "3") toOutShell.preViewCanPrint = "N";
|
|
if (toOutShell.preViewCanPrint == "Y" && rds[0].isAudit == "N") {
|
|
let sysParmId = "medical_report_print_after_summary_check_is_audit";
|
|
let sysParam = await postapi(
|
|
"/api/app/SysParmValue/GetSysParmValueBySysParmId",
|
|
{ sysParmId }
|
|
);
|
|
if (sysParam.data.toUpperCase() == "Y")
|
|
toOutShell.preViewCanPrint = "N";
|
|
}
|
|
|
|
// let res = await postapi(`/api/app/printreport/getpeisreport?PatientRegisterId=${this.patientRegister.patientRegisterId}`)
|
|
// toOutShell.ReportTable = res.data
|
|
let JSONtoOutShell = JSON.stringify(toOutShell);
|
|
console.log("$peisAPI.printPre", JSONtoOutShell);
|
|
if (isPreview) {
|
|
this.$peisAPI
|
|
.printPre(JSONtoOutShell)
|
|
.then((res) => {
|
|
if (JSON.parse(res).code < 0) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: JSON.parse(res).message,
|
|
});
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
console.log("预览体检报告错误", err);
|
|
this.$message.warning({ showClose: true, message: `${err}` });
|
|
});
|
|
} else {
|
|
let lfind = -1;
|
|
for (let i = 0; i < rds.length; i++) {
|
|
let rd = rds[i];
|
|
|
|
toOutShell.ReportCode =
|
|
rd.isPatientOccupationalDisease == "Y" ? "0006" : "0005";
|
|
toOutShell.BusinessCode = rd.patientRegisterId;
|
|
if (rd.completeFlag != "3") toOutShell.preViewCanPrint = "N";
|
|
if (toOutShell.preViewCanPrint == "Y" && rd.isAudit == "N") {
|
|
let sysParmId = "medical_report_print_after_summary_check_is_audit";
|
|
let sysParam = await postapi(
|
|
"/api/app/SysParmValue/GetSysParmValueBySysParmId",
|
|
{ sysParmId }
|
|
);
|
|
if (sysParam.data.toUpperCase() == "Y")
|
|
toOutShell.preViewCanPrint = "N";
|
|
}
|
|
|
|
if (toOutShell.preViewCanPrint == "N") {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "未总检或未审核,不可打印报告",
|
|
});
|
|
continue;
|
|
}
|
|
JSONtoOutShell = JSON.stringify(toOutShell);
|
|
try {
|
|
let lres = await this.$peisAPI.print(JSONtoOutShell);
|
|
if (JSON.parse(lres).code < 0) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: JSON.parse(lres).message,
|
|
});
|
|
} else {
|
|
postapi(
|
|
"/api/app/patientregister/updatepatientregisterreportprinttimesmany",
|
|
[rd.patientRegisterId]
|
|
).then((res) => {
|
|
if (res.code > -1) {
|
|
lfind = arrayExistObj(
|
|
this.patientRegister.prList,
|
|
"patientRegisterId",
|
|
rd.patientRegisterId
|
|
);
|
|
if (lfind > -1)
|
|
this.patientRegister.prList[lfind].isReportPrint = "Y";
|
|
}
|
|
});
|
|
}
|
|
} catch (error) {
|
|
this.$message.warning({ showClose: true, message: error });
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
// 导出 pdf 报告
|
|
btnReportExport() {
|
|
if (!this.$peisAPI) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "此功能,需要在壳客户端才可运行!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (
|
|
!(
|
|
this.dataTransOpts.tableM.patient_register &&
|
|
this.dataTransOpts.tableM.patient_register.length > 0
|
|
)
|
|
) {
|
|
this.$message.warning({ showClose: true, message: "请勾选择记录!" });
|
|
return;
|
|
}
|
|
|
|
this.$peisAPI
|
|
.openDirectoryDialog()
|
|
.then((res) => {
|
|
let lres = JSON.parse(res);
|
|
if (lres.code > -1 && lres.data) {
|
|
this.report2pdf(JSON.parse(lres.data).directory);
|
|
}
|
|
console.log("lres", lres);
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error(err);
|
|
});
|
|
},
|
|
|
|
async report2pdf(path) {
|
|
if (this.dataTransOpts.tableM.patient_register.length < 1) return;
|
|
this.elProgress.display = true;
|
|
this.elProgress.percentage = 0;
|
|
|
|
let ReportCode = "0005";
|
|
if (
|
|
this.dataTransOpts.tableM.patient_register[0]
|
|
.isPatientOccupationalDisease == "Y"
|
|
)
|
|
ReportCode = "0006";
|
|
let token = window.sessionStorage.getItem("token");
|
|
let user = window.sessionStorage.getItem("user");
|
|
let toOutShell = {
|
|
ReportCode,
|
|
token,
|
|
isBuildImage: "N",
|
|
IsUploadPdf: "N",
|
|
preViewCanPrint: "Y",
|
|
BusinessCode: "",
|
|
Parameters: [
|
|
{ Name: "printer", Value: user },
|
|
{ Name: "LTS", Value: "Y" }, //Y、N N只看不能打印
|
|
{ Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" }, //报告首页主图
|
|
{ Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" }, //报告页眉图片
|
|
{ Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" }, //报告页脚图片
|
|
{
|
|
Name: "orgSign",
|
|
Value:
|
|
this.dataTransOpts.tableM.patient_register[0]
|
|
.isPatientOccupationalDisease == "Y"
|
|
? "pic/orgSignOcc.png"
|
|
: "pic/orgSign.png",
|
|
}, // 体检章
|
|
{ Name: "picExtOne", Value: "pic/hisLog.jpg" }, // 院徽
|
|
{ Name: "picExtTwo", Value: "pic/orgSignCom.png" }, // 单位公章
|
|
{ Name: "resultSign", Value: "pic/resultSign.png" }, // 结果章,如:职业病(本次体检未发现职业性异常)
|
|
{ Name: "picExtThree", Value: "pic/peisQrCode.jpg" }, // 公众号二维码
|
|
{ Name: "picExtFour", Value: "pic/peisQrCodeMini.jpg" }, // 小程序二维码
|
|
],
|
|
IsHealthReport: "Y",
|
|
};
|
|
|
|
for (
|
|
let i = 0;
|
|
i < this.dataTransOpts.tableM.patient_register.length;
|
|
i++
|
|
) {
|
|
let e = this.dataTransOpts.tableM.patient_register[i];
|
|
this.elProgress.percentage = Math.floor(
|
|
((i + 1) * 100) / this.dataTransOpts.tableM.patient_register.length
|
|
);
|
|
|
|
// 导出pdf
|
|
try {
|
|
// 石家庄长城 手动导出没有总检也可以导出
|
|
//if (e.completeFlag == "3") {
|
|
toOutShell.BusinessCode = e.patientRegisterId;
|
|
toOutShell.ExportDirectory = `${path}\\${e.patientName}_${e.patientRegisterNo}.pdf`;
|
|
toOutShell.customerOrgName = e.customerOrgName || ""; // 增加单位名称参数
|
|
toOutShell.departmentName = e.departmentName || "";
|
|
|
|
let jsonToOutShell = JSON.stringify(toOutShell);
|
|
console.log("toOutShell", jsonToOutShell);
|
|
let res = await this.$peisAPI.exportToPdfPre(jsonToOutShell);
|
|
if (JSON.parse(res).code < 0) {
|
|
console.log("this.$peisAPI.exportToPdfPre err", res);
|
|
}
|
|
//}
|
|
} catch (error) {
|
|
console.log("error", error);
|
|
this.$message.warning({ showClose: true, message: error });
|
|
}
|
|
}
|
|
this.elProgress.display = false;
|
|
},
|
|
|
|
//按条码号查个人数据
|
|
getPatientRegister(patientRegisterNo) {
|
|
if (!patientRegisterNo) return;
|
|
postapi(
|
|
"/api/app/patientregister/GetAlreadyRegisterPatientRegisterByNo",
|
|
{ patientRegisterNo }
|
|
).then((res) => {
|
|
if (res.code > -1) {
|
|
this.dataTransOpts.tableS.patient_register = deepCopy(res.data);
|
|
}
|
|
});
|
|
},
|
|
|
|
// 通用判断 是否有选中或勾选记录(同时有选中与勾选记录时,以勾选记录为主)
|
|
getChoosedRds() {
|
|
let rd = [];
|
|
if (
|
|
this.dataTransOpts.tableM.patient_register &&
|
|
this.dataTransOpts.tableM.patient_register.length > 0
|
|
) {
|
|
rd = rd.concat(this.dataTransOpts.tableM.patient_register);
|
|
}
|
|
if (rd.length == 0) {
|
|
if (this.dataTransOpts.tableS.patient_register.id) {
|
|
let lfind = arrayExistObj(
|
|
this.patientRegister.prList,
|
|
"patientRegisterId",
|
|
this.dataTransOpts.tableS.patient_register.id
|
|
);
|
|
if (lfind > -1)
|
|
rd.push(
|
|
this.patientRegister.prList.slice(lfind, Number(lfind) + 1)
|
|
);
|
|
}
|
|
}
|
|
if (rd.length == 0) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "请先勾选或选择记录(有勾选人员时,仅操作勾选的记录)!",
|
|
});
|
|
}
|
|
return rd;
|
|
},
|
|
|
|
//通用导出
|
|
btnExport(elId) {
|
|
require.ensure([], () => {
|
|
const tHeader = [];
|
|
const filterVal = [];
|
|
this.dragCol.forEach((e) => {
|
|
tHeader.push(e.label);
|
|
filterVal.push(e.prop);
|
|
});
|
|
const list = this.patientRegister.prList.map((row, index) => {
|
|
const newRow = { ...row }; // 创建副本,避免修改原数据
|
|
// 使用对象映射优化数据转换
|
|
newRow.sn = index + 1;
|
|
if (newRow.completeFlag)
|
|
newRow.completeFlag =
|
|
newRow.isAudit == "Y"
|
|
? "已审核"
|
|
: dddw(
|
|
this.dict.completeFlag,
|
|
"id",
|
|
newRow.completeFlag,
|
|
"displayName"
|
|
);
|
|
newRow.isReportPrint = newRow.isReportPrint == "Y" ? "√" : "";
|
|
if (newRow.idNo) newRow.idNo = "\u200C"+newRow.idNo;
|
|
if (newRow.patientRegisterNo)
|
|
newRow.patientRegisterNo = "\u200C" + newRow.patientRegisterNo;
|
|
if (newRow.patientNo) newRow.patientNo = "\u200C" + newRow.patientNo;
|
|
if (newRow.isLock) newRow.isLock = newRow.isLock == "Y" ? "√" : "";
|
|
if (newRow.isVip) newRow.isVip = newRow.isVip == "Y" ? "√" : "";
|
|
if (newRow.isUpload)
|
|
newRow.isUpload = newRow.isUpload == "Y" ? "√" : "";
|
|
if (newRow.isUploadAppoint)
|
|
newRow.isUploadAppoint = newRow.isUploadAppoint == "Y" ? "√" : "";
|
|
if (newRow.isReceiveReport)
|
|
newRow.isReceiveReport = newRow.isReceiveReport == "Y" ? "√" : "";
|
|
|
|
//if (e.sexId) e.sexId = dddw(this.dict.sex, "id", e.sexId, "displayName")
|
|
// if (e.patientRegisterNo) e.patientRegisterNo = " " + e.patientRegisterNo
|
|
// if (e.patientNo) e.patientNo = " " + e.patientNo
|
|
// if (e.idNo) e.idNo = " " + e.idNo
|
|
// if (e.medicalPackageId !== this.dict.personOrgId && e.customerOrgId === this.dict.personOrgId) {
|
|
// e.packGroup = e.medicalPackageName // dddw(this.dict.medicalPackage, "id", e.medicalPackageId, "displayName")
|
|
// } else if (e.medicalPackageId !== this.dict.personOrgId && e.customerOrgId !== this.dict.personOrgId) {
|
|
// e.packGroup = e.customerOrgGroupName // dddw(this.dict.customerOrgGroupAll, "id", e.customerOrgGroupId, "displayName")
|
|
// }
|
|
//if (e.nationId) e.nationId = dddw(this.dict.nation, "id", e.nationId, "displayName")
|
|
// if (e.idNo) e.idNo = " " + e.idNo
|
|
// if (e.mobileTelephone) e.mobileTelephone = " " + e.mobileTelephone
|
|
// if (e.telephone) e.telephone = " " + e.telephone
|
|
|
|
if (newRow.birthDate)
|
|
newRow.birthDate = moment(newRow.birthDate).format("yyyy-MM-DD");
|
|
|
|
return newRow;
|
|
});
|
|
const data = list.map((v) => filterVal.map((j) => v[j]));
|
|
exportJsonToExcel(
|
|
tHeader,
|
|
data,
|
|
"人员列表" + moment(new Date()).format("yyyyMMDDHHmmss")
|
|
); //"列表excel" 是下载后的表名 可修改
|
|
});
|
|
|
|
// this.dragCol.forEach((e) => {
|
|
// switch (e.prop) {
|
|
// case 'medicalStartDate': // 避免科学计数或数据转换
|
|
// case 'birthDate':
|
|
// case 'summaryDate':
|
|
// case 'auditDate':
|
|
// case 'registerDate':
|
|
// case 'reportReceiveDate':
|
|
// case 'idNo':
|
|
// case 'patientRegisterNo':
|
|
// case 'patientNo':
|
|
// case 'mobileTelephone':
|
|
// case 'telephone':
|
|
// this.jsonFields[e.label] = {
|
|
// field: e.prop,
|
|
// callback: value => {
|
|
// return value ? `\u200C${value}` : '';
|
|
// }
|
|
// }
|
|
// break;
|
|
|
|
// default:
|
|
// this.jsonFields[e.label] = e.prop;
|
|
// break;
|
|
// }
|
|
|
|
// });
|
|
|
|
// let tableDatas = deepCopy(this.patientRegister.prList)
|
|
// tableDatas.forEach((e, index) => {
|
|
// e.sn = index + 1
|
|
// if (e.completeFlag) e.completeFlag = e.isAudit == "Y" ? "已审核" : dddw(this.dict.completeFlag, "id", e.completeFlag, "displayName")
|
|
// e.isReportPrint = e.isReportPrint == 'Y' ? '√' : ''
|
|
// if (e.isLock) e.isLock = e.isLock == 'Y' ? '√' : ''
|
|
// if (e.isVip) e.isVip = e.isVip == 'Y' ? '√' : ''
|
|
// if (e.isUpload) e.isUpload = e.isUpload == 'Y' ? '√' : ''
|
|
// if (e.isUploadAppoint) e.isUploadAppoint = e.isUploadAppoint == 'Y' ? '√' : ''
|
|
// if (e.isReceiveReport) e.isReceiveReport = e.isReceiveReport == 'Y' ? '√' : ''
|
|
|
|
// //if (e.sexId) e.sexId = dddw(this.dict.sex, "id", e.sexId, "displayName")
|
|
// // if (e.patientRegisterNo) e.patientRegisterNo = " " + e.patientRegisterNo
|
|
// // if (e.patientNo) e.patientNo = " " + e.patientNo
|
|
// // if (e.idNo) e.idNo = " " + e.idNo
|
|
// // if (e.medicalPackageId !== this.dict.personOrgId && e.customerOrgId === this.dict.personOrgId) {
|
|
// // e.packGroup = e.medicalPackageName // dddw(this.dict.medicalPackage, "id", e.medicalPackageId, "displayName")
|
|
// // } else if (e.medicalPackageId !== this.dict.personOrgId && e.customerOrgId !== this.dict.personOrgId) {
|
|
// // e.packGroup = e.customerOrgGroupName // dddw(this.dict.customerOrgGroupAll, "id", e.customerOrgGroupId, "displayName")
|
|
// // }
|
|
// //if (e.nationId) e.nationId = dddw(this.dict.nation, "id", e.nationId, "displayName")
|
|
// // if (e.idNo) e.idNo = " " + e.idNo
|
|
// // if (e.mobileTelephone) e.mobileTelephone = " " + e.mobileTelephone
|
|
// // if (e.telephone) e.telephone = " " + e.telephone
|
|
|
|
// if (e.birthDate) e.birthDate = moment(e.birthDate).format("yyyy-MM-DD")
|
|
|
|
// })
|
|
// this.xlsName = '人员列表' + moment(new Date()).format('yyyyMMDDHHmmss') + '.xls'
|
|
// return tableDatas;
|
|
},
|
|
},
|
|
|
|
//监听事件()
|
|
watch: {
|
|
// 强制刷新人员登记信息
|
|
"dataTransOpts.refresh.patient_register.S": {
|
|
// immediate:true,
|
|
handler(newVal, oldVal) {
|
|
console.log(
|
|
`watch 组合项目列表 newVal: ${newVal} oldVal: ${oldVal} patient_register.id: ${this.dataTransOpts.tableS.patient_register.patientRegisterNo}`
|
|
);
|
|
this.getPatientRegister(
|
|
this.dataTransOpts.tableS.patient_register.patientRegisterNo
|
|
);
|
|
// this.dataTransOpts.refresh.register_check.M++
|
|
},
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style scoped>
|
|
@import "../../assets/css/global_button.css";
|
|
|
|
.listBtn {
|
|
margin-top: 10px;
|
|
/*
|
|
text-align: center;
|
|
*/
|
|
}
|
|
|
|
.btnClass {
|
|
width: 100px;
|
|
}
|
|
|
|
.spanClass {
|
|
font-size: 14px;
|
|
padding: 5px 2px 0 0;
|
|
}
|
|
</style>
|