| 
					
				 | 
			
			
				@@ -0,0 +1,133 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<div class="layout_container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<header> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <el-date-picker 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      v-model="dateValue" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type="datetimerange" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      value-format="YYYY-MM-DD HH:mm:ss" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      start-placeholder="开始时间" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end-placeholder="结束时间" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :default-time="defaultTime2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <el-select v-model="type" style="width: 200px; margin-left: 5px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-option label="执行科室核算汇总" value="1"></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-option label="申请科室核算汇总" value="2"></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <el-button type="primary" icon="Search" @click="queryData" style="margin-left: 5px">查询</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <el-button type="primary" icon="Download" @click="exportData" style="margin-left: 5px">导出</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</header> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<div class="layout_main"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div class="layout_container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="layout_main layout_el-table"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table :data="returnData.data" :span-method="objectSpanMethod" :row-style="rowStyle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                height="100%" highlight-current-row border stripe> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-table-column type="index" label="序号" align="center"></el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template v-for="col in returnData.headList"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-table-column :prop="col.name" :label="col.display" :width="col.width" :align="col.align" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                           show-overflow-tooltip> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-table> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup name="InpatientDeptAccountingReport"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {reactive, ref} from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  exportInpatientDeptAccountingReport, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  selectInpatientDeptAccountingReport 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} from "@/api/reports/all-statistics-report"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {ElMessage} from "element-plus"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const dateValue = ref('') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const type = ref("1") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const now = new Date() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const defaultTime2 = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const queryTerm = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  startTime: defaultTime2[0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  endTime: defaultTime2[1], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  type: type.value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  exportName: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const returnData = ref({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  headList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const queryData = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!dateValue.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ElMessage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请选择查询时间!', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: 'warning', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      duration: 2500, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showClose: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  queryTerm.startTime = dateValue.value[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  queryTerm.endTime = dateValue.value[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  queryTerm.type = type.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  selectInpatientDeptAccountingReport(queryTerm) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      returnData.value.headList = res.headList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      returnData.value.data = res.dataList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 导出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const exportData = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (returnData.value.data.length <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ElMessage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '没有可以导出的数据!', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: 'warning', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      duration: 2500, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showClose: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(type.value === "1") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    t = "泰和医院住院执行科室核算收入报表" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    t = "泰和医院住院申请科室核算收入报表" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 导出excel表格标题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  queryTerm.exportName = t; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  exportInpatientDeptAccountingReport(queryTerm) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 单元格合并 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const objectSpanMethod = (data) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(data.columnIndex === 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 当前列为0的时候不进行操作单元格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const name = data.row[data.column.property]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const preRow = returnData.value.data[data.rowIndex - 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const preValue = preRow ? preRow[data.column.property] : null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 当前行的数据对象的name 是否和 上一行列的 name 是否相等 相等就不合并单元格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (name === preValue) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return {rowspan: 0, colspan: 0}; // 不生成单元格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let rowspan = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let i = data.rowIndex + 1; i < returnData.value.data.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const nextRow = returnData.value.data[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const nextValue = nextRow[data.column.property]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (nextValue === name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          rowspan++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return {rowspan, colspan: 1}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const rowStyle = (data) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   if (data.row.flm === "小计:") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 'color: #d7073b;font-weight: 700;'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 |