Compare commits
No commits in common. "eb2454f5c423992def88d38db6812196f43e17a4" and "aae6e720ea01ce3e9a0ebc892b52ae103a56f472" have entirely different histories.
eb2454f5c4
...
aae6e720ea
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"99959": "医疗费用清算",
|
||||
"41": "药店购药",
|
||||
"99952": "异地医疗费用清算",
|
||||
"9914": "签约服务费",
|
||||
"99939": "门诊统筹清算"
|
||||
}
|
||||
|
|
@ -1,194 +0,0 @@
|
|||
|
||||
|
||||
<template>
|
||||
<Mask :is-show="show" :height="600" :width="400" @close="close" title="手动对账">
|
||||
<div class="form">
|
||||
<el-form :model="formData" label-width="130" :rules="rules" ref="formRef">
|
||||
<el-form-item label="对账日期" prop="date">
|
||||
<el-date-picker
|
||||
v-model="selectDate"
|
||||
type="daterange"
|
||||
@change="changeDate"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="height: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="清算类别" prop="reconciliationType">
|
||||
<el-select v-model="formData.reconciliationType" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in clrTypeOptions"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="险种类型" prop="insuranceType">
|
||||
<el-select v-model="formData.insuranceType" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in insutypesOptions"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="经办机构" prop="handlingInstitution">
|
||||
<el-input v-model="formData.handlingInstitution"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="医疗费用总额" prop="totalMedicalCost">
|
||||
<el-input v-model.number="formData.totalMedicalCost" type="number"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="基金支付总额" prop="totalFundPayment">
|
||||
<el-input v-model.number="formData.totalFundPayment" type="number"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="个账支付总额" prop="totalPersonalAccountPayment">
|
||||
<el-input v-model.number="formData.totalPersonalAccountPayment" type="number"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="结算笔数" prop="settlementCount">
|
||||
<el-input v-model.number="formData.settlementCount" type="number"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item >
|
||||
<el-button type="primary" @click="submitForm">对账</el-button>
|
||||
<el-button @click="close">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</Mask>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
|
||||
import Mask from "@/components/common/Mask.vue";
|
||||
import {reactive, ref} from "vue";
|
||||
import {post} from "@/utils/request.ts";
|
||||
import {ElMessage} from "element-plus";
|
||||
import {formatDateArray, getEndOfDay} from "@/utils/dateUtils.ts";
|
||||
const clrTypeOptions = [
|
||||
{key: "99959", value: "医疗费用清算"},
|
||||
{key: "41", value: "药店购药"},
|
||||
{key: "99952", value: "异地医疗费用清算"},
|
||||
{key: "9914", value: "签约服务费"},
|
||||
{key: "99939", value: "门诊统筹清算"}
|
||||
]
|
||||
const insutypesOptions = [
|
||||
{ key: "310", value: "职工基本医疗保险" },
|
||||
{ key: "31003", value: "医疗保险个人账户(用人单位)" },
|
||||
{ key: "312", value: "农民工住院医疗" },
|
||||
{ key: "320", value: "公务员医疗补助" },
|
||||
{ key: "321", value: "公务员医疗补助(市直统发)" },
|
||||
{ key: "323", value: "公务员医疗补助(市直非统发)" },
|
||||
{ key: "330", value: "大额医疗费用补助" },
|
||||
{ key: "331", value: "二次补助" },
|
||||
{ key: "340", value: "离休人员医疗保障" },
|
||||
{ key: "350", value: "一至六级残废军人医疗补助" },
|
||||
{ key: "360", value: "老红军医疗保障" },
|
||||
{ key: "370", value: "企业补充医疗保险" },
|
||||
{ key: "380", value: "新型农村合作医疗" },
|
||||
{ key: "390", value: "城乡居民基本医疗保险" },
|
||||
{ key: "391", value: "城镇居民基本医疗保险" },
|
||||
{ key: "392", value: "城乡居民大病医疗保险" },
|
||||
{ key: "399", value: "其他特殊人员医疗保障" },
|
||||
{ key: "39901", value: "劳模医疗保障" },
|
||||
{ key: "39902", value: "补充百分之10医疗" },
|
||||
{ key: "39903", value: "城乡居民补充医疗保险" },
|
||||
{ key: "39904", value: "建国前老工人医疗保险" },
|
||||
{ key: "39905", value: "二乙医疗保险" },
|
||||
{ key: "39906", value: "意外伤害医疗保险" },
|
||||
{ key: "410", value: "长期照护保险" },
|
||||
{ key: "510", value: "生育保险" },
|
||||
{ key: "520", value: "公务员生育" }
|
||||
]
|
||||
const init = (data:any) => {
|
||||
formData.value= data;
|
||||
selectDate.value = formatDateArray([data.beginTime, data.endTime]);
|
||||
show.value = true;
|
||||
};
|
||||
defineExpose({init})
|
||||
const show = ref(false);
|
||||
const close = () => {
|
||||
show.value = false;
|
||||
};
|
||||
const formData = ref<any>({})
|
||||
const changeDate = (val: any) => {
|
||||
selectDate.value = formatDateArray(val);
|
||||
formData.value.beginTime = selectDate.value[0];
|
||||
formData.value.endTime = getEndOfDay(selectDate.value[1]);
|
||||
}
|
||||
const selectDate = ref<any>([])
|
||||
const submitForm = () => {
|
||||
// 假设你给 el-form 设置了 ref="formRef"
|
||||
formRef.value.validate((valid:any) => {
|
||||
if (valid) {
|
||||
accountRecordDo()
|
||||
} else {
|
||||
ElMessage.error('请完善表单');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const accountRecordDo = () => {
|
||||
let data = {...formData.value};
|
||||
post("social/reconciliation/totalDo", {data: data}).then((res: any) => {
|
||||
let msg = res.stmtinfo.stmt_rslt_dscr;
|
||||
if (res.stmtinfo.stmt_rslt == 0){
|
||||
msg = "对平"
|
||||
}
|
||||
ElMessage.success({
|
||||
message: msg,
|
||||
duration: 8000
|
||||
});
|
||||
})
|
||||
}
|
||||
const formRef =ref();
|
||||
const rules = reactive({
|
||||
// 对账日期(date)需要手动校验,因为 el-date-picker 不直接支持 prop 校验
|
||||
date: [
|
||||
{ validator: validateDate, trigger: 'change' }
|
||||
],
|
||||
reconciliationType: [
|
||||
{ required: true, message: '清算类别不能为空', trigger: 'change' }
|
||||
],
|
||||
insuranceType: [
|
||||
{ required: true, message: '险种类型不能为空', trigger: 'change' }
|
||||
],
|
||||
handlingInstitution: [
|
||||
{ required: true, message: '经办机构不能为空', trigger: 'blur' }
|
||||
],
|
||||
totalMedicalCost: [
|
||||
{ required: true, message: '医疗费用总额不能为空', trigger: 'blur' },
|
||||
{ type: 'number', message: '必须为数字', trigger: 'blur' }
|
||||
],
|
||||
totalFundPayment: [
|
||||
{ required: true, message: '基金支付总额不能为空', trigger: 'blur' },
|
||||
{ type: 'number', message: '必须为数字', trigger: 'blur' }
|
||||
],
|
||||
totalPersonalAccountPayment: [
|
||||
{ required: true, message: '个账支付总额不能为空', trigger: 'blur' },
|
||||
{ type: 'number', message: '必须为数字', trigger: 'blur' }
|
||||
],
|
||||
settlementCount: [
|
||||
{ required: true, message: '结算笔数不能为空', trigger: 'blur' },
|
||||
{ type: 'number', message: '必须为数字', trigger: 'blur' }
|
||||
]
|
||||
});
|
||||
|
||||
function validateDate(rule: any, value: any, callback: any) {
|
||||
if (!selectDate.value || selectDate.value.length < 2) {
|
||||
callback(new Error('请选择完整的对账日期范围'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.form{
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -9,7 +9,7 @@ const router = createRouter({
|
|||
},
|
||||
{
|
||||
path: '/manager/login',
|
||||
component: () => import('../views/Login.vue'),
|
||||
component: ()=>import('../views/Login.vue'),
|
||||
},
|
||||
{
|
||||
path: '/home',
|
||||
|
|
@ -155,10 +155,6 @@ const router = createRouter({
|
|||
path: "accountRecord",
|
||||
component: () => import('@/views/social/accountRecords.vue'),
|
||||
},
|
||||
{
|
||||
path: "reconciliationRecord",
|
||||
component: () => import('@/views/social/reconciliationRecord.vue'),
|
||||
},
|
||||
|
||||
]
|
||||
},
|
||||
|
|
|
|||
|
|
@ -108,11 +108,6 @@ const childMenuList = ref([
|
|||
{
|
||||
name: '对账',
|
||||
path: '/social/accountRecord',
|
||||
},
|
||||
{
|
||||
name: '对账记录',
|
||||
path: '/social/reconciliationRecord',
|
||||
}
|
||||
|
||||
])
|
||||
</script>
|
||||
|
|
@ -12,43 +12,40 @@
|
|||
/>
|
||||
</div>
|
||||
<el-table :data="list" style="width: 100%;flex: 1;min-height: 0">
|
||||
<el-table-column label="清算类别" prop="reconciliationType">
|
||||
<template #default="scope">
|
||||
{{getKey(clrType, scope.row.reconciliationType)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="险种类型" prop="insuranceType">
|
||||
<template #default="scope">
|
||||
{{getKey(insutypes, scope.row.insuranceType)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="清算类别" prop="reconciliationType"></el-table-column>
|
||||
<el-table-column label="险种类型" prop="insuranceType"></el-table-column>
|
||||
<el-table-column label="经办机构" prop="handlingInstitution"></el-table-column>
|
||||
<el-table-column label="医疗费用总额" prop="totalMedicalCost"></el-table-column>
|
||||
<el-table-column label="基金支付总额" prop="totalFundPayment"></el-table-column>
|
||||
<el-table-column label="个账支付总额" prop="totalPersonalAccountPayment"></el-table-column>
|
||||
<el-table-column label="结算笔数" prop="settlementCount"></el-table-column>
|
||||
<el-table-column label="对账结果" prop="reconciliationResult">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.reconciliationResult == null" type="info">未对账</el-tag>
|
||||
<el-tag v-if="scope.row.reconciliationResult == 0" type="success">{{ reconciliationResult[0] }}</el-tag>
|
||||
<el-tag v-if="scope.row.reconciliationResult != null&&scope.row.reconciliationResult != 0" type="danger">{{
|
||||
reconciliationResult[scope.row.reconciliationResult as keyof typeof reconciliationResult] || '未知状态'
|
||||
}}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" @click="artificialReconciliation(scope.row)" link>对账</el-button>
|
||||
<el-button type="primary" @click="accountRecordDo(scope.row)" link>对账</el-button>
|
||||
<el-button type="primary" @click="detailsDo(scope.row)" link>明细对账</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<DetailList ref="detailListRef"></DetailList>
|
||||
<ArtificialReconciliation ref="artificialReconciliationRef"></ArtificialReconciliation>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {nextTick, onMounted, ref} from "vue";
|
||||
import {onMounted, ref} from "vue";
|
||||
import {formatDateArray, getEndOfDay, getThisMonth, getToday} from "@/utils/dateUtils.ts";
|
||||
import {post} from "@/utils/request.ts";
|
||||
import DetailList from "@/components/social/reconciliation/DetailList.vue";
|
||||
import ArtificialReconciliation from "@/components/social/reconciliation/ArtificialReconciliation.vue";
|
||||
import {ElMessage} from "element-plus";
|
||||
import {reconciliationResult} from "@/assets/config/constants.ts";
|
||||
import {getKey} from "@/utils/discrotyUtil.ts";
|
||||
import clrType from "@/assets/config/directory/clrType.json"
|
||||
import insutypes from "@/assets/config/directory/insutypes.json"
|
||||
import {reconciliationResult} from "../../assets/config/constants.ts";
|
||||
|
||||
const selectDate = ref<any>();
|
||||
const changeDate = (dates: Date[]) => {
|
||||
|
|
@ -78,6 +75,18 @@ const getList = () => {
|
|||
}
|
||||
)
|
||||
}
|
||||
const accountRecordDo = (row: any) => {
|
||||
let data = {...row};
|
||||
data.beginTime = selectDate.value[0];
|
||||
data.endTime = selectDate.value[1];
|
||||
post("social/reconciliation/totalDo", {data: data}).then((res: any) => {
|
||||
ElMessage.success({
|
||||
message: res.stmtinfo.stmt_rslt_dscr,
|
||||
duration: 8000
|
||||
});
|
||||
row.reconciliationResult = res.stmtinfo.stmt_rslt
|
||||
})
|
||||
}
|
||||
|
||||
const detailsDo = (row: any) => {
|
||||
let data = {...row};
|
||||
|
|
@ -86,21 +95,15 @@ const detailsDo = (row: any) => {
|
|||
post("social/reconciliation/detailDo", {data: data}).then((res: any) => {
|
||||
openDetailList(res)
|
||||
})
|
||||
// post("social/reconciliation/testDetailDo", {data: data}).then((res: any) => {
|
||||
// openDetailList(res)
|
||||
// })
|
||||
}
|
||||
|
||||
const detailListRef = ref();
|
||||
const openDetailList = (list: any) => {
|
||||
detailListRef.value.open(list);
|
||||
}
|
||||
const artificialReconciliationRef = ref();
|
||||
const artificialReconciliation = (row:any) => {
|
||||
let data = {...row};
|
||||
data.beginTime = selectDate.value[0];
|
||||
data.endTime = selectDate.value[1];
|
||||
nextTick(()=>{
|
||||
artificialReconciliationRef.value?.init(data);
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
let today = getThisMonth();
|
||||
|
|
|
|||
|
|
@ -1,101 +0,0 @@
|
|||
<template>
|
||||
<div class="container-wrapper">
|
||||
<div class="search">
|
||||
<el-form :inline="true" ><
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
<el-table :data="list" style="width: 100%;flex: 1;min-height: 0">
|
||||
<el-table-column label="清算类别" prop="reconciliationType">
|
||||
<template #default="scope">
|
||||
{{getKey(clrType, scope.row.reconciliationType)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="险种类型" prop="insuranceType">
|
||||
<template #default="scope">
|
||||
{{getKey(insutypes, scope.row.insuranceType)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="经办机构" prop="handlingInstitution"></el-table-column>
|
||||
<el-table-column label="医疗费用总额" prop="totalMedicalCost"></el-table-column>
|
||||
<el-table-column label="基金支付总额" prop="totalFundPayment"></el-table-column>
|
||||
<el-table-column label="个账支付总额" prop="totalPersonalAccountPayment"></el-table-column>
|
||||
<el-table-column label="结算笔数" prop="settlementCount"></el-table-column>
|
||||
<el-table-column label="对账结果" prop="reconciliationResult">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.reconciliationResult == null" type="info">未对账</el-tag>
|
||||
<el-tag v-if="scope.row.reconciliationResult == 0" type="success">{{ reconciliationResult[0] }}</el-tag>
|
||||
<el-tag v-if="scope.row.reconciliationResult != null&&scope.row.reconciliationResult != 0" type="danger">{{
|
||||
reconciliationResult[scope.row.reconciliationResult as keyof typeof reconciliationResult] || '未知状态'
|
||||
}}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="详细信息" prop="resultDesc" width="200" show-overflow-tooltip></el-table-column>
|
||||
</el-table>
|
||||
<el-pagination background layout="prev, pager, next" v-model:current-page="pageNum" v-model:page-size="pageSize" @change="changePageNumHandler" :total="total"/>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {onMounted, ref} from "vue";
|
||||
import {post} from "@/utils/request.ts";
|
||||
import {reconciliationResult} from "@/assets/config/constants.ts";
|
||||
import clrType from "@/assets/config/directory/clrType.json"
|
||||
import insutypes from "@/assets/config/directory/insutypes.json"
|
||||
import {getKey} from "@/utils/discrotyUtil.ts";
|
||||
|
||||
const pageSize = ref(20);
|
||||
const pageNum = ref(1);
|
||||
const total = ref(0);
|
||||
|
||||
interface queryParams {
|
||||
pageNum: number;
|
||||
pageSize: number;
|
||||
beginTime?: string;
|
||||
endTime?: string;
|
||||
reconciliationType?: string;
|
||||
insuranceType?: string;
|
||||
handlingInstitution?: string;
|
||||
}
|
||||
|
||||
const changePageNumHandler = (pageNum: number) => {
|
||||
getList()
|
||||
|
||||
};
|
||||
interface TypeMapping {
|
||||
[key: number]: string;
|
||||
}
|
||||
const list = ref<any>();
|
||||
const getList = () => {
|
||||
const query: queryParams = {
|
||||
pageNum: pageNum.value,
|
||||
pageSize: pageSize.value,
|
||||
}
|
||||
post("social/reconciliation/pageHistory",{query:query}).then(
|
||||
(res:any) => {
|
||||
list.value = res.list;
|
||||
total.value = res.total_count;
|
||||
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.container-wrapper {
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.search {
|
||||
height: 42px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in New Issue