pengjun 3 weeks ago
parent
commit
e49ca8f707
  1. 24
      src/components/occDisease/ImageTextReport.vue
  2. 119
      src/components/sumDoctorCheck/CheckDetails.vue
  3. 156
      src/components/sumDoctorCheck/CheckDetailsBak.vue
  4. 3
      src/components/sumDoctorCheck/SumItems.vue
  5. 22
      src/components/sumDoctorCheck/SumSug.vue
  6. 2
      src/views/diagnosis/diagnosis.vue
  7. 2
      src/views/doctorCheck/sumDoctorCheck.vue

24
src/components/occDisease/ImageTextReport.vue

@ -2,18 +2,22 @@
<div :style="`overflow-y: auto;width:100%;height:${tableHeight}px;`"> <div :style="`overflow-y: auto;width:100%;height:${tableHeight}px;`">
<el-table :data="tableData" border :height="tableHeight" row-key="id" size="small" highlight-current-row ref="imageTextReport"> <el-table :data="tableData" border :height="tableHeight" row-key="id" size="small" highlight-current-row ref="imageTextReport">
<el-table-column prop="registerCheckAsbitemName" label="检查项目" width="100" /> <el-table-column prop="registerCheckAsbitemName" label="检查项目" width="100" />
<el-table-column prop="checkPictureUrls" label="检查项目" min-width="660">
<el-table-column prop="details" label="图片" min-width="660">
<template slot-scope="scope"> <template slot-scope="scope">
<div :style="`overflow-x: auto;width:${tableWidth}px;`"> <div :style="`overflow-x: auto;width:${tableWidth}px;`">
<div style="display: flex;"> <div style="display: flex;">
<div class="demo-image__preview" v-for="(item, index) in scope.row.checkPictureUrls" :key="item.id"
<div class="demo-image__preview" v-for="(item, index) in scope.row.details" :key="item.id"
style="display: inline-block; padding: 0 0 0 2px"> style="display: inline-block; padding: 0 0 0 2px">
<div style="margin-top: 5px">
<el-image style="width: 80px; height: 80px; border-radius: 5px" :src="item.indexOf('http') > -1
? item
: sysConfig.apiurl + item
" :preview-src-list="previewSrcList(scope.row.checkPictureUrls, item)">
<div style="margin-top: 5px;align-items: center;">
<el-image style="width: 80px; height: 80px; border-radius: 5px" :src="item['checkPictureUrl'].indexOf('http') > -1
? item['checkPictureUrl']
: sysConfig.apiurl + item['checkPictureUrl']
" :preview-src-list="previewSrcList(scope.row.checkPictureUrls, item['checkPictureUrl'])">
</el-image> </el-image>
<div style="display: flex;">
<div style="margin-left: 18px;">打印</div>
<el-checkbox :value="item['isPrint'] == 'Y'"/>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -88,6 +92,12 @@ export default {
console.log("获取图文报告 CheckDetails", res.data); console.log("获取图文报告 CheckDetails", res.data);
if (res.code != -1) { if (res.code != -1) {
this.tableData = res.data; this.tableData = res.data;
this.tableData.forEach(e => {
if(!e.checkPictureUrls) e.checkPictureUrls = []
e.details.forEach(e1 => {
e.checkPictureUrls.push(e1.checkPictureUrl)
});
});
} }
}) })
.catch((err) => { .catch((err) => {

119
src/components/sumDoctorCheck/CheckDetails.vue

@ -1,60 +1,74 @@
<template> <template>
<div :style="'overflow: scroll;width:100%;height:' + divHeight + 'px;'">
<table width="100%" style="font-size:14px;">
<tbody v-for="(item, index) of tableData" :key="index">
<tr height="30">
<td style="text-align: center;font-weight: bolder;">{{ item.itemTypeName }}</td>
</tr>
<tr>
<table v-for="(item2, index2) in item.asbitems" :key="index + '-' + index2" width="100%" border="1"
cellspacing="0" bordercolor="#909399" style="border-collapse:collapse;">
<tr height="24" >
<td width="200" class="tdCellClass">{{ item2.asbitemNames }}</td>
<td width="604" class="tdCellClass" colspan="7">{{ '检查日期:' + item2.checkDate.substring(0, 10) + ' 检查医生:' + item2.checkDoctorName
}}</td>
</tr>
<tr style="text-align: center;" height="24">
<td width="200">项目</td>
<td width="270">本次结果</td>
<td width="270">上次结果</td>
<td width="270">上上次结果</td>
<td width="100">参考值</td>
<td width="100">警告参考值</td>
<td width="80">单位</td>
<td width="50">提示</td>
</tr>
<tr height="24" v-for="(item3, index3) in item2.items" :key="index + '-' + index2 + '-' + index3">
<td class="tdCellClass">{{ item3.itemName }}</td>
<td :style="`color: ${getColorStr(item3.reportFontColor)};`" class="tdCellClass">{{ item3.itemResult }}</td>
<td :style="`color: ${getColorStr(item3.previousReportFontColor)};`" class="tdCellClass">{{ item3.previousItemResult }}</td>
<td :style="`color: ${getColorStr(item3.previousTwoReportFontColor)};`" class="tdCellClass">{{ item3.previousTwoItemResult }}</td>
<td align="center" class="tdCellClass">{{ item3.referenceRangeValue }}</td>
<td align="center" class="tdCellClass">{{ item3.criticalRangeValue }}</td>
<td align="center" class="tdCellClass">{{ item3.unit }}</td>
<td align="center" class="tdCellClass">{{ item3.resultStatusName }}</td>
</tr>
<tr height="24">
<td colspan="8" class="tdCellClass" v-html="`小结:${mergeSummarys(item2.summarys, 'summary')}`"></td>
</tr>
</table>
</tr>
</tbody>
</table>
<div style="display: flex;width:100%;">
<div style="width:180;">
<el-table :data="RegisterCheckList" width="180" :height="divHeight" border highlight-current-row
@row-click="rowClick" ref="registerCheckList" >
<el-table-column prop="asbitemNames" label="组合项目" width="180">
<template slot="header">
<div style="width: 180px;background-color: #f4f8ff;">组合项目</div>
</template>
</el-table-column>
</el-table>
</div>
<div :style="`padding-left:10px;width:${(window.pageWidth - 180 - 110 - 25)}px;`">
<table width="100%" style="font-size:14px;">
<tbody v-for="(item, index) of tableData" :key="index">
<tr height="30">
<td style="text-align: center;font-weight: bolder;">{{ item.itemTypeName }}</td>
</tr>
<tr>
<table width="100%" border="1"
cellspacing="0" bordercolor="#909399" style="border-collapse:collapse;">
<tr height="24" >
<td width="200" class="tdCellClass">{{ details.asbitemNames }}</td>
<td width="604" class="tdCellClass" colspan="7">{{ '检查日期:' + details.checkDate.substring(0, 10) + ' 检查医生:' + details.checkDoctorName
}}</td>
</tr>
<tr style="text-align: center;" height="24">
<td width="200">项目</td>
<td width="270">本次结果</td>
<td width="270">上次结果</td>
<td width="270">上上次结果</td>
<td width="100">参考值</td>
<td width="100">警告参考值</td>
<td width="80">单位</td>
<td width="50">提示</td>
</tr>
<tr height="24" v-for="(item3, index) in details.items" :key="index">
<td class="tdCellClass">{{ item3.itemName }}</td>
<td :style="`color: ${getColorStr(item3.reportFontColor)};`" class="tdCellClass">{{ item3.itemResult }}</td>
<td :style="`color: ${getColorStr(item3.previousReportFontColor)};`" class="tdCellClass">{{ item3.previousItemResult }}</td>
<td :style="`color: ${getColorStr(item3.previousTwoReportFontColor)};`" class="tdCellClass">{{ item3.previousTwoItemResult }}</td>
<td align="center" class="tdCellClass">{{ item3.referenceRangeValue }}</td>
<td align="center" class="tdCellClass">{{ item3.criticalRangeValue }}</td>
<td align="center" class="tdCellClass">{{ item3.unit }}</td>
<td align="center" class="tdCellClass">{{ item3.resultStatusName }}</td>
</tr>
<tr height="24">
<td colspan="8" class="tdCellClass" v-html="`小结:${mergeSummarys(details.summarys, 'summary')}`"></td>
</tr>
</table>
</tr>
</tbody>
</table>
</div>
</div> </div>
</template> </template>
<script> <script>
import { mapState } from 'vuex'; import { mapState } from 'vuex';
import Sortable from "sortablejs"; import Sortable from "sortablejs";
import { getapi, postapi, putapi, deletapi } from "@/api/api"; import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { arrayExistObj, getColorStr } from '@/utlis/proFunc';
import { arrayExistObj, deepCopy, getColorStr } from '@/utlis/proFunc';
export default { export default {
components: {}, components: {},
props: ["patientRegisterId","tabChoosed","refParams",], props: ["patientRegisterId","tabChoosed","refParams",],
data() { data() {
return { return {
tableData: [], tableData: [],
RegisterCheckList:[],
details:[]
}; };
}, },
@ -85,8 +99,11 @@ export default {
getColorStr, getColorStr,
// //
CheckDetails(patientRegisterId) { CheckDetails(patientRegisterId) {
if (!patientRegisterId) {
this.tableData = []
this.tableData = []
this.RegisterCheckList = []
this.details =[]
if (!patientRegisterId) {
return return
} }
@ -97,6 +114,12 @@ export default {
console.log("获取结果明细 CheckDetails", res.data); console.log("获取结果明细 CheckDetails", res.data);
if (res.code != -1) { if (res.code != -1) {
this.tableData = res.data; this.tableData = res.data;
this.tableData.forEach(e => {
e.asbitems.forEach(e1 => {
this.RegisterCheckList.push(e1)
});
});
this.details = deepCopy(this.RegisterCheckList[0])
} }
}) })
.catch((err) => { .catch((err) => {
@ -119,6 +142,10 @@ export default {
} }
}) })
return ret return ret
},
rowClick(row){
this.details = row
} }
}, },

156
src/components/sumDoctorCheck/CheckDetailsBak.vue

@ -0,0 +1,156 @@
<template>
<div :style="'overflow: scroll;width:100%;height:' + divHeight + 'px;'">
<table width="100%" style="font-size:14px;">
<tbody v-for="(item, index) of tableData" :key="index">
<tr height="30">
<td style="text-align: center;font-weight: bolder;">{{ item.itemTypeName }}</td>
</tr>
<tr>
<table v-for="(item2, index2) in item.asbitems" :key="index + '-' + index2" width="100%" border="1"
cellspacing="0" bordercolor="#909399" style="border-collapse:collapse;">
<tr height="24" >
<td width="200" class="tdCellClass">{{ item2.asbitemNames }}</td>
<td width="604" class="tdCellClass" colspan="7">{{ '检查日期:' + item2.checkDate.substring(0, 10) + ' 检查医生:' + item2.checkDoctorName
}}</td>
</tr>
<tr style="text-align: center;" height="24">
<td width="200">项目</td>
<td width="270">本次结果</td>
<td width="270">上次结果</td>
<td width="270">上上次结果</td>
<td width="100">参考值</td>
<td width="100">警告参考值</td>
<td width="80">单位</td>
<td width="50">提示</td>
</tr>
<tr height="24" v-for="(item3, index3) in item2.items" :key="index + '-' + index2 + '-' + index3">
<td class="tdCellClass">{{ item3.itemName }}</td>
<td :style="`color: ${getColorStr(item3.reportFontColor)};`" class="tdCellClass">{{ item3.itemResult }}</td>
<td :style="`color: ${getColorStr(item3.previousReportFontColor)};`" class="tdCellClass">{{ item3.previousItemResult }}</td>
<td :style="`color: ${getColorStr(item3.previousTwoReportFontColor)};`" class="tdCellClass">{{ item3.previousTwoItemResult }}</td>
<td align="center" class="tdCellClass">{{ item3.referenceRangeValue }}</td>
<td align="center" class="tdCellClass">{{ item3.criticalRangeValue }}</td>
<td align="center" class="tdCellClass">{{ item3.unit }}</td>
<td align="center" class="tdCellClass">{{ item3.resultStatusName }}</td>
</tr>
<tr height="24">
<td colspan="8" class="tdCellClass" v-html="`小结:${mergeSummarys(item2.summarys, 'summary')}`"></td>
</tr>
</table>
</tr>
</tbody>
</table>
</div>
</template>
<script>
import { mapState } from 'vuex';
import Sortable from "sortablejs";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { arrayExistObj, getColorStr } from '@/utlis/proFunc';
export default {
components: {},
props: ["patientRegisterId","tabChoosed","refParams",],
data() {
return {
tableData: [],
};
},
created() { },
//
mounted() {
this.CheckDetails(this.dataTransOpts.tableS.patient_register.id);
},
computed: {
...mapState(['window', 'dict', 'dataTransOpts', 'doctorCheck', 'sumDoctorCheck']),
divHeight() {
let tableHeight = 465
switch (this.refParams.place) {
case 'summary': //
tableHeight = (this.window.pageHeight < 600 ? 600 : this.window.pageHeight) - 195
break;
default:
break;
}
return tableHeight
},
},
methods: {
getColorStr,
//
CheckDetails(patientRegisterId) {
if (!patientRegisterId) {
this.tableData = []
return
}
//console.log(`/api/app/sumsummaryreport/getdetailedresultslist?PatientRegisterId=${patientRegisterId}`)
postapi('/api/app/SumSummaryReport/GetDetailResults', { patientRegisterId })
.then((res) => {
console.log("获取结果明细 CheckDetails", res.data);
if (res.code != -1) {
this.tableData = res.data;
}
})
.catch((err) => {
this.$message({ type: "error", message: `操作失败,原因:${err}` });
});
},
mergeSummarys(array, itemKey) {
let ret = ''
array.forEach((e, i) => {
//let splitStr = "<br>"
if (i == 0){
ret = e[itemKey]
}else if (i==1) {
ret = `1.${ret} ${Number(i)+1}.${e[itemKey]}`
} else {
ret += ` ${Number(i)+1}.${e[itemKey]}`
}
})
return ret
}
},
//
watch: {
// sumDoctor.M
"dataTransOpts.refresh.sumDoctor.M": {
// immediate:true,
handler(newVal, oldVal) {
console.log(`watch 总检--检查明细结果 newVal: ${newVal}, oldVal: ${oldVal} patientRegisterId: ${this.dataTransOpts.tableS.patient_register.id}`);
//&& this.tabChoosed == '2'
if(newVal != oldVal){
if(this.refParams.place == 'doctor'){
this.CheckDetails(this.dataTransOpts.tableS.patient_register.id);
}else{
if(this.tabChoosed == '2') this.CheckDetails(this.dataTransOpts.tableS.patient_register.id);
}
}
}
},
},
};
</script>
<style scoped>
.tdCellClass {
padding: 0 5px;
}
::v-deep .el-table td.el-table__cell,
.el-table th.el-table__cell.is-leaf {
padding: 0;
}
</style>

3
src/components/sumDoctorCheck/SumItems.vue

@ -7,8 +7,7 @@
<el-table-column prop="asbitemName" label="组合项目" width="180"> <el-table-column prop="asbitemName" label="组合项目" width="180">
<template slot="header"> <template slot="header">
<div style="width: 180px;background-color: #f4f8ff;">组合项目</div> <div style="width: 180px;background-color: #f4f8ff;">组合项目</div>
</template>
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>

22
src/components/sumDoctorCheck/SumSug.vue

@ -1,5 +1,5 @@
<template> <template>
<div>
<div style="background-color: #B9CEE9;">
<!--组件--> <!--组件-->
<div style="display: flex;" @contextmenu.prevent="onContextmenu"> <div style="display: flex;" @contextmenu.prevent="onContextmenu">
<div <div
@ -9,7 +9,7 @@
:disabled="sumBtnDisabled('addSummary')">新增综述</el-button> :disabled="sumBtnDisabled('addSummary')">新增综述</el-button>
</div> </div>
</div> </div>
<div style="width:50%;">
<div style="width:50%;background-color: #B9CEE9;">
<el-table id="tableSummary" row-key="id" :data="sumDoctorCheck.summaryList" width="100%" :height="sumHeight" <el-table id="tableSummary" row-key="id" :data="sumDoctorCheck.summaryList" width="100%" :height="sumHeight"
border size="small"> border size="small">
<el-table-column type="index" width="30" align="center" /> <el-table-column type="index" width="30" align="center" />
@ -72,7 +72,7 @@
:disabled="sumBtnDisabled()">新增建议</el-button> :disabled="sumBtnDisabled()">新增建议</el-button>
</div> </div>
</div> </div>
<div style="width:50%;">
<div style="width:50%;background-color: #B9CEE9;">
<el-table id="tableSuggestion" row-key="id" :data="sumDoctorCheck.suggestionList" width="100%" <el-table id="tableSuggestion" row-key="id" :data="sumDoctorCheck.suggestionList" width="100%"
:height="sumHeight" border size="small" ref="tableSuggestion"> :height="sumHeight" border size="small" ref="tableSuggestion">
<el-table-column width="30" align="center"> <el-table-column width="30" align="center">
@ -1302,6 +1302,20 @@ export default {
color: #00F; color: #00F;
} }
/* 表格底色 .el-table__body .el-table__body-wrapper*/
::v-deep .el-table{
background-color: #B9CEE9;
color: #52555F;
}
::v-deep .el-table__row{
background-color: #B9CEE9;
color: #52555F;
}
::v-deep .el-textarea__inner{
background-color: #B9CEE9;
color: #52555F;
}
/* 设置单元格内内容顶对齐 */ /* 设置单元格内内容顶对齐 */
::v-deep .el-table__cell { ::v-deep .el-table__cell {
@ -1336,6 +1350,8 @@ export default {
min-height: 23px; min-height: 23px;
height: 23px; height: 23px;
padding: 1px 15px 1px 2px; padding: 1px 15px 1px 2px;
background-color: #B9CEE9;
color: #52555F !important;
} }
::v-deep .commonFont .el-textarea__inner { ::v-deep .commonFont .el-textarea__inner {

2
src/views/diagnosis/diagnosis.vue

@ -263,7 +263,7 @@ export default {
forSexId:'A', forSexId:'A',
isSummaryTemplate:'N', isSummaryTemplate:'N',
isActive:'Y', isActive:'Y',
diagnosisLevelId:0,
diagnosisLevelId:1, //
medicalInterpretations:[], medicalInterpretations:[],
healthGuidances:[], healthGuidances:[],
commonReasons:[] commonReasons:[]

2
src/views/doctorCheck/sumDoctorCheck.vue

@ -1,5 +1,5 @@
<template> <template>
<div>
<div style="background-color: #B9CEE9;">
<div> <div>
<div class="contenttitle"> <div class="contenttitle">
体检 /<span class="contenttitleBold">总检医生诊台</span> 体检 /<span class="contenttitleBold">总检医生诊台</span>

Loading…
Cancel
Save