Commit 4f31a2ff authored by 郭小龙-DEL's avatar 郭小龙-DEL

add 账单回款报表

add 回款详情添加上传文件功能
fix 赔付金额填写逻辑
parent a6ff0095
// 报表api
export default {
receiptReportList: '/backstage/auth/receiptReportList',
exportReceiptReportList: '/backstage/auth/exlRceiptReport'
};
......@@ -3,7 +3,7 @@ import base from "./base";
// 用户状态api
import author from "./author";
// 报表api
import bi from "./bi";
import report from "./report";
// 收费查询api
import chargeQuery from "./charge-query";
// 客户管理api
......@@ -20,7 +20,7 @@ import welfare from "./welfare";
const apis = {
...base,
...author,
...bi,
...report,
...chargeQuery,
...customer,
...info,
......
// 报表api
export default {
receiptReportList: '/backstage/auth/receiptReportList',
exportReceiptReportList: '/backstage/auth/exlRceiptReport',
backMoneyReport: '/backstage/auth/backMoneyReport', // 账单回款查询
exportBackMoneyReport: '/backstage/auth/exportBackMoneyReport' // 账单回款导出
};
......@@ -3,7 +3,7 @@ import base from "./base";
// 用户状态
import author from "./author";
// 报表api
import bi from "./bi";
import report from "./report";
// 收费查询api
import chargeQuery from "./charge-query";
// 客户管理api
......@@ -19,7 +19,7 @@ import welfare from "./welfare";
const funcs = {
...base,
...author,
...bi,
...report,
...chargeQuery,
...customer,
...info,
......
......@@ -12,8 +12,20 @@ const EXPORTRECEIPTREPORTLIST = (data) => {
return req.post(apis.exportReceiptReportList, data, {responseType: 'blob'});
};
// 账单回款查询报表
const backMoneyReport = (data) => {
return req.post(apis.backMoneyReport, data);
};
// 账单回款导出报表
const exportBackMoneyReport = (data) => {
return req.post(apis.exportBackMoneyReport, data, {responseType: 'blob'});
};
// 对象数组
export default {
RECEIPTREPORTLIST,
EXPORTRECEIPTREPORTLIST
EXPORTRECEIPTREPORTLIST,
backMoneyReport,
exportBackMoneyReport,
};
......@@ -28,6 +28,11 @@ const TOKEN_INVLIDE_TO_LOGIN = (code) => {
};
// 全局错误处理
const PUB_ERR = (code, message, config) => {
if(code === '1018') {
that.$msg.error({
message,
});
}
if (config.responseType && config.responseType === "blob") {
return true;
}
......
......@@ -21,7 +21,7 @@ import verification from "./modules/verification";
// 信息维护
import info from "./modules/info";
// 报表管理
import bi from "./modules/bi";
import report from "./modules/report";
const routes = [
{
......@@ -39,7 +39,7 @@ const routes = [
chargeQuery,
verification,
info,
bi,
report,
],
},
author,
......
//报表路由表,分包名称:bi
export default {
path: "/bi",
name: "BI",
component: () => {
return import(/* webpackChunkName: "bi" */ "@/views/bi");
},
};
......@@ -97,8 +97,17 @@ export default [
},
{
icon: "ssiscan",
path: "/bi",
title: "分析报表",
children: [],
path: "report",
title: "报表管理",
children: [
{
path: "/report/bi",
title: "财务账单报表",
},
{
path: "/report/returnedMoney",
title: "账单回款报表",
},
],
},
];
import Layout from '@/layout'
//报表路由表,分包名称:report
export default {
path: "/report",
name: "Report",
component: Layout,
children: [
{
path: "bi",
name: "BI",
component: () => {
return import(/* webpackChunkName: "report" */ "@/views/report/bi");
},
},
{
path: "returnedMoney",
name: "ReturnedMoney",
component: () => import("@/views/report/returnedMoney"),
}
],
};
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import store from "@/store/index";
// import store from "@/store/index";
import getPageTitle from "@/utils/get-page-title";
// 路由页面路由首位配置
......@@ -16,7 +16,7 @@ export default (VueRouter, router) => {
// 页面路由切换时进度条
// let router = new VueRouter();
router.beforeEach((to, from, next) => {
console.log(store);
// console.log(store);
NProgress.start();
document.title = getPageTitle(to.fullPath);
next();
......
<template>
<!-- 收费查询-账单查询 -->
<div class="white_bg burt-container custom-info">
<!-- form -->
<a-form-model ref="form" layout="vertical" :model="form">
<a-row :gutter="30">
<a-col :xl="4" :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 :xl="4" :lg="6" :sm="12">
<a-form-model-item label="病案号">
<a-input v-model="form.mrnNo" placeholder="请输入" allow-clear />
</a-form-model-item>
</a-col>
<a-col :xl="4" :lg="6" :sm="12">
<a-form-model-item label="客户名称">
<a-input v-model="form.patientName" placeholder="请输入" allow-clear />
</a-form-model-item>
</a-col>
<a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="账单起止日期">
<a-range-picker
format="YYYY-MM-DD"
format-value="YYYY-MM-DD"
v-model="billRange"
:placeholder="['开始时间','结束时间']"
@change="onSelectBillTime"
/>
</a-form-model-item>
</a-col>
<a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="回款起止日期">
<a-range-picker
format="YYYY-MM-DD"
format-value="YYYY-MM-DD"
v-model="returnRange"
:placeholder="['开始时间','结束时间']"
@change="onSelectReturnTime"
/>
</a-form-model-item>
</a-col>
<a-col :xl="10" :lg="10" :sm="12" class="none-label">
<a-form-model-item label="button">
<a-button class="mar-left10" type="primary" @click="handlerReset">
<Icon name="ssireset" :size="14" />重置
</a-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>
<!-- table -->
<a-table
:columns="columns"
:data-source="dataList"
:scroll="{ x: true }"
:pagination="false"
:rowKey="'id'"
>
<template slot="index" slot-scope="text, record, index">
{{ index + 1 }}
</template>
</a-table>
<!--分页-->
<BurtPagination :pagination="pagination" @pageChange="getList" />
</div>
</template>
<script>
import BurtPagination from "@/components/CUSTOMER/pagation";
import { exportFile } from '@/utils/index';
export default {
data() {
const columns = [
{ title: "序号", dataIndex: "index", key:"index",align:'center', width: 80,scopedSlots: { customRender: "index" }},
{ title: "病历号", dataIndex: "mrnNo",width: 120},
{ title: "客户姓名",dataIndex: "patientName",width: 120,},
{ title: "保险公司", dataIndex: "payorName", width: 120 },
{ title: "账单编号", dataIndex: "receiptNo", width: 120 },
{ title: "账单日期", dataIndex: "receiptDate", width: 120 },
{ title: "收银", dataIndex: "receiptTellerName", width: 120 },
{ title: "账单金额", dataIndex: "actualAmount", width: 120 },
{ title: "回款金额", dataIndex: "paidAmountEob", width: 120 },
{ title: "回款日期", dataIndex: "eobBackDate", width: 120 },
{ title: "EOB号", dataIndex: "eobNo", width: 120 },
{ title: "EOB名称", dataIndex: "eobName", width: 120 },
];
return {
columns,
billRange: null,
returnRange: null,
form: {
payorCode: '',
mrnNo: '',
patientName: '',
receiptDateStart: '',
receiptDateEnd: '',
eobBackDateStart: '',
eobBackDateEnd: ''
},
pageForm: {}, // 搜索form
companyOptions: [], //保险公司
dataList: [],
pagination: {
pageNum: 1,
pageSize: 10,
},
total: 0
};
},
components: {
BurtPagination,
},
created() {
this.getList();
this._getCompanyOptions();
},
methods: {
// 获取列表数据
getList() {
const data = {
...this.pageForm,
...this.pagination,
};
this.$apis.backMoneyReport(data).then((res) => {
let content = res.content || {};
this.dataList = content.list || [];
this.total = content.total || 0;
});
},
// 获取保险公司下拉选项
_getCompanyOptions() {
this.$apis.GETCOMPANYOPTIONS().then((res) => {
this.companyOptions = res.content || [];
});
},
onSelectBillTime(date, dateString) {
this.form.receiptDateStart = dateString[0] ? dateString[0] + ' 00:00:00' : ''
this.form.receiptDateEnd = dateString[1] ? dateString[1] + ' 23:59:59' : ''
},
onSelectReturnTime(date, dateString) {
this.form.eobBackDateStart = dateString[0] ? dateString[0] + ' 00:00:00' : ''
this.form.eobBackDateEnd = dateString[1] ? dateString[1] + ' 23:59:59' : ''
},
// 重置
handlerReset() {
this.form = {}
},
// 搜索
handlerSearch() {
this.$refs.form.validate((valid) => {
if (!valid) {
return false;
}
this.pagination.pageNum = 1;
this.pageForm = this.$lodash.cloneDeep(this.form);
this.getList();
});
},
//导出报表
exportExcel(){
let filter = {
...this.form,
}
this.$apis.exportBackMoneyReport(filter).then(res => {
exportFile(res, '账单回款报表.xls');
})
}
},
};
</script>
<style lang="less" scoped>
.none-label {
text-align: left;
.ant-form-item-label {
opacity: 0;
}
}
.ant-btn .icon-class {
.mg-r(10);
}
</style>
......@@ -15,7 +15,7 @@
</a-col>
<a-col :lg="5" :sm="12">
<a-form-model-item label="回款日期">
<a-date-picker format="YYYY年MM月DD日" v-model="form.backDate" placeholder="选择日期" allow-clear :disabled="!isEdit" />
<a-date-picker format="YYYY-MM-DD" format-value="YYYY-MM-DD 00:00:00" v-model="form.backDate" placeholder="选择日期" allow-clear :disabled="!isEdit" />
</a-form-model-item>
</a-col>
<a-col :lg="5" :sm="12">
......@@ -33,7 +33,18 @@
<a-input v-model="form.backExchangeRate" placeholder="请输入金额" allow-clear :disabled="!isEdit" />
</a-form-model-item>
</a-col>
<a-col :md="24" :lg="18" class="none-label" v-if="isEdit">
<a-col :lg="6" :sm="12">
<a-form-model-item label="上传银行付款凭证">
<a-upload name="file" :multiple="false" :showUploadList="true" :disabled="!isEdit"
:fileList="fileList"
:customRequest="(file)=>uploadFile(file)"
:beforeUpload="()=>beforeUpload()"
:remove="(file)=>removeFile(file)">
<a-button type="primary"> <Icon name="ssiupload" :size="18" />上传文件 </a-button>
</a-upload>
</a-form-model-item>
</a-col>
<a-col :md="24" :lg="12" class="none-label" v-if="isEdit">
<a-form-model-item label="button">
<a-button class="mar-left10" type="primary" @click="addNewEvt">
<Icon :name="backMoneyNo?'ssibaocun':'ssiadd'" :size="14" />{{backMoneyNo?'保存回款':'新建回款'}}
......@@ -53,7 +64,7 @@
</a-row>
</a-form-model>
<!-- table -->
<a-table :columns="columns" :data-source="dataList" :scroll="{ x: true }" :pagination="false"
<a-table :columns="columns" :data-source="dataList" :scroll="{ x: true }" :pagination="false" :rowKey="'id'"
:row-selection="isEditNewEOB? { selectedRowKeys: selectedRowKeys, onChange: onSelectChange }: null">
<template slot="eobNo" slot-scope="text,record">
<a @click="toEOBDetail(record)">{{text}}</a>
......@@ -118,11 +129,12 @@ export default {
dialogShow: false,
form: {
payorCode: '',
backDate: '',
backDate: null,
backAmountCny: '',
backAmountUsd: '',
backExchangeRate: ''
},
fileList: [], // 上传文件列表
dataList: [],
isEditNewEOB: false, //是否在新建回款
companyOptions: [], //保险公司
......@@ -137,7 +149,7 @@ export default {
id: '',
eobNo: '',
eobSts: '',
eobBackDate: '',
eobBackDate: null,
eobBackMoneyCny: '',
eobBackMoneyUsd: '',
},
......@@ -180,16 +192,17 @@ export default {
this.isEdit = isEdit;
this._getCompanyOptions();
if(backMoneyNo){
let backMoneyDataDetail = localStorage.getItem('backMoneyDataDetail');
this.form = backMoneyDataDetail? JSON.parse(backMoneyDataDetail): {};
const backMoneyDataDetail = JSON.parse(localStorage.getItem('backMoneyDataDetail') || '{}');
this.form = backMoneyDataDetail
this.form.backDate = this.form.backDate ? moment(this.form.backDate).format('YYYY-MM-DD 00:00:00') : null
this.getData();
}
},
methods: {
moment,
// moment,
// 查看的超链点击时链接已经生成好了,所以要点击的时候才set值才是对应的,不然存的都是最后一条数据
setData(record){
console.log(record)
localStorage.setItem('EobDataDetail', JSON.stringify(record));
},
// EOB添加去查看的超链
......@@ -304,12 +317,23 @@ export default {
})
}
})
let formData = {
const formData = {
...this.form,
backMoneyEobList: backMoneyEobList,
backDate: this.form.backDate? moment(this.form.backDate).format('YYYY-MM-DD 00:00:00'):'',
backMoneyNo: this.backMoneyNo, //回款编号
}
formData.fileList = this.fileList.map(d => {
const file = {
fileName: d.name,
fileUrl: d.url
}
return file
})
this.$apis.SAVEBACKMONEY(formData)
.then((res) => {
if (res.returnCode == "0000") {
......@@ -385,6 +409,46 @@ export default {
}
});
},
/* ======== 上传区域 ======== */
// 上传之前
beforeUpload(){
const len = this.fileList.length;
if(len >= 5){
this.$message.warning('不能超过5个文件');
return false;
}
return true;
},
// 删除文件
removeFile(file){
let index;
this.fileList.forEach((item, i) => {
if (item.uid == file.uid) {
index = i;
}
});
this.fileList.splice(index, 1);
return true;
},
// 上传文件
uploadFile(fileData){
let formData = new FormData();
formData.append("file", fileData.file);
this.$apis.UPLOADIMG(formData)
.then((res)=>{
fileData.onSuccess();
let tmp = {
uid: Math.random()*10000,
name: res.original,
status: 'done',
url: res.url,
}
this.fileList.push(tmp);
this.$forceUpdate();
})
}
},
};
</script>
......
......@@ -120,7 +120,7 @@
</a-col>
<a-col :lg="12" :xs="24">
<a-form-model-item label="账单回款金额" prop="paidAmountEob">
<a-input v-model.trim="editFormObj.paidAmountEob" placeholder="账单回款金额" type="number" @change="moneyChange" />
<a-input v-model.trim="editFormObj.paidAmountEob" placeholder="账单回款金额" type="number" />
</a-form-model-item>
</a-col>
<a-col :lg="12" :xs="24">
......@@ -128,11 +128,12 @@
<a-input v-model.trim="editFormObj.refuseAmountEob" placeholder="未赔付金额" type="number" disabled />
</a-form-model-item>
</a-col>
<a-col :lg="12" :xs="24">
<!-- eccs-1944 -->
<!-- <a-col :lg="12" :xs="24">
<a-form-model-item label="寄送备注" prop="sendRemark">
<a-textarea v-model.trim="editFormObj.sendRemark" placeholder="寄送备注" />
</a-form-model-item>
</a-col>
</a-col> -->
</a-row>
</a-form-model>
</a-modal>
......
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