pengjun 1 year ago
parent
commit
9a6f009f8c
  1. 19
      src/components/doctorCheck/CheckItemList.vue
  2. 19
      src/components/doctorCheck/CheckPicture.vue
  3. 284
      src/components/doctorCheck/PacsDcmList.vue
  4. 274
      src/components/doctorCheck/PacsTemplate.vue
  5. 356
      src/components/doctorCheck/PacsTemplateBak.vue
  6. 20
      src/components/patientRegister/PatientRegisterList.vue
  7. 3
      src/components/patientRegister/patientRegisterQuery.vue
  8. 6
      src/router/index.js

19
src/components/doctorCheck/CheckItemList.vue

@ -85,7 +85,7 @@
</el-dialog>
<!--Pacs结果录入模版-->
<el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" :visible.sync="dialogWin.PacsTemplate" fullscreen
<el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" :visible.sync="dialogWinPacsTemplate" width="800px"
:close-on-click-modal="false">
<PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
</el-dialog>
@ -131,6 +131,7 @@ export default {
currentRow: -1, //
dialogWinMoreResult: false,
dialogWinPacsTemplate:false,
moreResult: {
data: [],
result: '',
@ -147,6 +148,8 @@ export default {
// pacs
pacsParams: {
from:'doctor',
refresh:-1, //
row: {},
index: 0,
result: '',
@ -430,12 +433,15 @@ export default {
summary += e.summary
});
this.pacsParams = {
row, index, result, summary
}
console.log('this.pacsParams ', this.pacsParams )
this.pacsParams.row = row
this.pacsParams.index = index
this.pacsParams.result = result
this.pacsParams.summary = summary
this.pacsParams.refresh++
this.dialogWin.PacsTemplate = true
this.dialogWinPacsTemplate = true
},
//
@ -488,6 +494,7 @@ export default {
summary: pacsResult.summary,
summaryFlag: 'N',
}]
this.dialogWinPacsTemplate = false
},

19
src/components/doctorCheck/CheckPicture.vue

