4 changed files with 868 additions and 383 deletions
-
2src/components/doctorCheck/PacsDcmList.vue
-
708src/components/doctorCheck/PacsImgPreview.vue
-
537src/components/patientRegister/PatientRegisterList.vue
-
4src/views/doctorCheck/doctorCheck.vue
@ -0,0 +1,708 @@ |
|||||
|
<template> |
||||
|
<div style="display: flex;"> |
||||
|
<div :style="`overflow-y: scroll;width:140px;height:${window.pageHeight - 195}px`"> |
||||
|
<div v-for="(item, index) in checkPictures" :key="item.id" |
||||
|
style="display: inline-block; padding: 0 0 0 2px"> |
||||
|
<div style=" |
||||
|
position: relative; |
||||
|
font-size: 24px; |
||||
|
margin: -6px 0 0 55px; |
||||
|
height: 30px; |
||||
|
z-index: 2; |
||||
|
"> |
||||
|
<el-tooltip content="删除该图" placement="bottom" effect="light"> |
||||
|
<i class="el-icon-close" @click="btnDelImage(index)" v-show="!doctorBtnDisabled('btnDelImage')" |
||||
|
style="color: red; cursor: pointer"></i> |
||||
|
</el-tooltip> |
||||
|
</div> |
||||
|
<div style="margin-top: -25px"> |
||||
|
<el-image style="width: 120px; height: 120px; border-radius: 5px" :src="imageFilePlus(item.pictureFilename)" |
||||
|
@click="imgClick(item)"> |
||||
|
</el-image> |
||||
|
</div> |
||||
|
<div style="display: flex;margin-bottom: 10px;"> |
||||
|
<div style="margin: -6px 2px 0 1px"> |
||||
|
<el-tooltip content="是否打印" placement="bottom" effect="light"> |
||||
|
<el-checkbox v-model="item.isPrintTrans" @change="btnSavePic" |
||||
|
:disabled="doctorBtnDisabled('btnSavePic')"></el-checkbox> |
||||
|
</el-tooltip> |
||||
|
</div> |
||||
|
<div style="font-size: 12px; margin: -2px 0 0 1px">打印</div> |
||||
|
<div style="font-size: 15px; margin: -5px 2px 0 2px"> |
||||
|
<el-tooltip content="保存后,图片将按序号从小到大排序" placement="bottom" effect="light"> |
||||
|
<input placeholder="排序" v-model="item.displayOrder" @onkeyup="validateInteger(e, index)" |
||||
|
style="width: 30px" :disabled="doctorBtnDisabled('btnSavePic')" /> |
||||
|
</el-tooltip> |
||||
|
</div> |
||||
|
<div style="margin: -6px 0 0 2px"> |
||||
|
<el-tooltip content="是否报告图片" placement="bottom" effect="light"> |
||||
|
<el-checkbox v-model="item.pictureFileType" @change="btnSavePic" true-label="1" false-label="0" |
||||
|
:disabled="doctorBtnDisabled('btnSavePic')"></el-checkbox> |
||||
|
</el-tooltip> |
||||
|
</div> |
||||
|
<div style="font-size: 12px; margin: -2px 0 0 1px">报告</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div :style="`width: ${window.pageWidth - 470}px;`"> |
||||
|
<el-image :src="imageFile" :preview-src-list="previewSrcLists" |
||||
|
:style="`overflow-y: auto;max-width: ${window.pageWidth - 470}px;height: auto;`"></el-image> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import moment from "moment"; |
||||
|
import { mapState } from "vuex"; |
||||
|
import { Loading } from "element-ui"; |
||||
|
import { getapi, postapi, putapi, deletapi } from "@/api/api"; |
||||
|
import { getPagePriv, checkPagePriv, deepCopy, arrayExistObj } from "../../utlis/proFunc"; |
||||
|
import { hadoopGet, hadoopPost, hadoopPut, hadoopDel } from "../../api/hadoopApi" |
||||
|
import CheckPictureUpload from "./CheckPictureUpload.vue"; |
||||
|
import PacsTemplate from "./PacsTemplate.vue"; |
||||
|
import PacsCutPic from "./PacsCutPic.vue"; |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
CheckPictureUpload, PacsTemplate, PacsCutPic |
||||
|
}, |
||||
|
props: ["doctorBtnDisabled", "save"], |
||||
|
data() { |
||||
|
return { |
||||
|
sysConfig: {}, // |
||||
|
pagePriv: { |
||||
|
routeUrlorPageName: 'doctorCheck', //当前页面归属路由或归属页面权限名称 |
||||
|
privs: [] // 页面权限 |
||||
|
}, |
||||
|
|
||||
|
checkRequestNo: '', |
||||
|
dialogDcm: false, |
||||
|
iframeSrc: '', |
||||
|
pacsParams: { |
||||
|
from: 'dcm', |
||||
|
refresh: -1, |
||||
|
row: {}, |
||||
|
index: 0, |
||||
|
result: '', |
||||
|
summary: '' |
||||
|
}, |
||||
|
tabPosition: 'top', |
||||
|
tabChoosed: "0", |
||||
|
|
||||
|
checkPictures: [ |
||||
|
// { |
||||
|
// id: "1", |
||||
|
// registerCheckId: "registerCheckId", |
||||
|
// isPrint: "Y", |
||||
|
// isPrintTrans: true, |
||||
|
// pictureFilename: |
||||
|
// "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg", |
||||
|
// }, |
||||
|
// { |
||||
|
// id: "2", |
||||
|
// registerCheckId: "registerCheckId", |
||||
|
// isPrint: "Y", |
||||
|
// isPrintTrans: true, |
||||
|
// pictureFilename: |
||||
|
// "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg", |
||||
|
// }, |
||||
|
], |
||||
|
//图片上传 |
||||
|
dialogCheckPictureUpload: false, |
||||
|
uploadSeq: 0, //第几次点图片上传,每点一次清空前次所选图片 |
||||
|
// 裁图 |
||||
|
dialogWinCutPic: false, |
||||
|
cutPicParam: {}, |
||||
|
pictureFileType: '1', |
||||
|
imageFile:"", |
||||
|
previewSrcLists:[], |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
created() { |
||||
|
//获取用户当前页面的权限 |
||||
|
let userPriv = window.sessionStorage.getItem('userPriv') |
||||
|
if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName)) |
||||
|
this.sysConfig = JSON.parse(window.sessionStorage.getItem('sysConfig')) |
||||
|
// console.log('this.sysConfig checkPictures', this.sysConfig) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//挂载完成 |
||||
|
mounted() { |
||||
|
this.getCheckPictures(this.dataTransOpts.tableS.register_check.id); |
||||
|
}, |
||||
|
|
||||
|
computed: { |
||||
|
...mapState([ |
||||
|
"window", |
||||
|
"dict", |
||||
|
"dialogWin", |
||||
|
"dataTransOpts", |
||||
|
"doctorCheck", |
||||
|
"patientRegister", |
||||
|
"customerOrg" |
||||
|
]), |
||||
|
lmoment(date, forMat) { |
||||
|
return moment(new Date(date)).format(forMat); |
||||
|
}, |
||||
|
}, |
||||
|
methods: { |
||||
|
checkPagePriv, |
||||
|
// 根据checkId获取图片列表信息 |
||||
|
getCheckPictures(registerCheckId) { |
||||
|
this.checkPictures = []; |
||||
|
if (!registerCheckId) { |
||||
|
return; |
||||
|
} |
||||
|
// { |
||||
|
// "registerCheckId": "3a0f6a3c-88a5-d5f7-d59b-ef3b3807490b", |
||||
|
// "pictureFilename": "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg", |
||||
|
// "isPrint": "N", |
||||
|
// "displayOrder": 1, |
||||
|
// "creatorName": "admin", |
||||
|
// "lastModifierName": "admin", |
||||
|
// "lastModificationTime": "2023-12-15T15:24:08", |
||||
|
// "lastModifierId": "3a0c4180-107c-0c89-b25b-0bd34666dcec", |
||||
|
// "creationTime": "2023-12-15T15:24:06", |
||||
|
// "creatorId": "3a0c4180-107c-0c89-b25b-0bd34666dcec", |
||||
|
// "id": "3a0f6a3c-88a5-d5f7-d59b-ef3b38074901" |
||||
|
// } |
||||
|
hadoopGet('pacsApi', `/api/app/registercheckpicture/getregistercheckpictureinregistercheckid?RegisterCheckId=${registerCheckId}`) |
||||
|
// getapi(`/api/app/registercheckpicture/getregistercheckpictureinregistercheckid?RegisterCheckId=${registerCheckId}`) |
||||
|
.then((res) => { |
||||
|
if (res.code > -1) { |
||||
|
this.checkPictures = res.data |
||||
|
this.checkPictures.forEach(e => { |
||||
|
e.isPrintTrans = e.isPrint == "Y" ? true : false |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
imgClick(item){ |
||||
|
this.imageFile = this.imageFilePlus(item.pictureFilename) |
||||
|
this.previewSrcLists = this.previewSrcList(this.checkPictures, item) |
||||
|
}, |
||||
|
|
||||
|
// 生成 图片预览列表 |
||||
|
previewSrcList(oriList, curImag) { |
||||
|
let srcList = [] |
||||
|
let image = curImag.pictureFilename.indexOf('http') > -1 |
||||
|
? curImag.pictureFilename |
||||
|
: (this.sysConfig.pacsApi || this.sysConfig.apiurl) + curImag.pictureFilename; |
||||
|
srcList.push(image) |
||||
|
let lfind = arrayExistObj(oriList, 'id', curImag.id) |
||||
|
if (lfind > -1) { |
||||
|
for (let i = lfind + 1; i < oriList.length; i++) { |
||||
|
let e = oriList[i]; |
||||
|
image = this.imageFilePlus(e.pictureFilename) |
||||
|
srcList.push(image) |
||||
|
} |
||||
|
for (let index = 0; index < lfind; index++) { |
||||
|
let e = oriList[index]; |
||||
|
image = this.imageFilePlus(e.pictureFilename) |
||||
|
srcList.push(image) |
||||
|
} |
||||
|
} |
||||
|
return srcList |
||||
|
}, |
||||
|
|
||||
|
//删除小结 |
||||
|
delSum(index) { |
||||
|
this.$confirm("此操作将删除该记录, 是否继续?", "提示", { |
||||
|
confirmButtonText: "是", |
||||
|
cancelButtonText: "否", |
||||
|
type: "warning", |
||||
|
}).then(() => { |
||||
|
this.doctorCheck.checkSummaryList.splice(index, 1); |
||||
|
}).catch(err => { |
||||
|
if (err == "cancel") { |
||||
|
// this.$message.info("已取消删除"); |
||||
|
console.log('已取消删除') |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
// 图片文件补全路径 |
||||
|
imageFilePlus(fileName) { |
||||
|
if (fileName.indexOf('base64') > -1 || fileName.indexOf('http') > -1) { |
||||
|
return fileName |
||||
|
} else { |
||||
|
return (this.sysConfig.pacsApi || this.sysConfig.apiurl) + fileName |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
// 采图 |
||||
|
btnGetPic() { |
||||
|
if (!this.doctorCheck.RegisterCheckId) { |
||||
|
this.$message.warning({ showClose: true, message: "未选中组合项目!" }); |
||||
|
return; |
||||
|
} |
||||
|
if (!this.$peisAPI) { |
||||
|
this.$message.info({ showClose: true, message: "此功能,需要在壳客户端才可运行!" }) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
let toOutShell = { |
||||
|
barCode: this.doctorCheck.checkRequestNo, |
||||
|
patientName: this.dataTransOpts.tableS.patient_register.patientName, |
||||
|
sexName: this.dataTransOpts.tableS.patient_register.sexName, |
||||
|
age: (this.dataTransOpts.tableS.patient_register.age || '') + '', |
||||
|
asbitemName: this.doctorCheck.asbitemName |
||||
|
} |
||||
|
// console.log('this.$peisAPI.imageAcquisition', JSON.stringify(toOutShell)) |
||||
|
|
||||
|
let loading = Loading.service({ |
||||
|
lock: true, |
||||
|
text: "正在加载中,请稍后", |
||||
|
spinner: "el-icon-loading", |
||||
|
background: "rgba(0, 0, 0, 0)", |
||||
|
customClass: "boxStyle" |
||||
|
}); |
||||
|
|
||||
|
this.$peisAPI.imageAcquisition(JSON.stringify(toOutShell)) |
||||
|
.then(async (res) => { |
||||
|
let lres = JSON.parse(res) |
||||
|
console.log('this.$peisAPI.imageAcquisition', lres) |
||||
|
if (lres.code > -1) { |
||||
|
for (let i = 0; i < lres.data.length; i++) { |
||||
|
let item = lres.data[i]; |
||||
|
|
||||
|
// FilePath: |
||||
|
// Image |
||||
|
// ImageFormat |
||||
|
let baseHead = 'data:image/jpeg;base64,' |
||||
|
switch (item.ImageFormat) { |
||||
|
case 'png': |
||||
|
case 'bmp': |
||||
|
baseHead = `data:image/${item.ImageFormat};base64,` |
||||
|
break; |
||||
|
default: |
||||
|
break; |
||||
|
} |
||||
|
this.checkPictures.push({ pictureFilename: baseHead + item.Image }) |
||||
|
let fileName = item.FilePath |
||||
|
let dotIndex = fileName.lastIndexOf('\\'); |
||||
|
if (dotIndex > -1) fileName = fileName.substring(dotIndex, fileName.length); |
||||
|
|
||||
|
let body = { |
||||
|
registerCheckId: this.dataTransOpts.tableS.register_check.id, |
||||
|
pictureBaseStrs: [{ |
||||
|
fileName, |
||||
|
localPathName: item.FilePath, |
||||
|
pictureBaseStr: baseHead + item.Image |
||||
|
}], |
||||
|
pictureFileType: '0' //采图暂定图0,上传暂定报告1 this.pictureFileType |
||||
|
} |
||||
|
try { |
||||
|
//await postapi('/api/app/RegisterCheckPicture/InstrumentMapping', body) |
||||
|
await hadoopPost('pacsApi', '/api/app/RegisterCheckPicture/InstrumentMapping', body) |
||||
|
} catch (error) { |
||||
|
console.log('btnGetPic err', error) |
||||
|
} |
||||
|
} |
||||
|
this.getCheckPictures(this.dataTransOpts.tableS.register_check.id) |
||||
|
} else { |
||||
|
console.log('this.$peisAPI.imageAcquisition', lres.message) |
||||
|
} |
||||
|
}).catch(err => { |
||||
|
this.$message.error(err) |
||||
|
}).finally(() => { |
||||
|
loading.close() |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
// 显示tab标签名称,过长处理 |
||||
|
dispLabel(itemName) { |
||||
|
return itemName.length > 5 ? (itemName.substring(0, 4) + "…") : itemName |
||||
|
}, |
||||
|
|
||||
|
// 清除结果 |
||||
|
btnClear(seq) { |
||||
|
if (this.doctorBtnDisabled('save')) { |
||||
|
this.$message.warning({ showClose: true, message: "已保存,不可操作!" }) |
||||
|
return |
||||
|
} |
||||
|
this.doctorCheck.checkItemList[seq].result = '' |
||||
|
}, |
||||
|
|
||||
|
// 默认结果 |
||||
|
btnDefResult(seq) { |
||||
|
if (this.doctorBtnDisabled('save')) { |
||||
|
this.$message.warning({ showClose: true, message: "已保存,不可操作!" }) |
||||
|
return |
||||
|
} |
||||
|
this.doctorCheck.checkItemList[seq].result = this.doctorCheck.checkItemList[seq].defaultResult |
||||
|
}, |
||||
|
|
||||
|
// 浏览Dcm文件 |
||||
|
btnBrowseDcm() { |
||||
|
this.checkRequestNo = this.doctorCheck.checkRequestNo |
||||
|
this.pacsParams.result = this.doctorCheck.checkItemList[0].result |
||||
|
let summary = '' |
||||
|
this.doctorCheck.checkSummaryList.forEach(e => { |
||||
|
summary += e.summary |
||||
|
}); |
||||
|
this.pacsParams.summary = summary |
||||
|
this.pacsParams.row = deepCopy(this.doctorCheck.checkItemList[0]) |
||||
|
this.pacsParams.index = 0 |
||||
|
this.pacsParams.refresh++ |
||||
|
|
||||
|
// console.log('pacsParams', this.pacsParams) |
||||
|
let token = window.sessionStorage.getItem('token') |
||||
|
this.iframeSrc = `${this.sysConfig.dcmViewers}/?mrn=${this.doctorCheck.checkRequestNo}&token=${token}&pacsapi=${this.sysConfig.pacsApiHttps}` |
||||
|
// this.iframeSrc = `${this.sysConfig.dcmViewers}/viewer?StudyInstanceUIDs=1.3.12.2.1107.5.1.4.79623.30000024091203062645300000022` |
||||
|
this.tabPosition = this.doctorCheck.checkItemList.length > 2 ? 'left' : 'top' |
||||
|
this.tabChoosed = "0" |
||||
|
this.dialogDcm = true |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
// 选择描述与结论 |
||||
|
btnChooseBigtext() { |
||||
|
// console.log('this.pacsParams', this.pacsParams) |
||||
|
this.pacsParams.index = parseInt(this.tabChoosed) |
||||
|
this.pacsParams.refresh++ |
||||
|
this.dialogWin.PacsTemplate = true |
||||
|
}, |
||||
|
|
||||
|
// 确定描述与结论 |
||||
|
btnOkBigtext() { |
||||
|
console.log('this.pacsParams', this.pacsParams) |
||||
|
// this.doctorCheck.checkItemList[0].result = this.pacsParams.result |
||||
|
/* |
||||
|
this.doctorCheck.checkSummaryList = [{ |
||||
|
id: Math.random(), |
||||
|
registerCheckId: this.doctorCheck.RegisterCheckEdit.id, |
||||
|
summary: this.pacsParams.summary, |
||||
|
summaryFlag: 'N', |
||||
|
}] |
||||
|
*/ |
||||
|
if (this.doctorCheck.checkSummaryList.length == 0) { |
||||
|
this.$message.warning({ showClose: true, message: "请填写检查结论" }) |
||||
|
return |
||||
|
} |
||||
|
this.save() |
||||
|
|
||||
|
this.dialogDcm = false |
||||
|
}, |
||||
|
|
||||
|
// 处理 pacs 结果录入的情况 |
||||
|
handlePacsResult(row, index, pacsResult) { |
||||
|
Object.assign(this.pacsParams, pacsResult) |
||||
|
}, |
||||
|
|
||||
|
// 浏览Dcm文件 |
||||
|
btnBrowseDcmBak() { |
||||
|
if (!this.doctorCheck.RegisterCheckId) { |
||||
|
this.$message.warning({ showClose: true, message: "未选中组合项目!" }); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
// 创建一个新的 <a> 元素 |
||||
|
let a = document.createElement('a'); |
||||
|
|
||||
|
// 设置 href 属性为要跳转的 URL |
||||
|
a.href = `${this.sysConfig.dcmViewers}/?mrn=24071610696`; |
||||
|
|
||||
|
//(可选)设置 target 属性,比如在新窗口打开 |
||||
|
a.target = '_blank'; |
||||
|
|
||||
|
//(可选)防止浏览器将链接添加到历史记录 |
||||
|
a.rel = 'noopener noreferrer'; |
||||
|
|
||||
|
// 将新创建的 <a> 元素添加到 DOM 中 |
||||
|
// 注意:这一步是可选的,如果你只想模拟点击而不想在页面上显示 <a> 元素,可以省略这一步 |
||||
|
// document.body.appendChild(a); |
||||
|
|
||||
|
// 模拟点击 <a> 元素 |
||||
|
a.click(); |
||||
|
|
||||
|
//(可选)移除刚才添加到 DOM 中的 <a> 元素 |
||||
|
// 如果你选择了将 <a> 元素添加到 DOM 中,现在可以移除它 |
||||
|
// document.body.removeChild(a); |
||||
|
}, |
||||
|
|
||||
|
btnBrowseDcmBak2() { |
||||
|
let userName = "peis", key = "peis@123" |
||||
|
// let encodedAuthstring = btoa(this.stringToAscIIBytes(`${userName}:${key}`)); |
||||
|
let encodedAuthstring = this.toBase64FromUtf8(`${userName}:${key}`); |
||||
|
console.log('encodedAuthstring', encodedAuthstring) |
||||
|
const url = 'http://192.168.4.161:8042/ohif/viewer?url=../studies/dcdc7b20-fe11f38d-f5357ad7-139cd2cd-c0bd3701/ohif-dicom-json'; |
||||
|
const Authorization = 'Basic ' + encodedAuthstring; |
||||
|
|
||||
|
fetch(url, { |
||||
|
headers: { |
||||
|
'Authorization': Authorization |
||||
|
} |
||||
|
}) |
||||
|
.then(response => response.json()) |
||||
|
.then(data => console.log(data)) |
||||
|
.catch(error => console.error('Error:', error)); |
||||
|
}, |
||||
|
|
||||
|
toBase64FromUtf8(str) { |
||||
|
// 使用 TextEncoder 将字符串转换为UTF-8字节序列 |
||||
|
const encoder = new TextEncoder(); |
||||
|
const bytes = encoder.encode(str); |
||||
|
|
||||
|
// 将字节序列转换为二进制字符串 |
||||
|
let binaryString = ''; |
||||
|
for (let byte of bytes) { |
||||
|
binaryString += String.fromCharCode(byte); |
||||
|
} |
||||
|
|
||||
|
// 使用 btoa 将二进制字符串转换为Base64 |
||||
|
return btoa(binaryString); |
||||
|
}, |
||||
|
|
||||
|
//导图(上传图片) |
||||
|
btnExpPic() { |
||||
|
if (!this.doctorCheck.RegisterCheckId) { |
||||
|
this.$message.warning({ showClose: true, message: "未选中组合项目!" }); |
||||
|
return; |
||||
|
} |
||||
|
this.uploadSeq++; |
||||
|
this.dialogCheckPictureUpload = true; |
||||
|
}, |
||||
|
btnClean() { |
||||
|
if (!this.doctorCheck.RegisterCheckId) { |
||||
|
this.$message.warning({ showClose: true, message: "未选中组合项目!" }); |
||||
|
return; |
||||
|
} |
||||
|
postapi("/api/app/PacsBusiness/DeletePacsCheckDicomDataByRegisterCheckId", { |
||||
|
registerCheckId: this.doctorCheck.RegisterCheckId |
||||
|
}) |
||||
|
.then((res) => { |
||||
|
if (res.code > -1) { |
||||
|
|
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
// 裁图/修图/ |
||||
|
btnCutPicBak() { |
||||
|
|
||||
|
// 跨域了 |
||||
|
this.dialogWinCutPic = true |
||||
|
this.$refs.imgCutterModal.handleOpen({ |
||||
|
name: "1.png", |
||||
|
src: "http://192.168.2.74:9529/PacsCheckPictureImg/pacs/2024/8/29//3a141f59-cf4c-5e34-966d-aec0a0eea94c//2408010001_0005.jpg.jpg", |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
btnCutPic() { |
||||
|
if (this.checkPictures.length == 0) { |
||||
|
this.$message.warning({ showClose: true, message: "暂无可裁图片!" }); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (!this.$peisAPI) { |
||||
|
this.$message.info({ showClose: true, message: "此功能,需要在壳客户端才可运行!" }) |
||||
|
return |
||||
|
} |
||||
|
let token = window.sessionStorage.getItem("token"); |
||||
|
let toOutShell = { |
||||
|
asbitemName: this.doctorCheck.asbitemName, |
||||
|
images: this.checkPictures, |
||||
|
token, |
||||
|
}; |
||||
|
this.$peisAPI.imageCut(JSON.stringify(toOutShell)) |
||||
|
.then(res => { |
||||
|
let lres = JSON.parse(res) |
||||
|
if (lres.code > -1) { |
||||
|
this.getCheckPictures(this.dataTransOpts.tableS.register_check.id); |
||||
|
} else { |
||||
|
console.log('裁图失败', lres.message) |
||||
|
} |
||||
|
}) |
||||
|
.catch(err => { |
||||
|
console.log('裁图失败', err) |
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//关闭上传图片窗口 |
||||
|
closePicUpload() { |
||||
|
this.dialogCheckPictureUpload = false; |
||||
|
}, |
||||
|
|
||||
|
btnSavePic() { |
||||
|
if (!this.doctorCheck.RegisterCheckId) { |
||||
|
this.$message.warning({ showClose: true, message: "未选中组合项目!" }); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
let body = []; |
||||
|
// [ |
||||
|
// { |
||||
|
// "registerCheckPictureId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", // 新增无需传此值 |
||||
|
// "registerCheckId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", |
||||
|
// "pictureFilename": "string", |
||||
|
// "isPrint": "string", |
||||
|
// "displayOrder": 0 |
||||
|
// } |
||||
|
// ] |
||||
|
if (this.checkPictures.length == 0) { |
||||
|
this.$message.warning({ showClose: true, message: "没有可保存的图片数据!" }); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
let checkPictures = deepCopy(this.checkPictures); |
||||
|
checkPictures.sort((a, b) => { |
||||
|
let seq1 = 0; |
||||
|
let seq2 = 0; |
||||
|
try { |
||||
|
seq1 = parseInt(a.displayOrder); |
||||
|
} catch (error) { |
||||
|
seq1 = 0; |
||||
|
} |
||||
|
try { |
||||
|
seq2 = parseInt(b.displayOrder); |
||||
|
} catch (error) { |
||||
|
seq2 = 0; |
||||
|
} |
||||
|
return seq1 - seq2; |
||||
|
}); |
||||
|
|
||||
|
checkPictures.forEach((e) => { |
||||
|
let item = { |
||||
|
registerCheckId: e.registerCheckId, |
||||
|
pictureFilename: e.pictureFilename, |
||||
|
pictureFileType: e.pictureFileType |
||||
|
}; |
||||
|
if (e.id) item.registerCheckPictureId = e.id; |
||||
|
if (e.isPrintTrans) { |
||||
|
item.isPrint = "Y"; |
||||
|
} else { |
||||
|
item.isPrint = "N"; |
||||
|
} |
||||
|
body.push(item); |
||||
|
}); |
||||
|
|
||||
|
postapi("/api/app/registercheckpicture/UpdateRegisterCheckPictureStatusMany", body) |
||||
|
.then((res) => { |
||||
|
if (res.code > -1) { |
||||
|
this.getCheckPictures(checkPictures[0].registerCheckId); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
// 删除图片 |
||||
|
btnDelImage(index) { |
||||
|
let body = [this.checkPictures[index].id]; |
||||
|
this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", { |
||||
|
confirmButtonText: "是", |
||||
|
cancelButtonText: "否", |
||||
|
type: "warning", |
||||
|
}) |
||||
|
.then(() => { |
||||
|
return postapi(`/api/app/registercheckpicture/deleteregistercheckpicturemany`, body); |
||||
|
}) |
||||
|
.then((res) => { |
||||
|
if (res && res.code > -1) { |
||||
|
this.checkPictures.splice(index, 1); |
||||
|
} |
||||
|
}) |
||||
|
.catch((err) => { |
||||
|
if (err == "cancel") { |
||||
|
this.$message.info({ showClose: true, message: "已取消" }); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
validateInteger(e, index) { |
||||
|
var regex = /^[0-9]*$/; |
||||
|
console.log(e, index); |
||||
|
if (!regex.test(e.value)) { |
||||
|
// 如果输入不满足整数条件,则清除输入框内容 |
||||
|
e.value = ""; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
// 通过检查条码查询相关数据 |
||||
|
onQueryByPacsNo(checkRequestNo) { |
||||
|
this.checkRequestNo = checkRequestNo |
||||
|
this.$refs['checkRequestNo'].select() |
||||
|
postapi('/api/app/PacsBusiness/GetPatientRegisterWithCheckResultByCheckRequestNo', { checkRequestNo }) |
||||
|
.then(res => { |
||||
|
if (res.code > -1) { |
||||
|
// 人员信息 |
||||
|
this.dataTransOpts.tableS.patient_register = res.data.patientRegisterDetail |
||||
|
|
||||
|
// 组合项目 |
||||
|
this.doctorCheck.RegisterCheckList = [res.data.registerCheckDetail] |
||||
|
|
||||
|
// 组合项目明细 |
||||
|
this.doctorCheck.checkItemList = res.data.registerCheckItemDetails |
||||
|
|
||||
|
// 小结与建议 |
||||
|
this.doctorCheck.checkSummaryList = res.data.registerCheckSummaryDetails |
||||
|
this.doctorCheck.checkSuggestionList = res.data.registerCheckSuggestionDetails |
||||
|
|
||||
|
// 上次结果 |
||||
|
this.doctorCheck.preResult = res.data.lastTimeAsbitemResultDetail |
||||
|
|
||||
|
// 检查情况 |
||||
|
this.doctorCheck.RegisterCheckEdit = res.data.registerCheckDetail |
||||
|
|
||||
|
// 图片 |
||||
|
this.checkPictures = res.data.registerCheckPictureDetails |
||||
|
this.checkPictures.forEach(e => { |
||||
|
e.isPrintTrans = e.isPrint == "Y" ? true : false |
||||
|
}); |
||||
|
|
||||
|
this.iframeSrc = '' |
||||
|
this.btnBrowseDcm() |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
onFocus(event) { |
||||
|
this.$refs['checkRequestNo'].select() |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//监听事件 |
||||
|
watch: { |
||||
|
//检查项目未切换换时 也可以强制刷新数据 |
||||
|
"dataTransOpts.refresh.register_check_item.M": { |
||||
|
// immediate: true, |
||||
|
handler(newVal, oldVal) { |
||||
|
console.log(`watch 检查图片 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.register_check.id}`); |
||||
|
if (newVal != oldVal) this.getCheckPictures(this.dataTransOpts.tableS.register_check.id); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.query { |
||||
|
margin-left: 10px; |
||||
|
margin-right: 2px; |
||||
|
padding: 1px 1px; |
||||
|
} |
||||
|
|
||||
|
.btnClass { |
||||
|
margin: 2px 2px 0; |
||||
|
height: 26px; |
||||
|
min-width: 40px; |
||||
|
padding: 5px 5px; |
||||
|
/*原始 默认值 10px 10px */ |
||||
|
} |
||||
|
|
||||
|
/* 强制出现滚动条 */ |
||||
|
::-webkit-scrollbar { |
||||
|
height: 0.5rem; |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar-thumb { |
||||
|
background-color: #ccc; |
||||
|
border-radius: 0.25rem; |
||||
|
} |
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue