123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- <template>
- <div class="main-contain outpatientChargesManagement">
- <div class="position">
- <bread-crumb :crumbs='crumbs'></bread-crumb>
- </div>
- <div class="app-container">
- <div style="display: flex;justify-content: space-between;margin-bottom:10px;">
- <div>
- <el-input size="small" style="width:150px;" v-model="keywords"
- class="filter-item"/>
- <el-button size="small" style="margin-left:10px;" class="filter-item" type="primary" @click="searchAction">
- 搜索
- </el-button>
- <el-select size="small" v-model="admin_user_id" placeholder="请选择" style="width:150px;margin-left:10px;" @change="changeDoctor">
- <el-option
- label="全部"
- value="0">
- </el-option>
- <el-option
- v-for="item,index in doctors"
- :key="index"
- :label="item.user_name"
- :value="item.admin_user_id">
- </el-option>
- </el-select>
- <el-date-picker size="small" v-model="start_time" prefix-icon="el-icon-date"
- @change="handleStartTimeChange" :editable="false" :clearable="false"
- style="width: 196px;margin-right:10px;" type="date" placeholder="选择开始日期"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- align="right"></el-date-picker>
-
- <el-date-picker size="small" v-model="end_time" prefix-icon="el-icon-date"
- @change="handleEndTimeChange" :editable="false" :clearable="false"
- style="width: 196px;margin-right:10px;" type="date" placeholder="选择结束日期"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- align="right"></el-date-picker>
- <!--<el-radio v-model="radio" label="1">明细</el-radio>-->
- <!--<el-radio v-model="radio" label="2">汇总</el-radio>-->
- </div>
- <el-button size="small" type="primary" @click="export_detail">报表下载</el-button>
- </div>
- <el-table :data="tableData" border style="width: 100%;" :row-style="{ color: '#303133' }"
- :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
- <el-table-column
- prop="date"
- label="序号"
- width="60"
- align="center"
- type="index"
- >
- </el-table-column>
- <el-table-column align="center" prop="name" label="就诊号">
- <template slot-scope="scope">{{ scope.row.his_patient.number }}</template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="患者名字">
- <template slot-scope="scope">{{ scope.row.patient.name }}</template>
- </el-table-column>
- <!--<el-table-column align="center" prop="name" label="患者类型">-->
- <!--<template slot-scope="scope"></template>-->
- <!--</el-table-column>-->
- <el-table-column align="center" prop="name" label="应收金额">
- <template slot-scope="scope">{{scope.row.medfee_sumamt}}</template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="实收金额">
- <template slot-scope="scope">{{scope.row.reality_price}}</template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="科室">
- <template slot-scope="scope">{{scope.row.p_info.department.name}}</template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="收费日期">
- <template slot-scope="scope"> {{getTimes(scope.row.settle_accounts_date)}}</template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="收费员">
- <template slot-scope="scope">{{ scope.row.p_info.doctor }}</template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="状态">
- <template slot-scope="scope">
- <div v-if="scope.row.order_status == 1">待结算</div>
- <div v-if="scope.row.order_status == 2">已结算</div>
- <div v-if="scope.row.order_status == 3">已退费</div>
- </template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="操作">
- <template slot-scope="scope">
- <el-button size="mini" type="primary" @click="toDetail(scope.row)">详情</el-button>
- </template>
- </el-table-column>
- </el-table>
- <el-pagination
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- :page-sizes="[10, 50, 100]"
- :page-size="10"
- background
- style="margin-top:20px;float: right"
- layout="total, sizes, prev, pager, next, jumper"
- :total="total"
-
- >
- </el-pagination>
- </div>
-
-
- </div>
- </template>
-
-
- <script>
- import BreadCrumb from '@/xt_pages/components/bread-crumb'
- import { getHisOrderList,getDoctorList,getExportConsumeDetailList } from '@/api/his/his'
- import { uParseTime } from '@/utils/tools'
-
- export default {
- components: {
- BreadCrumb
- },
- data() {
- return {
- crumbs: [
- { path: false, name: '门诊收费' },
- { path: false, name: '项目消费明细汇总' }
- ],
- tableData: [],
- limit:10,
- page:1,
- keywords:"",
- start_time:"",
- end_time:"",
- total:"",
- doctors:[],
- admin_user_id:"",
-
- }
- },
- methods: {
- export_detail(){
- let params= {
- start_time:this.start_time,
- end_time: this.end_time,
- }
- getExportConsumeDetailList(params).then(response => {
- if (response.data.state == 0) {
- this.$message.error(response.data.msg)
- return false
- } else {
-
- let list = []
- for (let i =0; i < response.data.data.order.length; i++){
- let order = response.data.data.order[i]
- let number = ""
- let name = ""
- let department = ""
- let doctor_name = ""
- let balance_accounts = ""
-
- let order_status = ""
-
-
-
- if(order.his_patient != null && order.his_patient.number.length > 0){
- number = order.his_patient.number
-
- }
-
- if(order.his_patient != null ){
- if(order.his_patient.balance_accounts_type == 1){
- balance_accounts = "自费"
- }
-
- if(order.his_patient.balance_accounts_type == 2){
- balance_accounts = "医保"
- }
- }
-
- if(order.patient != null && order.patient.name.length > 0){
- name = order.patient.name
-
- }
-
- if(order.p_info != null && order.p_info.department != null && order.p_info.department.name.length > 0){
- department = order.p_info.department.name
-
- }
-
- if(order.p_info != null && order.p_info.doctor.length > 0){
- doctor_name = order.p_info.doctor
- }
-
- if(order.order_status == 1){
- order_status = "待结算"
- }
-
- if(order.order_status == 2){
- order_status = "已结算"
- }
-
- if(order.order_status == 3){
- order_status = "已退费"
- }
-
-
- let obj = {
- "就诊号":number,
- "患者姓名":name,
- "应收金额":order.medfee_sumamt,
- "实收金额":order.medfee_sumamt,
- "科室":department,
- "医生姓名":doctor_name,
- "收费类别":balance_accounts,
- "收费者姓名":doctor_name,
- "总金额":order.medfee_sumamt,
- "现金支付":"",
- "账户支付":"",
- "支付宝支付":"",
- "微信支付":"",
- "其他支付":"",
- "收费日期":"",
- "收费状态":order_status,
- "退费日期":"",
- }
- list.push(obj)
- }
- import('@/vendor/Export2Excel').then(excel => {
- const tHeader = ['就诊号', '患者姓名', '应收金额', '实收金额', '科室',"医生姓名","收费类别","收费者姓名","总金额","现金支付","账户支付","支付宝支付","微信支付","其他支付","收费日期","收费状态","退费日期"]
- const filterVal = ['就诊号', '患者姓名', '应收金额', '实收金额', '科室',"医生姓名","收费类别","收费者姓名","总金额","现金支付","账户支付","支付宝支付","微信支付","其他支付","收费日期","收费状态","退费日期"]
- const data = this.formatJson(filterVal, list)
- excel.export_json_to_excel({
- header: tHeader,
- data,
- filename: "消费明细"
- })
- })
-
- }
- })
-
- }, formatJson(filterVal, jsonData) {
- return jsonData.map(v => filterVal.map(j => v[j]))
- },
- changeDoctor(){
- this.page = 1
- this.keywords=""
- this.getHisOrderList()
- },
- handleSizeChange(limit){
- this.limit = limit;
- this.getHisOrderList()
-
- },handleCurrentChange(page){
- this.page = page;
- this.getHisOrderList()
-
-
- },
- handleStartTimeChange(){
- this.page = 1
- this.keywords=""
- this.getHisOrderList()
- },handleEndTimeChange(){
- this.page = 1
- this.keywords=""
- this.getHisOrderList()
- },
- searchAction(){
- this.page = 1
- this.getHisOrderList()
-
-
- },
- getTimes(time) {
- return uParseTime(time, "{y}-{m}-{d}");
- },
- toDetail(row) {
- this.$router.push('/outpatientCharges/summaryDetail?patient_id='+row.patient.id+"&number="+row.number)
- }, getTime(value, temp) {
- if (value != undefined) {
- return uParseTime(value, temp)
- }
- return ''
- },getHisOrderList(){
- let params= {
- page : this.page,
- limit: this.limit,
- keywords:this.keywords,
- start_time:this.start_time,
- end_time: this.end_time,
- type: this.admin_user_id
- }
- getHisOrderList(params).then(response => {
- if (response.data.state == 0) {
- this.$message.error(response.data.msg)
- return false
- } else {
- this.tableData = response.data.data.order
- this.total = response.data.data.total
- }
- })
-
- },getDoctorList(){
- getDoctorList().then(response => {
- if (response.data.state == 0) {
- this.$message.error(response.data.msg)
- return false
- } else {
- this.doctors = response.data.data.doctors
- }
- })
-
-
- }
- }, created() {
- this.getDoctorList()
- this.getHisOrderList()
-
-
- }
- }
- </script>
|