293 lines
10 KiB
Vue
Executable File
293 lines
10 KiB
Vue
Executable File
<template>
|
|
<div class="app-container">
|
|
<el-form
|
|
:model="queryParams"
|
|
ref="queryRef"
|
|
:inline="true"
|
|
v-show="showSearch"
|
|
label-width="80px"
|
|
>
|
|
<el-form-item label="查询日期">
|
|
<el-date-picker
|
|
v-model="queryTime"
|
|
type="daterange"
|
|
start-placeholder="开始日期"
|
|
end-placeholder="结束日期"
|
|
style="width: 280px"
|
|
@change="getValue"
|
|
value-format="YYYY-MM-DD"
|
|
/>
|
|
</el-form-item>
|
|
<el-form-item label="费用性质">
|
|
<el-select
|
|
v-model="contractNo"
|
|
placeholder="费用性质"
|
|
clearable
|
|
@change="getValue"
|
|
style="width: 160px"
|
|
>
|
|
<el-option
|
|
v-for="item in contractList"
|
|
:key="item.busNo"
|
|
:label="item.contractName"
|
|
:value="item.busNo"
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button type="primary" plain icon="Search" @click="getValue">查询</el-button>
|
|
<el-button type="primary" plain icon="Printer" @click="print">打印</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
|
|
<el-card v-loading="loading" class="report-card" shadow="never">
|
|
<div class="report-header">
|
|
<h2 class="report-title">门诊收费日结单</h2>
|
|
</div>
|
|
|
|
<el-descriptions :column="4" border class="info-section" size="small">
|
|
<el-descriptions-item label="经办人姓名">{{ userStore.nickName || '-' }}</el-descriptions-item>
|
|
<el-descriptions-item label="科室">{{ userStore.orgName || '-' }}</el-descriptions-item>
|
|
<el-descriptions-item label="时间" :span="2">
|
|
{{ queryTime && queryTime.length === 2 ? queryTime[0] + ' ~ ' + queryTime[1] : '-' }}
|
|
</el-descriptions-item>
|
|
</el-descriptions>
|
|
|
|
<div class="section-title">收入汇总</div>
|
|
<el-descriptions :column="4" border class="data-section" size="small">
|
|
<el-descriptions-item label="总收入">{{ formatValue(reportValue.cashSum) }}</el-descriptions-item>
|
|
<el-descriptions-item label="现金">{{ formatValue(reportValue.rmbCashSum) }}</el-descriptions-item>
|
|
<el-descriptions-item label="微信">{{ formatValue(reportValue.vxCashSum) }}</el-descriptions-item>
|
|
<el-descriptions-item label="支付宝">{{ formatValue(reportValue.aliCashSum) }}</el-descriptions-item>
|
|
</el-descriptions>
|
|
|
|
<div class="section-title">医保支付</div>
|
|
<el-descriptions :column="4" border class="data-section" size="small">
|
|
<el-descriptions-item label="统筹支付">{{ formatValue(reportValue.tcSum) }}</el-descriptions-item>
|
|
<el-descriptions-item label="账户支付">{{ formatValue(reportValue.zhSum) }}</el-descriptions-item>
|
|
<el-descriptions-item label="基金支付总额">{{ formatValue(reportValue.fundSum) }}</el-descriptions-item>
|
|
<el-descriptions-item label="医保统筹+账户">{{ formatValue(Number(reportValue.zhSum || 0) + Number(reportValue.fundSum || 0)) }}</el-descriptions-item>
|
|
</el-descriptions>
|
|
|
|
<div class="section-title">费用明细</div>
|
|
<el-descriptions :column="4" border class="data-section" size="small">
|
|
<el-descriptions-item label="诊查费">{{ formatValue(reportValue.DIAGNOSTIC_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="检查费">{{ formatValue(reportValue.CHECK_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="化验费">{{ formatValue(reportValue.DIAGNOSTIC_TEST_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="治疗费">{{ formatValue(reportValue.MEDICAL_EXPENSE_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="西药费">{{ formatValue(reportValue.WEST_MEDICINE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="中药饮片费">{{ formatValue(reportValue.CHINESE_MEDICINE_SLICES_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="中成药费">{{ formatValue(reportValue.CHINESE_MEDICINE_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="卫生材料费">{{ formatValue(reportValue.SANITARY_MATERIALS_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="普通挂号费">{{ formatValue(reportValue.GENERAL_CONSULTATION_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="其他费用">{{ formatValue(reportValue.OTHER_FEE) }}</el-descriptions-item>
|
|
<el-descriptions-item label="退费金额">{{ formatValue(reportValue.returnFee) }}</el-descriptions-item>
|
|
<el-descriptions-item label="费用总额">{{ formatValue(Number(reportValue.DIAGNOSTIC_FEE || 0) + Number(reportValue.CHECK_FEE || 0) + Number(reportValue.DIAGNOSTIC_TEST_FEE || 0) + Number(reportValue.MEDICAL_EXPENSE_FEE || 0) + Number(reportValue.WEST_MEDICINE || 0) + Number(reportValue.CHINESE_MEDICINE_SLICES_FEE || 0) + Number(reportValue.CHINESE_MEDICINE_FEE || 0) + Number(reportValue.GENERAL_CONSULTATION_FEE || 0) + Number(reportValue.REGISTRATION_FEE || 0) + Number(reportValue.OTHER_FEE || 0) + Number(reportValue.SANITARY_MATERIALS_FEE || 0)) }}</el-descriptions-item>
|
|
</el-descriptions>
|
|
</el-card>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup name="dayEnd">
|
|
import { formatDateStr } from '@/utils/openhis';
|
|
import { getRreportReturnIssue, getTotal, getContractList } from './component/api';
|
|
import useUserStore from '@/store/modules/user';
|
|
import Decimal from 'decimal.js';
|
|
|
|
const { proxy } = getCurrentInstance();
|
|
const userStore = useUserStore();
|
|
|
|
const purchaseinventoryList = ref([]);
|
|
const reportValue = ref({});
|
|
const total = ref(0);
|
|
const loading = ref(false);
|
|
const showSearch = ref(true);
|
|
const ids = ref([]);
|
|
const single = ref(true);
|
|
const multiple = ref(true);
|
|
const occurrenceTime = ref([]);
|
|
const contractList = ref([]);
|
|
const queryTime = ref([
|
|
formatDateStr(new Date(), 'YYYY-MM-DD'),
|
|
formatDateStr(new Date(), 'YYYY-MM-DD'),
|
|
]);
|
|
const contractNo = ref('0000');
|
|
|
|
const data = reactive({
|
|
queryParams: {
|
|
form: {},
|
|
pageNo: 1,
|
|
pageSize: 10,
|
|
searchKey: undefined,
|
|
purposeLocationId: undefined,
|
|
sourceLocationId: undefined,
|
|
supplierId: undefined,
|
|
approvalTimeSTime: undefined,
|
|
approvalTimeETime: undefined,
|
|
},
|
|
rules: {},
|
|
});
|
|
|
|
const { queryParams, form, rules } = toRefs(data);
|
|
|
|
getValue();
|
|
function getValue() {
|
|
loading.value = true;
|
|
getTotal({
|
|
contractNo: contractNo.value,
|
|
startTime: queryTime.value[0] + ' 00:00:00',
|
|
endTime: queryTime.value[1] + ' 23:59:59',
|
|
entererId: userStore.practitionerId,
|
|
}).then((res) => {
|
|
loading.value = false;
|
|
reportValue.value = res.data;
|
|
});
|
|
}
|
|
|
|
getContract();
|
|
function getContract() {
|
|
getContractList().then((response) => {
|
|
contractList.value = response.data;
|
|
});
|
|
}
|
|
|
|
function getPharmacyCabinetLists() {
|
|
}
|
|
/** 查询调拨管理项目列表 */
|
|
function getList() {
|
|
loading.value = true;
|
|
getRreportReturnIssue(queryParams.value).then((res) => {
|
|
loading.value = false;
|
|
purchaseinventoryList.value = res.data.records;
|
|
total.value = res.data.total;
|
|
});
|
|
}
|
|
|
|
/** 搜索按钮操作 */
|
|
function handleQuery() {
|
|
queryParams.value.approvalTimeSTime =
|
|
occurrenceTime.value && occurrenceTime.value.length == 2
|
|
? occurrenceTime.value[0] + ' 00:00:00'
|
|
: '';
|
|
queryParams.value.approvalTimeETime =
|
|
occurrenceTime.value && occurrenceTime.value.length == 2
|
|
? occurrenceTime.value[1] + ' 23:59:59'
|
|
: '';
|
|
queryParams.value.pageNo = 1;
|
|
getList();
|
|
}
|
|
|
|
/** 清空条件按钮操作 */
|
|
function handleClear() {
|
|
queryParams.value.approvalTimeSTime = '';
|
|
queryParams.value.approvalTimeETime = '';
|
|
occurrenceTime.value = '';
|
|
proxy.resetForm('queryRef');
|
|
getList();
|
|
}
|
|
|
|
/** 选择条数 */
|
|
function handleSelectionChange(selection) {
|
|
ids.value = selection.map((item) => item.id);
|
|
single.value = selection.length != 1;
|
|
multiple.value = !selection.length;
|
|
}
|
|
|
|
/** 打印门诊日结 */
|
|
async function print() {
|
|
console.log(reportValue.value, '==reportValue.value==');
|
|
const result = {
|
|
data: [
|
|
{
|
|
...reportValue.value,
|
|
nickName: userStore.nickName,
|
|
orgName: userStore.orgName,
|
|
fixmedinsName: userStore.hospitalName,
|
|
queryTime: queryTime.value[0] + '~' + queryTime.value[1],
|
|
zfAmount: new Decimal(reportValue.value.zhSum || 0).add(reportValue.value.fundSum || 0),
|
|
feeAmount: new Decimal(reportValue.value.DIAGNOSTIC_FEE || 0)
|
|
.add(reportValue.value.CHECK_FEE || 0)
|
|
.add(reportValue.value.DIAGNOSTIC_TEST_FEE || 0)
|
|
.add(reportValue.value.MEDICAL_EXPENSE_FEE || 0)
|
|
.add(reportValue.value.WEST_MEDICINE || 0)
|
|
.add(reportValue.value.CHINESE_MEDICINE_SLICES_FEE || 0)
|
|
.add(reportValue.value.CHINESE_MEDICINE_FEE || 0)
|
|
.add(reportValue.value.GENERAL_CONSULTATION_FEE || 0)
|
|
.add(reportValue.value.REGISTRATION_FEE || 0)
|
|
.add(reportValue.value.OTHER_FEE || 0)
|
|
.add(reportValue.value.SANITARY_MATERIALS_FEE || 0),
|
|
},
|
|
],
|
|
};
|
|
console.log(result, '==result.data==');
|
|
let jsonString = JSON.stringify(result, null, 2);
|
|
console.log(jsonString, 'jsonstring');
|
|
await CefSharp.BindObjectAsync('boundAsync');
|
|
await boundAsync
|
|
.printReport(getPrintFileName(contractNo.value), jsonString)
|
|
.then((response) => {
|
|
console.log(response, 'response');
|
|
var res = JSON.parse(response);
|
|
if (!res.IsSuccess) {
|
|
proxy.$modal.msgError('调用打印插件失败:' + res.ErrorMessage);
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
proxy.$modal.msgError('调用打印插件失败:' + error);
|
|
});
|
|
}
|
|
|
|
function getPrintFileName(value) {
|
|
switch (value) {
|
|
case '0000':
|
|
return '门诊日结单(按登录角色查询)自费.grf';
|
|
case '229900':
|
|
return '门诊日结单(按登录角色查询)省医保.grf';
|
|
case '220100':
|
|
return '门诊日结单(按登录角色查询)市医保.grf';
|
|
}
|
|
}
|
|
|
|
function formatValue(value) {
|
|
return value == null || value == undefined ? '0.00 元' : value.toFixed(2) + ' 元';
|
|
}
|
|
|
|
getList();
|
|
getPharmacyCabinetLists();
|
|
</script>
|
|
<style scoped>
|
|
.report-card {
|
|
margin-top: 16px;
|
|
}
|
|
|
|
.report-header {
|
|
text-align: center;
|
|
padding: 12px 0 16px;
|
|
}
|
|
|
|
.report-title {
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
margin: 0;
|
|
color: #303133;
|
|
}
|
|
|
|
.section-title {
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
color: #409eff;
|
|
padding: 12px 0 8px;
|
|
margin: 16px 0 8px;
|
|
border-left: 3px solid #409eff;
|
|
padding-left: 8px;
|
|
}
|
|
|
|
.info-section {
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.data-section {
|
|
margin-bottom: 0;
|
|
}
|
|
</style>
|