Commit 3eba2a52 authored by 朱彩云's avatar 朱彩云

Merge branch 'ECCS-1850' into 'master'

添加财务账单报表,理赔件管理详情页增加客户自付金额修改功能

See merge request !21
parents 3beb05a5 f644d56b
// 报表api
export default {
receiptReportList: '/backstage/auth/receiptReportList',
exportReceiptReportList: '/backstage/auth/exlRceiptReport'
};
// 报表函数库
// import apis from "../apis_moudles/index";
// import req from "../request";
import apis from "../apis_moudles/index";
import req from "../request";
// 理赔报表数据查询
const RECEIPTREPORTLIST = (data) => {
return req.post(apis.receiptReportList, data);
};
// 理赔报表数据导出
const EXPORTRECEIPTREPORTLIST = (data) => {
return req.post(apis.exportReceiptReportList, data, {responseType: 'blob'});
};
// 对象数组
export default {
RECEIPTREPORTLIST,
EXPORTRECEIPTREPORTLIST
};
......@@ -87,4 +87,6 @@ export function exportFile(res, file_name) {
aLink.click();
document.body.removeChild(aLink);
window.URL.revokeObjectURL(url);
}
\ No newline at end of file
}
export const numValid = /^([1-9][0-9]*|0)([.][0-9]+)?$/
\ No newline at end of file
<template>
<div>
<!-- form -->
<!-- <a-form-model ref="form" layout="vertical" :model="form">
<a-row :gutter="30">
<a-col :lg="6" :sm="12">
<a-form-model-item label="就诊日期">
<a-range-picker format="YYYY年MM月DD日" v-model="form.dateRange" :placeholder="['开始日期', '结束日期']" />
</a-form-model-item>
</a-col>
<a-col :lg="6" :sm="12">
<a-form-model-item label="保险公司">
<a-select v-model="form.payorCode" placeholder="请选择保险公司" allowClear>
<a-select-option v-for="item in companyOptions" :key="item.id" :value="item.payorCode">
{{ item.longName }}
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :lg="12" :sm="12" class="none-label">
<a-form-model-item label="button">
<a-button class="mar-left10" type="primary" @click="handlerSearch">
<Icon name="ssisearch_active" :size="14" />查询
</a-button>
<a-button class="mar-left10" type="primary" @click="exportExcel">
<Icon name="ssidaochu" :size="14" />导出报表</a-button>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model> -->
<div class="text-right">
<a-button class="mar-left10" type="primary" @click="exportExcel">
<Icon name="ssidaochu" :size="14" />导出报表</a-button>
</div>
<a-table :columns="columns" :data-source="dataList" :scroll="{ x: true }" :pagination="false">
<template slot="index" slot-scope="text, record, index">
{{ index + 1 }}
</template>
</a-table>
<!--分页-->
<BurtPagination :pagination="pagination" @pageChange="getData" />
</div>
</template>
<script>
import BurtPagination from "@/components/CUSTOMER/pagation";
import moment from 'moment'
import {ClaimsStatusOptions} from '@/utils/utilsdictOptions';
import {exportFile} from '@/utils/index';
export default{
props: {
companyOptions: {
default: []
}
},
data(){
const columns = [
{ title: "账单编号", dataIndex: "receiptNo", key:"receiptNo",align:'center', width: 136},
{ title: "就诊日期", dataIndex: "receiptDate", width: 150 },
{ title: "病案号", dataIndex: "patientNo", key:"patientNo",align:'center', width: 136},
{ title: "患者姓名", dataIndex: "patientName", width: 110 },
{ title: "患者身份", dataIndex: "patientClassDesc", width: 100, align: 'center' },
{ title: "一级分类", dataIndex: "itemcatDesc", width: 100, align: 'center' },
{ title: "二级分类", dataIndex: "itemsubcatDesc", width: 120, align: 'center' },
{ title: "项目编码", dataIndex: "itemCode", width: 130, align: 'center' },
{ title: "项目名称", dataIndex: "itemDesc", key:"receiptNo",align:'center', width: 180},
{ title: "账单金额", dataIndex: "receiptAmount", width: 110 },
{ title: "自付金额", dataIndex: "selfpaidAmount", key:"patientNo",align:'center', width: 136},
{ title: "理赔金额", dataIndex: "claimsAmount", width: 110 },
{ title: "保险公司", dataIndex: "payorName", width: 100, align: 'center' },
{ title: "计划名", dataIndex: "planName", width: 100, align: 'center' },
{ title: "理赔状态", dataIndex: "paidSts", width: 120, align: 'center' },
{ title: "账单寄送状态", dataIndex: "sendSts", width: 130, align: 'center' },
{ title: "回款时间", dataIndex: "backDate", width: 130, align: 'center' },
{ title: "回款金额", dataIndex: "backAmountCny", width: 130, align: 'center' },
{ title: "坏账", dataIndex: "badBillAmount", width: 130, align: 'center' },
{ title: "个人欠费", dataIndex: "perNoPaidAmount", width: 130, align: 'center' },
{ title: "备注", dataIndex: "remark", width: 160, align: 'center' },
];
return {
columns,
ClaimsStatusOptions,
form: {
},
dataList: [],
pagination: {
pageNum: 1,
pageSize: 10,
total: 0,
},
}
},
components: {
BurtPagination,
},
created(){
this.getData()
},
methods: {
moment,
handlerSearch(){
this.pagination.pageNum = 1;
this.getData();
},
// 获取列表数据
getData() {
let filter = {
pageNum: this.pagination.pageNum,
pageSize: this.pagination.pageSize,
...this.form,
}
this.$apis.RECEIPTREPORTLIST(filter)
.then((res) => {
if (res.returnCode == "0000") {
let content = res.content || {};
this.pagination.total = content.total || 0;
this.dataList = content.list || [];
} else {
this.$message.error(res.returnMsg);
}
});
},
//导出报表
exportExcel(){
let filter = {
...this.form,
}
this.$apis.EXPORTRECEIPTREPORTLIST(filter).then(res => {
exportFile(res, '保险应收报表.xls');
})
}
}
}
</script>
<style lang="less" scoped>
/deep/ .ant-input-group-addon{
border-left: 1px solid #d9d9d9;
}
.text-right{
text-align: right;
}
</style>
\ No newline at end of file
......@@ -10,41 +10,45 @@
</template>
<script>
import PaymentClaims from "./components/PaymentClaims.vue";
import Insurance from "./components/Insurance.vue";
import Verification from "./components/Verification.vue";
import CollectionRate from "./components/CollectionRate.vue";
import CollectionDays from "./components/CollectionDays.vue";
import PersonalFee from "./components/PersonalFee.vue";
import MaterialSupplement from "./components/MaterialSupplement.vue";
import AppealCase from "./components/AppealCase.vue";
import MailingList from "./components/MailingList.vue";
import PreAuth from "./components/PreAuth.vue";
import Benefit from "./components/Benefit.vue";
// import PaymentClaims from "./components/PaymentClaims.vue";
// import Insurance from "./components/Insurance.vue";
// import Verification from "./components/Verification.vue";
// import CollectionRate from "./components/CollectionRate.vue";
// import CollectionDays from "./components/CollectionDays.vue";
// import PersonalFee from "./components/PersonalFee.vue";
// import MaterialSupplement from "./components/MaterialSupplement.vue";
// import AppealCase from "./components/AppealCase.vue";
// import MailingList from "./components/MailingList.vue";
// import PreAuth from "./components/PreAuth.vue";
// import Benefit from "./components/Benefit.vue";
import PayBill from "./components/PayBill.vue";
export default {
data() {
return {
activeKey: '0',
panes: [
{ title: "理赔数据", key: '0', show: true, content: 'PaymentClaims'},
{ title: "保险应收", key: '1', show: false, content: 'Insurance'},
{ title: "核销", key: '2', show: false, content: 'Verification'},
{ title: "回款率", key: '3', show: false, content: 'CollectionRate'},
{ title: "回款天数", key: '4', show: false, content: 'CollectionDays'},
{ title: "个人欠费", key: '5', show: false, content: 'PersonalFee'},
{ title: "材料补充", key: '6', show: false, content: 'MaterialSupplement'},
{ title: "申诉案件", key: '7', show: false, content: 'AppealCase'},
{ title: "寄送清单", key: '8', show: false, content: 'MailingList'},
{ title: "预授权", key: '9', show: false, content: 'PreAuth'},
{ title: "福利查询", key: '10', show: false, content: 'Benefit'}
// { title: "理赔数据", key: '0', show: true, content: 'PaymentClaims'},
// { title: "保险应收", key: '1', show: false, content: 'Insurance'},
// { title: "核销", key: '2', show: false, content: 'Verification'},
// { title: "回款率", key: '3', show: false, content: 'CollectionRate'},
// { title: "回款天数", key: '4', show: false, content: 'CollectionDays'},
{ title: "财务账单", key: '0', show: true, content: 'PayBill'},
// { title: "个人欠费", key: '5', show: false, content: 'PersonalFee'},
// { title: "材料补充", key: '6', show: false, content: 'MaterialSupplement'},
// { title: "申诉案件", key: '7', show: false, content: 'AppealCase'},
// { title: "寄送清单", key: '8', show: false, content: 'MailingList'},
// { title: "预授权", key: '9', show: false, content: 'PreAuth'},
// { title: "福利查询", key: '10', show: false, content: 'Benefit'}
],
companyOptions: [], //保险公司
expressList: [], //快递公司
};
},
components: {
PaymentClaims, Insurance, Verification, CollectionRate, CollectionDays,
PersonalFee, MaterialSupplement, AppealCase, MailingList, PreAuth, Benefit
// PaymentClaims, Insurance, Verification, CollectionRate, CollectionDays,
// PersonalFee, MaterialSupplement, AppealCase, MailingList, PreAuth, Benefit,
PayBill
},
created() {
let type = this.$route.query.type;
......
......@@ -176,6 +176,8 @@
import Goback from "@/components/CUSTOMER/goback";
import BurtPagination from "@/components/CUSTOMER/pagation";
import moment from 'moment'
import { numValid } from "@/utils/index"
export default {
data() {
return {
......@@ -200,6 +202,7 @@ export default {
expressList: [], //快递列表
selectedRowKeys: [], // Check here to configure the default column
dataList: [],
cacheDataList: {},
isEditNewBill: false, //是否在新建账单
pagination: {
pageNum: 1,
......@@ -234,7 +237,9 @@ export default {
{ title: "应收金额", dataIndex: "chargeAmount", width: 100, align: 'center' },
{ title: "折扣金额", dataIndex: "discountAmount", width: 100, align: 'center' },
{ title: "减免金额", dataIndex: "discountAmount2", width: 100, align: 'center' },
{ title: "客户自付", dataIndex: "paidAmount", width: 100, align: 'center' },
{ title: "客户自付", dataIndex: "selfpaidAmount", width: 100, align: 'center', customRender: (val, row) => {
return <a-input v-model={row.selfpaidAmount} allow-clear />
} },
{ title: "理赔金额", dataIndex: "paidamount", width: 100, align: 'center' },
];
if(this.sendBatchNo && ! this.isEditNewBill && this.isEdit){ // 编辑状态下已经保存的数据才可进行操作
......@@ -302,6 +307,7 @@ export default {
let content = res.content || {};
this.pagination.total = content.total || 0;
this.dataList = content.list || [];
this.cacheDataList[filter.pageNum] = this.dataList
} else {
this.$message.error(res.returnMsg);
}
......@@ -437,6 +443,7 @@ export default {
}else{ //查询所有未加入的账单
this.pagination.pageNum = 1;
this.isEditNewBill = true;
this.cacheDataList = {}
this._getNewBillList()
}
},
......@@ -453,45 +460,75 @@ export default {
let content = res.content || {};
this.pagination.total = content.total || 0;
this.dataList = content.list || [];
this.cacheDataList[this.pagination.pageNum] = this.dataList
} else {
this.$message.error(res.returnMsg);
}
});
},
//新建/保存寄送
addNewCharge(){
return new Promise((resolve,reject)=>{
checkBeforeSave() {
if(!this.form.trackingNo){
this.$message.warning("请输入快递单号");
reject();
return;
return false;
}
if(!this.form.sendDate){
this.$message.warning("请选择寄送日期");
reject();
return;
return false;
}
let allData = []
for(let i in this.cacheDataList){
allData = allData.concat(this.cacheDataList[i])
}
let ciReceiptSendVos = [];
this.dataList.forEach((item,index)=>{
if(this.selectedRowKeys.indexOf(index)!=-1){
ciReceiptSendVos.push({
id: item.id,
receiptNo: item.receiptNo,
if(this.isEditNewBill){
ciReceiptSendVos = [];
allData.forEach((item,index)=>{
if(this.selectedRowKeys.indexOf(index)!=-1){
ciReceiptSendVos.push({
id: item.id,
receiptNo: item.receiptNo,
selfpaidAmount: item.selfpaidAmount
})
}
})
} else {
ciReceiptSendVos = allData.map(item => {
return {
id: item.id,
receiptNo: item.receiptNo,
selfpaidAmount: item.selfpaidAmount
}
})
}
for(let i = 0; i < ciReceiptSendVos.length; i ++) {
const selfpaidAmount = ciReceiptSendVos[i].selfpaidAmount
if(selfpaidAmount && !numValid.test(selfpaidAmount)){
this.$message.warning("请输入正确的客户自付金额");
return false;
}
})
let formData = {
}
return {
...this.form,
ciReceiptSendVos: ciReceiptSendVos,
sendDate: moment(this.form.sendDate).format('YYYY-MM-DD 00:00:00'),
sendBatchNo: this.sendBatchNo || undefined
}
},
//新建/保存寄送
addNewCharge(){
return new Promise((resolve,reject)=>{
let formData = this.checkBeforeSave()
if(!formData){
reject()
return false;
}
this.$apis.SAVERECEIPSENDINFO(formData)
.then((res) => {
if (res.returnCode == "0000") {
this.sendBatchNo = res.content;
this.$message.success("成功");
this.selectedRowKeys = [];
this.cacheDataList = {}
this.getData();
resolve();
} else {
......
......@@ -9,7 +9,6 @@ function SubMenu(h, menu, selectMenu) {
if(menu.children && menu.children.length>0){
icon_arrow = <Icon class="arrow" name={selectMenu.indexOf(menu.path) < 0 ?'ssixiangyou': 'ssixiangyou_active'} size={14} />;
}
console.log(menu, icon_arrow,111)
return (
<a-sub-menu key={menu.path}>
<span slot="title" class="submenu-title-wrapper">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment