罗斌杰 2 years ago
parent
commit
2fe008dda1
  1. 23
      src/views/customerReport/combinationDetails.vue
  2. 19
      src/views/customerReport/detailedIitems.vue
  3. 17
      src/views/diagnosis/diagnosis.vue
  4. 454
      src/views/diagnosis/diagnosisSug.vue
  5. 773
      src/views/doctorCheck/unitphysicalexamination.vue
  6. 15
      src/views/fee-settings/Asbitem.vue
  7. 74
      src/views/fee-settings/Item.vue
  8. 4
      src/views/workload/individualfeedetails.vue
  9. 4
      src/views/workload/peispersontime.vue
  10. 4
      src/views/workload/tollcollector.vue

23
src/views/customerReport/combinationDetails.vue

@ -1,6 +1,6 @@
<template>
<div class="box">
<div>
<div style="position: relative;">
<div class="middlebox">
<div class="contenttitle">
客户报表 /
@ -73,11 +73,14 @@
<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
<div style="background-color: #fff; padding: 15px; border-radius: 8px;">
<div ref="imageDom">
<el-table
:data="dataList"
border
:height="window.pageHeight < 600 ? 415 : window.pageHeight - 185-20"
style="width: 100%"
:height="flag
?window.pageHeight < 600 ? 415 : window.pageHeight - 185-20:''"
row-key="id"
highlight-current-row
ref="dataList"
@ -104,7 +107,8 @@
>
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
</div>
<!--通用选单位体检次数分组的控件-->
@ -280,7 +284,6 @@ export default {
// }
// });
console.log("dict", this.dict);
},
tableRowClassName({ row, rowIndex }) {
@ -296,15 +299,15 @@ export default {
onPrint() {
this.flag = false;
this.$nextTick(() => {
let width = this.$refs.imageDom.style.width;
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");
@ -312,7 +315,9 @@ export default {
printable: url,
type: "image",
documentTitle: "", //
style: "@page{size:auto;margin: 0cm 1cm 0cm 1cm;}", //
style: `@media print { @page {size: auto; margin: 0 0 0 0; } body{margin:0 5px}canvas{page-break-after: always;page-break-inside: avoid;
page-break-after: avoid;
page-break-before: avoid;}}`, // 去除页眉页脚
});
});
cloneDom.style.display = "none";

19
src/views/customerReport/detailedIitems.vue

@ -69,12 +69,12 @@
<el-button @click="onPrint" size="small" class="commonbutton">打印</el-button>
</div>
</div>
<div v-show="format == 0" ref="imageDom0" style="background-color: #fff; padding: 15px; border-radius: 8px;">
<div>
<div v-show="format == 0" style="background-color: #fff; padding: 15px; border-radius: 8px;">
<div ref="imageDom0">
<el-table
:data="dataList"
border
:height="window.pageHeight < 600 ? 415 : window.pageHeight - 185-20"
:height="flag?window.pageHeight < 600 ? 415 : window.pageHeight - 185-20:''"
row-key="id"
highlight-current-row
ref="dataList"
@ -82,6 +82,7 @@
show-summary
:summary-method="summarizeRegisterCount"
:header-cell-class-name="headerStyle"
style="width:100%;"
>
<el-table-column label="明细项目具体结果统计">
<el-table-column :label="'项目名称:' + columnData">
@ -105,11 +106,12 @@
</el-table>
</div>
</div>
<div v-show="format == 1" ref="imageDom1" style="background-color: #fff; padding: 15px; border-radius: 8px;">
<el-table
<div v-show="format == 1" style="background-color: #fff; padding: 15px; border-radius: 8px;">
<div ref="imageDom1">
<el-table
:data="dataLists"
border
:height="window.pageHeight < 600 ? 415 : window.pageHeight - 185-20"
:height="flag?window.pageHeight < 600 ? 415 : window.pageHeight - 185-20:''"
row-key="id"
highlight-current-row
ref="dataLists"
@ -117,6 +119,7 @@
show-summary
:summary-method="summarizeRegisterCount"
:header-cell-class-name="headerStyle"
style="width:100%;"
>
<el-table-column label="明细项目具体结果统计">
<el-table-column :label="'项目名称:' + columnData">
@ -140,6 +143,7 @@
</el-table-column>
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
@ -318,7 +322,6 @@ export default {
// }
// });
console.log("dict", this.dict);
},
onPrint() {
@ -337,7 +340,6 @@ export default {
cloneDom.style.top = "0px";
cloneDom.style.zIndex = "-1";
cloneDom.style.width = width;
console.log(cloneDom);
imageDom.appendChild(cloneDom);
html2canvas(cloneDom).then((canvas) => {
//
@ -467,7 +469,6 @@ page-break-before: avoid;}}`, // 去除页眉页脚
body
).then((res) => {
if (res.code != -1) {
console.log(res)
for(let i=0;i<res.data.length;i++){
for(let k=0;k<res.data[i].registerCheckItems.length;k++){
this.$set(res.data[i],res.data[i].registerCheckItems[k].itemName,res.data[i].registerCheckItems[k].result)

17
src/views/diagnosis/diagnosis.vue

@ -25,7 +25,7 @@
</div>
<div style="display: flex;margin-top: 7px;">
<!-- 类别树组件 -->
<div :style="'width: 208px; height:' +(window.pageHeight < 600 ? 480 : window.pageHeight - 110) +'px;background-color: #fff; border-radius: 8px'">
<div :style="'width: 208px; height:' +(window.pageHeight < 600 ? 505 : window.pageHeight - 100) +'px;background-color: #fff; border-radius: 8px'">
<ItemTypeTree :refreshItemTypeId="refreshItemTypeId" :itemTypeId="query.itemTypeId"/>
</div>
<!-- 诊断与建议 -->
@ -44,7 +44,7 @@
</div>
<div>
<el-table :data="tableData" id="elTableDiagnosis" row-key="id"
:height="window.pageHeight < 600 ? 200 : Math.floor((window.pageHeight - 190) / 2)"
:height="window.pageHeight < 600 ? 190 : Math.floor((window.pageHeight - 240) / 2)"
highlight-current-row @row-click="rowClick" size="small" ref="elTable">
<el-table-column type="index" label="序号" width="40" align="center"/>
<el-table-column
@ -133,7 +133,7 @@
<!-- 诊断对应的建议列表 -->
<div style="margin-top:15px;">
<DiagnosisSug :formDiagnosis="form" :refreshSugs="refreshSugs"/>
<DiagnosisSug :formDiagnosis="form" :refreshSugs="refreshSugs" :refreshSuges="refreshSuges"/>
</div>
</div>
</div>
@ -257,7 +257,8 @@ export default {
forSexId:'A',
isSummaryTemplate:'N',
diagnosisLevelId:0,
suggestions:[],
medicalInterpretations:[],
healthGuidances:[]
},
dialogVisible:false,
rules: {
@ -344,7 +345,13 @@ export default {
//
refreshSugs(sugs){
if(!this.form.id) return
this.form.suggestions = deepCopy(sugs)
this.form.medicalInterpretations = deepCopy(sugs)
let lfind = arrayExistObj(this.tableData,'id',this.form.id)
if(lfind > -1) this.tableData[lfind] = Object.assign(this.tableData[lfind],this.form)
},
refreshSuges(sugs){
if(!this.form.id) return
this.form.healthGuidances = deepCopy(sugs)
let lfind = arrayExistObj(this.tableData,'id',this.form.id)
if(lfind > -1) this.tableData[lfind] = Object.assign(this.tableData[lfind],this.form)
},

454
src/views/diagnosis/diagnosisSug.vue

@ -1,85 +1,207 @@
<template>
<div style="margin-left:15px;display: flex;">
<div :style="'width:' + (window.pageWidth - 200 - 110 - 50-14) + 'px;padding: 15px;background-color: #fff;border-radius: 8px;'">
<el-table id="elTableDiagnosisSug" :data="tableData" row-key="id"
:height="window.pageHeight < 600 ? 215 : Math.floor((window.pageHeight - 160) / 2)"
highlight-current-row @row-click="rowClick" size="small" ref="elTable">
<el-table-column type="index" label="序号" width="40" align="center"/>
<el-table-column prop="suggestionContent" label="建议内容">
<template slot-scope="scope">
<el-input type="textarea" :id="scope.row.id" v-model="scope.row.suggestionContent" placeholder="建议内容" style="width: 100%"
:autosize="{ minRows: 1, maxRows: 100 }">
</el-input>
</template>
</el-table-column>
<el-table-column label="排序" width="40" align="center">
<template>
<el-tag
class="move"
style="
cursor: move;
background-color: rgb(245, 245, 245);
border: none;
"
draggable="true"
>
<i
class="el-icon-d-caret"
style="
width: 1rem;
height: 1rem;
color: rgb(113, 113, 113);
"
></i>
</el-tag>
</template>
</el-table-column>
</el-table>
</div>
<!--按钮-->
<div style="margin-left: 10px;">
<div>
<el-button type="primary" class="commonbutton" @click="btnAdd">新增</el-button>
</div>
<div style="margin-top: 10px">
<el-button type="danger" class="commonbutton" @click="btnDel">删除</el-button>
</div>
<div style="margin-top: 10px">
<el-button type="success" class="commonbutton" @click="btnSave">保存建议</el-button>
</div>
<template>
<div style="margin-left: 15px; display: flex">
<div
:style="
'width:' +
(window.pageWidth - 200 - 110 - 50 - 14) +
'px;padding: 15px;background-color: #fff;border-radius: 8px;'
"
>
<el-tabs v-model="activeName">
<el-tab-pane label="医学解释" name="first">
<div style="display: flex; width: 100%">
<div :style="
'width:' +
(window.pageWidth - 200 - 110 - 50 - 10-110-10) +
'px;'
">
<el-table
id="elTableDiagnosisSug"
:data="tableData"
row-key="id"
:height="
window.pageHeight < 600
? 215
: Math.floor((window.pageHeight - 174) / 2)
"
highlight-current-row
@row-click="rowClick"
size="small"
ref="elTable"
>
<el-table-column
type="index"
label="序号"
width="40"
align="center"
/>
<el-table-column prop="suggestionContent" label="解释内容">
<template slot-scope="scope">
<el-input
type="textarea"
:id="scope.row.id"
v-model="scope.row.suggestionContent"
placeholder="解释内容"
style="width: 100%"
:autosize="{ minRows: 1, maxRows: 100 }"
>
</el-input>
</template>
</el-table-column>
<!-- <el-table-column label="排序" width="40" align="center">
<template>
<el-tag
class="move"
style="
cursor: move;
background-color: rgb(245, 245, 245);
border: none;
"
draggable="true"
>
<i
class="el-icon-d-caret"
style="width: 1rem; height: 1rem; color: rgb(113, 113, 113)"
></i>
</el-tag>
</template>
</el-table-column> -->
</el-table>
</div>
<!--按钮-->
<div style="margin-left: 15px">
<div>
<el-button type="primary" class="commonbutton" @click="btnAdd"
>新增</el-button
>
</div>
<div style="margin-top: 10px">
<el-button type="danger" class="commonbutton" @click="btnDel"
>删除</el-button
>
</div>
<div style="margin-top: 10px">
<el-button
type="success"
class="commonbutton"
@click="btnSave(0)"
>保存解释</el-button
>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="健康指导" name="second">
<div style="display: flex; width: 100%">
<div style="width: 95%">
<el-table
id="elTableDiagnosisSug"
:data="tableDatas"
row-key="id"
:height="
window.pageHeight < 600
? 215
: Math.floor((window.pageHeight - 174) / 2)
"
highlight-current-row
@row-click="rowClicks"
size="small"
ref="elTable"
>
<el-table-column
type="index"
label="序号"
width="40"
align="center"
/>
<el-table-column prop="suggestionContent" label="指导内容">
<template slot-scope="scope">
<el-input
type="textarea"
:id="scope.row.id"
v-model="scope.row.suggestionContent"
placeholder="指导内容"
style="width: 100%"
:autosize="{ minRows: 1, maxRows: 100 }"
>
</el-input>
</template>
</el-table-column>
<!-- <el-table-column label="排序" width="40" align="center">
<template>
<el-tag
class="move"
style="
cursor: move;
background-color: rgb(245, 245, 245);
border: none;
"
draggable="true"
>
<i
class="el-icon-d-caret"
style="width: 1rem; height: 1rem; color: rgb(113, 113, 113)"
></i>
</el-tag>
</template>
</el-table-column> -->
</el-table>
</div>
<!--按钮-->
<div style="margin-left: 15px">
<div>
<el-button type="primary" class="commonbutton" @click="btnAdds"
>新增</el-button
>
</div>
<div style="margin-top: 10px">
<el-button type="danger" class="commonbutton" @click="btnDels"
>删除</el-button
>
</div>
<div style="margin-top: 10px">
<el-button
type="success"
class="commonbutton"
@click="btnSave(1)"
>保存指导</el-button
>
</div>
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
import moment from "moment";
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import Sortable from "sortablejs";
import { deepCopy,dddw, arrayExistObj } from '@/utlis/proFunc';
import { deepCopy, dddw, arrayExistObj } from "@/utlis/proFunc";
export default {
components: {
},
props:["formDiagnosis","refreshSugs"],
components: {},
props: ["formDiagnosis", "refreshSugs","refreshSuges"],
data() {
return {
tableData:[], //
curRow:{}, //
return {
tableData: [], //
curRow: {}, //
activeName: "first",
tableDatas: [],
curRows: {},
};
},
created() {
this.init()
this.init();
},
//
mounted() {
this.rowDrop('elTableDiagnosisSug')
mounted() {
this.rowDrop("elTableDiagnosisSug");
},
computed: {
@ -87,10 +209,12 @@ export default {
},
methods: {
moment,dddw,
moment,
dddw,
init(){
this.tableData = deepCopy(this.formDiagnosis.suggestions)
init() {
this.tableData = deepCopy(this.formDiagnosis.medicalInterpretations);
this.tableDatas = deepCopy(this.formDiagnosis.healthGuidances);
},
//
@ -100,7 +224,7 @@ export default {
//console.log('tbody', el)
let that = this;
Sortable.create(el, {
handle: ".move", // class='move'
handle: ".move", // class='move'
animation: 150, // ms, number ms
//
onEnd({ newIndex, oldIndex }) {
@ -111,94 +235,160 @@ export default {
});
},
rowClick(row){
this.curRow = Object.assign({},row)
rowClick(row) {
this.curRow = Object.assign({}, row);
},
btnAdd(){
if(!this.formDiagnosis.id){
this.$message.warning("请先选择诊断记录!")
return
rowClicks(row) {
this.curRows = Object.assign({}, row);
},
btnAdd() {
if (!this.formDiagnosis.id) {
this.$message.warning("请先选择诊断记录!");
return;
}
let id = Math.random()
let id = Math.random();
let rd = {
id:id,
suggestionContent:''
id: id,
suggestionContent: "",
};
this.tableData.push(rd);
this.$nextTick(() => {
let el = document.getElementById(id);
el.autofocus = true;
el.focus();
});
},
btnAdds() {
if (!this.formDiagnosis.id) {
this.$message.warning("请先选择诊断记录!");
return;
}
this.tableData.push(rd)
let id = Math.random();
let rd = {
id: id,
suggestionContent: "",
};
this.tableDatas.push(rd);
this.$nextTick(()=>{
let el = document.getElementById(id)
el.autofocus = true
el.focus()
})
this.$nextTick(() => {
let el = document.getElementById(id);
el.autofocus = true;
el.focus();
});
},
btnSave(){
if(!this.formDiagnosis.id){
this.$message.warning("请先选择诊断记录!")
return
btnSave(e) {
if (!this.formDiagnosis.id) {
this.$message.warning("请先选择诊断记录!");
return;
}
let diagnosisId = this.formDiagnosis.id;
if (e == 0) {
let details = [];
let diagnosisId = this.formDiagnosis.id
let details = []
this.tableData.forEach((e) => {
if (e.suggestionContent) {
details.push({
suggestionContent: e.suggestionContent,
});
}
});
let body = { diagnosisId, details,suggestionType:"0" };
this.tableData.forEach(e =>{
if(e.suggestionContent){
details.push({diagnosisId,suggestionContent:e.suggestionContent})
}
})
let body = {diagnosisId,details}
postapi('/api/app/suggestion/createsuggestionmany',body).then(res =>{
if(res.code != -1){
//
this.refreshSugs(this.tableData)
this.$message.success('操作成功!')
}
})
postapi("/api/app/suggestion/createsuggestionmany", body).then(
(res) => {
if (res.code != -1) {
//
this.refreshSugs(this.tableData);
this.$message.success("操作成功!");
}
}
);
}else{
let details = [];
},
this.tableDatas.forEach((e) => {
if (e.suggestionContent) {
details.push({
suggestionContent: e.suggestionContent,
});
}
});
let bodys = { diagnosisId, details,suggestionType:"1" };
btnDel(){
if(!this.formDiagnosis.id || !this.curRow.id){
this.$message.warning("请先选中要删除的记录!")
return
postapi("/api/app/suggestion/createsuggestionmany", bodys).then(
(res) => {
if (res.code != -1) {
//
this.refreshSuges(this.tableDatas);
this.$message.success("操作成功!");
}
}
);
}
},
btnDels() {
if (!this.formDiagnosis.id || !this.curRows.id) {
this.$message.warning("请先选中要删除的记录!");
return;
}
this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
cancelButtonText: "否",
type: "warning",
cancelButtonClass:"difference",
confirmButtonClass:"commonbutton"
}).then(() => {
let lfind = arrayExistObj(this.tableData,'id',this.curRow.id)
if(lfind > -1) this.tableData.splice(lfind,1)
}).catch((err) => {
if (err == "cancel") {
this.$message.info("已取消操作");
}
});
}
cancelButtonClass: "difference",
confirmButtonClass: "commonbutton",
})
.then(() => {
let lfind = arrayExistObj(this.tableDatas, "id", this.curRows.id);
if (lfind > -1) this.tableDatas.splice(lfind, 1);
})
.catch((err) => {
if (err == "cancel") {
this.$message.info("已取消操作");
}
});
},
btnDel() {
if (!this.formDiagnosis.id || !this.curRow.id) {
this.$message.warning("请先选中要删除的记录!");
return;
}
this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
cancelButtonClass: "difference",
confirmButtonClass: "commonbutton",
})
.then(() => {
let lfind = arrayExistObj(this.tableData, "id", this.curRow.id);
if (lfind > -1) this.tableData.splice(lfind, 1);
})
.catch((err) => {
if (err == "cancel") {
this.$message.info("已取消操作");
}
});
},
},
watch: {
"formDiagnosis.id"(newVal,oldVal){
this.init()
}
"formDiagnosis.id"(newVal, oldVal) {
this.init();
},
},
};
</script>
<style scoped>
@import '../../assets/css/global_button.css';
@import '../../assets/css/global_card.css';
@import '../../assets/css/global_dialog.css';
@import '../../assets/css/global_form.css';
@import '../../assets/css/global_input.css';
@import '../../assets/css/global_table.css';
@import '../../assets/css/global.css';
@import "../../assets/css/global_button.css";
@import "../../assets/css/global_card.css";
@import "../../assets/css/global_dialog.css";
@import "../../assets/css/global_form.css";
@import "../../assets/css/global_input.css";
@import "../../assets/css/global_table.css";
@import "../../assets/css/global.css";
</style>

773
src/views/doctorCheck/unitphysicalexamination.vue

@ -1,3 +1,772 @@
<template>
<div>单位体检报表</div>
</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-input
placeholder="请选择体检单位"
v-model="patientRegister.query.cusOrgOCX"
style="width: 300px"
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-select
v-model="format"
placeholder="请选择"
clearable
style="width: 80px"
size="small"
>
<el-option label="标准格式" value="0" />
<el-option label="精简格式" value="1" />
<el-option label="Word格式" value="2" />
</el-select>
</div>
<div class="query">
<el-button @click="btnQuery" size="small" class="commonbutton"
>查询</el-button
>
</div>
<div class="query">
<el-button
size="small"
class="commonbutton"
:disabled="format == 2"
@click="handleExport"
>导出excel</el-button
>
</div>
<div class="query">
<el-button
size="small"
class="commonbutton"
:disabled="format == 2"
@click="onPrint"
>打印</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 - 20
: ''
"
:data="tableData"
id="standardTableData"
ref="standardTableData"
style="width: 100%"
:header-cell-class-name="headerStyle"
>
<el-table-column :label="reportTitle">
<el-table-column
:label="
'单位:' +
customerOrgName +
'体检次数' +
medicalTimes +
'开始月份:' +
startMonth +
'结束月份:' +
endMonth
"
>
<template slot-scope="scope">
<el-table
:data="scope.row.patientRegisterPositiveReports"
border
show-summary
:summary-method="summarizeRegisterCounts"
:header-cell-class-name="headerStyle"
>
<el-table-column label="人员阳性结果清单">
<el-table-column
:label="
startDate +
'至' +
endDate +
'体检人员共计:' +
sumMedicalNumber +
'其中男:' +
maleMedicalNumber +
'女:' +
femaleMedicalNumber +
'其他:' +
otherMedicalNumber
"
>
<el-table-column
prop="patientNo"
label="档案号"
width="120"
/>
<el-table-column
prop="patientName"
label="姓名"
width="120"
/>
<el-table-column
prop="sexName"
label="性别"
width="50"
/>
<el-table-column prop="age" label="年龄" width="80" />
<el-table-column
prop="medicalTimes"
label="次数"
width="50"
/>
<el-table-column
prop="mobileTelephone"
label="手机号码"
width="120"
/>
<el-table-column
prop="diagnosisNames"
label="诊断名称"
/>
</el-table-column>
</el-table-column>
</el-table>
<el-table
:data="scope.row.positivePatientRegisterReportStandards"
border
:header-cell-class-name="headerStyle"
style="margin-top: 15px"
>
<el-table-column label="阳性结果人员清单">
<el-table-column
:label="
startDate +
'至' +
endDate +
'体检人员共计:' +
sumMedicalNumber +
'其中男:' +
maleMedicalNumber +
'女:' +
femaleMedicalNumber +
'其他:' +
otherMedicalNumber
"
>
<template slot-scope="scopes">
<el-table
:data="scopes.row.patientRegisters"
border
show-summary
:summary-method="summarizeRegisterCounts"
>
<el-table-column
:label="scopes.row.diagnosisName"
>
<el-table-column
label="部门名称"
prop="departmentName"
></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>
<el-table-column
prop="medicalTimes"
label="体检次数"
>
</el-table-column>
<el-table-column prop="telephone" label="电话">
</el-table-column>
<el-table-column
prop="mobileTelephone"
label="手机号"
>
</el-table-column>
</el-table-column>
</el-table>
</template>
</el-table-column>
</el-table-column>
</el-table>
<el-table
:data="scope.row.diseaseCountStatisticsReports"
border
:header-cell-class-name="headerStyle"
show-summary
:summary-method="summarizeRegisterCount"
style="margin-top: 15px"
>
<el-table-column label="疾病人数统计">
<el-table-column
:label="
startDate +
'至' +
endDate +
'体检人员共计:' +
sumMedicalNumber +
'其中男:' +
maleMedicalNumber +
'女:' +
femaleMedicalNumber +
'其他:' +
otherMedicalNumber
"
>
<el-table-column label="序号" type="index">
</el-table-column>
<el-table-column prop="diagnosisName" label="疾病" />
<el-table-column prop="patientCount" label="人数" />
<el-table-column
prop="percentage"
label="占总检人员百分比"
/>
</el-table-column>
</el-table-column>
</el-table>
</template>
</el-table-column>
</el-table-column>
</el-table>
</div>
</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 - 20
: ''
"
:data="reducetableData"
id="reducetableData"
ref="reducetableData"
style="width: 100%"
:header-cell-class-name="headerStyle"
>
<el-table-column :label="reducereportTitle">
<el-table-column
:label="
'单位:' +
reducecustomerOrgName +
'体检次数' +
reducemedicalTimes +
'开始月份:' +
reducestartMonth +
'结束月份:' +
reduceendMonth
"
>
<template slot-scope="scope">
<el-table
:data="scope.row.patientRegisterPositiveReports"
border
show-summary
:summary-method="summarizeRegisterCounts"
:header-cell-class-name="headerStyle"
>
<el-table-column label="人员阳性结果清单">
<el-table-column
:label="
reducestartDate +
'至' +
reduceendDate +
'体检人员共计:' +
reducesumMedicalNumber +
'其中男:' +
reducemaleMedicalNumber +
'女:' +
reducefemaleMedicalNumber +
'其他:' +
reduceotherMedicalNumber
"
>
<el-table-column
prop="patientNo"
label="档案号"
width="120"
/>
<el-table-column
prop="patientName"
label="姓名"
width="120"
/>
<el-table-column
prop="sexName"
label="性别"
width="50"
/>
<el-table-column prop="age" label="年龄" width="80" />
<el-table-column
prop="medicalTimes"
label="次数"
width="50"
/>
<el-table-column
prop="mobileTelephone"
label="手机号码"
width="120"
/>
<el-table-column
prop="diagnosisNames"
label="诊断名称"
/>
</el-table-column>
</el-table-column>
</el-table>
<el-table
:data="scope.row.positivePatientRegisterReportReduces"
border
:header-cell-class-name="headerStyle"
show-summary
:summary-method="summarizeRegisterCount"
style="margin-top: 15px"
>
<el-table-column label="阳性结果人员清单">
<el-table-column
:label="
reducestartDate +
'至' +
reduceendDate +
'体检人员共计:' +
reducesumMedicalNumber +
'其中男:' +
reducemaleMedicalNumber +
'女:' +
reducefemaleMedicalNumber +
'其他:' +
reduceotherMedicalNumber
"
>
<el-table-column label="序号" type="index">
</el-table-column>
<el-table-column prop="diagnosisName" label="诊断" />
<el-table-column prop="patientCount" label="人数" />
<el-table-column
prop="percentage"
label="占总检人员百分比"
/>
</el-table-column>
</el-table-column>
</el-table>
<el-table
:data="scope.row.diseaseCountStatisticsReports"
border
:header-cell-class-name="headerStyle"
show-summary
:summary-method="summarizeRegisterCount"
style="margin-top: 15px"
>
<el-table-column label="疾病人数统计">
<el-table-column
:label="
reducestartDate +
'至' +
reduceendDate +
'体检人员共计:' +
reducesumMedicalNumber +
'其中男:' +
reducemaleMedicalNumber +
'女:' +
reducefemaleMedicalNumber +
'其他:' +
reduceotherMedicalNumber
"
>
<el-table-column label="序号" type="index">
</el-table-column>
<el-table-column prop="diagnosisName" label="疾病" />
<el-table-column prop="patientCount" label="人数" />
<el-table-column
prop="percentage"
label="占总检人员百分比"
/>
</el-table-column>
</el-table-column>
</el-table>
</template>
</el-table-column>
</el-table-column>
</el-table>
</div>
</div>
<div v-show="format == 2" ref="imageDom2">
<div
style="background-color: #fff; padding: 15px; border-radius: 8px"
></div>
</div>
</div>
</div>
<!--通用选单位体检次数分组的控件-->
<el-dialog
title="体检单位选择"
:visible.sync="report.dialogCusOrgOCX"
:close-on-click-modal="false"
width="840px"
height="600px"
>
<CusOrgOCX />
</el-dialog>
</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 CusOrgOCX from "../../components/report/CusOrgOCX.vue";
import { exportToExcel } from "../../utlis/Export2Excel";
import html2canvas from "html2canvas";
import printJs from "print-js";
export default {
components: {
CusOrgOCX,
},
data() {
return {
format: "0",
flag: true,
tableData: [],
reducetableData: [],
reportTitle: "",
customerOrgName: "",
medicalTimes: null,
startMonth: "",
endMonth: "",
startDate: "",
endDate: "",
sumMedicalNumber: null,
maleMedicalNumber: null,
femaleMedicalNumber: null,
otherMedicalNumber: null,
reducereportTitle: "",
reducecustomerOrgName: "",
reducemedicalTimes: null,
reducestartMonth: "",
reduceendMonth: "",
reducestartDate: "",
reduceendDate: "",
reducesumMedicalNumber: null,
reducemaleMedicalNumber: null,
reducefemaleMedicalNumber: null,
reduceotherMedicalNumber: null,
};
},
created() {
// this.dictInit();
},
//
mounted() {
// this.btnQuery();
},
computed: {
...mapState(["window", "dict", "patientRegister", "report"]),
},
methods: {
btnQuery() {
let body = {},
customerOrgs = [];
if (this.report.dataCusOrgOCX.length > 0) {
this.report.dataCusOrgOCX.forEach((e) => {
let rd = {
startDate: moment(e.startDate).format("yyyy-MM-DD"),
endDate: moment(e.endDate).format("yyyy-MM-DD"),
dateType:
e.dateType == "summaryDate"
? "3"
: e.dateType == "medicalStartDate"
? "2"
: "1",
};
if (e.customerOrgId) {
rd.customerOrgId = e.customerOrgId;
if (e.customerOrgId == this.dict.personOrgId) {
rd.customerOrgRegisterId = null;
rd.customerOrgGroupId = [];
} else {
rd.customerOrgRegisterId = e.customerOrgRegister.id;
rd.customerOrgGroupId = e.customerOrgGroupIds;
}
}
customerOrgs.push(rd);
});
}
body.customerOrgs = customerOrgs;
if (this.completeFlag) body.completeFlag = this.completeFlag;
body.isAudit = this.classification;
if (this.format == 0) {
postapi(
"/api/customerreport/getunitphysicalexaminationreportstandard",
body
).then((res) => {
if (res.code != -1) {
this.tableData = [];
this.tableData.push(res.data);
this.reportTitle = res.data.reportTitle;
this.customerOrgName = res.data.customerOrgName;
this.medicalTimes = res.data.medicalTimes;
this.startMonth = res.data.startMonth;
this.endMonth = res.data.endMonth;
this.startDate = res.data.startDate;
this.endDate = res.data.endDate;
this.sumMedicalNumber = res.data.sumMedicalNumber;
this.maleMedicalNumber = res.data.maleMedicalNumber;
this.femaleMedicalNumber = res.data.femaleMedicalNumber;
this.otherMedicalNumber = res.data.otherMedicalNumber;
}
});
} else if (this.format == 1) {
postapi(
"/api/customerreport/getunitphysicalexaminationreportreduce",
body
).then((res) => {
if (res.code != -1) {
this.reducetableData = [];
this.reducetableData.push(res.data);
this.reducereportTitle = res.data.reportTitle;
this.reducecustomerOrgName = res.data.customerOrgName;
this.reducemedicalTimes = res.data.medicalTimes;
this.reducestartMonth = res.data.startMonth;
this.reduceendMonth = res.data.endMonth;
this.reducestartDate = res.data.startDate;
this.reduceendDate = res.data.endDate;
this.reducesumMedicalNumber = res.data.sumMedicalNumber;
this.reducemaleMedicalNumber = res.data.maleMedicalNumber;
this.reducefemaleMedicalNumber = res.data.femaleMedicalNumber;
this.reduceotherMedicalNumber = res.data.otherMedicalNumber;
}
});
}
},
summarizeRegisterCounts(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;
}
});
return sums;
},
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===2){
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] += " 人";
}
});
return sums;
},
headerStyle({ row, column, rowIndex, columnIndex }) {
if (rowIndex === 1) {
return "left-align";
}
},
handleExport() {
if (this.format == 0) {
let index = 3;
let list = [];
list.push(index);
index += this.tableData[0].patientRegisterPositiveReports.length + 7;
list.push(index);
for (
let i = 0;
i <
this.tableData[0].positivePatientRegisterReportStandards.length - 1;
i++
) {
index +=
this.tableData[0].positivePatientRegisterReportStandards[i]
.patientRegisters.length + 4;
list.push(index);
}
exportToExcel(
"#standardTableData",
"收费员支付方式统计报表",
true,
list
);
} else if (this.format == 1) {
let index = 4;
let list = [];
list.push(index);
// for (let i = 0; i < this.tableData.length - 1; i++) {
// index += this.tableData[i].children.length + 3;
// list.push(index);
// }
exportToExcel("#tableData", "收费员发票类型统计报表", true, list);
} else {
let index = 3;
let list = [];
list.push(index);
for (let i = 0; i < this.projectTableData.length - 1; i++) {
index += this.projectTableData[i].details.length + 4;
list.push(index);
}
exportToExcel(
"#projectTableData",
"收费员组合项目统计报表",
true,
list
);
}
},
onPrint() {
this.flag = false;
let index = "";
if (this.format == 0) {
index = "imageDom0";
} else if (this.format == 1) {
index = "imageDom1";
} else {
index = "imageDom2";
}
this.$nextTick(() => {
let width = this.$refs[index].style.width;
let cloneDom = this.$refs[index].cloneNode(true);
let imageDom = this.$refs[index];
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: `@media print { @page {size: auto; margin: 0 0 0 0; } body{margin:0 5px}canvas{page-break-after: always;page-break-inside: avoid;
page-break-after: avoid;
page-break-before: avoid;}}`, // 去除页眉页脚
});
});
cloneDom.style.display = "none";
this.flag = true;
});
},
},
};
</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: 15px;
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-table__header-wrapper th.backcolor {
background-color: #f5f7fa;
}
:deep .left-align .cell {
text-align: left !important;
}
</style>

15
src/views/fee-settings/Asbitem.vue

@ -314,7 +314,11 @@
<!-- 指引单信息 -->
<el-tab-pane label="指引信息" name="second">
<div style="display: flex; width: 100%">
<div style="width: 95%">
<div :style="
'width:' +
(window.pageWidth - 200 - 110 - 50 - 10-110-10) +
'px;'
">
<el-form
ref="guidanceinformation"
:rules="guidelinesRules"
@ -399,15 +403,15 @@
</el-table>
</el-form>
</div>
<div>
<div style="margin-left: 15px">
<el-button
type=""
@click="createabulletbox"
style="margin-top: 50px; margin-left: 30px"
style="margin-top: 50px;"
class="commonbutton"
>新增</el-button
>
<div style="margin-top: 10px; margin-left: 30px">
<div style="margin-top: 10px">
<el-button
type=""
@click="deleteguidelines"
@ -415,7 +419,7 @@
>删除</el-button
>
</div>
<div style="margin-top: 10px; margin-left: 30px">
<div style="margin-top: 10px;">
<el-button
type=""
@click="saveguidelines"
@ -1324,7 +1328,6 @@ export default {
this.$message.warning("请选择组合项目");
this.isdislob = true;
} else {
console.log(this.form);
this.rowick(this.form);
this.isdislob = true;
}

74
src/views/fee-settings/Item.vue

@ -553,6 +553,43 @@
<el-input v-model="form.inputCheck" size="small"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="仪器类别" prop="">
<el-select
v-model="form.deviceTypeId"
placeholder="请选择"
size="small"
@change="quckRusetform"
>
<el-option
v-for="item in deviceTypeId"
:key="item.id"
:label="item.displayName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结果换行标志" prop="">
<el-select
v-model="form.lineModeFlag"
placeholder="请选择"
style="width: 100%"
size="small"
>
<el-option
v-for="item in dict.lineModeFlag"
:key="item.id"
:label="item.displayName"
:value="item.id"
>
</el-option>
</el-select>
<!-- <el-input v-model="form.referenceRangeTypeFlag"></el-input> -->
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="继续处理" prop="">
<el-checkbox
@ -632,27 +669,6 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="结果换行标志" prop="">
<el-select
v-model="form.lineModeFlag"
placeholder="请选择"
style="width: 100%"
size="small"
>
<el-option
v-for="item in dict.lineModeFlag"
:key="item.id"
:label="item.displayName"
:value="item.id"
>
</el-option>
</el-select>
<!-- <el-input v-model="form.referenceRangeTypeFlag"></el-input> -->
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false" class="difference"
@ -1417,9 +1433,9 @@ import {
projectedit,
projectdeleft,
projttitem,
projectdreog,
projectdreog
} from "@/request/commonapi";
import { unitlist } from "@/request/systemapi";
import { unitlist,instrumentlist } from "@/request/systemapi";
import Sortable from "sortablejs";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { deepCopy } from "../../utlis/proFunc";
@ -1553,7 +1569,8 @@ export default {
resultTemplateTypeFlag: null,
inputCheck: "",
isActive: "",
lineModeFlag:'2'
lineModeFlag:'2',
deviceTypeId:null
},
referenceRangeTypeFlag: [
@ -1687,6 +1704,9 @@ export default {
isContinueProcess: [
{ required: true, message: "请选择继续处理", trigger: "blur" },
],
deviceTypeId: [
{ required: true, message: "请选择仪器类别", trigger: "blur" },
],
resultTemplateTypeFlag: [
{
required: true,
@ -1800,6 +1820,7 @@ export default {
isshows: true,
isshowes: true,
initItemTypeId: "",
deviceTypeId:[]
};
},
created() {
@ -2905,6 +2926,11 @@ export default {
}
}
});
instrumentlist().then((res) => {
if (res.code != -1) {
this.deviceTypeId = res.data.items;
}
});
}
},
//

4
src/views/workload/individualfeedetails.vue

@ -191,6 +191,7 @@
<el-table-column
prop="bookkeepingTiem"
label="记账时间"
width="150"
></el-table-column>
</el-table-column>
</el-table>
@ -259,6 +260,7 @@
<el-table-column
prop="bookkeepingTiem"
label="记账时间"
width="150"
></el-table-column>
</el-table-column>
</el-table>
@ -481,7 +483,6 @@ export default {
}
},
headerStyle({ row, column, rowIndex, columnIndex }) {
console.log(rowIndex);
if (rowIndex === 1) {
return "left-align";
}
@ -949,7 +950,6 @@ export default {
cloneDom.style.top = "0px";
cloneDom.style.zIndex = "-1";
cloneDom.style.width = width;
console.log(cloneDom);
imageDom.appendChild(cloneDom);
html2canvas(cloneDom).then((canvas) => {
//

4
src/views/workload/peispersontime.vue

@ -176,7 +176,6 @@ export default {
},
methods: {
headerStyle({ row, column, rowIndex, columnIndex }) {
console.log(rowIndex);
if (rowIndex === 1) {
return "left-align";
}
@ -207,7 +206,7 @@ export default {
sums[index] = "共" + sums[index] + "人";
}
if(index===2){
sums[index]+='元'
sums[index]=sums[index].toFixed(2)+'元'
}
} else {
sums[index] = "";
@ -226,7 +225,6 @@ export default {
cloneDom.style.top = "0px";
cloneDom.style.zIndex = "-1";
cloneDom.style.width = width;
console.log(cloneDom);
imageDom.appendChild(cloneDom);
html2canvas(cloneDom).then((canvas) => {
//

4
src/views/workload/tollcollector.vue

@ -633,9 +633,9 @@ page-break-before: avoid;}}`, // 去除页眉页脚
if (index === 1) {
let sum = 0;
data.forEach((data, index) => {
sum += Number(data.invoiceTypeMoney);
sum =Number(sum)+Number(data.invoiceTypeMoney);
});
sums[index] = sum;
sums[index] = sum.toFixed(2);
return;
}
});

Loading…
Cancel
Save