@ -82,7 +82,7 @@
<div style="display: flex;">
<span style="width: 80px;margin: 7px 0;">检查条码</span>
<el-input ref="checkRequestNo" placeholder="检查条码" v-model="checkRequestNo" size="small" clearable
@keyup.native.enter="onQueryByPacsNo(checkRequestNo)" @focus="onFocus" />
@keyup.native.enter="onQueryByPacsNo(checkRequestNo)" @focus="onFocus" disabled/>
</div>
<div style="display: flex;">
<span style="width: 80px;margin: 7px 0;">姓名</span>
@ -126,7 +126,7 @@
</div>
</el-dialog>
<!--Pacs结果录入模版-->
<el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" :visible.sync="dialogWin.PacsTemplate" fullscreen
<el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" :visible.sync="dialogWin.PacsTemplate" width="800px"
:close-on-click-modal="false">
<PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
</el-dialog>
@ -159,6 +159,8 @@ export default {
dialogDcm: false,
iframeSrc: '',
pacsParams: {
from:'dcm',
refresh: -1,
row: {},
index: 0,
result: '',
@ -374,6 +376,7 @@ export default {
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')
@ -385,7 +388,8 @@ export default {
//
btnChooseBigtext() {
console.log('this.pacsParams', this.pacsParams)
// console.log('this.pacsParams', this.pacsParams)
this.pacsParams.refresh++
this.dialogWin.PacsTemplate = true
},
@ -615,6 +619,7 @@ export default {
//
onQueryByPacsNo(checkRequestNo) {
this.checkRequestNo = checkRequestNo
this.$refs['checkRequestNo'].select()
postapi('/api/app/PacsBusiness/GetPatientRegisterWithCheckResultByCheckRequestNo', { checkRequestNo })
.then(res => {
@ -623,11 +628,11 @@ export default {
this.dataTransOpts.tableS.patient_register = res.data.patientRegisterDetail
//
this.doctorCheck.RegisterCheckList = res.data.patientRegisterDetail.registerCheckAsbitems
this.doctorCheck.RegisterCheckList = [res.data.registerCheckDetail]
//
this.octorCheck.checkItemList = res.data.registerCheckItemDetails
this.doctorCheck.checkItemList = res.data.registerCheckItemDetails
//
this.doctorCheck.checkSummaryList = res.data.registerCheckSummaryDetails
this.doctorCheck.checkSuggestionList = res.data.registerCheckSuggestionDetails
@ -639,7 +644,7 @@ export default {
this.doctorCheck.RegisterCheckEdit = res.data.registerCheckDetail
//
this.checkPictures = res.data.registerCheckPictureDetails
this.checkPictures = res.data.registerCheckPictureDetails
this.checkPictures.forEach(e => {
e.isPrintTrans = e.isPrint == "Y" ? true : false
});

284
src/components/doctorCheck/PacsDcmList.vue

@ -0,0 +1,284 @@
<template>
<div>
<div class="contenttitle">
体检 /<span class="contenttitleBold">pacs看图</span>
</div>
<div style="display: flex;">
<div>
<iframe :src="iframeSrc" :height="window.pageHeight - 85" :width="window.pageWidth - 260"></iframe>
</div>
<div style="width: 240px;margin-left: 2px;">
<div style="margin-top: 5px;">
<span style="color: #232748;">人员信息</span>
<div style="display: flex;">
<span style="width: 80px;margin: 7px 0;">检查条码</span>
<el-input ref="checkRequestNo" placeholder="检查条码" v-model="checkRequestNo" size="small" clearable
@keyup.native.enter="onQueryByPacsNo(checkRequestNo)" @focus="onFocus" disabled />
</div>
<div style="display: flex;">
<span style="width: 80px;margin: 7px 0;">姓名</span>
<el-input v-model="dataTransOpts.tableS.patient_register.patientName" size="small" disabled />
</div>
<div style="display: flex;">
<span style="width: 80px;margin: 7px 0;">性别</span>
<el-input v-model="dataTransOpts.tableS.patient_register.sexName" size="small" disabled />
</div>
<div style="display: flex;">
<span style="width: 80px;margin: 7px 0;">年龄</span>
<el-input v-model="dataTransOpts.tableS.patient_register.age" size="small" disabled />
</div>
</div>
<div style="margin-top: 5px;">
<span style="color: #232748;">检查结果</span>
<el-input style="width: 100%;border: 1px solid #232748;" type="textarea" v-model="pacsParams.result"
placeholder="请输入描述"
:autosize="{ minRows: Math.floor((window.pageHeight - 500) / 24), maxRows: 20 }" />
</div>
<div style="margin-top: 5px;">
<span style="color: #232748;">检查结论</span>
<el-input style="width: 100%;border: 1px solid #232748;" type="textarea" v-model="pacsParams.summary"
placeholder="请输入结论" :autosize="{ minRows: 8, maxRows: 8 }" />
</div>
<div style="display: flex;justify-content: space-between;margin-top: 10px;">
<div></div>
<div>
<!--
<el-button type="primary" @click="btnTest" class="commonbutton">测试</el-button>
-->
<el-button type="primary" @click="btnChooseBigtext"
class="commonbutton">选择描述</el-button>
<el-button type="primary" @click="btnOkBigtext"
class="commonbutton">保存结果</el-button>
</div>
</div>
</div>
</div>
<!--Pacs结果录入模版-->
<el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" :visible.sync="dialogWin.PacsTemplate" width="800px"
:close-on-click-modal="false">
<PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
</el-dialog>
</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";
export default {
components: {
CheckPictureUpload, PacsTemplate
},
data() {
return {
sysConfig: {}, //
pagePriv: {
routeUrlorPageName: 'doctorCheck', //
privs: [] //
},
checkRequestNo: '',
dialogDcm: false,
iframeSrc: '',
pacsParams: {
from: 'dcm',
refresh: -1,
row: {},
index: 0,
result: '',
summary: ''
},
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, //
};
},
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,
// 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.pacsApi}`
// this.iframeSrc = `${this.sysConfig.dcmViewers}/viewer?StudyInstanceUIDs=1.3.12.2.1107.5.1.4.79623.30000024091203062645300000022`
this.dialogDcm = true
},
//
btnChooseBigtext() {
// console.log('this.pacsParams', this.pacsParams)
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',
}]
},
// pacs
handlePacsResult(row, index, pacsResult) {
Object.assign(this.pacsParams, pacsResult)
},
//
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>

274
src/components/doctorCheck/PacsTemplate.vue

@ -1,13 +1,13 @@
<template>
<div style="display: flex;">
<div :style="`width: 258px;height:${mainHeight}px;border: 1px solid #EEE;`">
<div :style="`width: 220px;height:550px;border: 1px solid #EEE;`">
<div style="margin:2px 2px 2px 2px;">
<el-input placeholder="输入关键字进行过滤" v-model="filterText" size="small" />
</div>
<div>
<el-tree :style="`overflow: scroll;width: 200px;height:${mainHeight - 40}px;`" :data="pacsTemplateTree"
:props="treeprops" @node-click="handleNode" :filter-node-method="filterNode" :expand-on-click-node="false"
highlight-current ref="ref_tree">
<el-tree :style="`overflow: scroll;width: 200px;height:510px;`" :data="pacsTemplateTree"
:props="treeprops" :filter-node-method="filterNode" :expand-on-click-node="false"
highlight-current ref="ref_tree" show-checkbox default-expand-all @check-change="handleCheckChange" >
<span class="custom-tree-node" slot-scope="{ node, data }">
<div>
<span class="treeicons">
@ -21,34 +21,17 @@
</el-tree>
</div>
</div>
<div :style="`display: block;width:${window.pageWidth - 200 - 30}px; margin-left: 5px;`">
<div style="display: flex;">
<div :style="`width: ${window.pageWidth - 200 - 30 - 250}px;`">
<el-table :data="description" border :height="tableHeight" highlight-current-row
@selection-change="selectionChangeDes" size="small" ref="ref_description">
<el-table-column type="selection" width="40" align="center" />
<el-table-column prop="description" label="描述" min-width="400" />
<el-table-column prop="conclusion" label="结论" min-width="150" align="center" />
</el-table>
</div>
<div style="width: 240px;margin-left: 5px;">
<el-table :data="conclusionAll" border :height="tableHeight" highlight-current-row
@selection-change="selectionChangeCon" size="small" ref="ref_conclusion">
<el-table-column type="selection" width="40" align="center" />
<el-table-column prop="conclusion" label="结论" min-width="150" />
</el-table>
</div>
</div>
<div style="margin-top: 5px;">
<div :style="`display: block;width:620px; margin-left: 5px;`">
<div>
<span>检查结果</span>
<el-input style="width: 100%;" type="textarea" v-model="result" placeholder="请输入描述"
:autosize="{ minRows: 6, maxRows: 6 }" />
:autosize="{ minRows: decLineCount, maxRows: decLineCount }" />
</div>
<div style="margin-top: 5px;">
<span>检查结论</span>
<div style="display: flex;justify-content: space-between;">
<el-input style="width: 100%;" type="textarea" v-model="summary" placeholder="请输入结论"
:autosize="{ minRows: 4, maxRows: 4 }" />
:autosize="{ minRows: conLineCount, maxRows: conLineCount }" />
</div>
</div>
<div style="display: flex;justify-content: space-between;margin-top: 10px;">
@ -94,7 +77,7 @@ export default {
id: "id",
children: "children",
}, //
newQuery: 0, // 0 selectionChangeDes
};
},
//<el-tree :data="$store.state.customerOrg.ref_tree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree>
@ -108,6 +91,14 @@ export default {
tableHeight() {
return this.mainHeight - 120 - 80 - 80;
},
decLineCount(){
return this.refParams.from == 'dcm' ? 14:16
},
conLineCount(){
return this.refParams.from == 'dcm' ? 7:8
}
},
//
created() {
@ -128,14 +119,82 @@ export default {
this.btnClear()
this.description = []
this.result = this.refParams.result || ''
this.summary = this.refParams.summary || ''
this.summary = this.refParams.summary || ''
console.log('init')
},
//
handleCheckChange(data, checked, indeterminate) {
// console.log('data, checked, indeterminate,this.menuInfoSet',data, checked, indeterminate,this.menuInfoSet);
this.description = []
this.conclusion = []
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail', { bigtextResultTemplateIds: [data.id] })
.then(res => {
if (res.code > -1) {
this.description = res.data.descriptionDetail
this.conclusion = res.data.conclusionDetail
let opraType = false
if(checked){
//
opraType = true
}else if(!indeterminate){
//
opraType = false
}
this.chooseDescription(opraType)
this.chooseConclusion(opraType)
}
});
},
//
filterNode(value, data) {
//console.log(value,data)
if (!value) return true;
return data['displayName'].indexOf(value) > -1;
if (!value) return true;
return data['displayName'].indexOf(value) > -1 || data['simpleCode'].indexOf(value.toUpperCase()) > -1;
},
// truefalse
chooseDescription(opraType){
let bfind = false
this.description.forEach(e => {
bfind = this.result.includes(e.description)
if(opraType){
if(!bfind){
if(this.result){
this.result += ";" + e.description
}else{
this.result = e.description
}
}
}else{
if(bfind) this.result = this.result.replaceAll(e.description + ';','').replaceAll(e.description,'')
}
});
},
// truefalse
chooseConclusion(opraType){
let lfind = 0
let summarys = this.summary.split(';')
this.conclusion.forEach(e => {
lfind = summarys.indexOf(e.conclusion)
if(opraType){
if(lfind == -1) summarys.push(e.conclusion)
}else{
if(lfind > -1) summarys.splice(lfind,1)
}
});
let summary = ''
summarys.forEach(e => {
if(summary){
summary += ';' + e
}else{
summary = e
}
});
this.summary = summary
},
//pacs
@ -146,6 +205,9 @@ export default {
.then(res => {
if (res.code > -1) {
resultType = res.data
resultType.forEach(e => {
e.disabled = true
});
return postapi('/api/app/BigtextResultTemplate/GetList', {})
}
})
@ -160,133 +222,7 @@ export default {
}
})
},
//
handleNode(data, node, prop) {
let ids = getTreeAllChildIdsById(this.pacsTemplateTree, "children", "id", data.id)
ids.unshift(data.id) //
// hadoopPost('pacsApi', '/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail', { bigtextResultTemplateIds: ids })
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail', { bigtextResultTemplateIds: ids })
.then(res => {
if (res.code > -1) {
this.newQuery = 0
this.description = res.data.descriptionDetail
this.conclusion = res.data.conclusionDetail
let lfind = -1
this.description.forEach((e, i) => {
let conclusion = this.conclusion.filter(c => {
return c.bigtextResultTemplateId == e.bigtextResultTemplateId
})
e["conclusion"] = ""
e["conclusionList"] = []
conclusion.forEach(c => {
e["conclusionList"].push(c)
});
if (conclusion.length == 1) e["conclusion"] = conclusion[0].conclusion
//
lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)
if (lfind > -1) {
// console.log('this.descriptionChoosed refresh', deepCopy(this.descriptionChoosed))
this.$nextTick(() => {
this.$refs['ref_description'].toggleRowSelection(this.description[i], true)
})
}
});
}
})
},
//
selectionChangeDes(v) {
this.newQuery++
let lfind = 0
v.forEach(e => {
lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)
if (lfind == -1) {
this.descriptionChoosed.push(e)
}
e.conclusionList.forEach(c => {
lfind = arrayExistObj(this.conclusionAll, "conclusion", c.conclusion)
if (lfind == -1) this.conclusionAll.push(c)
});
//
if (e.conclusion) {
lfind = arrayExistObj(this.conclusionAll, "conclusion", e.conclusion)
// console.log(lfind, e)
if (lfind > -1) {
this.$refs['ref_conclusion'].toggleRowSelection(this.conclusionAll[lfind], true)
}
}
if (this.result) {
if (!this.result.includes(e.description)) this.result += ';' + e.description
} else {
this.result = e.description
}
});
//
if (this.newQuery > 1) {
let unChooseed = arrayReduce(deepCopy(this.description), v, "description=description")
// console.log('this.descriptionChoosedPre,unChooseed', deepCopy(this.descriptionChoosedPre), unChooseed)
unChooseed.forEach(e => {
lfind = arrayExistObj(this.descriptionChoosedPre, "description", e.description)
if (lfind > -1) {
lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)
if (lfind > -1) this.descriptionChoosed.splice(lfind, 1)
if (this.result.includes(e.description)) this.result = this.result.replaceAll(e.description + ";", "").replaceAll(e.description, "")
if (e.conclusion) {
lfind = arrayExistObj(this.conclusionAll, "conclusion", e.conclusion)
if (lfind > -1) this.$refs['ref_conclusion'].toggleRowSelection(this.conclusionAll[lfind], false)
}
}
});
}
this.descriptionChoosedPre = deepCopy(v)
if (this.result) {
if (this.result.substring(this.result.length - 1, this.result.length) == ";") this.result = this.result.substring(0, this.result.length - 1)
}
},
// ()
selectionChangeCon(v) {
let summarys = []
v.forEach(e => {
if (this.summary) {
summarys = this.summary.split(";")
if (summarys.indexOf(e.conclusion) == -1) this.summary += ';' + e.conclusion
} else {
this.summary = e.conclusion
}
});
// if(this.summary && this.summary.substring())
//
let lfind = -1
let unChooseed = arrayReduce(deepCopy(this.conclusionAll), v, "conclusion=conclusion")
unChooseed.forEach(e => {
if (this.summary) {
summarys = this.summary.split(";")
lfind = summarys.indexOf(e.conclusion)
if (lfind > -1) summarys.splice(lfind, 1)
this.summary = ''
summarys.forEach((c, i) => {
if (i == 0) {
this.summary = c
} else {
this.summary += ";" + c
}
});
}
});
},
btnTest() {
console.log('this.descriptionChoosed', this.descriptionChoosed)
console.log('this.conclusionChoosed', this.conclusionChoosed)
@ -294,14 +230,9 @@ export default {
//
btnClear() {
console.log('btnClear')
this.result = ''
this.summary = ''
this.descriptionChoosed = []
this.$refs['ref_description'].clearSelection();
this.conclusionChoosed = []
this.conclusionAll = []
this.$refs['ref_conclusion'].clearSelection();
this.summary = ''
},
//
@ -323,23 +254,10 @@ export default {
if (newVal != oldVal) this.$refs['ref_tree'].filter(newVal);
},
"refParams.row.itemId"(newVal, oldVal) {
if (newVal != oldVal) this.init();
},
"refParams.result"(newVal, oldVal) {
if (newVal != oldVal){
console.log("refParams.result",newVal, oldVal)
this.result = newVal
}
"refParams.refresh"(newVal, oldVal) {
if (newVal && newVal != oldVal) this.init();
},
"refParams.summary"(newVal, oldVal) {
if (newVal != oldVal){
console.log("refParams.summary",newVal, oldVal)
this.summary = newVal
}
},
},
};
</script>

356
src/components/doctorCheck/PacsTemplateBak.vue

@ -0,0 +1,356 @@
<template>
<div style="display: flex;">
<div :style="`width: 258px;height:${mainHeight}px;border: 1px solid #EEE;`">
<div style="margin:2px 2px 2px 2px;">
<el-input placeholder="输入关键字进行过滤" v-model="filterText" size="small" />
</div>
<div>
<el-tree :style="`overflow: scroll;width: 200px;height:${mainHeight - 40}px;`" :data="pacsTemplateTree"
:props="treeprops" @node-click="handleNode" :filter-node-method="filterNode" :expand-on-click-node="false"
highlight-current ref="ref_tree">
<span class="custom-tree-node" slot-scope="{ node, data }">
<div>
<span class="treeicons">
<img style="width:20px;height:20px;vertical-align: sub;" src="@/assets/images/order.png"
v-if="!data.parentId" />
</span>
<span :class="!data.parentId ? 'maxtitle' : 'mintitle'">{{ node.label }}
</span>
</div>
</span>
</el-tree>
</div>
</div>
<div :style="`display: block;width:${window.pageWidth - 200 - 30}px; margin-left: 5px;`">
<div style="display: flex;">
<div :style="`width: ${window.pageWidth - 200 - 30 - 250}px;`">
<el-table :data="description" border :height="tableHeight" highlight-current-row
@selection-change="selectionChangeDes" size="small" ref="ref_description">
<el-table-column type="selection" width="40" align="center" />
<el-table-column prop="description" label="描述" min-width="400" />
<el-table-column prop="conclusion" label="结论" min-width="150" align="center" />
</el-table>
</div>
<div style="width: 240px;margin-left: 5px;">
<el-table :data="conclusionAll" border :height="tableHeight" highlight-current-row
@selection-change="selectionChangeCon" size="small" ref="ref_conclusion">
<el-table-column type="selection" width="40" align="center" />
<el-table-column prop="conclusion" label="结论" min-width="150" />
</el-table>
</div>
</div>
<div style="margin-top: 5px;">
<span>检查结果</span>
<el-input style="width: 100%;" type="textarea" v-model="result" placeholder="请输入描述"
:autosize="{ minRows: 6, maxRows: 6 }" />
</div>
<div style="margin-top: 5px;">
<span>检查结论</span>
<div style="display: flex;justify-content: space-between;">
<el-input style="width: 100%;" type="textarea" v-model="summary" placeholder="请输入结论"
:autosize="{ minRows: 4, maxRows: 4 }" />
</div>
</div>
<div style="display: flex;justify-content: space-between;margin-top: 10px;">
<div></div>
<div>
<!--
<el-button type="primary" @click="btnTest" class="commonbutton">测试</el-button>
-->
<el-button type="primary" @click="btnClear" class="commonbutton">清除</el-button>
<el-button type="primary" @click="btnDefault" class="commonbutton">默认结果</el-button>
<el-button type="primary" @click="btnOk" class="commonbutton">确定</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import moment from "moment";
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { hadoopGet, hadoopPost, hadoopPut, hadoopDel } from "../../api/hadoopApi"
import { arrayReduce, arrayExistObj, deepCopy, reMadeOrgTree } from "../../utlis/proFunc";
import { getTreePids, getTreeAllChildIdsById, madeTree } from "../../utlis/tree";
export default {
components: {},
props: ["refParams", "refFuncOther"],
data() {
return {
filterText: '',
description: [], //
conclusion: [], //
descriptionChoosedPre: [], //
descriptionChoosed: [], //
conclusionChoosed: [], //
conclusionAll: [], //
result: '', //
summary: '', //
pacsTemplateTree: [], // +
treeprops: {
label: "displayName", // label/displayName
value: "id",
id: "id",
children: "children",
}, //
newQuery: 0, // 0 selectionChangeDes
};
},
//<el-tree :data="$store.state.customerOrg.ref_tree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree>
computed: {
...mapState(["window", "dialogWin"]),
mainHeight() {
return this.window.pageHeight - 118;
},
tableHeight() {
return this.mainHeight - 120 - 80 - 80;
},
},
//
created() {
},
//
mounted() {
//
this.getPacsTemplateTree();
this.init()
},
methods: {
//
init() {
this.btnClear()
this.description = []
this.result = this.refParams.result || ''
this.summary = this.refParams.summary || ''
},
//
filterNode(value, data) {
//console.log(value,data)
if (!value) return true;
return data['displayName'].indexOf(value) > -1;
},
//pacs
getPacsTemplateTree() {
let resultType = [], resultTemplate = [], treeData = []
postapi('/api/app/BigtextResultType/GetList')
.then(res => {
if (res.code > -1) {
resultType = res.data
return postapi('/api/app/BigtextResultTemplate/GetList', {})
}
})
.then(res => {
if (res && res.code > -1) {
res.data.forEach(e => {
resultTemplate.push(Object.assign({}, e, { parentId: e.bigtextResultTypeId }))
});
treeData = resultType.concat(resultTemplate)
// console.log('treeData',treeData,resultType,)
this.pacsTemplateTree = madeTree(treeData, "children", "parentId", "id", null)
}
})
},
//
handleNode(data, node, prop) {
let ids = getTreeAllChildIdsById(this.pacsTemplateTree, "children", "id", data.id)
ids.unshift(data.id) //
// hadoopPost('pacsApi', '/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail', { bigtextResultTemplateIds: ids })
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail', { bigtextResultTemplateIds: ids })
.then(res => {
if (res.code > -1) {
this.newQuery = 0
this.description = res.data.descriptionDetail
this.conclusion = res.data.conclusionDetail
let lfind = -1
this.description.forEach((e, i) => {
let conclusion = this.conclusion.filter(c => {
return c.bigtextResultTemplateId == e.bigtextResultTemplateId
})
e["conclusion"] = ""
e["conclusionList"] = []
conclusion.forEach(c => {
e["conclusionList"].push(c)
});
if (conclusion.length == 1) e["conclusion"] = conclusion[0].conclusion
//
lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)
if (lfind > -1) {
// console.log('this.descriptionChoosed refresh', deepCopy(this.descriptionChoosed))
this.$nextTick(() => {
this.$refs['ref_description'].toggleRowSelection(this.description[i], true)
})
}
});
}
})
},
//
selectionChangeDes(v) {
this.newQuery++
let lfind = 0
v.forEach(e => {
lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)
if (lfind == -1) {
this.descriptionChoosed.push(e)
}
e.conclusionList.forEach(c => {
lfind = arrayExistObj(this.conclusionAll, "conclusion", c.conclusion)
if (lfind == -1) this.conclusionAll.push(c)
});
//
if (e.conclusion) {
lfind = arrayExistObj(this.conclusionAll, "conclusion", e.conclusion)
// console.log(lfind, e)
if (lfind > -1) {
this.$refs['ref_conclusion'].toggleRowSelection(this.conclusionAll[lfind], true)
}
}
if (this.result) {
if (!this.result.includes(e.description)) this.result += ';' + e.description
} else {
this.result = e.description
}
});
//
if (this.newQuery > 1) {
let unChooseed = arrayReduce(deepCopy(this.description), v, "description=description")
// console.log('this.descriptionChoosedPre,unChooseed', deepCopy(this.descriptionChoosedPre), unChooseed)
unChooseed.forEach(e => {
lfind = arrayExistObj(this.descriptionChoosedPre, "description", e.description)
if (lfind > -1) {
lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)
if (lfind > -1) this.descriptionChoosed.splice(lfind, 1)
if (this.result.includes(e.description)) this.result = this.result.replaceAll(e.description + ";", "").replaceAll(e.description, "")
if (e.conclusion) {
lfind = arrayExistObj(this.conclusionAll, "conclusion", e.conclusion)
if (lfind > -1) this.$refs['ref_conclusion'].toggleRowSelection(this.conclusionAll[lfind], false)
}
}
});
}
this.descriptionChoosedPre = deepCopy(v)
if (this.result) {
if (this.result.substring(this.result.length - 1, this.result.length) == ";") this.result = this.result.substring(0, this.result.length - 1)
}
},
// ()
selectionChangeCon(v) {
let summarys = []
v.forEach(e => {
if (this.summary) {
summarys = this.summary.split(";")
if (summarys.indexOf(e.conclusion) == -1) this.summary += ';' + e.conclusion
} else {
this.summary = e.conclusion
}
});
// if(this.summary && this.summary.substring())
//
let lfind = -1
let unChooseed = arrayReduce(deepCopy(this.conclusionAll), v, "conclusion=conclusion")
unChooseed.forEach(e => {
if (this.summary) {
summarys = this.summary.split(";")
lfind = summarys.indexOf(e.conclusion)
if (lfind > -1) summarys.splice(lfind, 1)
this.summary = ''
summarys.forEach((c, i) => {
if (i == 0) {
this.summary = c
} else {
this.summary += ";" + c
}
});
}
});
},
btnTest() {
console.log('this.descriptionChoosed', this.descriptionChoosed)
console.log('this.conclusionChoosed', this.conclusionChoosed)
},
//
btnClear() {
this.result = ''
this.summary = ''
this.descriptionChoosed = []
this.$refs['ref_description'].clearSelection();
this.conclusionChoosed = []
this.conclusionAll = []
this.$refs['ref_conclusion'].clearSelection();
},
//
btnDefault() {
this.btnClear()
this.result = this.refParams.row.defaultResult
this.summary = '未见异常'
},
//
btnOk() {
this.refFuncOther(this.refParams.row, this.refParams.index, { result: this.result, summary: this.summary })
this.dialogWin.PacsTemplate = false
},
},
watch: {
"filterText"(newVal, oldVal) {
if (newVal != oldVal) this.$refs['ref_tree'].filter(newVal);
},
"refParams.row.itemId"(newVal, oldVal) {
if (newVal != oldVal) this.init();
},
"refParams.result"(newVal, oldVal) {
if (newVal != oldVal){
console.log("refParams.result",newVal, oldVal)
this.result = newVal
}
},
"refParams.summary"(newVal, oldVal) {
if (newVal != oldVal){
console.log("refParams.summary",newVal, oldVal)
this.summary = newVal
}
},
},
};
</script>
<style lang="scss" scoped>
@import "../../assets/css/global_dialog.css";
@import "../../assets/css/global_table.css";
@import "../../assets/css/global_input.css";
@import "../../assets/css/global.css";
@import "../../assets/css/global_tree.css";
:deep .el-tree-node>.el-tree-node__children {
overflow: visible;
}
</style>

20
src/components/patientRegister/PatientRegisterList.vue

@ -313,6 +313,7 @@ import {
arrayExistObj,
deepCopy, setPrStatusColor
} from "../../utlis/proFunc";
import { savePeoplePhoto } from "../../utlis/proApi";
import PatientRegisterEdit from "../../components/patientRegister/PatientRegisterEdit.vue";
import Camera from "../../components/patientRegister/Camera.vue";
@ -1149,21 +1150,36 @@ export default {
};
// console.log("/api/app/patientregister/getlistinfilter", body);
let upPhoto = "patient_register_read_idno_upPhoto" //
let upPhotoParam = await postapi('/api/app/SysParmValue/GetSysParmValueBySysParmId', { sysParmId: upPhoto })
let photo = this.patientRegister.photo
this.patientRegister.photo = ''
postapi("/api/app/patientregister/getlistinfilter", body)
.then(res => {
.then(async (res) => {
if (res.code > -1) {
//
this.loadOpts.totalCount = res.data.totalCount
let curLoad = res.data.items
// let oldCount = 0
// /
//
// 1/
// 2()
curLoad.forEach(e => {
// 1/
if (e.customerOrgId == this.dict.personOrgId) {
e.groupPack = e.medicalPackageId
} else {
e.groupPack = e.customerOrgGroupId
}
// 2()
if (upPhotoParam != 'N' && photo) {
if (!e.photo) {
savePeoplePhoto(e.id, photo)
}
}
});
if (body.skipCount == 0) { //

3
src/components/patientRegister/patientRegisterQuery.vue

@ -288,7 +288,8 @@ export default {
// this.form.nationId = idNos.nationId
// this.form.idNo = idNos.IDCode
// this.form.address = idNos.Address
// this.patientRegister.photo = 'data:image/bmp;base64,' + idNos.Photo
this.patientRegister.photo = 'data:image/bmp;base64,' + idNos.Photo //
this.patientRegister.query.patientName = idNos.Name
this.patientRegister.query.sex = idNos.sexId
this.patientRegister.query.idCardNo = idNos.IDCode

6
src/router/index.js

@ -477,6 +477,12 @@ const routes = [{
component: () =>
import ("../views/doctorCheck/sumDoctorCheck.vue"),
},
{
path: "/pacsBrower",
name: "pacs看图",
component: () =>
import ("../components/doctorCheck/PacsDcmList.vue"),
},
{
path: "/checkPicImport",
name: "批量导入图片",

Loading…
Cancel
Save