Browse Source

report

master
pengjun 1 year ago
parent
commit
a8a82391a7
  1. 1
      src/components/report/BtnReport.vue
  2. 58
      src/components/report/PatientRegisterListNobtn.vue
  3. 4
      src/components/report/PatientRegisterQueryNobtn.vue
  4. 608
      src/views/customerReport/unitSettlement.vue
  5. 352
      src/views/workload/deskwork.vue

1
src/components/report/BtnReport.vue

@ -148,6 +148,7 @@ export default {
this.$message.warning({ showClose: true, message: JSON.parse(res).message });
}else{
//
e.isUpload = 'Y'
console.log('btnUpReport success',JSON.parse(res))
}
} catch (error) {

58
src/components/report/PatientRegisterListNobtn.vue

@ -11,11 +11,16 @@
dddw(dict.completeFlag, "id", scope.row.completeFlag, "displayName") }}</div>
</template>
</el-table-column>
<el-table-column prop="isLock" label="锁住" align="center" width="50">
<el-table-column prop="isReportPrint" label="打印" width="50" align="center">
<template slot-scope="scope">
<div>{{ scope.row.isLock == "Y" ? "是" : "否" }}</div>
<i class="el-icon-printer" v-if="scope.row.isReportPrint == 'Y'" style="font-size: 24px;color: green;"></i>
</template>
</el-table-column>
<el-table-column prop="isUpload" label="是否上传" align="center">
<template slot-scope="scope">
<div style="font-family: 'Microsoft YaHei';">{{ scope.row.isUpload == "Y" ? "√" : "" }}</div>
</template>
</el-table-column>
<el-table-column prop="customerOrgName" label="单位" width="180" />
<el-table-column prop="departmentName" label="部门" width="180" />
<el-table-column prop="patientName" label="姓名" align="center" />
@ -27,7 +32,6 @@
<el-table-column prop="medicalTimes" label="体检次数" align="center" />
<el-table-column label="分组/套餐" width="150">
<template slot-scope="scope">
<div v-if="scope.row.medicalPackageName">
{{ scope.row.medicalPackageName }}
</div>
@ -56,53 +60,25 @@
<el-table-column prop="address" label="地址" width="400" />
<el-table-column prop="medicalCardNo" label="体检卡号" />
<el-table-column prop="jobCardNo" label="工卡号" />
<el-table-column prop="maritalStatusId" label="婚姻状况" align="center">
<template slot-scope="scope">
<div>
{{ dddw(dict.maritalStatus, "id", scope.row.maritalStatusId, "displayName") }}
</div>
</template>
</el-table-column>
<el-table-column prop="medicalTypeId" label="体检类别">
<template slot-scope="scope">
<div v-if="scope.row.medicalTypeId !== dict.personOrgId">
{{ dddw(dict.medicalType, "id", scope.row.medicalTypeId, "displayName") }}
</div>
</template>
</el-table-column>
<el-table-column prop="personnelTypeId" label="人员类别">
<template slot-scope="scope">
<div v-if="scope.row.personnelTypeId !== dict.personOrgId">
{{ dddw(dict.personnelType, "id", scope.row.personnelTypeId, "displayName") }}
</div>
</template>
</el-table-column>
<el-table-column prop="maritalStatusName" label="婚姻状况" align="center" />
<el-table-column prop="medicalTypeName" label="体检类别" align="center"/>
<el-table-column prop="personnelTypeName" label="人员类别" align="center"/>
<el-table-column prop="jobPost" label="职务" />
<el-table-column prop="jobTitle" label="职称" />
<el-table-column prop="salesman" label="介绍人" />
<el-table-column prop="isVip" label="是否VIP" align="center">
<el-table-column prop="isVip" label="VIP" width="50" align="center">
<template slot-scope="scope">
<div>{{ scope.row.isVip == "Y" ? "是" : "否" }}</div>
</template>
</el-table-column>
<el-table-column prop="creatorName" label="登记人" />
<el-table-column prop="creationTime" label="登记日期" width="100" align="center">
<template slot-scope="scope">
<div v-if="scope.row.creationTime">
{{ lmoment(scope.row.creationTime, "yyyy-MM-DD") }}
</div>
</template>
</el-table-column>
<el-table-column prop="isUpload" label="是否上传" align="center">
<template slot-scope="scope">
<div>{{ scope.row.isUpload == "Y" ? "是" : "否" }}</div>
</template>
</el-table-column>
<el-table-column prop="guidePrintTimes" label="打印" width="50" align="center">
<el-table-column prop="registerName" label="登记人" align="center"/>
<el-table-column prop="registerDate" label="登记日期" width="150" align="center"/>
<el-table-column prop="isLock" label="锁住" align="center" width="50">
<template slot-scope="scope">
<i class="el-icon-printer" v-if="scope.row.guidePrintTimes > 0" style="font-size: 24px;color: green;"></i>
<div>{{ scope.row.isLock == "Y" ? "是" : "否" }}</div>
</template>
</el-table-column>
<!--
"sexHormoneTermId": "00000000-0000-0000-0000-000000000000",
"interposeMeasure": null,
@ -362,7 +338,7 @@ export default {
if (this.patientRegister.query.isAudit) body.isAudit = this.patientRegister.query.isAudit
if (this.patientRegister.query.reportPrintTimes >= 0) body.isReportPrint = this.patientRegister.query.reportPrintTimes
if (this.patientRegister.query.isUpload) body.isUpload = this.patientRegister.query.isUpload
if (this.patientRegister.query.medicalTypeId) body.medicalTypeId = this.patientRegister.query.medicalTypeId
if (this.patientRegister.query.medicalTypeIds) body.medicalTypeIds = this.patientRegister.query.medicalTypeIds
if (this.patientRegister.query.personnelTypeId) body.personnelTypeId = this.patientRegister.query.personnelTypeId
//console.log('/api/app/peisreport/getpatientregisterreport',body)

4
src/components/report/PatientRegisterQueryNobtn.vue

@ -83,8 +83,8 @@
</div>
<div class="query">
<span class="spanClass">体检类别</span>
<el-select v-model="patientRegister.query.medicalTypeId" placeholder="请选择" clearable filterable style="width: 75px"
size="small">
<el-select v-model="patientRegister.query.medicalTypeIds" placeholder="请选择" clearable filterable style="width: 200px"
size="small" multiple>
<el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName"
:value="item.id" />
</el-select>

608
src/views/customerReport/unitSettlement.vue

@ -8,8 +8,7 @@
</div>
</div>
<div :style="'display: block;'">
<div
style="
<div style="
background-color: #fff;
padding: 15px;
border-radius: 8px;
@ -18,51 +17,26 @@
margin-bottom: 10px;
height: 35px;
margin-top: 7px;
"
>
">
<div class="query">
<span>体检单位</span>
<el-input
placeholder="请选择体检单位"
v-model="patientRegister.query.cusOrgOCX"
style="'width:350px"
size="small"
disabled
>
<el-button
slot="append"
icon="el-icon-search"
@click="report.dialogCusOrgOCX = true"
style="font-size: 20px"
></el-button>
<el-input placeholder="请选择体检单位" v-model="patientRegister.query.cusOrgOCX" style="'width:350px" size="small"
disabled>
<el-button slot="append" icon="el-icon-search" @click="report.dialogCusOrgOCX = true"
style="font-size: 20px"></el-button>
</el-input>
</div>
<div class="query">
<span>组合项目</span>
<el-input
placeholder="请选择组合项目"
v-model="patientRegister.query.asbitemOCX"
style="'width:350px"
size="small"
disabled
>
<el-button
slot="append"
icon="el-icon-search"
@click="report.dialogAsbitemOCX = true"
style="font-size: 20px"
></el-button>
<el-input placeholder="请选择组合项目" v-model="patientRegister.query.asbitemOCX" style="'width:350px" size="small"
disabled>
<el-button slot="append" icon="el-icon-search" @click="report.dialogAsbitemOCX = true"
style="font-size: 20px"></el-button>
</el-input>
</div>
<div class="query" v-if="!cut">
<span>报表格式</span>
<el-select
v-model="registerType"
placeholder="请选择"
clearable
style="width: 80px"
size="small"
>
<el-select v-model="registerType" placeholder="请选择" clearable style="width: 80px" size="small">
<el-option label="按分组包含预登记" value="1" />
<el-option label="按分组不包含预登记" value="2" />
<el-option label="按分组实检(只检1项也算全部已检)" value="3" />
@ -70,13 +44,7 @@
</div>
<div class="query" v-if="cut">
<span>报表格式</span>
<el-select
v-model="complexregisterType"
placeholder="请选择"
clearable
style="width: 80px"
size="small"
>
<el-select v-model="complexregisterType" placeholder="请选择" clearable style="width: 80px" size="small">
<el-option label="按组合包含预登记" value="1" />
<el-option label="按组合不包含预登记" value="2" />
<el-option label="按组合实检" value="3" />
@ -84,231 +52,107 @@
</el-select>
</div>
<div class="query">
<el-checkbox
v-model="checkbox"
true-label="1"
false-label="0"
@change="bespeak"
/>
<el-checkbox v-model="checkbox" true-label="1" false-label="0" @change="bespeak" />
<span style="margin-left: 5px">显示人员名单</span>
</div>
<div class="query">
<el-checkbox
v-model="isPersonalPayment"
true-label="Y"
false-label="N"
/>
<el-checkbox v-model="isPersonalPayment" true-label="Y" false-label="N" />
<span style="margin-left: 5px">包含个人支付和免费赠送</span>
</div>
<div class="query">
<el-button size="small" @click="onSubmit" class="commonbutton"
>查询</el-button
>
<el-button size="small" @click="onSubmit" class="commonbutton">查询</el-button>
</div>
<div class="query">
<el-button size="small" class="commonbutton" @click="handleExport"
>导出excel</el-button
>
<el-button size="small" class="commonbutton" @click="handleExport">导出excel</el-button>
</div>
<div class="query">
<el-button size="small" @click="onPrint" class="commonbutton"
>打印</el-button
>
<el-button size="small" @click="onPrint" class="commonbutton">打印</el-button>
</div>
</div>
<div id="domTable">
<div
style="background-color: #fff; padding: 15px; border-radius: 8px"
ref="imageDom0"
v-show="format == 0"
>
<div style="background-color: #fff; padding: 15px; border-radius: 8px" ref="imageDom0" v-show="format == 0">
<div>
<el-table
border
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
"
:data="tableData"
id="tableData"
ref="tableData"
style="width: 100%"
show-summary
:summary-method="summarizeRegisterCountes"
>
<el-table border :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
" :data="tableData" id="tableData" ref="tableData" style="width: 100%" show-summary
:summary-method="summarizeRegisterCountes">
<el-table-column label="单位结算统计">
<template slot-scope="scope">
<el-table
:data="scope.row.groupDetails"
border
show-summary
:summary-method="summarizeRegisterCount"
>
<el-table-column
label="分组"
prop="customerOrgGroupName"
></el-table-column>
<el-table-column
label="分组价格"
prop="customerOrgGroupPrice"
></el-table-column>
<el-table-column
label="人数"
prop="patientCount"
></el-table-column>
<el-table-column
label="总金额"
prop="sumPrice"
></el-table-column>
<el-table :data="scope.row.groupDetails" border show-summary :summary-method="summarizeRegisterCount">
<el-table-column label="分组" prop="customerOrgGroupName"></el-table-column>
<el-table-column label="分组价格" prop="customerOrgGroupPrice"></el-table-column>
<el-table-column label="人数" prop="patientCount"></el-table-column>
<el-table-column label="总金额" prop="sumPrice"></el-table-column>
</el-table>
<el-table
:data="scope.row.addItems"
border
show-summary
:summary-method="summarizeRegisterCount"
>
<el-table-column
label="加做项目"
prop="asbitemName"
></el-table-column>
<el-table-column
label="价格"
prop="price"
></el-table-column>
<el-table-column
label="人数"
prop="patientCount"
></el-table-column>
<el-table-column
label="总金额"
prop="sumPrice"
></el-table-column>
<el-table :data="scope.row.addItems" border show-summary :summary-method="summarizeRegisterCount2">
<el-table-column label="加做项目" prop="asbitemName"></el-table-column>
<el-table-column label="人数" prop="patientCount"></el-table-column>
<el-table-column label="标准价格" prop="standardPrice"></el-table-column>
<el-table-column label="应收价格" prop="price"></el-table-column>
<el-table-column label="标准金额" prop="standardMoney"></el-table-column>
<el-table-column label="应收金额" prop="sumPrice"></el-table-column>
</el-table>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div
style="background-color: #fff; padding: 15px; border-radius: 8px"
ref="imageDom1"
v-show="format == 1"
>
<div style="background-color: #fff; padding: 15px; border-radius: 8px" ref="imageDom1" v-show="format == 1">
<div>
<el-table
border
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
"
:data="stafftableData"
id="stafftableData"
ref="stafftableData"
style="width: 100%"
show-summary
:summary-method="summarizeRegisterCountes"
>
<el-table border :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
" :data="stafftableData" id="stafftableData" ref="stafftableData" style="width: 100%" show-summary
:summary-method="summarizeRegisterCountes">
<el-table-column label="单位结算统计">
<template slot-scope="scope">
<el-table :data="scope.row.groupDetails" border>
<el-table-column label="分组">
<template slot-scope="scopes">
<el-table
:data="scopes.row.patients"
border
show-summary
:summary-method="
(params) =>
summarizeRegisterCounts(
params,
scopes.row.sumPrice
)
"
>
<el-table-column
:label="
scopes.row.customerOrgGroupName +
' 价格:' +
scopes.row.customerOrgGroupPrice
"
>
<el-table-column
label="姓名"
prop="patientName"
></el-table-column>
<el-table-column
label="条码号"
prop="patientRegisterNo"
></el-table-column>
<el-table-column
label="档案号"
prop="patientNo"
></el-table-column>
<el-table-column
label="性别"
prop="sexName"
></el-table-column>
<el-table-column
label="年龄"
prop="age"
></el-table-column>
<el-table :data="scopes.row.patients" border show-summary :summary-method="(params) =>
summarizeRegisterCounts(
params,
scopes.row.sumPrice
)
">
<el-table-column :label="scopes.row.customerOrgGroupName +
' 价格:' +
scopes.row.customerOrgGroupPrice
">
<el-table-column label="姓名" prop="patientName"></el-table-column>
<el-table-column label="条码号" prop="patientRegisterNo"></el-table-column>
<el-table-column label="档案号" prop="patientNo"></el-table-column>
<el-table-column label="性别" prop="sexName"></el-table-column>
<el-table-column label="年龄" prop="age"></el-table-column>
</el-table-column>
</el-table>
</template>
</el-table-column>
</el-table>
<el-table
:data="scope.row.addItems"
border
style="margin-top: 10px"
>
<el-table :data="scope.row.addItems" border style="margin-top: 10px">
<el-table-column label="加做项目">
<template slot-scope="scopes">
<el-table
:data="scopes.row.patients"
border
show-summary
:summary-method="
(params) =>
summarizeRegisterCounts(
params,
scopes.row.sumPrice
)
"
>
<el-table-column
:label="
scopes.row.asbitemName +
' 价格:' +
scopes.row.price
"
>
<el-table-column
label="姓名"
prop="patientName"
></el-table-column>
<el-table-column
label="条码号"
prop="patientRegisterNo"
></el-table-column>
<el-table-column
label="档案号"
prop="patientNo"
></el-table-column>
<el-table-column
label="性别"
prop="sexName"
></el-table-column>
<el-table-column
label="年龄"
prop="age"
></el-table-column>
<el-table :data="scopes.row.patients" border show-summary :summary-method="(params) =>
summarizeRegisterCounts(
params,
scopes.row.sumPrice
)
">
<el-table-column :label="scopes.row.asbitemName +
' 价格:' +
scopes.row.price
">
<el-table-column label="姓名" prop="patientName"></el-table-column>
<el-table-column label="条码号" prop="patientRegisterNo"></el-table-column>
<el-table-column label="档案号" prop="patientNo"></el-table-column>
<el-table-column label="性别" prop="sexName"></el-table-column>
<el-table-column label="年龄" prop="age"></el-table-column>
</el-table-column>
</el-table>
</template>
@ -319,124 +163,54 @@
</el-table>
</div>
</div>
<div
style="background-color: #fff; padding: 15px; border-radius: 8px"
ref="imageDom2"
v-show="format == 2"
>
<div style="background-color: #fff; padding: 15px; border-radius: 8px" ref="imageDom2" v-show="format == 2">
<div>
<el-table
border
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
"
:data="projecttableData"
id="projecttableData"
ref="projecttableData"
style="width: 100%"
show-summary
:summary-method="projectsummarizeRegisterCount"
>
<el-table border :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
" :data="projecttableData" id="projecttableData" ref="projecttableData" style="width: 100%"
show-summary :summary-method="projectsummarizeRegisterCount">
<el-table-column label="单位结算统计">
<el-table-column
label="项目类别"
prop="itmeTypeName"
></el-table-column>
<el-table-column
label="组合项目"
prop="asbitemName"
></el-table-column>
<el-table-column
label="标准价格"
prop="standardPrice"
></el-table-column>
<el-table-column
label="价格"
prop="chargePrice"
></el-table-column>
<el-table-column
label="人数"
prop="patientCount"
></el-table-column>
<el-table-column
label="标准金额"
prop="standardAmount"
></el-table-column>
<el-table-column
label="折扣"
prop="discount"
></el-table-column>
<el-table-column
label="金额"
prop="chargeAmount"
></el-table-column>
<el-table-column label="项目类别" prop="itmeTypeName"></el-table-column>
<el-table-column label="组合项目" prop="asbitemName"></el-table-column>
<el-table-column label="标准价格" prop="standardPrice"></el-table-column>
<el-table-column label="价格" prop="chargePrice"></el-table-column>
<el-table-column label="人数" prop="patientCount"></el-table-column>
<el-table-column label="标准金额" prop="standardAmount"></el-table-column>
<el-table-column label="折扣" prop="discount"></el-table-column>
<el-table-column label="金额" prop="chargeAmount"></el-table-column>
</el-table-column>
</el-table>
</div>
</div>
<div
style="background-color: #fff; padding: 15px; border-radius: 8px"
ref="imageDom3"
v-show="format == 3"
>
<div style="background-color: #fff; padding: 15px; border-radius: 8px" ref="imageDom3" v-show="format == 3">
<div>
<el-table
border
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
"
:data="projectcomplextableData"
id="projectcomplextableData"
ref="projectcomplextableData"
style="width: 100%"
show-summary
:summary-method="projectcomplexsummarizeRegisterCountes"
>
<el-table border :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
" :data="projectcomplextableData" id="projectcomplextableData" ref="projectcomplextableData"
style="width: 100%" show-summary :summary-method="projectcomplexsummarizeRegisterCountes">
<el-table-column label="单位结算统计">
<template slot-scope="scope">
<el-table :data="scope.row.patients" border show-summary
:summary-method="
(params) =>
projectcomplexsummarizeRegisterCounts(
params,
scope.row.chargeAmount
)
">
<el-table-column
:label="
scope.row.asbitemName +
' 价格:' +
scope.row.chargePrice
"
>
<el-table-column
label="姓名"
prop="patientName"
></el-table-column>
<el-table-column
label="条码号"
prop="patientRegisterNo"
></el-table-column>
<el-table-column
label="档案号"
prop="patientNo"
></el-table-column>
<el-table-column
label="性别"
prop="sexName"
></el-table-column>
<el-table-column
label="年龄"
prop="age"
></el-table-column>
<el-table :data="scope.row.patients" border show-summary :summary-method="(params) =>
projectcomplexsummarizeRegisterCounts(
params,
scope.row.chargeAmount
)
">
<el-table-column :label="scope.row.asbitemName +
' 价格:' +
scope.row.chargePrice
">
<el-table-column label="姓名" prop="patientName"></el-table-column>
<el-table-column label="条码号" prop="patientRegisterNo"></el-table-column>
<el-table-column label="档案号" prop="patientNo"></el-table-column>
<el-table-column label="性别" prop="sexName"></el-table-column>
<el-table-column label="年龄" prop="age"></el-table-column>
</el-table-column>
</el-table>
</template>
@ -448,23 +222,13 @@
</div>
</div>
<!--通用选单位体检次数分组的控件-->
<el-dialog
title="体检单位选择"
:visible.sync="report.dialogCusOrgOCX"
:close-on-click-modal="false"
width="880px"
height="600px"
>
<el-dialog title="体检单位选择" :visible.sync="report.dialogCusOrgOCX" :close-on-click-modal="false" width="880px"
height="600px">
<CusOrgOCX :initDateType="'creationTime'" :useCustomerOrg="true" />
</el-dialog>
<!--通用选组合项目的控件-->
<el-dialog
title="组合项目选择"
:visible.sync="report.dialogAsbitemOCX"
:close-on-click-modal="false"
width="700px"
height="600px"
>
<el-dialog title="组合项目选择" :visible.sync="report.dialogAsbitemOCX" :close-on-click-modal="false" width="700px"
height="600px">
<AsbitemOCX />
</el-dialog>
</div>
@ -498,22 +262,22 @@ export default {
complexregisterType: "2",
};
},
created() {},
created() { },
mounted() {
if(this.report.dataAsbitemOCX.length>0){
if (this.report.dataAsbitemOCX.length > 0) {
this.cut = true;
if (this.checkbox == 0) {
this.format = "2";
} else {
this.format = "3";
}
}else{
if (this.checkbox == 0) {
this.format = "2";
} else {
this.format = "3";
}
} else {
this.cut = false;
if (this.checkbox == 0) {
this.format = "0";
} else {
this.format = "1";
}
if (this.checkbox == 0) {
this.format = "0";
} else {
this.format = "1";
}
}
},
computed: {
@ -606,8 +370,8 @@ page-break-before: avoid;}}`, // 去除页眉页脚
e.dateType == "summaryDate"
? "3"
: e.dateType == "medicalStartDate"
? "2"
: "1",
? "2"
: "1",
};
if (e.customerOrgId) {
@ -680,6 +444,7 @@ page-break-before: avoid;}}`, // 去除页眉页脚
});
}
},
summarizeRegisterCount(param) {
const { columns, data } = param;
const sums = [];
@ -700,6 +465,36 @@ page-break-before: avoid;}}`, // 去除页眉页脚
return sums;
},
summarizeRegisterCount2(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = "合计";
return;
}
if (index == 4) {
let sum = 0;
data.forEach((data, index) => {
sum += Number(data.standardMoney);
});
sums[index] = sum;
return;
}
if (index === 5) {
let sum = 0;
data.forEach((data, index) => {
sum += Number(data.sumPrice);
});
sums[index] = sum;
return;
}
});
return sums;
},
summarizeRegisterCounts(param, e) {
const { columns, data } = param;
const sums = [];
@ -720,6 +515,7 @@ page-break-before: avoid;}}`, // 去除页眉页脚
return sums;
},
summarizeRegisterCountes(param) {
const { columns, data } = param;
const sums = [];
@ -744,32 +540,33 @@ page-break-before: avoid;}}`, // 去除页眉页脚
});
return sums;
},
projectsummarizeRegisterCount(param){
projectsummarizeRegisterCount(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '总计';
return;
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
} else {
sums[index] = '';
}
});
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '总计';
return;
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
} else {
sums[index] = '';
}
});
return sums;
return sums;
},
projectcomplexsummarizeRegisterCounts(param,e){
projectcomplexsummarizeRegisterCounts(param, e) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
@ -782,16 +579,16 @@ page-break-before: avoid;}}`, // 去除页眉页脚
return;
}
if (index === 4) {
sums[index] = e+'元';
sums[index] = e + '元';
return;
}
});
return sums;
},
projectcomplexsummarizeRegisterCountes(param){
const { columns, data } = param;
const sums = [];
projectcomplexsummarizeRegisterCountes(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
let sumPrice = 0;
@ -842,10 +639,10 @@ page-break-before: avoid;}}`, // 去除页眉页脚
},
updated() {
this.$nextTick(() => {
this.$refs.tableData.doLayout()
this.$refs.projecttableData.doLayout()
this.$refs.tableData.doLayout()
this.$refs.projecttableData.doLayout()
})
}
}
};
</script>
<style scoped>
@ -854,6 +651,7 @@ page-break-before: avoid;}}`, // 去除页眉页脚
@import "../../assets/css/global_input.css";
@import "../../assets/css/global_table.css";
@import "../../assets/css/global.css";
.query {
margin-right: 10px;
display: flex;
@ -864,10 +662,12 @@ page-break-before: avoid;}}`, // 去除页眉页脚
font-size: 400;
font-family: "NotoSansSC-Regular";
}
.box {
display: flex;
flex-direction: column;
}
::v-deep .el-input__inner {
/*text-align: center;*/
padding-left: 5px;
@ -887,10 +687,12 @@ page-break-before: avoid;}}`, // 去除页眉页脚
::v-deep .el-icon-search:before {
color: #00F;
}
::v-deep .el-input-group{
::v-deep .el-input-group {
width: 75%;
}
.query:last-child{
.query:last-child {
margin-right: 0;
}
</style>

352
src/views/workload/deskwork.vue

@ -4,32 +4,23 @@
<div class="middlebox">
<div class="contenttitle">
工作量统计 /
<span class="contenttitleBold"
>科室工作量统计</span
>
<span class="contenttitleBold">科室工作量统计</span>
</div>
</div>
<div :style="'display: block;'">
<div style="background-color: #fff; padding: 15px; border-radius: 8px;display: flex;flex-wrap: wrap; margin-bottom: 10px;height:35px;margin-top: 7px;">
<div
style="background-color: #fff; padding: 15px; border-radius: 8px;display: flex;flex-wrap: wrap; margin-bottom: 10px;height:35px;margin-top: 7px;">
<div class="query">
<span>科室</span>
<el-cascader
v-model="username"
:options="registrardata"
ref="example"
popper-class="example"
@change="ischangsItemTypeId"
style="width: 120px"
:props="{
value: 'id',
label: 'displayName',
children: 'treeChildren',
checkStrictly: true,
expandTrigger: 'hover',
}"
size="small"
>
</el-cascader>
<el-cascader v-model="username" :options="registrardata" ref="example" popper-class="example"
@change="ischangsItemTypeId" style="width: 120px" :props="{
value: 'id',
label: 'displayName',
children: 'treeChildren',
checkStrictly: true,
expandTrigger: 'hover',
}" size="small">
</el-cascader>
<!-- <el-select
v-model="username"
placeholder="请选择"
@ -48,39 +39,26 @@
</div>
<div class="query">
<span>开始日期</span>
<el-date-picker
type="date"
placeholder="选择开始日期"
size="small"
v-model="startDate"
value-format="yyyy-MM-dd"
editable
style="width: 150px;"
>
<el-date-picker type="date" placeholder="选择开始日期" size="small" v-model="startDate" value-format="yyyy-MM-dd"
editable style="width: 100px;">
</el-date-picker>
</div>
<div class="query">
<span>结束日期</span>
<el-date-picker
type="date"
placeholder="选择结束日期"
size="small"
v-model="endDate"
value-format="yyyy-MM-dd"
editable
style="width: 150px;"
>
<el-date-picker type="date" placeholder="选择结束日期" size="small" v-model="endDate" value-format="yyyy-MM-dd"
editable style="width: 100px;">
</el-date-picker>
</div>
<div class="query">
<span class="spanClass">体检类别</span>
<el-select v-model="medicalTypeIds" placeholder="请选择" clearable filterable style="width: 200px" size="small"
multiple>
<el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span>报表格式</span>
<el-select
v-model="format"
placeholder="请选择格式"
size="small"
@change="changeValue"
style="width: 100px"
>
<el-select v-model="format" placeholder="请选择格式" size="small" @change="changeValue" style="width: 100px">
<el-option label="标准格式" value="0" />
<el-option label="单位和医生格式" value="1" />
<el-option label="单位和组合项目格式" value="2" />
@ -102,49 +80,26 @@
<el-button size="small" @click="peiChart" class="commonbutton">饼图</el-button>
</div>
</div>
<div
style="
<div style="
display: flex;
justify-content: space-between;
position: relative;
"
id="domTable"
>
<div style="width: 47.7%;background-color: #fff; padding: 15px; border-radius: 8px;" ref="imageDom0" v-show="format == 0">
" id="domTable">
<div style="width: 47.7%;background-color: #fff; padding: 15px; border-radius: 8px;" ref="imageDom0"
v-show="format == 0">
<div>
<el-table
border
:span-method="objectStandardSpanMethod"
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
"
:data="standardTableData"
id="standardTableData"
ref="standardTableData"
style="width: 100%"
:header-cell-class-name="headerStyle"
:cell-style="tableRowClassName"
>
<el-table border :span-method="objectStandardSpanMethod" :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
" :data="standardTableData" id="standardTableData" ref="standardTableData" style="width: 100%"
:header-cell-class-name="headerStyle" :cell-style="tableRowClassName">
<el-table-column label="科室工作量统计">
<el-table-column
:label="'时间:' + startDate + '至' + endDate"
>
<el-table-column
prop="itemTypeName"
label="科室"
></el-table-column>
<el-table-column
prop="asbitemName"
label="组合项目"
></el-table-column>
<el-table-column
prop="asbitemCount"
label="人数"
></el-table-column>
<el-table-column :label="'时间:' + startDate + '至' + endDate">
<el-table-column prop="itemTypeName" label="科室"></el-table-column>
<el-table-column prop="asbitemName" label="组合项目"></el-table-column>
<el-table-column prop="asbitemCount" label="人数"></el-table-column>
<el-table-column prop="avgStandardPrice" label="标准价格">
</el-table-column>
<el-table-column prop="avgChargePrice" label="实际价格">
@ -158,70 +113,33 @@
</el-table>
</div>
</div>
<div style="width: 47.7%;background-color: #fff; padding: 15px; border-radius: 8px;" ref="imageDom1" v-show="format == 1">
<div style="width: 47.7%;background-color: #fff; padding: 15px; border-radius: 8px;" ref="imageDom1"
v-show="format == 1">
<div>
<el-table
border
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
"
:data="tableData"
id="tableData"
ref="tableData"
style="width: 100%"
:header-cell-class-name="headerStyle"
>
<el-table border :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
" :data="tableData" id="tableData" ref="tableData" style="width: 100%"
:header-cell-class-name="headerStyle">
<el-table-column label="科室工作量统计">
<el-table-column
:label="'时间:' + startDate + '至' + endDate"
>
<el-table-column :label="'时间:' + startDate + '至' + endDate">
<template slot-scope="scope">
<el-table
:data="scope.row.children"
border
:span-method="objectSpanMethod"
:cell-style="tableRowClassName"
>
<el-table :data="scope.row.children" border :span-method="objectSpanMethod"
:cell-style="tableRowClassName">
<el-table-column :label="scope.row.customerName">
<el-table-column
label="科室"
prop="itemTypeName"
></el-table-column>
<el-table-column
label="医生"
prop="doctorName"
></el-table-column>
<el-table-column
label="组合项目"
prop="asbitemName"
></el-table-column>
<el-table-column
label="人数"
prop="doctorCheckCount"
></el-table-column>
<el-table-column
prop="avgStandardPrice"
label="标准价格"
>
<el-table-column label="科室" prop="itemTypeName"></el-table-column>
<el-table-column label="医生" prop="doctorName"></el-table-column>
<el-table-column label="组合项目" prop="asbitemName"></el-table-column>
<el-table-column label="人数" prop="doctorCheckCount"></el-table-column>
<el-table-column prop="avgStandardPrice" label="标准价格">
</el-table-column>
<el-table-column
prop="avgChargePrice"
label="实际价格"
>
<el-table-column prop="avgChargePrice" label="实际价格">
</el-table-column>
<el-table-column
prop="sumStandardPrice"
label="标准金额"
>
<el-table-column prop="sumStandardPrice" label="标准金额">
</el-table-column>
<el-table-column
prop="sumChargePrice"
label="实际金额"
>
<el-table-column prop="sumChargePrice" label="实际金额">
</el-table-column>
</el-table-column>
</el-table>
@ -231,55 +149,29 @@
</el-table>
</div>
</div>
<div style="width: 47.7%;background-color: #fff; padding: 15px; border-radius: 8px;" ref="imageDom2" v-show="format == 2">
<el-table
border
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
"
:data="projectTableData"
id="projectTableData"
ref="projectTableData"
style="width: 100%"
:header-cell-class-name="headerStyle"
>
<div style="width: 47.7%;background-color: #fff; padding: 15px; border-radius: 8px;" ref="imageDom2"
v-show="format == 2">
<el-table border :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 20
: ''
" :data="projectTableData" id="projectTableData" ref="projectTableData" style="width: 100%"
:header-cell-class-name="headerStyle">
<el-table-column label="科室工作量统计">
<el-table-column :label="'时间:' + startDate + '至' + endDate">
<template slot-scope="scope">
<el-table
:data="scope.row.children"
border
:span-method="objectProjectSpanMethod"
:cell-style="tableRowClassName"
>
<el-table :data="scope.row.children" border :span-method="objectProjectSpanMethod"
:cell-style="tableRowClassName">
<el-table-column :label="scope.row.customerName">
<el-table-column
label="科室"
prop="itemTypeName"
></el-table-column>
<el-table-column
label="组合项目"
prop="asbitemName"
></el-table-column>
<el-table-column
label="人数"
prop="doctorCheckCount"
></el-table-column>
<el-table-column
prop="avgStandardPrice"
label="标准价格"
>
<el-table-column label="科室" prop="itemTypeName"></el-table-column>
<el-table-column label="组合项目" prop="asbitemName"></el-table-column>
<el-table-column label="人数" prop="doctorCheckCount"></el-table-column>
<el-table-column prop="avgStandardPrice" label="标准价格">
</el-table-column>
<el-table-column prop="avgChargePrice" label="实际价格">
</el-table-column>
<el-table-column
prop="sumStandardPrice"
label="标准金额"
>
<el-table-column prop="sumStandardPrice" label="标准金额">
</el-table-column>
<el-table-column prop="sumChargePrice" label="实际金额">
</el-table-column>
@ -290,23 +182,19 @@
</el-table-column>
</el-table>
</div>
<div
:style="
'width: 47.7%;overflow: hidden;height:' +
(window.pageHeight < 600 ? 415 : window.pageHeight - 185 - 20) +
'px;background-color: #fff; padding: 15px; border-radius: 8px;'
"
>
<div style=" font-size: 20px;
<div :style="'width: 47.7%;overflow: hidden;height:' +
(window.pageHeight < 600 ? 415 : window.pageHeight - 185 - 20) +
'px;background-color: #fff; padding: 15px; border-radius: 8px;'
">
<div style=" font-size: 20px;
font-weight: 700;
color: #232748;
font-family: 'NotoSansSC-Bold';
text-align: center;">科室工作量统计</div>
<div :style="
'height:' +(window.pageHeight < 600 ? 387 : window.pageHeight - 185 - 48) +'px;'
">
<ChartBlock ref="chart2"></ChartBlock>
</div>
<div :style="'height:' + (window.pageHeight < 600 ? 387 : window.pageHeight - 185 - 48) + 'px;'
">
<ChartBlock ref="chart2"></ChartBlock>
</div>
</div>
</div>
</div>
@ -331,6 +219,7 @@ export default {
username: [],
startDate: "",
endDate: "",
medicalTypeIds:[],
tableData: [],
standardTableData: [],
projectTableData: [],
@ -352,8 +241,19 @@ export default {
},
mounted() {
this.getNowTime();
this.dictInit();
},
methods: {
dictInit() {
//
getapi("/api/app/medical-type/in-filter").then((res) => {
if (res.code != -1) {
this.dict.medicalType = res.data;
}
});
},
tableRowClassName({ row, column, rowIndex, columnIndex }) {
if (row.asbitemName == "合计") {
return { backgroundColor: "#F5F7FA" };
@ -554,11 +454,12 @@ page-break-before: avoid;}}`, // 去除页眉页脚
itemTypeId: that.username,
startDate: that.startDate,
endDate: that.endDate,
medicalTypeIds:this.medicalTypeIds
}).then((res) => {
if (res.code != -1) {
this.pieData=[];
this.yAxisData=[];
this.seriesData=[];
this.pieData = [];
this.yAxisData = [];
this.seriesData = [];
that.computedStandardTableData(res.data);
}
});
@ -874,17 +775,17 @@ page-break-before: avoid;}}`, // 去除页眉页脚
tableData[j].children.forEach((item) => {
if (
item.itemTypeName ===
newTableData[i].children[k].itemTypeName &&
newTableData[i].children[k].itemTypeName &&
item.doctorName == key
) {
totalRow.customerName = item.customerName;
totalRow.itemTypeName = item.itemTypeName;
totalRow.doctorName = item.doctorName;
totalRow.doctorCheckCount += item.doctorCheckCount;
totalRow.avgStandardPrice =(Number(totalRow.avgStandardPrice)+Number(item.avgStandardPrice)).toFixed(2)
totalRow.avgChargePrice =(Number(totalRow.avgChargePrice)+Number(item.avgChargePrice)).toFixed(2)
totalRow.sumStandardPrice =(Number(totalRow.sumStandardPrice)+Number(item.sumStandardPrice)).toFixed(2)
totalRow.sumChargePrice =(Number(totalRow.sumChargePrice)+Number(item.sumChargePrice)).toFixed(2)
totalRow.avgStandardPrice = (Number(totalRow.avgStandardPrice) + Number(item.avgStandardPrice)).toFixed(2)
totalRow.avgChargePrice = (Number(totalRow.avgChargePrice) + Number(item.avgChargePrice)).toFixed(2)
totalRow.sumStandardPrice = (Number(totalRow.sumStandardPrice) + Number(item.sumStandardPrice)).toFixed(2)
totalRow.sumChargePrice = (Number(totalRow.sumChargePrice) + Number(item.sumChargePrice)).toFixed(2)
}
});
tableData[j].children.push(totalRow);
@ -957,10 +858,10 @@ page-break-before: avoid;}}`, // 去除页眉页脚
totalRow.itemTypeName = item.itemTypeName;
// totalRow.asbitemName = item.asbitemName;
totalRow.doctorCheckCount += item.doctorCheckCount;
totalRow.avgStandardPrice =(Number(totalRow.avgStandardPrice)+Number(item.avgStandardPrice)).toFixed(2)
totalRow.avgChargePrice =(Number(totalRow.avgChargePrice)+Number(item.avgChargePrice)).toFixed(2)
totalRow.sumStandardPrice =(Number(totalRow.sumStandardPrice)+Number(item.sumStandardPrice)).toFixed(2)
totalRow.sumChargePrice =(Number(totalRow.sumChargePrice)+Number(item.sumChargePrice)).toFixed(2)
totalRow.avgStandardPrice = (Number(totalRow.avgStandardPrice) + Number(item.avgStandardPrice)).toFixed(2)
totalRow.avgChargePrice = (Number(totalRow.avgChargePrice) + Number(item.avgChargePrice)).toFixed(2)
totalRow.sumStandardPrice = (Number(totalRow.sumStandardPrice) + Number(item.sumStandardPrice)).toFixed(2)
totalRow.sumChargePrice = (Number(totalRow.sumChargePrice) + Number(item.sumChargePrice)).toFixed(2)
}
});
tableData[j].children.push(totalRow);
@ -999,10 +900,10 @@ page-break-before: avoid;}}`, // 去除页眉页脚
totalRow.itemTypeName = item.itemTypeName;
pie.name = item.itemTypeName;
totalRow.asbitemCount += item.asbitemCount;
totalRow.avgStandardPrice =(Number(totalRow.avgStandardPrice)+Number(item.avgStandardPrice)).toFixed(2)
totalRow.avgChargePrice =(Number(totalRow.avgChargePrice)+Number(item.avgChargePrice)).toFixed(2)
totalRow.sumStandardPrice =(Number(totalRow.sumStandardPrice)+Number(item.sumStandardPrice)).toFixed(2)
totalRow.sumChargePrice =(Number(totalRow.sumChargePrice)+Number(item.sumChargePrice)).toFixed(2)
totalRow.avgStandardPrice = (Number(totalRow.avgStandardPrice) + Number(item.avgStandardPrice)).toFixed(2)
totalRow.avgChargePrice = (Number(totalRow.avgChargePrice) + Number(item.avgChargePrice)).toFixed(2)
totalRow.sumStandardPrice = (Number(totalRow.sumStandardPrice) + Number(item.sumStandardPrice)).toFixed(2)
totalRow.sumChargePrice = (Number(totalRow.sumChargePrice) + Number(item.sumChargePrice)).toFixed(2)
pie.value = totalRow.sumStandardPrice;
}
});
@ -1055,23 +956,27 @@ page-break-before: avoid;}}`, // 去除页眉页脚
@import "../../assets/css/global_form.css";
@import "../../assets/css/global_input.css";
@import "../../assets/css/global.css";
.query{
margin-right: 10px;
display: flex;
justify-content: center;
align-items: center;
font-size: 14px;
color: #232748;
font-size: 400;
font-family: "NotoSansSC-Regular";
.query {
margin-right: 10px;
display: flex;
justify-content: center;
align-items: center;
font-size: 14px;
color: #232748;
font-size: 400;
font-family: "NotoSansSC-Regular";
}
.box {
display: flex;
flex-direction: column;
}
:deep .left-align .cell {
text-align: left !important;
}
/* ::v-deep .el-table__body-wrapper::-webkit-scrollbar {
width: 0px;
background: rgba(213, 215, 220, 0.3);
@ -1084,14 +989,17 @@ page-break-before: avoid;}}`, // 去除页眉页脚
display: none;
width: 0;
}
::v-deep .el-table colgroup col[name="gutter"] {
display: none;
width: 0;
}
::v-deep .el-table__body {
width: 100% !important;
}
.query:last-child{
.query:last-child {
margin-right: 0;
}
</style>
Loading…
Cancel
Save