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

Merge branch 'ECCS-1850' into 'master'

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

See merge request !21
parents 3beb05a5 f644d56b
// 报表api // 报表api
export default { export default {
receiptReportList: '/backstage/auth/receiptReportList',
exportReceiptReportList: '/backstage/auth/exlRceiptReport'
}; };
// 报表函数库 // 报表函数库
// import apis from "../apis_moudles/index"; import apis from "../apis_moudles/index";
// import req from "../request"; 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 { export default {
RECEIPTREPORTLIST,
EXPORTRECEIPTREPORTLIST
}; };
...@@ -88,3 +88,5 @@ export function exportFile(res, file_name) { ...@@ -88,3 +88,5 @@ export function exportFile(res, file_name) {
document.body.removeChild(aLink); document.body.removeChild(aLink);
window.URL.revokeObjectURL(url); window.URL.revokeObjectURL(url);
} }
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 @@ ...@@ -10,41 +10,45 @@
</template> </template>
<script> <script>
import PaymentClaims from "./components/PaymentClaims.vue"; // import PaymentClaims from "./components/PaymentClaims.vue";
import Insurance from "./components/Insurance.vue"; // import Insurance from "./components/Insurance.vue";
import Verification from "./components/Verification.vue"; // import Verification from "./components/Verification.vue";
import CollectionRate from "./components/CollectionRate.vue"; // import CollectionRate from "./components/CollectionRate.vue";
import CollectionDays from "./components/CollectionDays.vue"; // import CollectionDays from "./components/CollectionDays.vue";
import PersonalFee from "./components/PersonalFee.vue"; // import PersonalFee from "./components/PersonalFee.vue";
import MaterialSupplement from "./components/MaterialSupplement.vue"; // import MaterialSupplement from "./components/MaterialSupplement.vue";
import AppealCase from "./components/AppealCase.vue"; // import AppealCase from "./components/AppealCase.vue";
import MailingList from "./components/MailingList.vue"; // import MailingList from "./components/MailingList.vue";
import PreAuth from "./components/PreAuth.vue"; // import PreAuth from "./components/PreAuth.vue";
import Benefit from "./components/Benefit.vue"; // import Benefit from "./components/Benefit.vue";
import PayBill from "./components/PayBill.vue";
export default { export default {
data() { data() {
return { return {
activeKey: '0', activeKey: '0',
panes: [ panes: [
{ title: "理赔数据", key: '0', show: true, content: 'PaymentClaims'}, // { title: "理赔数据", key: '0', show: true, content: 'PaymentClaims'},
{ title: "保险应收", key: '1', show: false, content: 'Insurance'}, // { title: "保险应收", key: '1', show: false, content: 'Insurance'},
{ title: "核销", key: '2', show: false, content: 'Verification'}, // { title: "核销", key: '2', show: false, content: 'Verification'},
{ title: "回款率", key: '3', show: false, content: 'CollectionRate'}, // { title: "回款率", key: '3', show: false, content: 'CollectionRate'},
{ title: "回款天数", key: '4', show: false, content: 'CollectionDays'}, // { title: "回款天数", key: '4', show: false, content: 'CollectionDays'},
{ title: "个人欠费", key: '5', show: false, content: 'PersonalFee'}, { title: "财务账单", key: '0', show: true, content: 'PayBill'},
{ title: "材料补充", key: '6', show: false, content: 'MaterialSupplement'}, // { title: "个人欠费", key: '5', show: false, content: 'PersonalFee'},
{ title: "申诉案件", key: '7', show: false, content: 'AppealCase'}, // { title: "材料补充", key: '6', show: false, content: 'MaterialSupplement'},
{ title: "寄送清单", key: '8', show: false, content: 'MailingList'}, // { title: "申诉案件", key: '7', show: false, content: 'AppealCase'},
{ title: "预授权", key: '9', show: false, content: 'PreAuth'}, // { title: "寄送清单", key: '8', show: false, content: 'MailingList'},
{ title: "福利查询", key: '10', show: false, content: 'Benefit'} // { title: "预授权", key: '9', show: false, content: 'PreAuth'},
// { title: "福利查询", key: '10', show: false, content: 'Benefit'}
], ],
companyOptions: [], //保险公司 companyOptions: [], //保险公司
expressList: [], //快递公司 expressList: [], //快递公司
}; };
}, },
components: { components: {
PaymentClaims, Insurance, Verification, CollectionRate, CollectionDays, // PaymentClaims, Insurance, Verification, CollectionRate, CollectionDays,
PersonalFee, MaterialSupplement, AppealCase, MailingList, PreAuth, Benefit // PersonalFee, MaterialSupplement, AppealCase, MailingList, PreAuth, Benefit,
PayBill
}, },
created() { created() {
let type = this.$route.query.type; let type = this.$route.query.type;
......
...@@ -176,6 +176,8 @@ ...@@ -176,6 +176,8 @@
import Goback from "@/components/CUSTOMER/goback"; import Goback from "@/components/CUSTOMER/goback";
import BurtPagination from "@/components/CUSTOMER/pagation"; import BurtPagination from "@/components/CUSTOMER/pagation";
import moment from 'moment' import moment from 'moment'
import { numValid } from "@/utils/index"
export default { export default {
data() { data() {
return { return {
...@@ -200,6 +202,7 @@ export default { ...@@ -200,6 +202,7 @@ export default {
expressList: [], //快递列表 expressList: [], //快递列表
selectedRowKeys: [], // Check here to configure the default column selectedRowKeys: [], // Check here to configure the default column
dataList: [], dataList: [],
cacheDataList: {},
isEditNewBill: false, //是否在新建账单 isEditNewBill: false, //是否在新建账单
pagination: { pagination: {
pageNum: 1, pageNum: 1,
...@@ -234,7 +237,9 @@ export default { ...@@ -234,7 +237,9 @@ export default {
{ title: "应收金额", dataIndex: "chargeAmount", width: 100, align: 'center' }, { title: "应收金额", dataIndex: "chargeAmount", width: 100, align: 'center' },
{ title: "折扣金额", dataIndex: "discountAmount", width: 100, align: 'center' }, { title: "折扣金额", dataIndex: "discountAmount", width: 100, align: 'center' },
{ title: "减免金额", dataIndex: "discountAmount2", 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' }, { title: "理赔金额", dataIndex: "paidamount", width: 100, align: 'center' },
]; ];
if(this.sendBatchNo && ! this.isEditNewBill && this.isEdit){ // 编辑状态下已经保存的数据才可进行操作 if(this.sendBatchNo && ! this.isEditNewBill && this.isEdit){ // 编辑状态下已经保存的数据才可进行操作
...@@ -302,6 +307,7 @@ export default { ...@@ -302,6 +307,7 @@ export default {
let content = res.content || {}; let content = res.content || {};
this.pagination.total = content.total || 0; this.pagination.total = content.total || 0;
this.dataList = content.list || []; this.dataList = content.list || [];
this.cacheDataList[filter.pageNum] = this.dataList
} else { } else {
this.$message.error(res.returnMsg); this.$message.error(res.returnMsg);
} }
...@@ -437,6 +443,7 @@ export default { ...@@ -437,6 +443,7 @@ export default {
}else{ //查询所有未加入的账单 }else{ //查询所有未加入的账单
this.pagination.pageNum = 1; this.pagination.pageNum = 1;
this.isEditNewBill = true; this.isEditNewBill = true;
this.cacheDataList = {}
this._getNewBillList() this._getNewBillList()
} }
}, },
...@@ -453,45 +460,75 @@ export default { ...@@ -453,45 +460,75 @@ export default {
let content = res.content || {}; let content = res.content || {};
this.pagination.total = content.total || 0; this.pagination.total = content.total || 0;
this.dataList = content.list || []; this.dataList = content.list || [];
this.cacheDataList[this.pagination.pageNum] = this.dataList
} else { } else {
this.$message.error(res.returnMsg); this.$message.error(res.returnMsg);
} }
}); });
}, },
//新建/保存寄送 checkBeforeSave() {
addNewCharge(){
return new Promise((resolve,reject)=>{
if(!this.form.trackingNo){ if(!this.form.trackingNo){
this.$message.warning("请输入快递单号"); this.$message.warning("请输入快递单号");
reject(); return false;
return;
} }
if(!this.form.sendDate){ if(!this.form.sendDate){
this.$message.warning("请选择寄送日期"); this.$message.warning("请选择寄送日期");
reject(); return false;
return; }
let allData = []
for(let i in this.cacheDataList){
allData = allData.concat(this.cacheDataList[i])
} }
let ciReceiptSendVos = []; let ciReceiptSendVos = [];
this.dataList.forEach((item,index)=>{ if(this.isEditNewBill){
ciReceiptSendVos = [];
allData.forEach((item,index)=>{
if(this.selectedRowKeys.indexOf(index)!=-1){ if(this.selectedRowKeys.indexOf(index)!=-1){
ciReceiptSendVos.push({ ciReceiptSendVos.push({
id: item.id, id: item.id,
receiptNo: item.receiptNo, receiptNo: item.receiptNo,
selfpaidAmount: item.selfpaidAmount
})
}
}) })
} else {
ciReceiptSendVos = allData.map(item => {
return {
id: item.id,
receiptNo: item.receiptNo,
selfpaidAmount: item.selfpaidAmount
} }
}) })
let formData = { }
for(let i = 0; i < ciReceiptSendVos.length; i ++) {
const selfpaidAmount = ciReceiptSendVos[i].selfpaidAmount
if(selfpaidAmount && !numValid.test(selfpaidAmount)){
this.$message.warning("请输入正确的客户自付金额");
return false;
}
}
return {
...this.form, ...this.form,
ciReceiptSendVos: ciReceiptSendVos, ciReceiptSendVos: ciReceiptSendVos,
sendDate: moment(this.form.sendDate).format('YYYY-MM-DD 00:00:00'), sendDate: moment(this.form.sendDate).format('YYYY-MM-DD 00:00:00'),
sendBatchNo: this.sendBatchNo || undefined sendBatchNo: this.sendBatchNo || undefined
} }
},
//新建/保存寄送
addNewCharge(){
return new Promise((resolve,reject)=>{
let formData = this.checkBeforeSave()
if(!formData){
reject()
return false;
}
this.$apis.SAVERECEIPSENDINFO(formData) this.$apis.SAVERECEIPSENDINFO(formData)
.then((res) => { .then((res) => {
if (res.returnCode == "0000") { if (res.returnCode == "0000") {
this.sendBatchNo = res.content; this.sendBatchNo = res.content;
this.$message.success("成功"); this.$message.success("成功");
this.selectedRowKeys = []; this.selectedRowKeys = [];
this.cacheDataList = {}
this.getData(); this.getData();
resolve(); resolve();
} else { } else {
......
...@@ -9,7 +9,6 @@ function SubMenu(h, menu, selectMenu) { ...@@ -9,7 +9,6 @@ function SubMenu(h, menu, selectMenu) {
if(menu.children && menu.children.length>0){ if(menu.children && menu.children.length>0){
icon_arrow = <Icon class="arrow" name={selectMenu.indexOf(menu.path) < 0 ?'ssixiangyou': 'ssixiangyou_active'} size={14} />; icon_arrow = <Icon class="arrow" name={selectMenu.indexOf(menu.path) < 0 ?'ssixiangyou': 'ssixiangyou_active'} size={14} />;
} }
console.log(menu, icon_arrow,111)
return ( return (
<a-sub-menu key={menu.path}> <a-sub-menu key={menu.path}>
<span slot="title" class="submenu-title-wrapper"> <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