You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
337 lines
9.1 KiB
337 lines
9.1 KiB
<template>
|
|
<div class="box">
|
|
<div>
|
|
<div class="middlebox">
|
|
<div class="contenttitle">
|
|
客户报表 /
|
|
<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 class="query">
|
|
<span>体检单位:</span>
|
|
<el-cascader
|
|
v-model="customerOrgIds"
|
|
@change="onchange"
|
|
placeholder="请选择单位"
|
|
:options="patientRegister.customerOrgTreeAll"
|
|
:props="{
|
|
value: 'id',
|
|
label: 'displayName',
|
|
children: 'treeChildren',
|
|
expandTrigger: 'hover',
|
|
multiple: true,
|
|
emitPath:false,
|
|
checkStrictly:true
|
|
}"
|
|
filterable
|
|
size="small"
|
|
collapse-tags
|
|
></el-cascader>
|
|
</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>
|
|
</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>
|
|
</div>
|
|
<div class="query">
|
|
<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
|
|
>
|
|
</div>
|
|
<div class="query">
|
|
<el-button @click="onPrint" size="small" class="commonbutton"
|
|
>打印</el-button
|
|
>
|
|
</div>
|
|
</div>
|
|
<div
|
|
ref="imageDom"
|
|
style="background-color: #fff; padding: 15px; border-radius: 8px"
|
|
>
|
|
<el-table
|
|
:data="dataList"
|
|
border
|
|
width="45%"
|
|
:height="
|
|
flag
|
|
? window.pageHeight < 600
|
|
? 415
|
|
: window.pageHeight - 185 - 20
|
|
: ''
|
|
"
|
|
row-key="id"
|
|
highlight-current-row
|
|
ref="dataList"
|
|
:row-class-name="tableRowClassName"
|
|
id="table"
|
|
show-summary
|
|
:summary-method="getSummaries"
|
|
>
|
|
<el-table-column prop="customerOrgName" label="单位" />
|
|
<el-table-column prop="medicalStartDate" label="体检开始日期" />
|
|
<el-table-column prop="registerCount" label="登记人数" />
|
|
<el-table-column prop="checkCount" label="实检人数" />
|
|
<el-table-column prop="registerStandardAmount" label="登记总金额" />
|
|
<el-table-column
|
|
prop="registerChargeAmount"
|
|
label="登记折后总金额"
|
|
/>
|
|
<el-table-column prop="checkStandardAmount" label="实检总金额" />
|
|
<el-table-column prop="checkChargeAmount" label="实检折后总金额" />
|
|
<el-table-column prop="checkItemStandardAmount" label="实检项目金额" />
|
|
<el-table-column prop="checkItemChargeAmount" label="实检项目折后总金额" />
|
|
</el-table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import moment from "moment";
|
|
import { mapState, mapActions } from "vuex";
|
|
import { getapi, postapi, putapi, deletapi } from "@/api/api";
|
|
import {
|
|
dddw,
|
|
objCopy,
|
|
arrayReduce,
|
|
arrayExistObj,
|
|
tcdate,
|
|
} from "@/utlis/proFunc";
|
|
import { exportToExcel } from "../../utlis/Export2Excel";
|
|
import html2canvas from "html2canvas";
|
|
import printJs from "print-js";
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
dataList: [], //列表数据
|
|
startDate: "",
|
|
endDate: "",
|
|
customerOrgIds: [],
|
|
flag: true
|
|
};
|
|
},
|
|
|
|
created() {
|
|
this.dictInit();
|
|
},
|
|
|
|
//挂载完成
|
|
mounted() {
|
|
this.getNowTime();
|
|
},
|
|
|
|
computed: {
|
|
...mapState(["window", "dict", "patientRegister", "report"]),
|
|
},
|
|
|
|
methods: {
|
|
moment,
|
|
dddw,
|
|
//数据初始化
|
|
dictInit() {
|
|
//体检单位树
|
|
getapi("/api/app/customerorg/getbycodeall").then((res) => {
|
|
if (res.code == 1) {
|
|
this.patientRegister.customerOrgTreeAll = res.data;
|
|
tcdate(this.patientRegister.customerOrgTreeAll);
|
|
}
|
|
});
|
|
console.log("patientRegister", this.patientRegister);
|
|
},
|
|
onchange(v) {
|
|
console.log(v)
|
|
},
|
|
tableRowClassName({ row, rowIndex }) {
|
|
switch (row.isCharge) {
|
|
case "N":
|
|
return "danger";
|
|
default:
|
|
return "";
|
|
}
|
|
},
|
|
getSummaries(param) {
|
|
const { columns, data } = param;
|
|
const sums = [];
|
|
columns.forEach((column, index) => {
|
|
if (index === 0) {
|
|
sums[index] = "合计";
|
|
return;
|
|
}
|
|
if (index === 1) {
|
|
sums[index] = data.length + " 人";
|
|
}
|
|
});
|
|
|
|
return sums;
|
|
},
|
|
getNowTime() {
|
|
var now = new Date();
|
|
var year = now.getFullYear(); // 得到年份
|
|
var month = now.getMonth(); // 得到月份
|
|
var date = now.getDate(); // 得到日期
|
|
month = month + 1;
|
|
month = month.toString().padStart(2, "0");
|
|
date = date.toString().padStart(2, "0");
|
|
var defaultDate = `${year}-${month}-${date}`;
|
|
this.startDate = defaultDate;
|
|
this.endDate = defaultDate;
|
|
},
|
|
//查询
|
|
btnQuery() {
|
|
let that = this;
|
|
if (this.startDate == "") {
|
|
return this.$message({
|
|
message: "请先选择开始日期",
|
|
type: "error",
|
|
});
|
|
}
|
|
if (this.endDate == "") {
|
|
return this.$message({
|
|
message: "请先选择结束日期",
|
|
type: "error",
|
|
});
|
|
}
|
|
postapi(
|
|
"/api/app/CustomerReport/GetSummaryOfUnitCostsReport",{
|
|
customerOrgIds:that.customerOrgIds,
|
|
startDate:that.startDate,
|
|
endDate:that.endDate
|
|
}).then((res) => {
|
|
if (res.code != -1) {
|
|
that.dataList = res.data;
|
|
that.$nextTick(() => {
|
|
that.$refs.dataList.doLayout();
|
|
});
|
|
}
|
|
});
|
|
},
|
|
onPrint() {
|
|
this.flag = false;
|
|
this.$nextTick(() => {
|
|
let width = this.$refs.imageDom.style.width;
|
|
let cloneDom = this.$refs.imageDom.cloneNode(true);
|
|
let imageDom = this.$refs.imageDom;
|
|
cloneDom.style.position = "absolute";
|
|
cloneDom.style.top = "0px";
|
|
cloneDom.style.zIndex = "-1";
|
|
cloneDom.style.width = width;
|
|
console.log(cloneDom);
|
|
imageDom.appendChild(cloneDom);
|
|
html2canvas(cloneDom).then((canvas) => {
|
|
// 转成图片,生成图片地址
|
|
const url = canvas.toDataURL("image/png");
|
|
printJs({
|
|
printable: url,
|
|
type: "image",
|
|
documentTitle: "", // 标题
|
|
style: "@page{size:auto;margin: 0cm 1cm 0cm 1cm;}", // 去除页眉页脚
|
|
});
|
|
});
|
|
cloneDom.style.display = "none";
|
|
this.flag = true;
|
|
});
|
|
},
|
|
handleExport() {
|
|
exportToExcel("#table", "单位体检统计", false);
|
|
},
|
|
},
|
|
|
|
//监听事件
|
|
watch: {
|
|
//触发查询事件
|
|
// "patientRegister.query.times"(newVal, oldVal) {
|
|
// if (newVal != oldVal) {
|
|
// //alert('触发查询事件')
|
|
// this.query();
|
|
// }
|
|
// },
|
|
},
|
|
};
|
|
</script>
|
|
<style scoped>
|
|
@import "../../assets/css/global_button.css";
|
|
@import "../../assets/css/global_dialog.css";
|
|
@import "../../assets/css/global_table.css";
|
|
@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";
|
|
}
|
|
.box {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
::v-deep .el-input__inner {
|
|
/*text-align: center;*/
|
|
padding-left: 5px;
|
|
padding-right: 15px;
|
|
}
|
|
|
|
::v-deep .el-input__icon {
|
|
width: 15px;
|
|
/* 输入框下拉箭头或清除图标 默认 25 */
|
|
}
|
|
|
|
::v-deep .el-input-group__append {
|
|
padding: 0 5px;
|
|
/* 控件默认 0 20px;*/
|
|
}
|
|
|
|
::v-deep .el-icon-search:before {
|
|
color: #00f;
|
|
}
|
|
.query:last-child {
|
|
margin-right: 0;
|
|
}
|
|
::v-deep .el-cascader__search-input{
|
|
margin: 0 0 0 5px;
|
|
}
|
|
</style>
|