pengjun 4 weeks ago
parent
commit
a7ddcfa405
  1. 53
      src/components/customerOrg/customerOrgGroupAsbitem.vue
  2. 12
      src/views/customerOrg/patientRegisterImport.vue
  3. 321
      src/views/customerReport/positiveResultsList.vue
  4. 2
      src/views/doctorCheck/sumDoctorCheck.vue
  5. 210
      src/views/workload/directordoctor.vue
  6. 188
      src/views/workload/doctorstaionworkload.vue
  7. 154
      src/views/workload/examinedoctor.vue

53
src/components/customerOrg/customerOrgGroupAsbitem.vue

@ -88,7 +88,27 @@
</el-table-column>
<el-table-column label="应收金额" prop="customerOrgGroupDetailMoney" min-width="60" align="center">
</el-table-column>
</el-table>
</el-table>
</div>
<div v-show="false" id="expCustomerOrgGroupsDetail">
<el-table :data="customerOrgGroupAsbitems" border size="small" :height="tableHeight" :summary-method="getSummaries" show-summary>
<!--
<el-table-column type="selection"></el-table-column>
-->
<el-table-column type="index" width="40" align="center" />
<el-table-column label="已选组合项目" min-width="140" prop="displayName"></el-table-column>
<el-table-column label="标准价格" prop="price" min-width="60" align="center" />
<el-table-column label="折扣" prop="discount" min-width="40" align="center">
</el-table-column>
<el-table-column label="应收价格" prop="customerOrgGroupDetailPrice" min-width="60" align="center">
</el-table-column>
<el-table-column label="数量" prop="customerOrgGroupDetailAmount" width="50" align="center">
</el-table-column>
<el-table-column label="标准金额" prop="asbitemMoney" min-width="60" align="center">
</el-table-column>
<el-table-column label="应收金额" prop="customerOrgGroupDetailMoney" min-width="60" align="center">
</el-table-column>
</el-table>
</div>
</div>
</div>
@ -97,19 +117,22 @@
<div v-show="checkPagePriv(pagePriv.privs, '复制分组')" style="margin-top: 50px;">
<el-button class="commonbutton" @click="btnCopyGroup">复制分组</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '复制套餐')" style="margin-top: 10px;">
<div v-show="checkPagePriv(pagePriv.privs, '复制套餐')" style="margin-top: 5px;">
<el-button class="commonbutton" @click="btnCopyMedicalPackage">复制套餐</el-button>
</div>
<div style="margin-top: 10px;">
<div style="margin-top: 5px;">
<el-button class="commonbutton" @click="btnCopyGroupAsbitem">复制</el-button>
</div>
<div style="margin-top: 10px;">
<div style="margin-top: 5px;">
<el-button class="commonbutton" @click="btnPastGroupAsbitem"
:disabled="dataTransOpts?.copyGroupAsbitem?.length > 0 ? false : true">粘贴</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '保存')" style="margin-top: 10px;">
<div v-show="checkPagePriv(pagePriv.privs, '保存')" style="margin-top: 5px;">
<el-button class="commonbutton" @click="btnSave">保存</el-button>
</div>
<div style="margin-top: 5px;">
<el-button class="commonbutton" @click="btnExport('expCustomerOrgGroupsDetail')">导出</el-button>
</div>
</div>
<!--复制套餐-->
@ -241,6 +264,7 @@ import moment from 'moment';
import { mapState } from "vuex";
import { getapi, postapi, putapi } from "@/api/api";
import { getPagePriv, checkPagePriv, arrayExistObj, tcdate, arrayFilter, arrayReduce, deepCopy, objCopy, dddw } from "../../utlis/proFunc";
import FileSaver from 'file-saver';
export default {
props: ['customerOrgGroup', 'curOrgGroups', 'customerOrgAll', 'curOrgRegister', 'curOrgRegisterList', 'refreshMoney'],
@ -329,6 +353,25 @@ export default {
})
},
//
btnExport(elId) {
// HTML
// let table = document.getElementById(elId); //.cloneNode(true)
this.$nextTick(() => {
// let refsTable = this.$refs[elId] //.cloneNode(true) true
let table = document.getElementById(elId)
// console.log('table,refsTable', table, refsTable)
let tableData = table.innerHTML
let fileName = moment(new Date()).format('yyyyMMDDHHmmss')
let blob = new Blob([tableData], { type: "text/plain;charset=utf-8" });
FileSaver.saveAs(blob, fileName + '.xls');
})
},
//
dictInit() {
//

12
src/views/customerOrg/patientRegisterImport.vue

@ -258,6 +258,13 @@
<div>{{ moment(scope.row.birthDate).format('yyyy-MM-DD') }}</div>
</template>
</el-table-column>
<el-table-column prop="customerOrgName" align="center" label="单位" min-width="150" />
<el-table-column prop="departmentName" align="center" label="部门" min-width="100" />
<el-table-column align="center" label="分组/套餐" min-width="150" >
<template slot-scope="scope">
<div>{{ scope.row.customerOrgGroupName || scope.row.medicalPackageName }}</div>
</template>
</el-table-column>
<el-table-column prop="telephone" align="center" label="电话" min-width="130" />
<el-table-column prop="mobileTelephone" align="center" label="手机" min-width="130" />
</el-table>
@ -360,6 +367,11 @@
<el-table-column prop="age" align="center" label="年龄" min-width="40" />
<el-table-column prop="customerOrgParentName" align="center" label="单位" min-width="150" />
<el-table-column prop="customerOrgName" align="center" label="部门" min-width="120" />
<el-table-column align="center" label="分组/套餐" min-width="150">
<template slot-scope="scope">
<div>{{ scope.row.customerOrgGroupName || scope.row.medicalPackageName }}</div>
</template>
</el-table-column>
<el-table-column prop="telephone" align="center" label="电话" min-width="100" />
<el-table-column prop="mobileTelephone" align="center" label="手机" min-width="100" />
<el-table-column prop="creatorName" align="center" label="登记人员" min-width="80" />

321
src/views/customerReport/positiveResultsList.vue

@ -4,56 +4,31 @@
<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-input
placeholder="请选择体检单位"
v-model="patientRegister.query.cusOrgOCX"
style="width: 240px"
size="small"
disabled
>
<el-button
slot="append"
icon="el-icon-search"
@click="diagnosis.dialogCusOrgOCX = true"
style="font-size: 20px"
></el-button>
<el-input placeholder="请选择体检单位" v-model="patientRegister.query.cusOrgOCX" style="width: 240px" size="small"
disabled>
<el-button slot="append" icon="el-icon-search" @click="diagnosis.dialogCusOrgOCX = true"
style="font-size: 20px"></el-button>
</el-input>
</div>
<div class="query">
<span>诊断</span>
<el-input
placeholder="请选择诊断"
v-model="patientRegister.query.StatisticsOCX"
style="width: 200px"
size="small"
disabled
>
<el-button
slot="append"
icon="el-icon-search"
@click="diagnosis.dialogAsbitemOCX = true"
style="font-size: 20px"
></el-button>
<el-input placeholder="请选择诊断" v-model="patientRegister.query.StatisticsOCX" style="width: 200px"
size="small" disabled>
<el-button slot="append" icon="el-icon-search" @click="diagnosis.dialogAsbitemOCX = true"
style="font-size: 20px"></el-button>
</el-input>
</div>
<div class="query">
<span>检查状态</span>
<el-select
v-model="completeFlag"
placeholder="请选择"
clearable
style="width: 80px"
size="small"
>
<el-select v-model="completeFlag" placeholder="请选择" clearable style="width: 80px" size="small">
<el-option label="预登记" value="0" />
<el-option label="正式登记" value="1" />
<el-option label="部份已检" value="2" />
@ -62,98 +37,58 @@
</div>
<div class="query">
<span>审核状态</span>
<el-select
v-model="classification"
placeholder="请选择"
clearable
style="width: 80px"
size="small"
@clear="classification = null"
>
<el-select v-model="classification" placeholder="请选择" clearable style="width: 80px" size="small"
@clear="classification = null">
<el-option label="已审核" value="Y" />
<el-option label="未审核" value="N" />
</el-select>
</div>
<div class="query">
<span>报表格式</span>
<el-select
v-model="format"
placeholder="请选择"
style="width: 80px"
size="small"
@change="changeValue"
>
<el-select v-model="format" placeholder="请选择" style="width: 80px" size="small" @change="changeValue">
<el-option label="标准格式" value="0" />
<el-option label="精简格式" value="1" />
</el-select>
</div>
<div class="query">
<el-button @click="btnQuery" size="small" class="commonbutton"
>查询</el-button
>
<el-button @click="btnQuery" size="small" class="commonbutton">查询</el-button>
</div>
<div class="query">
<el-button @click="handleExport" size="small" class="commonbutton"
>导出excel</el-button
>
<el-button @click="handleExport" size="small" class="commonbutton">导出excel</el-button>
</div>
<div class="query">
<el-button @click="onPrint" size="small" class="commonbutton"
>打印</el-button
>
<el-button @click="onPrint" size="small" class="commonbutton">打印</el-button>
</div>
</div>
<div v-show="format == 0" ref="imageDom0">
<div style="background-color: #fff; padding: 15px; border-radius: 8px;">
<el-table
border
:height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 25: ''
"
:data="dataList"
id="projectTableData"
ref="projectTableData"
style="width: 100%"
show-summary
:summary-method="getSummaries"
>
<el-table border :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 25 : ''
" :data="dataList" id="projectTableData" ref="projectTableData" style="width: 100%" show-summary
:summary-method="getSummaries">
<el-table-column label="阳性结果人员清单">
<el-table-column :label="`开始时间: ${summary.startDate || ''} 结束时间:${summary.endDate || ''} 男性: ${summary.maleCount}人 女性: ${summary.femaleCount}人`" align="left">
<template slot-scope="scope">
<el-table
:data="scope.row.patientRegisters"
border
:span-method="objectProjectSpanMethod"
show-summary
:summary-method="summarizeRegisterCount"
>
<el-table-column
align="left">
<template slot="header">
<div>
<div>{{ "开始时间: " + summary.startDate || '' +" 结束时间: " + summary.endDate || ''}}</div>
<div>{{ "阳性人数:男性:" + summary.maleCount + "人 女性: " + summary.femaleCount + "人;总人数:男性:" + summary.registerMaleCount + "人 女性: " + summary.registerFemaleCount + "人。"}}</div>
</div>
</template>
<template slot-scope="scope">
<el-table :data="scope.row.patientRegisters" border :span-method="objectProjectSpanMethod"
show-summary :summary-method="summarizeRegisterCount">
<el-table-column :label="scope.row.diagnosisName">
<el-table-column
label="部门名称"
prop="departmentName"
width="300"
></el-table-column>
<el-table-column
label="姓名"
prop="patientName"
></el-table-column>
<el-table-column
label="性别"
prop="sexName"
></el-table-column>
<el-table-column
prop="age"
label="年龄"
>
<el-table-column label="部门名称" prop="departmentName" width="300"></el-table-column>
<el-table-column label="姓名" prop="patientName"></el-table-column>
<el-table-column label="性别" prop="sexName"></el-table-column>
<el-table-column prop="age" label="年龄">
</el-table-column>
<el-table-column prop="patientRegisterNo" label="条码号">
</el-table-column>
<el-table-column
prop="patientNo"
label="档案号"
>
<el-table-column prop="patientNo" label="档案号">
</el-table-column>
<el-table-column prop="medicalTimes" label="体检次数">
</el-table-column>
@ -171,46 +106,30 @@
</div>
<div v-show="format == 1" ref="imageDom1">
<div style="background-color: #fff; padding: 15px; border-radius: 8px;">
<el-table
border
:height="
flag
? window.pageHeight < 600 ? 415 : window.pageHeight - 185-25: ''
"
:data="dataLists"
id="standardTableData"
ref="standardTableData"
style="width: 100%"
show-summary
:summary-method="getSummaris"
>
<el-table border :height="flag
? window.pageHeight < 600 ? 415 : window.pageHeight - 185 - 25 : ''
" :data="dataLists" id="standardTableData" ref="standardTableData" style="width: 100%" show-summary
:summary-method="getSummaris">
<el-table-column label="阳性结果人员清单">
<el-table-column :label="`开始时间: ${summary.startDate || ''} 结束时间:${summary.endDate || ''}体检人员共计: ${(summary.maleCount+summary.femaleCount)}人 男性: ${summary.maleCount}人 女性: ${summary.femaleCount}人`" align="left">
<el-table-column
prop="diagnosisName"
label="诊断名称"
></el-table-column>
<el-table-column
prop="patientNameDetail"
label="人员清单"
>
<template slot-scope="scope">
<div style="display: flex;flex-direction: row;flex-wrap: wrap;">
<span v-for="(item, index) in scope.row.patientNameDetail" :key="index" style="width:20%;text-align: center;">{{item}}{{index+1==scope.row.patientNameDetail.length?'':','}}</span>
</div>
</template>
</el-table-column>
<el-table-column
prop="patientCount"
label="人数"
align="center"
></el-table-column>
<el-table-column prop="percentage" label="占百分比" align="center">
<template slot-scope="scope">
<span>{{ scope.row.percentage }}%</span
>
</template>
</el-table-column>
:label="`开始时间: ${summary.startDate || ''} 结束时间:${summary.endDate || ''}体检人员共计: ${(summary.maleCount + summary.femaleCount)}人 男性: ${summary.maleCount}人 女性: ${summary.femaleCount}人`"
align="left">
<el-table-column prop="diagnosisName" label="诊断名称"></el-table-column>
<el-table-column prop="patientNameDetail" label="人员清单">
<template slot-scope="scope">
<div style="display: flex;flex-direction: row;flex-wrap: wrap;">
<span v-for="(item, index) in scope.row.patientNameDetail" :key="index"
style="width:20%;text-align: center;">{{ item }}{{ index + 1 ==
scope.row.patientNameDetail.length ? '' : ',' }}</span>
</div>
</template>
</el-table-column>
<el-table-column prop="patientCount" label="人数" align="center"></el-table-column>
<el-table-column prop="percentage" label="占百分比" align="center">
<template slot-scope="scope">
<span>{{ scope.row.percentage }}%</span>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
@ -219,23 +138,13 @@
</div>
</div>
<!--通用选单位体检次数分组的控件-->
<el-dialog
title="体检单位选择"
:visible.sync="diagnosis.dialogCusOrgOCX"
:close-on-click-modal="false"
width="880px"
height="600px"
>
<el-dialog title="体检单位选择" :visible.sync="diagnosis.dialogCusOrgOCX" :close-on-click-modal="false" width="880px"
height="600px">
<CusOrgOCX :initDateType="'creationTime'" :useCustomerOrg="true" />
</el-dialog>
<!--通用选组合项目的控件-->
<el-dialog
title="诊断选择"
:visible.sync="diagnosis.dialogAsbitemOCX"
:close-on-click-modal="false"
width="700px"
height="600px"
>
<el-dialog title="诊断选择" :visible.sync="diagnosis.dialogAsbitemOCX" :close-on-click-modal="false" width="700px"
height="600px">
<StatisticsOCX />
</el-dialog>
</div>
@ -272,11 +181,13 @@ export default {
mergedColumnes: ["departmentName"],
spanMaps: {},
flag: true,
summary:{
startDate:"",
endDate:"",
femaleCount:"",
maleCount:""
summary: {
startDate: "",
endDate: "",
femaleCount: "", //
maleCount: "",
registerMaleCount: "", //
registerFemaleCount: ""
}
};
},
@ -329,7 +240,7 @@ export default {
this.dict.itemTypeTree = res.data;
tcdate(this.dict.itemTypeTree);
}
});
});
postapi("/api/app/Diagnosis/GetSimpleList").then((res) => {
if (res.code == 1) {
this.dict.asbItemAll = res.data;
@ -374,19 +285,19 @@ export default {
return sums;
},
getSummaries(param){
getSummaries(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if(index === 0){
let num=0
data.forEach((item,index)=>{
num+=item.patientRegisters.length
if (index === 0) {
let num = 0
data.forEach((item, index) => {
num += item.patientRegisters.length
})
sums[index] = "合计:" + num + "人";
}
})
return sums
return sums
},
summarizeRegisterCount(param) {
const { columns, data } = param;
@ -457,16 +368,16 @@ export default {
};
}
},
ForwardRanking(data){
for (let i = 0; i < data.length; i++) {
ForwardRanking(data) {
for (let i = 0; i < data.length; i++) {
data[i].patientRegisters.sort(function (a, b) {
return a.departmentName > b.departmentName ? -1 : 1; //
});
}
for(let i = 0; i < data.length; i++){
for(let k=0;k<data[i].patientRegisters.length;k++){
let diagnosisName=data[i].diagnosisName
data[i].patientRegisters[k].diagnosisName=diagnosisName
for (let i = 0; i < data.length; i++) {
for (let k = 0; k < data[i].patientRegisters.length; k++) {
let diagnosisName = data[i].diagnosisName
data[i].patientRegisters[k].diagnosisName = diagnosisName
}
}
this.dataList = data;
@ -485,8 +396,8 @@ export default {
e.dateType == "summaryDate"
? "3"
: e.dateType == "medicalStartDate"
? "2"
: "1",
? "2"
: "1",
};
if (e.customerOrgId) {
@ -522,13 +433,15 @@ export default {
).then((res) => {
if (res.code != -1) {
this.ForwardRanking(res.data.details)
this.summary.startDate=res.data.startDate;
this.summary.endDate=res.data.endDate;
this.summary.femaleCount=res.data.femaleCount;
this.summary.maleCount=res.data.maleCount;
this.summary.startDate = res.data.startDate;
this.summary.endDate = res.data.endDate;
this.summary.femaleCount = res.data.femaleCount;
this.summary.maleCount = res.data.maleCount;
this.summary.registerMaleCount = res.data.registerMaleCount;
this.summary.registerFemaleCount = res.data.registerFemaleCount;
this.$nextTick(() => {
this.$refs.projectTableData.doLayout();
});
this.$refs.projectTableData.doLayout();
});
}
});
} else {
@ -538,13 +451,13 @@ export default {
).then((res) => {
if (res.code != -1) {
this.dataLists = res.data.details;
this.summary.startDate=res.data.startDate;
this.summary.endDate=res.data.endDate;
this.summary.femaleCount=res.data.femaleCount;
this.summary.maleCount=res.data.maleCount;
this.summary.startDate = res.data.startDate;
this.summary.endDate = res.data.endDate;
this.summary.femaleCount = res.data.femaleCount;
this.summary.maleCount = res.data.maleCount;
this.$nextTick(() => {
this.$refs.standardTableData.doLayout();
});
this.$refs.standardTableData.doLayout();
});
}
});
}
@ -585,16 +498,16 @@ page-break-before: avoid;}}`, // 去除页眉页脚
},
handleExport() {
if (this.format == 0) {
let index = 3;
let index = 3;
let list = [];
list.push(index);
for (let i = 0; i < this.dataList.length - 1; i++) {
index += this.dataList[i].patientRegisters.length + 4;
list.push(index);
}
exportToExcel("#projectTableData", "阳性结果人员清单", true,list);
exportToExcel("#projectTableData", "阳性结果人员清单", true, list);
} else if (this.format == 1) {
exportToExcel("#standardTableData", "阳性结果人员清单",false);
exportToExcel("#standardTableData", "阳性结果人员清单", false);
}
},
},
@ -618,20 +531,23 @@ 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;
}
::v-deep .el-input__inner {
/*text-align: center;*/
padding-left: 5px;
@ -651,7 +567,8 @@ page-break-before: avoid;}}`, // 去除页眉页脚
::v-deep .el-icon-search:before {
color: #00F;
}
.query:last-child{
.query:last-child {
margin-right: 0;
}
</style>

2
src/views/doctorCheck/sumDoctorCheck.vue

@ -444,12 +444,14 @@
<el-button type="primary" class="commonbutton" @click="btnReport"
:disabled="manBtnDisabled">体检报告</el-button>
</div>
<!-- 放在 tab 标签中此处屏蔽
<div v-show="checkPagePriv(pagePriv.privs, '复查')" class="listBtn">
<el-button type="primary" class="commonbutton" @click="btnReCheck" :disabled="manBtnDisabled">复查</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '随访')" class="listBtn">
<el-button type="primary" class="commonbutton" @click="btnReCall" :disabled="manBtnDisabled">随访</el-button>
</div>
-->
<div v-show="false" class="listBtn">
<el-button type="primary" class="commonbutton" @click="btnIntervene"
:disabled="manBtnDisabled">干预措施</el-button>

210
src/views/workload/directordoctor.vue

@ -4,56 +4,29 @@
<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-select
v-model="username"
placeholder="请选择"
size="small"
multiple
filterable
:multiple-limit=2
>
<el-option
v-for="item in registrardata"
:key="item.id"
:label="item.surname"
:value="item.id"
>
<el-select v-model="username" placeholder="请选择" size="small" multiple filterable :multiple-limit=2>
<el-option v-for="item in registrardata" :key="item.id" :label="item.surname" :value="item.id">
</el-option>
</el-select>
</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: 177px;"
>
<el-date-picker type="date" placeholder="选择开始日期" size="small" v-model="startDate" value-format="yyyy-MM-dd"
editable style="width: 177px;">
</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: 177px;"
>
<el-date-picker type="date" placeholder="选择结束日期" size="small" v-model="endDate" value-format="yyyy-MM-dd"
editable style="width: 177px;">
</el-date-picker>
</div>
<div class="query">
@ -65,21 +38,18 @@
<div class="query">
<el-button size="small" @click="onPrint" class="commonbutton">打印</el-button>
</div>
<div class="query">
<div class="query">
<el-button size="small" @click="columnarChart" class="commonbutton">柱状图</el-button>
</div>
<div class="query">
<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"
>
" id="domTable">
<div style="width: 47.7%;background-color: #fff; padding: 15px; border-radius: 8px;" ref="imageDom">
<!-- <h3 align="center">登记员工作量统计</h3>
- 53-18
@ -87,50 +57,42 @@
时间<span>{{ startDate }}</span
><span>{{ endDate }}</span>
</h5> -->
<el-table
border
show-summary
:summary-method="summarizeRegisterCount"
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185- 25
: ''
"
:data="tableData"
id="table"
ref="table"
style="width: 100%"
:header-cell-class-name="headerStyle"
>
<el-table border show-summary :summary-method="summarizeRegisterCount" :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 25
: ''
" :data="tableData" id="table" ref="table" style="width: 100%" :header-cell-class-name="headerStyle">
<el-table-column label="总检医生工作量统计">
<el-table-column :label="'时间:'+startDate+'至'+endDate">
<el-table-column prop="sumCheckDoctorName" label="医生"></el-table-column>
<el-table-column prop="sumCheckCount" label="人数"></el-table-column>
<el-table-column prop="percentage" label="占总检总人数百分比">
</el-table-column>
<el-table-column :label="'时间:' + startDate + '至' + endDate">
<el-table-column prop="sumCheckDoctorName" label="医生">
<template slot-scope="scope">
<div>
<div>{{ scope.row.doctorCode }}</div>
<div>{{ scope.row.sumCheckDoctorName }}</div>
</div>
</template>
</el-table-column>
<el-table-column prop="sumCheckCount" label="人数"></el-table-column>
<el-table-column prop="percentage" label="占总检总人数百分比">
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
</div>
<div
:style="
'width: 47.7%;overflow: hidden;height:' +
(window.pageHeight < 600 ? 415 : window.pageHeight - 185 - 25) +
'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 - 25) +
'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>
@ -263,37 +225,37 @@ export default {
};
this.$refs.chart2.setOption(option2);
},
headerStyle({ row, column, rowIndex, columnIndex }) {
if(rowIndex===1){
return 'left-align'
headerStyle({ row, column, rowIndex, columnIndex }) {
if (rowIndex === 1) {
return 'left-align'
}
},
summarizeRegisterCount(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计';
return;
}
},
summarizeRegisterCount(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 (index===1) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] = '共'+sums[index]+'人';
} else {
sums[index] = '';
}
});
const values = data.map(item => Number(item[column.property]));
if (index === 1) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] = '共' + sums[index] + '人';
} else {
sums[index] = '';
}
});
return sums;
return sums;
},
onPrint() {
this.flag = false;
@ -346,7 +308,7 @@ export default {
that.tableData = [...res.data];
this.yAxisData = [];
this.seriesData = [];
this.pieData=[]
this.pieData = []
let pies = {
name: "",
value: 0,
@ -355,8 +317,8 @@ export default {
let pie = JSON.parse(JSON.stringify(pies));
this.yAxisData.push(res.data[i].sumCheckDoctorName);
this.seriesData.push(res.data[i].sumCheckCount);
pie.name=res.data[i].sumCheckDoctorName
pie.value=res.data[i].sumCheckCount
pie.name = res.data[i].sumCheckDoctorName
pie.value = res.data[i].sumCheckCount
this.pieData.push(pie)
}
this.columnarChart();
@ -391,7 +353,7 @@ export default {
this.endDate = defaultDate;
},
handleExport() {
exportToExcel("#table", "总检医生工作量统计",false);
exportToExcel("#table", "总检医生工作量统计", false);
},
},
computed: {
@ -411,30 +373,36 @@ export default {
@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-weight: 400;
font-family: "NotoSansSC-Regular";
.query {
margin-right: 10px;
display: flex;
justify-content: center;
align-items: center;
font-size: 14px;
color: #232748;
font-weight: 400;
font-family: "NotoSansSC-Regular";
}
.box {
display: flex;
flex-direction: column;
}
:deep .left-align .cell {
text-align: left !important;
}
.query:last-child{
.query:last-child {
margin-right: 0;
}
:deep .el-input--suffix .el-input__inner{
:deep .el-input--suffix .el-input__inner {
height: 32px !important;
}
:deep .el-select__tags{
:deep .el-select__tags {
flex-wrap: nowrap;
}
</style>

188
src/views/workload/doctorstaionworkload.vue

@ -8,8 +8,7 @@
</div>
</div>
<div :style="'display: block;'">
<div
style="
<div style="
background-color: #fff;
padding: 15px;
border-radius: 8px;
@ -18,170 +17,108 @@
margin-bottom: 10px;
height: 35px;
margin-top: 7px;
"
>
">
<div class="query">
<span>医生</span>
<el-select
v-model="username"
placeholder="请选择"
size="small"
multiple
filterable
:multiple-limit=2
>
<el-option
v-for="item in registrardata"
:key="item.id"
:label="item.surname"
:value="item.id"
>
<el-select v-model="username" placeholder="请选择" size="small" multiple filterable :multiple-limit=2>
<el-option v-for="item in registrardata" :key="item.id" :label="item.surname" :value="item.id">
</el-option>
</el-select>
</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: 177px"
>
<el-date-picker type="date" placeholder="选择开始日期" size="small" v-model="startDate" value-format="yyyy-MM-dd"
editable style="width: 177px">
</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: 177px"
>
<el-date-picker type="date" placeholder="选择结束日期" size="small" v-model="endDate" value-format="yyyy-MM-dd"
editable style="width: 177px">
</el-date-picker>
</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" @click="handleExport" class="commonbutton"
>导出excel</el-button
>
<el-button size="small" @click="handleExport" class="commonbutton">导出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 class="query">
<el-button size="small" @click="columnarChart" class="commonbutton"
>柱状图</el-button
>
<el-button size="small" @click="columnarChart" class="commonbutton">柱状图</el-button>
</div>
<div class="query">
<el-button size="small" @click="peiChart" class="commonbutton"
>饼图</el-button
>
<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="
" id="domTable">
<div style="
width: 47.7%;
background-color: #fff;
padding: 15px;
border-radius: 8px;
"
ref="imageDom"
>
" ref="imageDom">
<!-- <h3 align="center">登记员工作量统计</h3>
- 53-18
<h5 align="right" style="margin-bottom: 5px;">
时间<span>{{ startDate }}</span
><span>{{ endDate }}</span>
</h5> -->
<el-table
border
:span-method="objectSpanMethod"
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 25
: ''
"
:data="tableData"
id="table"
ref="table"
style="width: 100%"
:header-cell-class-name="headerStyle"
:cell-style="tableRowClassName"
>
<el-table border :span-method="objectSpanMethod" :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 25
: ''
" :data="tableData" id="table" ref="table" 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="doctorName"
label="医生"
></el-table-column>
<el-table-column
prop="asbitemName"
label="组合项目"
></el-table-column>
<el-table-column
prop="checkCount"
label="人数"
></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>
<el-table-column prop="sumChargePrice" label="应收金额">
<el-table-column prop="doctorName" label="医生">
<template slot-scope="scope">
<div>
<div>{{ scope.row.doctorCode }}</div>
<div>{{ scope.row.doctorName }}</div>
</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column prop="asbitemName" label="组合项目"></el-table-column>
<el-table-column prop="checkCount" label="人数"></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>
<el-table-column prop="sumChargePrice" label="应收金额">
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
</div>
<div
:style="
'width: 47.7%;overflow: hidden;height:' +
(window.pageHeight < 600 ? 415 : window.pageHeight - 185 - 25) +
'px;background-color: #fff; padding: 15px; border-radius: 8px;'
"
>
<div
style="
<div :style="'width: 47.7%;overflow: hidden;height:' +
(window.pageHeight < 600 ? 415 : window.pageHeight - 185 - 25) +
'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;'
"
>
<div :style="'height:' +
(window.pageHeight < 600 ? 387 : window.pageHeight - 185 - 48) +
'px;'
">
<ChartBlock ref="chart2"></ChartBlock>
</div>
</div>
@ -486,9 +423,9 @@ export default {
var item = tableData[i].doctorName;
obj[item] = obj[item] + 1 || 1;
}
this.pieData=[]
this.yAxisData=[]
this.seriesData=[]
this.pieData = []
this.yAxisData = []
this.seriesData = []
Object.keys(obj).forEach((key) => {
let totalRow = JSON.parse(JSON.stringify(totalRows));
let pie = JSON.parse(JSON.stringify(pies));
@ -541,6 +478,7 @@ export default {
@import "../../assets/css/global_form.css";
@import "../../assets/css/global_input.css";
@import "../../assets/css/global.css";
.query {
margin-right: 10px;
display: flex;
@ -551,13 +489,16 @@ export default {
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);
@ -570,20 +511,25 @@ export default {
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;
}
:deep .el-input--suffix .el-input__inner{
:deep .el-input--suffix .el-input__inner {
height: 32px !important;
}
:deep .el-select__tags{
:deep .el-select__tags {
flex-wrap: nowrap;
}
</style>

154
src/views/workload/examinedoctor.vue

@ -4,56 +4,29 @@
<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-select
v-model="username"
placeholder="请选择"
size="small"
multiple
filterable
:multiple-limit=2
>
<el-option
v-for="item in registrardata"
:key="item.id"
:label="item.surname"
:value="item.id"
>
<el-select v-model="username" placeholder="请选择" size="small" multiple filterable :multiple-limit=2>
<el-option v-for="item in registrardata" :key="item.id" :label="item.surname" :value="item.id">
</el-option>
</el-select>
</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: 177px;"
>
<el-date-picker type="date" placeholder="选择开始日期" size="small" v-model="startDate" value-format="yyyy-MM-dd"
editable style="width: 177px;">
</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: 177px;"
>
<el-date-picker type="date" placeholder="选择结束日期" size="small" v-model="endDate" value-format="yyyy-MM-dd"
editable style="width: 177px;">
</el-date-picker>
</div>
<div class="query">
@ -72,14 +45,11 @@
<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"
>
" id="domTable">
<div style="width: 47.7%;background-color: #fff; padding: 15px; border-radius: 8px;" ref="imageDom">
<!-- <h3 align="center">登记员工作量统计</h3>
- 53-18
@ -87,59 +57,45 @@
时间<span>{{ startDate }}</span
><span>{{ endDate }}</span>
</h5> -->
<el-table
border
show-summary
:summary-method="summarizeRegisterCount"
:height="
flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 25
: ''
"
:data="tableData"
id="table"
ref="table"
style="width: 100%"
:header-cell-class-name="headerStyle"
>
<el-table border show-summary :summary-method="summarizeRegisterCount" :height="flag
? window.pageHeight < 600
? 415
: window.pageHeight - 185 - 25
: ''
" :data="tableData" id="table" ref="table" style="width: 100%" :header-cell-class-name="headerStyle">
<el-table-column label="审核医生工作量统计">
<el-table-column :label="'时间:' + startDate + '至' + endDate">
<el-table-column
prop="auditDoctorName"
label="医生"
></el-table-column>
<el-table-column
prop="auditCount"
label="人数" align="center"
></el-table-column>
<el-table-column prop="auditDoctorName" label="医生">
<template slot-scope="scope">
<div>
<div>{{ scope.row.doctorCode }}</div>
<div>{{ scope.row.auditDoctorName }}</div>
</div>
</template>
</el-table-column>
<el-table-column prop="auditCount" label="人数" align="center"></el-table-column>
<el-table-column prop="percentage" label="占登记总人数百分比" align="center">
<template slot-scope="scope">
<div>{{ scope.row.percentage+'%' }}</div>
<div>{{ scope.row.percentage + '%' }}</div>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
</div>
<div
:style="
'width: 47.7%;overflow: hidden;height:' +
(window.pageHeight < 600 ? 415 : window.pageHeight - 185 - 25) +
'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 - 25) +
'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>
@ -355,7 +311,7 @@ export default {
that.tableData = [...res.data];
this.yAxisData = [];
this.seriesData = [];
this.pieData=[]
this.pieData = []
let pies = {
name: "",
value: 0,
@ -364,8 +320,8 @@ export default {
let pie = JSON.parse(JSON.stringify(pies));
this.yAxisData.push(res.data[i].auditDoctorName);
this.seriesData.push(res.data[i].auditCount);
pie.name=res.data[i].auditDoctorName
pie.value=res.data[i].auditCount
pie.name = res.data[i].auditDoctorName
pie.value = res.data[i].auditCount
this.pieData.push(pie)
}
this.columnarChart();
@ -373,7 +329,7 @@ export default {
});
},
getList() {
getapi("/api/identity/users/getlist",this.pages).then((res) => {
getapi("/api/identity/users/getlist", this.pages).then((res) => {
if (res.code != -1) {
this.registrardata = [...res.data.items];
}
@ -412,30 +368,36 @@ export default {
@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;
}
.query:last-child{
.query:last-child {
margin-right: 0;
}
:deep .el-input--suffix .el-input__inner{
:deep .el-input--suffix .el-input__inner {
height: 32px !important;
}
:deep .el-select__tags{
:deep .el-select__tags {
flex-wrap: nowrap;
}
</style>
Loading…
Cancel
Save