6 changed files with 552 additions and 259 deletions
-
2src/components/follow/FollowQuery.vue
-
177src/components/follow/PhoneFollowUp.vue
-
283src/components/follow/SmsSend.vue
-
0src/components/report/AppletRegisterInfo.vue
-
12src/router/index.js
-
337src/views/customerReport/unitStatistics.vue
@ -0,0 +1,337 @@ |
|||||
|
<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> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue