|
@@ -1,13 +1,13 @@
|
|
|
<template>
|
|
|
<div class="si-content">
|
|
|
- <!-- <table>
|
|
|
+ <table>
|
|
|
<tr>
|
|
|
<td colspan="2" style="width: 15%;">住院号</td>
|
|
|
- <td colspan="2" style="width: 15%;"></td>
|
|
|
+ <td colspan="2" style="width: 15%;">{{ setlinfo.patNo }}</td>
|
|
|
<td colspan="2" style="width: 15%;">医保号</td>
|
|
|
- <td colspan="3" style="width: 25%;"></td>
|
|
|
+ <td colspan="3" style="width: 25%;">{{ }}</td>
|
|
|
<td style="width: 10%;">医保就诊号</td>
|
|
|
- <td colspan="2" style="width: 15%;"></td>
|
|
|
+ <td colspan="2" style="width: 15%;">{{ }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">姓名</td>
|
|
@@ -21,98 +21,98 @@
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">报销类别</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.medTypeName }}</td>
|
|
|
<td colspan="2">入院时间</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.begntime }}</td>
|
|
|
<td colspan="2">出院日期</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.endtime }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">本次总费用</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.medfeeSumamt }}</td>
|
|
|
<td colspan="2">全自费费用</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.fulamtOwnpayAmt }}</td>
|
|
|
<td colspan="2">范围内费用</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.inscpScpAmt }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">基本保险基金</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.hifpPay }}</td>
|
|
|
<td colspan="2">超限价自费</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.overlmtSelfpay }}</td>
|
|
|
<td colspan="2">起付线</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">公务员基金支付</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.cvlservPay }}</td>
|
|
|
<td colspan="2">先行自付费用</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.preselfpayAmt }}</td>
|
|
|
<td colspan="2">基金支付比</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ calculatePercentage(setlinfo.cvlservPay, setlinfo.medfeeSumamt) }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">医疗救助基金</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.mafPay }}</td>
|
|
|
<td colspan="4"></td>
|
|
|
<td colspan="2">自理(旧版适用)</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">居民大病保险</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.hifmiPay }}</td>
|
|
|
<td colspan="4"></td>
|
|
|
<td colspan="2">民政支付(旧版适用)</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">大病补充保险</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ }}</td>
|
|
|
<td colspan="8"></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">职工大额救助基金</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.hifobPay }}</td>
|
|
|
<td colspan="2">生育基金</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ }}</td>
|
|
|
<td colspan="4"></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">企业补充保险</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{}}</td>
|
|
|
<td colspan="8"></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">保险公司直付赔付</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ }}</td>
|
|
|
<td colspan="8"></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">其他支付</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.othPay }}</td>
|
|
|
<td colspan="2">他人账户代付</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ }}</td>
|
|
|
<td colspan="2">报销费用占总费用</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ getReimbursementRatio(setlinfo) }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">低收入医院垫付</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.hospPartAmt }}</td>
|
|
|
<td colspan="2">个人现金支付</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.psnCashPay }}</td>
|
|
|
<td colspan="2">自负占比</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ calculatePercentage(add(setlinfo.acctPay, setlinfo.psnCashPay), setlinfo.medfeeSumamt) }}</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td colspan="2">个人自负费用</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ add(setlinfo.acctPay, setlinfo.psnCashPay) }}</td>
|
|
|
<td colspan="2">个人账户支付</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.acctPay }}</td>
|
|
|
<td colspan="2">个人账户余额</td>
|
|
|
- <td colspan="2"></td>
|
|
|
+ <td colspan="2">{{ setlinfo.balc }}</td>
|
|
|
</tr>
|
|
|
- </table> -->
|
|
|
- <div style="height: 8px"></div>
|
|
|
+ </table>
|
|
|
+ <!-- <div style="height: 8px"></div>
|
|
|
<table>
|
|
|
<tr>
|
|
|
<td>姓名</td>
|
|
@@ -169,7 +169,7 @@
|
|
|
<td colspan="2">{{ setlinfo.balc }}</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
- <!-- <div style="height: 8px"></div>
|
|
|
+ <div style="height: 8px"></div>
|
|
|
<table>
|
|
|
<tr>
|
|
|
<td rowspan="3">既往费用</td>
|
|
@@ -317,7 +317,7 @@
|
|
|
<td colspan="2">{{ setlinfo.polItemInfo.allFundAmt }}</td>
|
|
|
<td colspan="3">{{ setlinfo.polItemInfo.allSum }}</td>
|
|
|
</tr>
|
|
|
- </table> -->
|
|
|
+ </table>
|
|
|
<div style="height: 8px"></div>
|
|
|
<table>
|
|
|
<tr>
|
|
@@ -354,7 +354,7 @@
|
|
|
<td colspan="2">医院负担金额</td>
|
|
|
<td colspan="2">{{ setlinfo.hospPartAmt }}</td>
|
|
|
</tr>
|
|
|
- </table>
|
|
|
+ </table> -->
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -366,8 +366,108 @@ export default {
|
|
|
default: {}
|
|
|
}
|
|
|
},
|
|
|
- setup() { }
|
|
|
+ setup() {
|
|
|
+ const calculatePercentage = (numerator, denominator, decimalPlaces = 2) => {
|
|
|
+ // 统一处理输入:数字直接使用,字符串尝试转换为数字
|
|
|
+ const parseValue = (value) => {
|
|
|
+ if (typeof value === 'number') {
|
|
|
+ return value; // 数字类型直接返回
|
|
|
+ }
|
|
|
+ if (typeof value === 'string') {
|
|
|
+ // 字符串类型:去除首尾空格后转换
|
|
|
+ const trimmed = value.trim();
|
|
|
+ return trimmed ? parseFloat(trimmed) : NaN;
|
|
|
+ }
|
|
|
+ // 非数字/字符串类型视为无效
|
|
|
+ return NaN;
|
|
|
+ };
|
|
|
+
|
|
|
+ // 解析分子和分母
|
|
|
+ const num = parseValue(numerator);
|
|
|
+ const den = parseValue(denominator);
|
|
|
+
|
|
|
+ // 校验有效性
|
|
|
+ if (isNaN(num) || isNaN(den)) {
|
|
|
+ console.error('输入值无效(必须是数字或数字字符串)');
|
|
|
+ return '0.00%';
|
|
|
+ }
|
|
|
+ if (den === 0) {
|
|
|
+ console.error('分母不能为0');
|
|
|
+ return '0.00%';
|
|
|
+ }
|
|
|
+
|
|
|
+ // 计算百分比并格式化
|
|
|
+ const percentage = (num / den) * 100;
|
|
|
+ const rounded = percentage.toFixed(decimalPlaces); // 四舍五入保留小数
|
|
|
+
|
|
|
+ return `${rounded}%`;
|
|
|
+ }
|
|
|
+
|
|
|
+ const add = (a, b) => {
|
|
|
+ console.log(a, b)
|
|
|
+ if ((!a && a !== 0) || (!b && b !== 0)) return ""
|
|
|
+ // 1. 获取两个数的小数位数
|
|
|
+ const decimalLen = (num) => {
|
|
|
+ const str = num.toString();
|
|
|
+ const dotIndex = str.indexOf('.');
|
|
|
+ return dotIndex === -1 ? 0 : str.length - dotIndex - 1;
|
|
|
+ };
|
|
|
+ const lenA = decimalLen(a);
|
|
|
+ const lenB = decimalLen(b);
|
|
|
+
|
|
|
+ // 2. 计算放大倍数(10的最大小数位数次方)
|
|
|
+ const maxLen = Math.max(lenA, lenB);
|
|
|
+ const multiple = Math.pow(10, maxLen);
|
|
|
+
|
|
|
+ // 3. 放大为整数后相加,再缩小回原比例
|
|
|
+ return (a * multiple + b * multiple) / multiple;
|
|
|
+ }
|
|
|
+
|
|
|
+ const subtract = (minuend, subtrahend) => {
|
|
|
+ // 1. 解析参数:转换为数字,无效值视为0
|
|
|
+ const parseNumber = (value) => {
|
|
|
+ if (value === undefined || value === null) return 0;
|
|
|
+ const num = Number(value);
|
|
|
+ return isNaN(num) ? 0 : num;
|
|
|
+ };
|
|
|
+
|
|
|
+ const numA = parseNumber(minuend);
|
|
|
+ const numB = parseNumber(subtrahend);
|
|
|
+
|
|
|
+ // 2. 计算两个数的小数位数
|
|
|
+ const getDecimalLength = (num) => {
|
|
|
+ const str = num.toString();
|
|
|
+ const dotIndex = str.indexOf('.');
|
|
|
+ return dotIndex === -1 ? 0 : str.length - dotIndex - 1;
|
|
|
+ };
|
|
|
+
|
|
|
+ const lenA = getDecimalLength(numA);
|
|
|
+ const lenB = getDecimalLength(numB);
|
|
|
+
|
|
|
+ // 3. 确定放大倍数(10的最大小数位数次方)
|
|
|
+ const maxLen = Math.max(lenA, lenB);
|
|
|
+ const multiple = Math.pow(10, maxLen);
|
|
|
+
|
|
|
+ // 4. 放大为整数后相减,再缩小回原比例
|
|
|
+ return (numA * multiple - numB * multiple) / multiple;
|
|
|
+ }
|
|
|
+
|
|
|
+ const getReimbursementRatio = (setlinfo) => {
|
|
|
+ let reimbursement = subtract(setlinfo.medfeeSumamt,add(setlinfo.acctPay, setlinfo.psnCashPay))
|
|
|
+ console.log(1111,reimbursement)
|
|
|
+ return calculatePercentage(reimbursement, setlinfo.medfeeSumamt)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 关键:必须返回方法,模板才能访问
|
|
|
+ return {
|
|
|
+ calculatePercentage,
|
|
|
+ add,
|
|
|
+ subtract,
|
|
|
+ getReimbursementRatio
|
|
|
+ };
|
|
|
+ },
|
|
|
}
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|