Commit 30e4ac19 authored by 王安伟's avatar 王安伟

Merge branch 'func_eccs_2250' into test

parents 6ef93918 300a798f
<template> <template>
<!-- 收费查询-账单查询 --> <!-- 收费查询-账单查询 -->
<div class="white_bg burt-container custom-info"> <div class="white_bg burt-container custom-info">
<!-- form --> <!-- form -->
<a-form-model ref="form" layout="vertical" :model="form"> <a-form-model ref="form" layout="vertical" :model="form">
<a-row :gutter="30"> <a-row :gutter="30">
<a-col :xl="6" :lg="6" :sm="12"> <a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="病历号"> <a-form-model-item label="病历号">
<a-input v-model="form.mrnNo" placeholder="请输入病历号" allow-clear /> <a-input v-model="form.mrnNo" placeholder="请输入病历号" allow-clear />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :xl="6" :lg="6" :sm="12"> <a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="客户姓名"> <a-form-model-item label="客户姓名">
<a-input v-model="form.patientName" placeholder="请输入客户姓名" allow-clear /> <a-input v-model="form.patientName" placeholder="请输入客户姓名" allow-clear />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :xl="6" :lg="6" :sm="12"> <a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="保险公司"> <a-form-model-item label="保险公司">
<a-select v-model="form.payorIds" placeholder="请选择保险公司" allowClear mode="multiple"> <a-select
<a-select-option v-for="item in companyOptions" :key="item.corpCode" :value="item.id"> v-model="form.payorId"
{{ item.longName }} placeholder="请选择保险公司"
</a-select-option> allowClear
</a-select> show-search
</a-form-model-item> mode="multiple"
</a-col> :filterOption="filterCode"
<a-col :xl="6" :lg="6" :sm="12"> >
<a-form-model-item label="看诊医生"> <a-select-option v-for="item in companyOptions" :key="item.corpCode" :value="item.id">
<a-select v-model="form.doctorCode" placeholder="请选择看诊医生" allowClear> {{ item.longName }}
<a-select-option v-for="item in doctorOptions" :key="item.doctorCode" :value="item.doctorCode"> </a-select-option>
{{ item.doctorDesc }} </a-select>
</a-select-option> </a-form-model-item>
</a-select> </a-col>
</a-form-model-item> <a-col :xl="6" :lg="6" :sm="12">
</a-col> <a-form-model-item label="看诊医生">
<a-col :xl="6" :lg="6" :sm="12"> <a-select v-model="form.doctorCode" placeholder="请选择看诊医生" allowClear>
<a-form-model-item label="收费时间"> <a-select-option v-for="item in doctorOptions" :key="item.doctorCode" :value="item.doctorCode">
<a-range-picker format="YYYY-MM-DD" v-model="form.dateRange" :placeholder="['开始时间','结束时间']" @change="onSelectVisitTime" /> {{ item.doctorDesc }}
</a-form-model-item> </a-select-option>
</a-col> </a-select>
<a-col :xl="6" :lg="6" :sm="12"> </a-form-model-item>
<a-form-model-item label="是否已关联寄送单"> </a-col>
<a-select v-model="form.isSend" placeholder="请选择是否已关联寄送单" allowClear> <a-col :xl="6" :lg="6" :sm="12">
<a-select-option value="Y" allow-clear> <a-form-model-item label="收费时间">
<a-range-picker
</a-select-option> format="YYYY-MM-DD"
<a-select-option value="N" allow-clear> v-model="form.dateRange"
:placeholder="['开始时间', '结束时间']"
</a-select-option> @change="onSelectVisitTime"
</a-select> />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :xl="6" :lg="6" :sm="12"> <a-col :xl="6" :lg="6" :sm="12">
<a-form-model-item label="是否已回款"> <a-form-model-item label="是否已关联寄送单">
<a-select v-model="form.isEobBack" placeholder="请选择是否已回款" allowClear> <a-select v-model="form.isSend" placeholder="请选择是否已关联寄送单" allowClear>
<a-select-option value="Y" allow-clear> <a-select-option value="Y" allow-clear></a-select-option>
<a-select-option value="N" allow-clear></a-select-option>
</a-select-option> </a-select>
<a-select-option value="N" allow-clear> </a-form-model-item>
</a-col>
</a-select-option> <a-col :xl="6" :lg="6" :sm="12">
</a-select> <a-form-model-item label="是否已回款">
</a-form-model-item> <a-select v-model="form.isEobBack" placeholder="请选择是否已回款" allowClear>
</a-col> <a-select-option value="Y" allow-clear></a-select-option>
<a-col :xl="6" :lg="6" :sm="12"> <a-select-option value="N" allow-clear></a-select-option>
<a-form-model-item label="账单类型"> </a-select>
<a-select v-model="form.receiptType" placeholder="请选择账单类型" allowClear> </a-form-model-item>
<a-select-option v-for="item in receiptTypeOptions" :key="item.value" :value="item.value"> </a-col>
{{ item.name }} <a-col :xl="6" :lg="6" :sm="12">
</a-select-option> <a-form-model-item label="账单类型">
</a-select> <a-select v-model="form.receiptType" placeholder="请选择账单类型" allowClear>
</a-form-model-item> <a-select-option v-for="item in receiptTypeOptions" :key="item.value" :value="item.value">
</a-col> {{ item.name }}
<a-col :xl="6" :lg="6" :sm="12"> </a-select-option>
<a-form-model-item label="账单编号"> </a-select>
<a-input v-model="form.receiptNo" placeholder="请输入账单编号" allow-clear /> </a-form-model-item>
</a-form-model-item> </a-col>
</a-col> <a-col :xl="6" :lg="6" :sm="12">
<a-col :xl="6" :lg="6" :sm="12"> <a-form-model-item label="账单编号">
<a-form-model-item label="状态"> <a-input v-model="form.receiptNo" placeholder="请输入账单编号" allow-clear />
<a-select v-model="form.status" placeholder="请选择状态" allowClear> </a-form-model-item>
<a-select-option v-for="item in statusOptions" :key="item.code" :value="item.code"> </a-col>
{{ item.name }} <a-col :xl="6" :lg="6" :sm="12">
</a-select-option> <a-form-model-item label="状态">
</a-select> <a-select v-model="form.status" placeholder="请选择状态" allowClear>
</a-form-model-item> <a-select-option v-for="item in statusOptions" :key="item.code" :value="item.code">
</a-col> {{ item.name }}
<a-col :xl="8" :lg="3" :sm="3" class="none-label"> </a-select-option>
<a-form-model-item label="button"> </a-select>
<!-- <a-button>更新数据</a-button> --> </a-form-model-item>
<!-- <a-button class="mar-left10" type="primary" @click="addNewCharge"> </a-col>
<a-col :xl="8" :lg="3" :sm="3" class="none-label">
<a-form-model-item label="button">
<!-- <a-button>更新数据</a-button> -->
<!-- <a-button class="mar-left10" type="primary" @click="addNewCharge">
<Icon name="ssiadd" :size="14" />新建预授权</a-button> --> <Icon name="ssiadd" :size="14" />新建预授权</a-button> -->
<a-button class="mar-left10" type="primary" @click="handlerReset"> <a-button class="mar-left10" type="primary" @click="handlerReset">
<Icon name="ssireset" :size="14" />重置 <Icon name="ssireset" :size="14" />重置
</a-button> </a-button>
<a-button class="mar-left10" type="primary" @click="handlerSearch"> <a-button class="mar-left10" type="primary" @click="handlerSearch">
<Icon name="ssisearch_active" :size="14" />查询 <Icon name="ssisearch_active" :size="14" />查询
</a-button> </a-button>
<a-button class="mar-left10" type="primary" @click="exportExcel"> <a-button class="mar-left10" type="primary" @click="exportExcel">
<Icon name="ssidaochu" :size="14" />导出 <Icon name="ssidaochu" :size="14" />导出
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
</a-form-model> </a-form-model>
<!-- table --> <!-- 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">
<template slot="index" slot-scope="text, record, index"> <template slot="index" slot-scope="text, record, index">
{{ index + 1 }} {{ index + 1 }}
</template> </template>
<template slot="operation" slot-scope="record"> <template slot="operation" slot-scope="record">
<!-- <a-button type="link" @click.stop="receiptEvt(record)">结算</a-button> --> <!-- <a-button type="link" @click.stop="receiptEvt(record)">结算</a-button> -->
<a-button type="link" class="success" @click.stop="detailEvt(record)">查看</a-button> <a-button type="link" class="success" @click.stop="detailEvt(record)">查看</a-button>
<!-- <a-popconfirm title="你确定要关闭吗?" ok-text="确定" cancel-text="取消" @confirm="deleteData" > <!-- <a-popconfirm title="你确定要关闭吗?" ok-text="确定" cancel-text="取消" @confirm="deleteData" >
<a-button type="link" class="danger">删除</a-button> <a-button type="link" class="danger">删除</a-button>
</a-popconfirm> --> </a-popconfirm> -->
</template> </template>
<template slot="isSend" slot-scope="text"> <template slot="isSend" slot-scope="text">
{{text == 'Y' ? '' : text == 'N' ? '' : ''}} {{ text == 'Y' ? '' : text == 'N' ? '' : '' }}
</template> </template>
<template slot="isEob" slot-scope="text"> <template slot="isEob" slot-scope="text">
{{text == 'Y' ? '' : text == 'N' ? '' : ''}} {{ text == 'Y' ? '' : text == 'N' ? '' : '' }}
</template> </template>
<template slot="isEobBack" slot-scope="text"> <template slot="isEobBack" slot-scope="text">
{{text == 'Y' ? '' : text == 'N' ? '' : ''}} {{ text == 'Y' ? '' : text == 'N' ? '' : '' }}
</template> </template>
<template slot="status" slot-scope="text"> <template slot="status" slot-scope="text">
<span :style="{color: text == 2 ? 'red' : ''}">{{ text==1?'有效':text==2?'无效':'' }}</span> <span :style="{ color: text == 2 ? 'red' : '' }">{{ text == 1 ? '有效' : text == 2 ? '无效' : '' }}</span>
</template> </template>
</a-table> </a-table>
<!--分页--> <!--分页-->
<BurtPagination :pagination="pagination" @pageChange="_getChargeList" /> <BurtPagination :pagination="pagination" @pageChange="_getChargeList" />
</div> </div>
</template> </template>
<script> <script>
import BurtPagination from "@/components/CUSTOMER/pagation"; import BurtPagination from '@/components/CUSTOMER/pagation';
import { mapState } from "vuex" import { mapState } from 'vuex';
import moment from "moment"; import moment from 'moment';
import { receiptTypeOptions } from '@/utils/utilsdictOptions.js'; import { receiptTypeOptions } from '@/utils/utilsdictOptions.js';
import { exportFile } from '@/utils/index'; import { exportFile } from '@/utils/index';
export default { export default {
data() { data() {
const columns = [ const columns = [
{ title: "序号", dataIndex: "index", key:"index",align:'center', width: 80,scopedSlots: { customRender: "index" }}, {
{ title: "收费时间", dataIndex: "receiptDate", width: 180 }, title: '序号',
{ title: "账单编号", dataIndex: "receiptNo", width: 180 }, dataIndex: 'index',
{ title: "账单类型", dataIndex: "receiptTypeStr", width: 130 }, key: 'index',
{ title: "状态", dataIndex: "status", width: 130,scopedSlots: { customRender: "status" } }, align: 'center',
{ title: "病历号", dataIndex: "mrnNo",width: 180}, width: 80,
{ title: "客户姓名",dataIndex: "patientName",width: 120,}, scopedSlots: { customRender: 'index' }
{ title: "保险公司", dataIndex: "payorName", width: 200 }, },
{ title: "保险卡", dataIndex: "cardNo", width: 200 }, { title: '收费时间', dataIndex: 'receiptDate', width: 180 },
{ title: "客户生日", dataIndex: "birthday", width: 200 }, { title: '账单编号', dataIndex: 'receiptNo', width: 180 },
{ title: "就诊医生", dataIndex: "doctorName", width: 150 }, { title: '账单类型', dataIndex: 'receiptTypeStr', width: 130 },
{ title: "是否已关联寄送单", dataIndex: "isSend", width: 180,scopedSlots: { customRender: "isSend" } }, { title: '状态', dataIndex: 'status', width: 130, scopedSlots: { customRender: 'status' } },
{ title: "是否已回款", dataIndex: "isEobBack", width: 180,scopedSlots: { customRender: "isEobBack" } }, { title: '病历号', dataIndex: 'mrnNo', width: 180 },
{ title: "应收金额", dataIndex: "chargeAmount", width: 180 }, { title: '客户姓名', dataIndex: 'patientName', width: 120 },
{ title: "折扣(%)", dataIndex: "discountAmount", width: 180 }, { title: '保险公司', dataIndex: 'payorName', width: 200 },
{ title: "减免金额", dataIndex: "reduceAmount", width: 180 }, { title: '保险卡', dataIndex: 'cardNo', width: 200 },
{ title: "应付金额", dataIndex: "payableAmount", width: 180 }, { title: '客户生日', dataIndex: 'birthday', width: 200 },
{ title: "客户自付", dataIndex: "selfpaidAmount", width: 180 }, { title: '就诊医生', dataIndex: 'doctorName', width: 150 },
{ title: "理赔金额", dataIndex: "actualAmount", width: 180 }, { title: '是否已关联寄送单', dataIndex: 'isSend', width: 180, scopedSlots: { customRender: 'isSend' } },
{ title: "保险已支付", dataIndex: "backAmount", width: 180 }, { title: '是否已回款', dataIndex: 'isEobBack', width: 180, scopedSlots: { customRender: 'isEobBack' } },
{ title: "保险欠费", dataIndex: "insuranceArrearsAmount", width: 180 }, { title: '应收金额', dataIndex: 'chargeAmount', width: 180 },
{ title: "个人欠费", dataIndex: "arrearsAmount", width: 180 }, { title: '折扣(%)', dataIndex: 'discountAmount', width: 180 },
{ title: "未清余额", dataIndex: "residueBackAmount", width: 180 }, { title: '减免金额', dataIndex: 'reduceAmount', width: 180 },
{ title: "账龄", dataIndex: "diffDay", width: 180 }, { title: '应付金额', dataIndex: 'payableAmount', width: 180 },
{ title: "操作", key: "operation", width: "175px",fixed: "right",scopedSlots: { customRender: "operation" }, align: "center"}, { title: '客户自付', dataIndex: 'selfpaidAmount', width: 180 },
]; { title: '理赔金额', dataIndex: 'actualAmount', width: 180 },
return { { title: '保险已支付', dataIndex: 'backAmount', width: 180 },
columns, { title: '保险欠费', dataIndex: 'insuranceArrearsAmount', width: 180 },
receiptTypeOptions, { title: '个人欠费', dataIndex: 'arrearsAmount', width: 180 },
form: {}, { title: '备注', dataIndex: 'remark', width: 200 },
pageForm: { { title: '未清余额', dataIndex: 'residueBackAmount', width: 180 },
doctorCode: "", { title: '账龄', dataIndex: 'diffDay', width: 180 },
patientName: "", {
mrnNo: "", title: '操作',
paymentCode: "", key: 'operation',
payorIds: [], width: '175px',
visitTimeEnd: "", fixed: 'right',
visitTimeStart: "", scopedSlots: { customRender: 'operation' },
receiptType: "", align: 'center'
receiptNo: "" }
}, ];
patientTypeOptions: [ return {
{ columns,
name: "商保", receiptTypeOptions,
code: 1, form: {},
}, pageForm: {
], //客户类型 doctorCode: '',
companyOptions: [], //保险公司 patientName: '',
doctorOptions: [], //就诊医生 mrnNo: '',
paymentOptions: [ paymentCode: '',
{ payorIds: [],
name: "商保", visitTimeEnd: '',
code: 1, visitTimeStart: '',
}, receiptType: '',
], //支付方式 receiptNo: ''
dataList: [], },
pagination: { patientTypeOptions: [
pageNum: 1, {
pageSize: 10, name: '商保',
total: 0, code: 1
}, }
receiptTypeDict: { ], //客户类型
'1': '收费', companyOptions: [], //保险公司
'2': '退费' doctorOptions: [], //就诊医生
}, paymentOptions: [
statusOptions: [ {
{ name: '商保',
name: '无效', code: 1
code:2 }
}, ], //支付方式
{ dataList: [],
name: '有效', pagination: {
code: 1 pageNum: 1,
} pageSize: 10,
] total: 0
}; },
}, receiptTypeDict: {
components: { 1: '收费',
BurtPagination, 2: '退费'
}, },
computed: { statusOptions: [
...mapState({ {
userInfo: (state) => state.common.userInfo name: '无效',
}) code: 2
}, },
created() { {
this._getCompanyOptions(); name: '有效',
this._getDoctorListNoPage();//获取医生下拉选项 code: 1
}, }
methods: { ]
moment, };
// 选择框筛选 },
filterCode(input, option) { components: {
return ( BurtPagination
option.componentOptions.children[0].text },
.toLowerCase() computed: {
.indexOf(input.toLowerCase()) >= 0 ...mapState({
); userInfo: (state) => state.common.userInfo
})
}, },
// 获取列表数据 created() {
_getChargeList() { this._getCompanyOptions();
const data = { this._getDoctorListNoPage(); //获取医生下拉选项
...this.pageForm, },
...this.pagination, methods: {
}; moment,
this.$apis.GETCHARGELIST(data).then((res) => { // 选择框筛选
let content = res.content || {}; filterCode(input, option) {
this.dataList = content.list.map(item => { return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0;
item.receiptTypeStr = this.receiptTypeDict[item.receiptType] || '' },
return item // 获取列表数据
}) || []; _getChargeList() {
this.pagination.total = content.total || 0; const data = {
}); ...this.pageForm,
}, ...this.pagination
// 获取保险公司下拉选项 };
_getCompanyOptions() { this.$apis.GETCHARGELIST(data).then((res) => {
this.$apis.GETCOMPANYOPTIONS().then((res) => { let content = res.content || {};
this.companyOptions = res.content || []; this.dataList =
}); content.list.map((item) => {
}, item.receiptTypeStr = this.receiptTypeDict[item.receiptType] || '';
// 获取看诊医生下拉选项 return item;
_getDoctorListNoPage(){ }) || [];
this.$apis.GETDOCTORlISTNOPAGE({"providerId": this.userInfo.providerId}).then((res) => { this.pagination.total = content.total || 0;
if (res.returnCode === "0000") { });
this.doctorOptions = res.content || []; },
}else{ // 获取保险公司下拉选项
this.$message.success(res.returnMsg); _getCompanyOptions() {
} this.$apis.GETCOMPANYOPTIONS().then((res) => {
}); this.companyOptions = res.content || [];
}, });
// 选中就诊时间 },
onSelectVisitTime(date, dateString) { // 获取看诊医生下拉选项
this.form.visitTimeStart = dateString[0] + ' 00:00:00' _getDoctorListNoPage() {
this.form.visitTimeEnd = dateString[1] + ' 23:59:59' this.$apis.GETDOCTORlISTNOPAGE({ providerId: this.userInfo.providerId }).then((res) => {
console.log(date, dateString); if (res.returnCode === '0000') {
}, this.doctorOptions = res.content || [];
// 重置 } else {
handlerReset() { this.$message.success(res.returnMsg);
this.form = {} }
}, });
//查看 },
detailEvt(record) { // 选中就诊时间
localStorage.setItem('chargeQueryDetail', JSON.stringify(record)); onSelectVisitTime(date, dateString) {
const { receiptNo } = record; this.form.visitTimeStart = dateString[0] + ' 00:00:00';
this.$router.push({ this.form.visitTimeEnd = dateString[1] + ' 23:59:59';
name: "chargeQueryDetail", console.log(date, dateString);
query: { receiptNo }, },
}); // 重置
}, handlerReset() {
//账单结算 this.form = {};
receiptEvt(record){ },
this.$modal.confirm({ //查看
title: "结算", detailEvt(record) {
content: "确定结算该账单?", localStorage.setItem('chargeQueryDetail', JSON.stringify(record));
okText: "确定", const { receiptNo } = record;
cancelText: "取消", this.$router.push({
onOk: () => { name: 'chargeQueryDetail',
this.$apis.RECEIPTSETTLEMENT({ query: { receiptNo }
id: record.id });
}).then((res) => { },
if (res.returnCode === "0000") { //账单结算
this.$message.success('结算成功'); receiptEvt(record) {
this._getChargeList(); this.$modal.confirm({
}else{ title: '结算',
this.$message.error(res.returnMsg); content: '确定结算该账单?',
} okText: '确定',
}); cancelText: '取消',
}, onOk: () => {
}); this.$apis
}, .RECEIPTSETTLEMENT({
handlerSearch() { id: record.id
this.$refs.form.validate((valid) => { })
if (!valid) { .then((res) => {
return false; if (res.returnCode === '0000') {
} this.$message.success('结算成功');
this.pagination.pageNum = 1; this._getChargeList();
this.pageForm = this.$lodash.cloneDeep({...this.form, dateRange: undefined}); } else {
this._getChargeList(); this.$message.error(res.returnMsg);
}); }
}, });
// 新建账单信息 }
addNewCharge() { });
// this.$router.push("/customer/edit"); },
}, handlerSearch() {
this.$refs.form.validate((valid) => {
if (!valid) {
return false;
}
this.pagination.pageNum = 1;
this.pageForm = this.$lodash.cloneDeep({ ...this.form, dateRange: undefined });
this._getChargeList();
});
},
// 新建账单信息
addNewCharge() {
// this.$router.push("/customer/edit");
},
//导出报表 //导出报表
exportExcel(){ exportExcel() {
let filter = { let filter = {
...this.form, ...this.form
} };
this.$apis.RceiptListReport(filter).then(res => { this.$apis.RceiptListReport(filter).then((res) => {
exportFile(res, '账单报表.xls'); exportFile(res, '账单报表.xls');
}) });
} }
}, }
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.none-label { .none-label {
text-align: right; text-align: right;
.ant-form-item-label { .ant-form-item-label {
opacity: 0; opacity: 0;
} }
} }
.ant-btn .icon-class { .ant-btn .icon-class {
.mg-r(10); .mg-r(10);
} }
</style> </style>
<template> <template>
<div class="white_bg burt-container"> <div ref="burt" class="white_bg burt-container">
<Goback title="回款详情" /> <Goback ref="goback" title="回款详情" />
<a-tabs v-model="activeKey" @change="paneChange"> <a-tabs v-model="activeKey" @change="paneChange">
<a-tab-pane v-for="pane in panes" :key="pane.key" :tab="pane.title"> <a-tab-pane v-for="pane in panes" :key="pane.key" :tab="pane.title">
<template v-if="activeKey === '0'"> <a-form-model ref="form" :model="form">
<!-- form --> <a-row :gutter="30">
<a-form-model ref="form" layout="vertical" :model="form"> <a-col :lg="7" :sm="12">
<a-row :gutter="30"> <a-form-model-item label="保险公司">
<a-col :lg="6" :sm="12"> <a-select
<a-form-model-item label="保险公司"> v-model="form.payorCode"
<a-select placeholder="请选择保险公司"
v-model="form.payorCode" allow-clear
placeholder="请选择保险公司" show-search
allow-clear :disabled="!isEdit"
show-search style="min-width: 200px"
:disabled="!isEdit" @change="changePayor"
@change="changePayor" :filterOption="filterCode"
:filterOption="filterCode" >
> <a-select-option v-for="item in companyOptions" :key="item.payorCode" :value="item.payorCode">
<a-select-option {{ item.longName }}
v-for="item in companyOptions" </a-select-option>
:key="item.payorCode" </a-select>
:value="item.payorCode" </a-form-model-item>
> </a-col>
{{ item.longName }} <template v-if="activeKey === '0'">
</a-select-option> <a-col :lg="5" :sm="12">
</a-select> <a-form-model-item label="回款日期">
</a-form-model-item> <a-date-picker
</a-col> format="YYYY-MM-DD"
<a-col :lg="5" :sm="12"> format-value="YYYY-MM-DD 00:00:00"
<a-form-model-item label="回款日期"> v-model="form.backDate"
<a-date-picker placeholder="选择日期"
format="YYYY-MM-DD" allow-clear
format-value="YYYY-MM-DD 00:00:00" :disabled="!isEdit"
v-model="form.backDate" />
placeholder="选择日期" </a-form-model-item>
allow-clear </a-col>
:disabled="!isEdit" </template>
/> <a-col :lg="6" :sm="12">
</a-form-model-item> <a-form-model-item label="回款金额(人民币)">
</a-col> <a-input
<a-col :lg="5" :sm="12"> type="number"
<a-form-model-item label="回款金额(人民币)"> v-model="form.backAmountCny"
<a-input placeholder="请输入金额"
type="number" allow-clear
v-model="form.backAmountCny" :disabled="!isEdit"
placeholder="请输入金额" />
allow-clear </a-form-model-item>
:disabled="!isEdit" </a-col>
/> <a-col :lg="5" :sm="12">
</a-form-model-item> <a-form-model-item label="可核销余额">
</a-col> <a-input v-model="residueBackAmount" disabled />
<a-col :lg="5" :sm="12"> </a-form-model-item>
<a-form-model-item label="可核销余额"> </a-col>
<a-input v-model="residueBackAmount" disabled /> <template v-if="activeKey === '0'">
</a-form-model-item> <a-col :lg="7" :sm="12">
</a-col> <a-form-model-item label="回款金额(美元)">
<a-col :lg="5" :sm="12"> <a-input
<a-form-model-item label="回款金额(美元)"> type="number"
<a-input v-model="form.backAmountUsd"
type="number" placeholder="请输入金额"
v-model="form.backAmountUsd" allow-clear
placeholder="请输入金额" :disabled="!isEdit"
allow-clear />
:disabled="!isEdit" </a-form-model-item>
/> </a-col>
</a-form-model-item> <a-col :lg="5" :sm="12">
</a-col> <a-form-model-item label="汇率差">
<a-col :lg="6" :sm="12"> <a-input v-model="form.backExchangeRate" placeholder="请输入金额" allow-clear :disabled="!isEdit" />
<a-form-model-item label="汇率差"> </a-form-model-item>
<a-input </a-col>
v-model="form.backExchangeRate" <a-col :lg="6" :sm="12">
placeholder="请输入金额" <a-form-model-item label="EOB编号">
allow-clear <a-input v-model="form.eobNos" placeholder="请输入EOB编号" allow-clear :disabled="!isEdit" />
:disabled="!isEdit" </a-form-model-item>
/> </a-col>
</a-form-model-item> <a-col :lg="5" :sm="12">
</a-col> <a-form-model-item label="EOB备注">
<a-col :lg="5" :sm="12"> <a-input v-model="form.eobRemark" placeholder="请输入EOB备注" allow-clear :disabled="!isEdit" />
<a-form-model-item label="EOB编号"> </a-form-model-item>
<a-input </a-col>
v-model="form.eobNos" <a-col :lg="5" :sm="12">
placeholder="请输入EOB编号" <a-form-model-item label="上传附件">
allow-clear <a-upload
:disabled="!isEdit" name="file"
/> :multiple="false"
</a-form-model-item> :showUploadList="true"
</a-col> :disabled="!isEdit"
<a-col :lg="5" :sm="12"> :fileList="fileList"
<a-form-model-item label="EOB备注"> :customRequest="(file) => uploadFile(file)"
<a-input :beforeUpload="() => beforeUpload()"
v-model="form.eobRemark" :remove="(file) => removeFile(file)"
placeholder="请输入EOB备注" >
allow-clear <a-button type="primary"> <Icon name="ssiupload" :size="18" />上传文件 </a-button>
:disabled="!isEdit" </a-upload>
/> </a-form-model-item>
</a-form-model-item> </a-col>
</a-col> </template>
<a-col :lg="5" :sm="12"> </a-row>
<a-form-model-item label="上传附件"> </a-form-model>
<a-upload <template v-if="activeKey === '1'">
name="file" <div class="bill-content">
:multiple="false" <a-tabs type="card" v-model="activeKey1">
:showUploadList="true" <a-tab-pane v-for="pane in panes1" :key="pane.key" :tab="pane.title">
:disabled="!isEdit" <div>
:fileList="fileList" <a-row class="search-form">
:customRequest="(file) => uploadFile(file)" <a-form-model
:beforeUpload="() => beforeUpload()" ref="searchForm"
:remove="(file) => removeFile(file)" layout="inline"
> :labelCol="{ span: 9 }"
<a-button type="primary"> :wrapperCol="{ span: 15 }"
<Icon name="ssiupload" :size="18" />上传文件 :model="searchForm"
</a-button> >
</a-upload> <a-row :gutter="30">
</a-form-model-item> <a-col :lg="5" :sm="10">
</a-col> <a-form-model-item label="账单日期">
</a-row> <a-range-picker
</a-form-model> format="YYYY-MM-DD"
</template> value-format="YYYY-MM-DD"
<template v-else> v-model="searchForm.billDate"
<!-- form --> :placeholder="['开始时间', '结束时间']"
<a-form-model />
ref="form" </a-form-model-item>
:labelCol="{ span: 5 }" </a-col>
:wrapperCol="{ span: 16 }" <a-col :lg="4" :sm="10">
:model="form" <a-form-model-item label="病历号">
class="bill-form" <a-input
> v-model="searchForm.mrnNo"
<a-row :gutter="30"> placeholder="请输入病历号"
<a-col :lg="8" :sm="12"> allow-clear
<a-form-model-item label="保险公司"> :disabled="!isEdit"
<a-select />
v-model="form.payorCode" </a-form-model-item>
placeholder="请选择保险公司" </a-col>
allow-clear <a-col :lg="4" :sm="12">
show-search <a-form-model-item label="客户名称">
:filter-option="filterOption" <a-input
:disabled="!isEdit" v-model="searchForm.patientName"
@change="changePayor" placeholder="请输入客户名称"
> allow-clear
<a-select-option :disabled="!isEdit"
v-for="item in companyOptions" />
:key="item.id" </a-form-model-item>
:value="item.payorCode" </a-col>
> <a-col :lg="4" :sm="12">
{{ item.longName }} <a-form-model-item label="状态">
</a-select-option> <a-select v-model="searchForm.rStatus" placeholder="请选择状态" allowClear>
</a-select> <a-select-option v-for="item in statusOptions" :key="item.code" :value="item.code">
</a-form-model-item> {{ item.name }}
</a-col> </a-select-option>
<a-col :lg="8" :sm="12"> </a-select>
<a-form-model-item label="可核销余额"> </a-form-model-item>
<a-input v-model="residueBackAmount" disabled /> </a-col>
</a-form-model-item> <a-col :lg="4" :sm="12">
</a-col> <a-form-model-item label="账单编号">
</a-row> <a-input
</a-form-model> v-model="searchForm.receiptNo"
<div class="bill-content"> placeholder="请输入账单编号"
<!-- 已关联账单 --> allow-clear
<template v-if="selectedRows.length > 0"> :disabled="!isEdit"
<div class="table-title"> />
<span>已关联账单</span> </a-form-model-item>
<a-button class="mar-left10" type="primary" @click="exportExcel"> </a-col>
<Icon name="ssidaochu" :size="14" />导出 <a-col :lg="2" :sm="12">
</a-button> <div class="btn-div mar-bottom10 none-label">
</div> <a-button type="primary" @click="searchData">
<a-table <Icon name="ssisearch_active" :size="14" />查询
class="table-content" </a-button>
:columns="selectedColumns" </div>
:data-source="selectedRows" </a-col>
:scroll="{ x: '100%', y: 450 }" </a-row>
:pagination="false" </a-form-model>
> </a-row>
<template slot="status" slot-scope="text"> </div>
<span :style="{color: text == 2 ? 'red' : ''}">{{ text==1?'有效':text==2?'无效':'' }}</span> <!-- 已关联账单 -->
</template> <template v-if="activeKey1 === '0'">
<template slot="operation" slot-scope="text, record, index"> <template v-if="selectedRows.length > 0">
<a-button <div class="table-title">
type="link" <a-button class="mar-left10" type="primary" @click="exportExcel">
class="danger" <Icon name="ssidaochu" :size="14" />导出
@click.stop="delRecord(record, index)" </a-button>
>删除</a-button </div>
> <a-table
</template> class="table-content"
</a-table> :rowClassName="rowClassName"
</template> :columns="selectedColumns"
<!-- table --> :data-source="selectedRows"
<template v-if="isEdit"> :scroll="{ x: '100%', y: tableHeight }"
<a-row class="search-form"> :pagination="false"
<a-form-model >
ref="searchForm" <template slot="status" slot-scope="text">
layout="inline" <span :style="{ color: text == 2 ? 'red' : '' }">{{
:labelCol="{ span: 8 }" text == 1 ? '有效' : text == 2 ? '无效' : ''
:wrapperCol="{ span: 16 }" }}</span>
:model="searchForm" </template>
> <template slot="operation" slot-scope="text, record, index">
<a-row :gutter="30"> <a-button type="link" class="danger" @click.stop="delRecord(record, index)">删除</a-button>
<a-col :lg="5" :sm="10"> </template>
<a-form-model-item label="账单日期"> </a-table>
<a-range-picker </template>
format="YYYY-MM-DD" </template>
value-format="YYYY-MM-DD" <template v-else>
v-model="searchForm.billDate" <!-- table -->
:placeholder="['开始时间', '结束时间']" <template v-if="isEdit">
/> <a-table
</a-form-model-item> class="table-content all-list"
</a-col> :columns="columns"
<a-col :lg="4" :sm="10"> :data-source="dataList"
<a-form-model-item label="病历号"> :scroll="{ x: '100%', y: tableHeight }"
<a-input :pagination="false"
v-model="searchForm.mrnNo" :rowKey="'id'"
placeholder="请输入病历号" :row-selection="{
allow-clear selectedRowKeys: selectedRowKeys,
:disabled="!isEdit" onSelect: onSelectChange,
/> onSelectAll: onSelectAll
</a-form-model-item> }"
</a-col> >
<a-col :lg="4" :sm="12"> <template slot="status" slot-scope="text">
<a-form-model-item label="客户名称"> <span :style="{ color: text == 2 ? 'red' : '' }">{{
<a-input text == 1 ? '有效' : text == 2 ? '无效' : ''
v-model="searchForm.patientName" }}</span>
placeholder="请输入客户名称" </template>
allow-clear </a-table>
:disabled="!isEdit" <BurtPagination class="pagination" :pagination="pagination" @pageChange="pageChange" />
/> </template>
</a-form-model-item> </template>
</a-col> </a-tab-pane>
<a-col :lg="4" :sm="12"> </a-tabs>
<a-form-model-item label="状态"> </div>
<a-select style="width: 160px;" v-model="searchForm.rStatus" placeholder="请选择状态" allowClear> </template>
<a-select-option v-for="item in statusOptions" :key="item.code" :value="item.code"> </a-tab-pane>
{{ item.name }} <div v-if="isEdit" slot="tabBarExtraContent">
</a-select-option> <a-button class="mar-left10" type="primary" @click="addNewEvt(0)">
</a-select> <Icon :name="backMoneyNo ? 'ssibaocun' : 'ssiadd'" :size="14" />暂存
</a-form-model-item> </a-button>
</a-col> <a-button class="mar-left10" type="primary" @click="addNewEvt(1)">
<a-col :lg="4" :sm="12"> <Icon :name="backMoneyNo ? 'ssibaocun' : 'ssiadd'" :size="14" />结案
<a-form-model-item label="账单编号"> </a-button>
<a-input </div>
v-model="searchForm.receiptNo" </a-tabs>
placeholder="请输入账单编号" </div>
allow-clear
:disabled="!isEdit"
/>
</a-form-model-item>
</a-col>
<a-col :lg="2" :sm="12">
<div class="btn-div mar-bottom10 none-label">
<a-button type="primary" @click="_getNewEOBList">
<Icon name="ssisearch_active" :size="14" />查询
</a-button>
</div>
</a-col>
</a-row>
</a-form-model>
</a-row>
<div class="table-title">账单列表</div>
<a-table
:columns="columns"
:data-source="dataList"
:scroll="{ x: '100%', y: 300 }"
:pagination="false"
:rowKey="'id'"
:row-selection="{
selectedRowKeys: selectedRowKeys,
onSelect: onSelectChange,
onSelectAll: onSelectAll,
}"
>
<template slot="status" slot-scope="text">
<span :style="{color: text == 2 ? 'red' : ''}">{{ text==1?'有效':text==2?'无效':'' }}</span>
</template>
</a-table>
<BurtPagination
:pagination="pagination"
@pageChange="pageChange"
/>
</template>
</div>
</template>
</a-tab-pane>
<div v-if="isEdit" slot="tabBarExtraContent">
<a-button class="mar-left10" type="primary" @click="addNewEvt(0)">
<Icon :name="backMoneyNo ? 'ssibaocun' : 'ssiadd'" :size="14" />暂存
</a-button>
<a-button class="mar-left10" type="primary" @click="addNewEvt(1)">
<Icon :name="backMoneyNo ? 'ssibaocun' : 'ssiadd'" :size="14" />结案
</a-button>
</div>
</a-tabs>
</div>
</template> </template>
<script> <script>
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 { EOBStatusOptions } from "@/utils/utilsdictOptions.js"; import { EOBStatusOptions } from '@/utils/utilsdictOptions.js';
import { exportFile } from '@/utils/index'; import { exportFile } from '@/utils/index';
import moment from "moment"; import moment from 'moment';
import mixins from "@/mixins"; import mixins from '@/mixins';
const panes = [
{ title: '基础信息', key: '0', show: true, content: 'PaymentClaims' },
{ title: '账单列表', key: '1', show: false, content: 'Insurance' }
];
const panes1 = [
{ title: '已关联账单', key: '0', show: true, content: 'Associated' },
{ title: '全部账单', key: '1', show: false, content: 'Insurance' }
];
export default { export default {
data() { data() {
return { return {
isEdit: false, isEdit: false,
EOBStatusOptions, EOBStatusOptions,
dialogShow: false, dialogShow: false,
form: { form: {
payorCode: "", payorCode: undefined,
backDate: null, backDate: null,
backAmountCny: "", backAmountCny: '',
backAmountUsd: "", backAmountUsd: '',
backExchangeRate: "", backExchangeRate: '',
eobNos: "", // EOB编号 eobNos: '', // EOB编号
eobRemark: "", // EOB备注 eobRemark: '' // EOB备注
}, },
fileList: [], // 上传文件列表 fileList: [], // 上传文件列表
dataList: [], dataList: [],
isEditNewEOB: false, //是否在新建回款 isEditNewEOB: false, //是否在新建回款
companyOptions: [], //保险公司 companyOptions: [], //保险公司
pagination: { pagination: {
pageNum: 1, pageNum: 1,
pageSize: 5, pageSize: 5,
total: 0, total: 0
}, },
selectedRowKeys: [], // Check here to configure the default column selectedRowKeys: [], // Check here to configure the default column
selectedRows: [], // Check here to configure the default column selectedRows: [], // Check here to configure the default column
backMoneyNo: "", backMoneyNo: '',
editRules: { editRules: {
backAmountUsd: [{ required: true, message: "请输入", trigger: "blur" }], backAmountUsd: [{ required: true, message: '请输入', trigger: 'blur' }],
backAmount: [{ required: true, message: "请输入", trigger: "blur" }], backAmount: [{ required: true, message: '请输入', trigger: 'blur' }]
}, },
searchForm: { searchForm: {
billDate: [], billDate: [],
mrnNo: "", // 病历号 mrnNo: '', // 病历号
patientName: "", // 客户名字 patientName: '' // 客户名字
}, },
savedStatus: false, //是否已保存 savedStatus: false, //是否已保存
relatedList: [], relatedList: [],
panes: [ panes: Object.seal(panes),
{ title: "基础信息", key: "0", show: true, content: "PaymentClaims" }, panes1: Object.seal(panes1),
{ title: "账单列表", key: "1", show: false, content: "Insurance" }, activeKey: '0',
], activeKey1: '0',
activeKey: "0", statusOptions: [
statusOptions: [ {
{ name: '无效',
name: '无效', code: 2
code:2 },
}, {
{ name: '有效',
name: '有效', code: 1
code: 1 }
} ],
] tableHeight: 200 // 表格高度
}; };
}, },
mixins: [mixins], mixins: [mixins],
components: { components: {
Goback, Goback,
BurtPagination, BurtPagination
}, },
computed: { computed: {
columns() { columns() {
const base = [ const base = [
{ {
title: "账单编号", title: '账单编号',
dataIndex: "receiptNo", dataIndex: 'receiptNo',
ellipsis: true, ellipsis: true,
width: 150, width: 150
}, },
{ {
title: "账单状态", title: '账单状态',
dataIndex: "status", dataIndex: 'status',
ellipsis: true, ellipsis: true,
width: 150 width: 150,
,scopedSlots: { customRender: "status" } scopedSlots: { customRender: 'status' }
}, },
{ title: "病历号", dataIndex: "mrnNo", ellipsis: true, width: 195 }, { title: '病历号', dataIndex: 'mrnNo', ellipsis: true, width: 195 },
{ {
title: "客户姓名", title: '客户姓名',
dataIndex: "patientName", dataIndex: 'patientName',
ellipsis: true, ellipsis: true,
width: 160, width: 160
}, },
{ title: "保险公司", dataIndex: "payorName", ellipsis: true, width: 195 }, { title: '保险公司', dataIndex: 'payorName', ellipsis: true, width: 195 },
{ {
title: "账单日期", title: '账单日期',
dataIndex: "receiptDate", dataIndex: 'receiptDate',
ellipsis: true, ellipsis: true,
width: 180, width: 180
}, },
{ {
title: "收银", title: '收银',
dataIndex: "receiptTellerName", dataIndex: 'receiptTellerName',
ellipsis: true, ellipsis: true,
width: 120, width: 120
}, },
{ {
title: "理赔账单金额", title: '理赔账单金额',
dataIndex: "actualAmount", dataIndex: 'actualAmount',
ellipsis: true, ellipsis: true,
width: 150, width: 150
}, },
{ {
title: "回款金额", title: '回款金额',
dataIndex: "writeOffAmount", dataIndex: 'writeOffAmount',
ellipsis: true, ellipsis: true,
width: 150, width: 150
}, },
{ {
title: "个人欠费", title: '个人欠费',
dataIndex: "arrearsAmountShow", dataIndex: 'arrearsAmountShow',
ellipsis: true, ellipsis: true,
width: 150, width: 150
}, },
{ {
title: "未清余额", title: '备注',
dataIndex: "residueBackAmount", dataIndex: 'remark',
ellipsis: true, ellipsis: true,
width: 150, width: 200
}, },
]; {
return base; title: '未清余额',
}, dataIndex: 'residueBackAmount',
selectedColumns() { ellipsis: true,
const base = JSON.parse(JSON.stringify(this.columns)); width: 150
const changeAmount = this.changeAmount; }
base[8] = { ];
title: "回款金额", return base;
dataIndex: "backAmount", },
ellipsis: true, selectedColumns() {
width: 150, const base = JSON.parse(JSON.stringify(this.columns));
customRender: (val, row) => { const changeAmount = this.changeAmount;
return ( base[8] = {
<a-input-number title: '回款金额',
v-model={row.backAmount} dataIndex: 'backAmount',
allow-clear ellipsis: true,
disabled={!this.isEdit} width: 150,
style={{"color": row.backAmount == row.currentReceiptAmount ? '' : 'red'}} customRender: (val, row) => {
onBlur={() => { return (
changeAmount(row); <a-input-number
}} v-model={row.backAmount}
/> allow-clear
disabled={!this.isEdit}
); style={{ color: row.backAmount == row.currentReceiptAmount ? '' : 'red' }}
}, onBlur={() => {
}; changeAmount(row, 'backAmount');
base[10] = { }}
title: "未清余额", />
dataIndex: "residueBackAmount", );
ellipsis: true, }
width: 150, };
customRender: (val, row) => { base[10].customRender = (val, row) => {
const residueBackAmount = return (
Number(row.currentReceiptAmount || 0) - Number(row.backAmount || 0) - Number(row.arrearsAmount || 0); <a-input
return Number(residueBackAmount.toFixed(2)); v-model={row.remark}
}, allow-clear
}; disabled={!this.isEdit}
base[9] = { onBlur={() => {
title: "个人欠费", this.syncData(row);
dataIndex: "arrearsAmount", }}
ellipsis: true, />
width: 150, );
customRender: (val, row) => { };
return ( base[11] = {
<a-input-number title: '未清余额',
v-model={row.arrearsAmount} dataIndex: 'residueBackAmount',
allow-clear ellipsis: true,
disabled={!this.isEdit} width: 150,
onBlur={() => { customRender: (val, row) => {
changeAmount(row); const residueBackAmount =
}} Number(row.currentReceiptAmount || 0) - Number(row.backAmount || 0) - Number(row.arrearsAmount || 0);
/> return Number(residueBackAmount.toFixed(2));
); }
}, };
}; base[9] = {
base.splice(8, 0, { title: '个人欠费',
title: "余末金额", dataIndex: 'arrearsAmount',
dataIndex: "currentReceiptAmount", ellipsis: true,
ellipsis: true, width: 150,
width: 150, customRender: (val, row) => {
}); return (
base.push({ <a-input-number
title: "回款日期", v-model={row.arrearsAmount}
dataIndex: "backDate", allow-clear
ellipsis: true, disabled={!this.isEdit}
width: 150, onBlur={() => {
}); changeAmount(row, 'arrearsAmount');
if (this.isEdit) { }}
base.push({ />
title: "操作", );
dataIndex: "operation", }
fixed: "right", };
width: 100, base.splice(8, 0, {
scopedSlots: { customRender: "operation" }, title: '余末金额',
}); dataIndex: 'currentReceiptAmount',
} ellipsis: true,
return base; width: 150
}, });
// 可核销余额 base.push({
residueBackAmount() { title: '回款日期',
let totalMoney = Number(this.form.backAmountCny || 0); dataIndex: 'backDate',
this.selectedRows.forEach((item) => { ellipsis: true,
totalMoney -= Number(item.backAmount); width: 150
}); });
return Number(totalMoney.toFixed(2)); if (this.isEdit) {
}, base.push({
}, title: '操作',
created() { dataIndex: 'operation',
const { backMoneyNo, isEdit } = this.$route.query; fixed: 'right',
this.backMoneyNo = backMoneyNo; width: 100,
this.isEdit = isEdit; scopedSlots: { customRender: 'operation' }
this._getCompanyOptions(); });
if (backMoneyNo) { }
const backMoneyDataDetail = JSON.parse( return base;
localStorage.getItem("backMoneyDataDetail") || "{}" },
); // 可核销余额
this.form = backMoneyDataDetail; residueBackAmount() {
this.form.backDate = this.form.backDate let totalMoney = Number(this.form.backAmountCny || 0);
? moment(this.form.backDate).format("YYYY-MM-DD 00:00:00") this.selectedRows.forEach((item) => {
: null; totalMoney -= Number(item.backAmount);
});
return Number(totalMoney.toFixed(2));
}
},
created() {
const { backMoneyNo, isEdit } = this.$route.query;
this.backMoneyNo = backMoneyNo;
this.isEdit = isEdit;
this._getCompanyOptions();
if (backMoneyNo) {
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;
// 如果有上传附件则显示列表 // 如果有上传附件则显示列表
if (backMoneyDataDetail.fileList) { if (backMoneyDataDetail.fileList) {
this.fileList = backMoneyDataDetail.fileList.map((d) => { this.fileList = backMoneyDataDetail.fileList.map((d) => {
const file = { const file = {
uid: Math.random() * 10000, uid: Math.random() * 10000,
name: d.fileName, name: d.fileName,
status: "done", status: 'done',
url: d.fileUrl, url: d.fileUrl
}; };
return file; return file;
}); });
} }
this.getData(); this.getData();
} }
this._getNewEOBList(); },
}, mounted() {
methods: { this.calcTableHeight();
moment, this._getNewEOBList();
// 选择框筛选
filterCode(input, option) {
return (
option.componentOptions.children[0].text
.toLowerCase()
.indexOf(input.toLowerCase()) >= 0
);
}, },
paneChange() { methods: {
this.panes.forEach((item) => { moment,
item.show = false; // 计算表格最大高度
}); calcTableHeight() {
this.panes[Number(this.activeKey)].show = true; const dom = this.$refs.burt;
}, const containterH = dom.clientHeight;
changeAmount(row) { const gobackH = document.querySelector('.back-container').clientHeight;
let totalMoney = Number(this.form.backAmountCny || 0); const style = window.getComputedStyle(dom, null);
this.selectedRows.forEach((item) => { const paddingT = parseFloat(style.getPropertyValue('padding-top'));
totalMoney -= Number(item.backAmount); const paddingB = parseFloat(style.getPropertyValue('padding-bottom'));
}); const paddingSum = paddingT + paddingB;
if(totalMoney < 0){ this.tableHeight = containterH - 350 - gobackH - paddingSum;
this.$message.error('可核销余额不足') // 设置每页展示条数
} const pageSize = Math.floor((this.tableHeight - 10) / 32);
if (Number(row.actualAmount || 0) - Number(row.backAmount || 0) < 0) { this.$set(this.pagination, 'pageSize', pageSize);
this.$message.warning("录入账单回款金额大于账单金额"); },
} // 已关联账单表格行类名
}, rowClassName(record) {
onSelectChange(selectedRow, selected) { return record.hidden ? 'hide_' : '';
selectedRow['backAmount'] = this.residueBackAmount > selectedRow.currentReceiptAmount ? selectedRow.currentReceiptAmount: this.residueBackAmount; },
if (selected) { // 已关联账单数据同步
this.selectedRowKeys.push(selectedRow.id); syncData(row, field) {
this.selectedRows.push(selectedRow); this.selectedRows.forEach((item) => {
} else { if (item.id === row.id) {
const index = this.selectedRowKeys.findIndex( item[field] = row[field];
(item) => item === selectedRow.id }
); });
this.selectedRowKeys.splice(index, 1); },
this.selectedRows.splice(index, 1); // 账单查询
this._confirmDelReceipt([selectedRow]); searchData() {
} this._getNewEOBList();
this.addNewEvt(0) this.getData();
}, },
onSelectAll(selected, selectedRows, changeRows) { // 选择框筛选
console.log(selected, selectedRows, changeRows); filterCode(input, option) {
if (selected) { return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0;
this.selectedRowKeys = this.selectedRowKeys.concat( },
changeRows.map((item) => item.id) paneChange() {
); this.panes.forEach((item) => {
this.selectedRows = this.selectedRows.concat(changeRows); item.show = false;
} else { });
changeRows.forEach((item) => { this.panes[Number(this.activeKey)].show = true;
const findIndex = this.selectedRowKeys.findIndex( },
(rowId) => rowId === item.id changeAmount(row, field) {
); let totalMoney = Number(this.form.backAmountCny || 0);
this.selectedRowKeys.splice(findIndex, 1); this.selectedRows.forEach((item) => {
this.selectedRows.splice(findIndex, 1); totalMoney -= Number(item.backAmount);
}); });
this._confirmDelReceipt(changeRows); if (totalMoney < 0) {
} this.$message.error('可核销余额不足');
}, }
delRecord(record, index) { if (Number(row.actualAmount || 0) - Number(row.backAmount || 0) < 0) {
this.selectedRowKeys.splice(index, 1); this.$message.warning('录入账单回款金额大于账单金额');
this.selectedRows.splice(index, 1); }
if (record.relationed) { this.syncData(row, field);
// 已经关联的调用接口删除 },
this._confirmDelReceipt([record]); onSelectChange(selectedRow, selected) {
} selectedRow['backAmount'] =
}, this.residueBackAmount > selectedRow.currentReceiptAmount
_confirmDelReceipt(records) { ? selectedRow.currentReceiptAmount
console.log(records); : this.residueBackAmount;
if (!this.backMoneyNo) return; if (selected) {
const receiptVoList = records this.selectedRowKeys.push(selectedRow.id);
.filter((item) => { this.selectedRows.push(selectedRow);
const findIndex = this.relatedList.findIndex( } else {
(rowId) => rowId === item.id const index = this.selectedRowKeys.findIndex((item) => item === selectedRow.id);
); this.selectedRowKeys.splice(index, 1);
return findIndex > -1; this.selectedRows.splice(index, 1);
}) this._confirmDelReceipt([selectedRow]);
.map((item) => { }
return { this.addNewEvt(0);
id: item.id, },
}; onSelectAll(selected, selectedRows, changeRows) {
}); console.log(selected, selectedRows, changeRows);
console.log(receiptVoList); if (selected) {
if (receiptVoList.length === 0) return; this.selectedRowKeys = this.selectedRowKeys.concat(changeRows.map((item) => item.id));
this.$apis this.selectedRows = this.selectedRows.concat(changeRows);
.DELETERECEIPTRECORD({ } else {
backMoneyNo: this.backMoneyNo, changeRows.forEach((item) => {
receiptVoList, const findIndex = this.selectedRowKeys.findIndex((rowId) => rowId === item.id);
}) this.selectedRowKeys.splice(findIndex, 1);
.then((res) => { this.selectedRows.splice(findIndex, 1);
if (res.returnCode == "0000") { });
this._getNewEOBList(); this._confirmDelReceipt(changeRows);
} else { }
this.$message.error(res.returnMsg); },
} delRecord(record, index) {
}); this.selectedRowKeys.splice(index, 1);
}, this.selectedRows.splice(index, 1);
// 修改保险公司 if (record.relationed) {
changePayor() { // 已经关联的调用接口删除
if ( this._confirmDelReceipt([record]);
this.selectedRowKeys.length > 0 && }
(this.form.id || this.savedStatus) },
) { _confirmDelReceipt(records) {
this.$modal.confirm({ console.log(records);
title: "提示", if (!this.backMoneyNo) return;
content: "是否解除已关联账单", const receiptVoList = records
okText: "确认", .filter((item) => {
cancelText: "取消", const findIndex = this.relatedList.findIndex((rowId) => rowId === item.id);
onOk: () => { return findIndex > -1;
this.selectedRowKeys = []; })
this.selectedRows = []; .map((item) => {
}, return {
onCancel: () => {}, id: item.id
}); };
} });
this._getNewEOBList(); console.log(receiptVoList);
}, if (receiptVoList.length === 0) return;
pageChange(pager) { this.$apis
this.pagination = { .DELETERECEIPTRECORD({
...this.pagination, backMoneyNo: this.backMoneyNo,
...pager, receiptVoList
}; })
this._getNewEOBList(); .then((res) => {
}, if (res.returnCode == '0000') {
// 获取保险公司下拉选项 this._getNewEOBList();
_getCompanyOptions() { } else {
this.$apis.GETCOMPANYOPTIONS().then((res) => { this.$message.error(res.returnMsg);
this.companyOptions = res.content || []; }
}); });
}, },
// 获取已关联的账单 // 修改保险公司
getData() { changePayor() {
this.$apis if (this.selectedRowKeys.length > 0 && (this.form.id || this.savedStatus)) {
.QUERYBACKRECEIPTLIST({ this.$modal.confirm({
pageNum: 1, title: '提示',
pageSize: 999, content: '是否解除已关联账单',
backMoneyNo: this.backMoneyNo, okText: '确认',
payorCode: this.form.payorCode, cancelText: '取消',
}) onOk: () => {
.then((res) => { this.selectedRowKeys = [];
if (res.returnCode == "0000") { this.selectedRows = [];
const list = res.content.list || []; },
this.selectedRowKeys = list.map((d) => d.id); onCancel: () => {}
this.selectedRows = list.map((item) => { });
item.relationed = true; }
return item; this._getNewEOBList();
}); },
this.relatedList = list.map((d) => d.id); pageChange(pager) {
} else { this.pagination = {
this.$message.error(res.returnMsg); ...this.pagination,
} ...pager
}); };
}, this._getNewEOBList();
// 获取所有账单 },
_getNewEOBList() { // 获取保险公司下拉选项
let billDate = this.searchForm.billDate || []; _getCompanyOptions() {
this.$apis this.$apis.GETCOMPANYOPTIONS().then((res) => {
.QUERYBACKRECEIPTINFOLIST({ this.companyOptions = res.content || [];
pageNum: this.pagination.pageNum, });
pageSize: this.pagination.pageSize, },
backMoneyNo: this.backMoneyNo, // 获取已关联的账单
payorCode: this.form.payorCode, getData() {
...this.searchForm, let billDate = this.searchForm.billDate || [];
receiptEndDate: billDate[1] ? billDate[1] + " 23:59:59" : undefined, this.$apis
receiptStartDate: billDate[0] ? billDate[0] + " 00:00:00" : undefined, .QUERYBACKRECEIPTLIST({
}) pageNum: 1,
.then((res) => { pageSize: 999,
if (res.returnCode == "0000") { backMoneyNo: this.backMoneyNo,
let content = res.content || {}; payorCode: this.form.payorCode,
this.pagination.total = content.total || 0; ...this.searchForm,
this.dataList = content.list.map(item => { receiptEndDate: billDate[1] ? billDate[1] + ' 23:59:59' : undefined,
item.arrearsAmountShow = item.arrearsAmount receiptStartDate: billDate[0] ? billDate[0] + ' 00:00:00' : undefined
item.arrearsAmount = '' })
return item .then((res) => {
}) || []; if (res.returnCode == '0000') {
} else { const list = res.content.list || [];
this.$message.error(res.returnMsg); let ids = [];
} this.selectedRows = list.map((item) => {
}); item.relationed = true;
}, ids.push(item.id);
//新建/保存回款 return item;
addNewEvt(backStatus) { });
return new Promise((resolve, reject) => { this.selectedRowKeys = this.$lodash.cloneDeep(ids);
console.log(this.selectedRows); this.relatedList = this.$lodash.cloneDeep(ids);
if (!this.form.payorCode) { } else {
this.$message.warning("请选择保险公司"); this.$message.error(res.returnMsg);
reject(); }
return; });
} },
if (!this.form.backDate) { // 获取所有账单
this.$message.warning("请选择回款日期"); _getNewEOBList() {
reject(); let billDate = this.searchForm.billDate || [];
return; this.$apis
} .QUERYBACKRECEIPTINFOLIST({
if (!this.form.backAmountCny) { pageNum: this.pagination.pageNum,
this.$message.warning("请输入回款金额"); pageSize: this.pagination.pageSize,
reject(); backMoneyNo: this.backMoneyNo,
return; payorCode: this.form.payorCode,
} ...this.searchForm,
let receiptVoList = this.selectedRows.map((item) => { receiptEndDate: billDate[1] ? billDate[1] + ' 23:59:59' : undefined,
return { receiptStartDate: billDate[0] ? billDate[0] + ' 00:00:00' : undefined
id: item.id, })
backAmount: item.backAmount, .then((res) => {
arrearsAmount: item.arrearsAmount, if (res.returnCode == '0000') {
}; let content = res.content || {};
}); this.pagination.total = content.total || 0;
const valid = receiptVoList.some((item) => { this.dataList =
const exist = !item.backAmount && item.backAmount !== 0 content.list.map((item) => {
return exist; item.arrearsAmountShow = item.arrearsAmount;
}); item.arrearsAmount = '';
if (valid) { return item;
this.$message.warning("存在关联账单未输入回款金额"); }) || [];
reject(); } else {
return; this.$message.error(res.returnMsg);
} }
});
},
//新建/保存回款
addNewEvt(backStatus) {
return new Promise((resolve, reject) => {
if (!this.form.payorCode) {
this.$message.warning('请选择保险公司');
reject();
return;
}
if (!this.form.backDate) {
this.$message.warning('请选择回款日期');
reject();
return;
}
if (!this.form.backAmountCny) {
this.$message.warning('请输入回款金额');
reject();
return;
}
let receiptVoList = this.selectedRows.map((item) => {
return {
id: item.id,
backAmount: item.backAmount,
arrearsAmount: item.arrearsAmount,
remark: item.remark
};
});
const valid = receiptVoList.some((item) => {
const exist = !item.backAmount && item.backAmount !== 0;
return exist;
});
if (valid) {
this.$message.warning('存在关联账单未输入回款金额');
reject();
return;
}
const formData = { const formData = {
...this.form, ...this.form,
receiptVoList, receiptVoList,
backDate: this.form.backDate backDate: this.form.backDate ? moment(this.form.backDate).format('YYYY-MM-DD HH:mm:ss') : '',
? moment(this.form.backDate).format("YYYY-MM-DD HH:mm:ss") backMoneyNo: this.backMoneyNo, //回款编号
: "", backStatus // 0暂存 1结案
backMoneyNo: this.backMoneyNo, //回款编号 };
backStatus, // 0暂存 1结案
};
// 上传附件格式转换 // 上传附件格式转换
formData.fileList = this.fileList.map((d) => { formData.fileList = this.fileList.map((d) => {
const file = { const file = {
fileName: d.name, fileName: d.name,
fileUrl: d.url, fileUrl: d.url
}; };
return file; return file;
}); });
this.$apis.SAVEBACKMONEY(formData).then((res) => { this.$apis.SAVEBACKMONEY(formData).then((res) => {
if (res.returnCode == "0000") { if (res.returnCode == '0000') {
this.backMoneyNo = res.content; this.backMoneyNo = res.content;
this.savedStatus = true; this.savedStatus = true;
this.$message.success("成功"); this.$message.success('成功');
this.selectedRowKeys = []; this.selectedRowKeys = [];
this.getData(); this.getData();
this._getNewEOBList(); this._getNewEOBList();
// this.$router.go(-1); // this.$router.go(-1);
resolve(); resolve();
} else { } else {
this.$message.error(res.returnMsg); this.$message.error(res.returnMsg);
reject(); reject();
} }
}); });
}); });
}, },
/* ======== 上传区域 ======== */ /* ======== 上传区域 ======== */
// 上传之前 // 上传之前
beforeUpload() { beforeUpload() {
const len = this.fileList.length; const len = this.fileList.length;
if (len >= 5) { if (len >= 5) {
this.$message.warning("不能超过5个文件"); this.$message.warning('不能超过5个文件');
return false; return false;
} }
return true; return true;
}, },
// 删除文件 // 删除文件
removeFile(file) { removeFile(file) {
let index; let index;
this.fileList.forEach((item, i) => { this.fileList.forEach((item, i) => {
if (item.uid == file.uid) { if (item.uid == file.uid) {
index = i; index = i;
} }
}); });
this.fileList.splice(index, 1); this.fileList.splice(index, 1);
return true; return true;
}, },
// 上传文件 // 上传文件
uploadFile(fileData) { uploadFile(fileData) {
let formData = new FormData(); let formData = new FormData();
formData.append("file", fileData.file); formData.append('file', fileData.file);
this.$apis.UPLOADIMG(formData).then((res) => { this.$apis.UPLOADIMG(formData).then((res) => {
fileData.onSuccess(); fileData.onSuccess();
let tmp = { let tmp = {
uid: Math.random() * 10000, uid: Math.random() * 10000,
name: res.original, name: res.original,
status: "done", status: 'done',
url: res.url, url: res.url
}; };
this.fileList.push(tmp); this.fileList.push(tmp);
this.$forceUpdate(); this.$forceUpdate();
}); });
}, },
//导出报表 //导出报表
exportExcel(){ exportExcel() {
let filter = { let filter = {
backMoneyNo: this.backMoneyNo, backMoneyNo: this.backMoneyNo,
payorCode: this.form.payorCode, payorCode: this.form.payorCode
} };
this.$apis.EXPORTBACKRECEIPTLIST(filter).then(res => { this.$apis.EXPORTBACKRECEIPTLIST(filter).then((res) => {
exportFile(res, '已关联账单.xls'); exportFile(res, '已关联账单.xls');
}) });
}, },
// 保险公司支持输入搜索 // 保险公司支持输入搜索
filterOption(input,option ) { filterOption(input, option) {
return option.componentOptions.children[0].text.indexOf(input) >= 0 return option.componentOptions.children[0].text.indexOf(input) >= 0;
} }
}, }
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.none-label { .none-label {
text-align: right; text-align: right;
.ant-form-item-label { .ant-form-item-label {
opacity: 0; opacity: 0;
} }
} }
.table-title { .table-title {
font-size: 15px; font-size: 15px;
margin: 6px 0; margin: 6px 0;
display: flex; text-align: right;
align-items: center;
justify-content: space-between;
} }
.table-content { .table-content {
margin-bottom: 8px; ::v-deep {
tr.hide_ {
display: none;
}
td {
padding: 5px 16px !important;
}
}
} }
.search-form { .search-form {
margin-top: 24px; .ant-form .ant-form-item {
.ant-form .ant-form-item { margin-bottom: 4px;
margin-bottom: 4px; }
}
} }
.ant-btn .icon-class { .ant-btn .icon-class {
.mg-r(10); .mg-r(10);
} }
.success.ant-btn-link { .success.ant-btn-link {
color: #4cd964; color: #4cd964;
} }
.danger.ant-btn-link { .danger.ant-btn-link {
color: #ff3b30; color: #ff3b30;
} }
.burt-container { .burt-container {
height: calc(100vh - 86px); height: calc(100vh - 86px);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
::v-deep { padding-bottom: 10px;
.ant-tabs { ::v-deep {
flex: 1; .ant-form-item {
min-height: 0; display: flex;
} }
} .ant-tabs {
flex: 1;
min-height: 0;
}
}
} }
.bill-content { .bill-content {
height: calc(100vh - 185px); overflow-y: auto;
overflow-y: auto; overflow-x: hidden;
overflow-x: hidden; padding-right: 12px;
padding-right: 12px; .pagination {
margin-top: 10px;
::v-deep .jump-page {
height: 30px;
}
}
} }
::v-deep .bill-form { ::v-deep .bill-form {
.ant-form .ant-form-item { .ant-form .ant-form-item {
margin-bottom: 4px !important; margin-bottom: 4px !important;
} }
} }
</style> </style>
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