pengjun 3 months ago
parent
commit
964b86ad98
  1. 2
      public/sysConfig.json
  2. 2
      src/components/doctorCheck/ButtonList.vue
  3. 170
      src/components/occDisease/ImageTextReport.vue
  4. 2
      src/components/report/BtnReport.vue
  5. 87
      src/components/report/TurnoverReport.vue
  6. 2
      src/views/doctorCheck/sumDoctorCheck.vue

2
public/sysConfig.json

@ -1,5 +1,5 @@
{
"apiurl": "http://192.168.0.188:9527",
"apiurl": "http://192.168.0.188:9530",
"softName": "神豚体检管理系统",
"pacsApi": "http://192.168.0.188:9530",
"dcmViewers": "https://app.mzaktj.com:4436",

2
src/components/doctorCheck/ButtonList.vue

@ -148,7 +148,7 @@
<el-tab-pane label="明细结果" name="2">
<CheckDetails :patientRegisterId="doctorCheck.prBase.id" :refParams="{ place: 'doctor' }" />
</el-tab-pane>
<el-tab-pane label="本次图文报告" name="4">
<el-tab-pane label="图文报告" name="4">
<ImageTextReport :refParams="{ place: 'doctor' }" />
</el-tab-pane>
<!-- <el-tab-pane label="项目对比" name="4">

170
src/components/occDisease/ImageTextReport.vue

@ -1,30 +1,115 @@
<template>
<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-column prop="registerCheckAsbitemName" label="检查项目" width="100" />
<el-table-column prop="details" label="图片" min-width="660">
<template slot-scope="scope">
<div :style="`overflow-x: auto;width:${tableWidth}px;`">
<div style="display: flex;">
<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">
<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>
<div style="display: flex;">
<div style="margin-left: 18px;">打印</div>
<el-checkbox :value="item['isPrint'] == 'Y'"/>
<el-tabs>
<el-tab-pane label="本次检查">
<el-table :data="tableData" border :height="tableHeight - 32" row-key="id" size="small" highlight-current-row
ref="imageTextReport">
<el-table-column prop="registerCheckAsbitemName" label="检查项目" width="100" >
<template slot-scope="scope">
<div>
{{ scope.row.registerCheckAsbitemName }}
<br></br><br>{{ scope.row.checkDate }}
<br>{{ scope.row.checkDoctorName }}
</div>
</template>
</el-table-column>
<el-table-column prop="details" label="图片" min-width="660">
<template slot-scope="scope">
<div :style="`overflow-x: auto;width:${tableWidth}px;`">
<div style="display: flex;">
<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">
<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>
<div style="display: flex;">
<div style="margin-left: 18px;">打印</div>
<el-checkbox :value="item['isPrint'] == 'Y'" />
</div>
</div>
</div>
</div>
</div>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="上次检查">
<el-table :data="previousData" border :height="tableHeight - 32" row-key="id" size="small" highlight-current-row
ref="imageTextReport">
<el-table-column prop="registerCheckAsbitemName" label="检查项目" width="100" >
<template slot-scope="scope">
<div>
{{ scope.row.registerCheckAsbitemName }}
<br></br>{{ scope.row?.checkDate.substring(0,10) }}
<br>{{ scope.row.checkDoctorName }}
</div>
</template>
</el-table-column>
<el-table-column prop="details" label="图片" min-width="660">
<template slot-scope="scope">
<div :style="`overflow-x: auto;width:${tableWidth}px;`">
<div style="display: flex;">
<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">
<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>
<div style="display: flex;">
<div style="margin-left: 18px;">打印</div>
<el-checkbox :value="item['isPrint'] == 'Y'" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="上上次检查">
<el-table :data="previousTwoData" border :height="tableHeight - 32" row-key="id" size="small" highlight-current-row
ref="imageTextReport">
<el-table-column prop="registerCheckAsbitemName" label="检查项目" width="100" >
<template slot-scope="scope">
<div>
{{ scope.row.registerCheckAsbitemName }}
<br></br><br>{{ scope.row.checkDate }}
<br>{{ scope.row.checkDoctorName }}
</div>
</template>
</el-table-column>
<el-table-column prop="details" label="图片" min-width="660">
<template slot-scope="scope">
<div :style="`overflow-x: auto;width:${tableWidth}px;`">
<div style="display: flex;">
<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">
<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>
<div style="display: flex;">
<div style="margin-left: 18px;">打印</div>
<el-checkbox :value="item['isPrint'] == 'Y'" />
</div>
</div>
</div>
</div>
</div>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
@ -37,7 +122,9 @@ export default {
data() {
return {
sysConfig: {},
tableData: [],
tableData: [], //
previousData: [], //
previousTwoData: [], //
};
},
@ -53,7 +140,7 @@ export default {
computed: {
...mapState(['window', 'dict', 'dataTransOpts', 'doctorCheck', 'sumDoctorCheck']),
tableHeight(){
tableHeight() {
let tableHeight = 465
switch (this.refParams.place) {
case 'summary': //
@ -65,11 +152,11 @@ export default {
return tableHeight
},
tableWidth(){
let tableWidth = 680
tableWidth() {
let tableWidth = 770
switch (this.refParams.place) {
case 'summary': //
tableWidth = (this.window.pageWidth < 600 ? 600 : this.window.pageWidth) - 240
tableWidth = (this.window.pageWidth < 600 ? 600 : this.window.pageWidth) - 240
break;
default:
break;
@ -85,19 +172,39 @@ export default {
CheckDetails(patientRegisterId) {
if (!patientRegisterId) {
this.tableData = []
return
this.previousData = [] //
this.previousTwoData = [] //
}
postapi('/api/app/OccupationalDisease/GetRegisterCheckPictureByPatientRegisterId', { patientRegisterId })
// /api/app/OccupationalDisease/GetRegisterCheckPictureByPatientRegisterId
postapi('/api/app/OccupationalDisease/GetHistroyRegisterCheckPictureByPatientRegisterId', { patientRegisterId })
.then((res) => {
console.log("获取图文报告 CheckDetails", res.data);
if (res.code != -1) {
this.tableData = res.data;
this.tableData = res.data.current;
this.tableData.forEach(e => {
if(!e.checkPictureUrls) e.checkPictureUrls = []
if (!e.checkPictureUrls) e.checkPictureUrls = []
e.details.forEach(e1 => {
e.checkPictureUrls.push(e1.checkPictureUrl)
});
});
this.previousData = res.data.previous;
this.previousData.forEach(e => {
if (!e.checkPictureUrls) e.checkPictureUrls = []
e.details.forEach(e1 => {
e.checkPictureUrls.push(e1.checkPictureUrl)
});
});
this.previousTwoData = res.data.previousTwo;
this.previousTwoData.forEach(e => {
if (!e.checkPictureUrls) e.checkPictureUrls = []
e.details.forEach(e1 => {
e.checkPictureUrls.push(e1.checkPictureUrl)
});
});
}
})
.catch((err) => {
@ -151,4 +258,3 @@ export default {
padding: 0;
}
</style>

2
src/components/report/BtnReport.vue

@ -78,7 +78,7 @@
<CheckDetails :patientRegisterId="dataTransOpts.tableS.patient_register.id"
:refParams="{ place: 'doctor' }" />
</el-tab-pane>
<el-tab-pane label="本次图文报告" name="4">
<el-tab-pane label="图文报告" name="4">
<ImageTextReport :refParams="{ place: 'doctor' }" />
</el-tab-pane>
<!-- <el-tab-pane label="项目对比" name="4">

87
src/components/report/TurnoverReport.vue

@ -39,7 +39,34 @@
</div>
<div class="query">
<span class="spanClass">显示子单位</span>
<el-checkbox v-model="query.isChild" true-label="Y" false-label="N" @change="btnQuery"/>
<el-checkbox v-model="query.isChild" true-label="Y" false-label="N" @change="btnQuery" />
</div>
</div>
<div style="display: flex;flex-wrap: wrap;margin-top: 2px; height: 32px;align-items: center;">
<div class="query">
<span class="spanClass">体检类别</span>
<el-select v-model="query.medicalTypeIds" placeholder="请选择体检类别" :filter-method="filterMethod"
default-first-option clearable filterable style="margin-left: 10px" size="small" multiple collapse-tags>
<el-option v-for="item in medicalType" :key="item.id" :label="item.displayName" :value="item.id">
{{ item.displayName }}
</el-option>
</el-select>
</div>
<div class="query">
<span class="spanClass">人员类别</span>
<el-select v-model="query.personnelTypeIds" placeholder="请选择人员类别" :filter-method="filterMethod"
default-first-option clearable filterable style="margin-left: 10px" size="small" multiple collapse-tags>
<el-option v-for="item in personnelType" :key="item.id" :label="item.displayName" :value="item.id">
{{ item.displayName }}
</el-option>
</el-select>
</div>
<div class="query">
<span class="spanClass">业务员</span>
<el-select v-model="query.salesmans" placeholder="请输入业务员姓名"
default-first-option clearable filterable style="margin-left: 10px" size="small" multiple collapse-tags>
<el-option v-for="item in dictSalesman" :key="item.id" :label="item.surname" :value="item.surname" />
</el-select>
</div>
</div>
</div>
@ -49,12 +76,14 @@
</div>
</div>
<div id="tableData">
<el-table :data="tableData" border :height="window.pageHeight - 160" highlight-current-row
size="small" row-key="id" :summary-method="getSummaries" show-summary ref="refTable">
<el-table :data="tableData" border :height="window.pageHeight - 192" highlight-current-row size="small"
row-key="id" :summary-method="getSummaries" show-summary ref="refTable">
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="customerOrgName" label="单位名称" min-width="180">
<template slot-scope="scope">
<div>{{ query.isChild == 'Y' ? scope.row.customerOrgName + (scope.row.departmentName && scope.row.customerOrgName != scope.row.departmentName ? '--'+scope.row.departmentName:''):scope.row.customerOrgName}}</div>
<div>{{ query.isChild == 'Y' ? scope.row.customerOrgName + (scope.row.departmentName &&
scope.row.customerOrgName != scope.row.departmentName ?
'--' + scope.row.departmentName : '') : scope.row.customerOrgName }}</div>
</template>
</el-table-column>
@ -91,15 +120,21 @@ export default {
customerOrg: [],
customerOrgAll: [],
medicalType: [],
personnelType: [],
dictSalesman: [],
query: {
dateType: '1',
startDate: '',
endDate: '',
customerOrgIds: [],
// medicalTypeIds: [],
medicalTypeIds: [],
personnelTypeIds: [],
salesmans: [],
// isMedicalTypeId: 'Y',
isPreRegistration:'N',
isChild:'Y',
isPreRegistration: 'N',
isChild: 'Y',
},
tableData: [],
@ -167,12 +202,30 @@ export default {
}
});
// //
// getapi("/api/app/medical-type/in-filter").then((res) => {
// if (res.code > -1) {
// this.dict.medicalType = res.data;
// }
// });
//
getapi("/api/app/medical-type/in-filter").then((res) => {
if (res.code > -1) {
this.dict.medicalType = res.data;
this.medicalType = res.data
}
});
//
getapi("/api/app/personnel-type/in-filter").then((res) => {
if (res.code == 1) {
this.dict.personnelType = res.data;
this.personnelType = res.data;
}
});
// {
postapi('/api/identity/users/GetUserListBySaleRole')
.then(res => {
if (res.code > -1) {
this.dictSalesman = res.data
}
})
},
//
@ -204,11 +257,11 @@ export default {
//
btnQuery() {
//let body = deepCopy(this.query)
postapi("/api/app/CustomerReport/GetCustomerOrgPhysicalExaminationStatistics", this.query).then(res => {
if (res.code > -1) {
this.tableData = res.data
if(Array.isArray(this.tableData) && this.tableData.length > 0){
if (Array.isArray(this.tableData) && this.tableData.length > 0) {
this.tableData.forEach(e => {
e.startMedical = Number(e.partCheckCount) + Number(e.checkCount)
});
@ -219,7 +272,7 @@ export default {
//
getSummaries(param) {
console.log('getSummaries param',param)
console.log('getSummaries param', param)
// if(!param){
// param = {
// columns:[{}, {}, {}, {}, {}, {}, {property: 'asbitemMoney'},{property: 'customerOrgGroupDetailMoney'}],
@ -228,7 +281,7 @@ export default {
// }
const { columns, data } = param;
const sumCol = [2,3,4, 7,8] //
const sumCol = [2, 3, 4, 7, 8] //
const sums = [];
columns.forEach((column, index) => {
//console.log('column, index,data',column, index,data)

2
src/views/doctorCheck/sumDoctorCheck.vue

@ -46,7 +46,7 @@
<SumItemsType :patientId="dataTransOpts.tableS.patient_register.patientId" />
</el-tab-pane>
-->
<el-tab-pane label="本次图文报告" name="4">
<el-tab-pane label="图文报告" name="4">
<ImageTextReport :refParams="{ place: 'summary' }"/>
</el-tab-pane>
<el-tab-pane label="历次结果" name="5">

Loading…
Cancel
Save