Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

summary.vue 29KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805
  1. <template>
  2. <div class="main-contain outpatientChargesManagement">
  3. <div class="position">
  4. <bread-crumb :crumbs='crumbs'></bread-crumb>
  5. </div>
  6. <div class="app-container">
  7. <div style="display: flex;justify-content: space-between;margin-bottom:10px;">
  8. <div>
  9. <el-input size="small" style="width:150px;" v-model="keywords"
  10. class="filter-item"/>
  11. <el-button size="small" style="margin-left:10px;" class="filter-item" type="primary"
  12. @click="searchAction">
  13. 搜索
  14. </el-button>
  15. <el-select size="small" v-model="admin_user_id" placeholder="请选择"
  16. style="width:150px;margin-left:10px;" @change="changeDoctor">
  17. <el-option
  18. label="全部"
  19. value="0">
  20. </el-option>
  21. <el-option
  22. v-for="item,index in doctors"
  23. :key="index"
  24. :label="item.user_name"
  25. :value="item.admin_user_id">
  26. </el-option>
  27. </el-select>
  28. <el-date-picker size="small" v-model="start_time" prefix-icon="el-icon-date"
  29. @change="handleStartTimeChange" :editable="false" :clearable="false"
  30. style="width: 196px;margin-right:10px;" type="date" placeholder="选择开始日期"
  31. format="yyyy-MM-dd"
  32. value-format="yyyy-MM-dd"
  33. align="right"></el-date-picker>
  34. <el-date-picker size="small" v-model="end_time" prefix-icon="el-icon-date"
  35. @change="handleEndTimeChange" :editable="false" :clearable="false"
  36. style="width: 196px;margin-right:10px;" type="date" placeholder="选择结束日期"
  37. format="yyyy-MM-dd"
  38. value-format="yyyy-MM-dd"
  39. align="right"></el-date-picker>
  40. <!--<el-radio v-model="radio" label="1">明细</el-radio>-->
  41. <!--<el-radio v-model="radio" label="2">汇总</el-radio>-->
  42. </div>
  43. <div>
  44. <!-- <el-popover
  45. placement="bottom"
  46. width="210"
  47. trigger="click">
  48. <el-button size="small" ref="button_two" @click="open(1)">打印清单</el-button>
  49. <el-button size="small" ref="button_six" @click="open(2)">打印汇总</el-button>
  50. <el-button slot="reference" style="margin:0 10px;" type="primary" size="small">打印</el-button>
  51. </el-popover> -->
  52. <el-button size="small" type="primary" @click="export_detail" v-loading="loading">报表下载</el-button>
  53. </div>
  54. </div>
  55. <el-table :data="tableData" border style="width: 100%;" :row-style="{ color: '#303133' }"
  56. :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
  57. highlight-current-row>
  58. <el-table-column
  59. prop="date"
  60. label="序号"
  61. width="60"
  62. align="center"
  63. type="index"
  64. >
  65. </el-table-column>
  66. <el-table-column align="center" prop="name" label="就诊号">
  67. <template slot-scope="scope">{{ scope.row.mdtrt_id }}</template>
  68. </el-table-column>
  69. <el-table-column align="center" prop="name" label="患者名字">
  70. <template slot-scope="scope">{{ scope.row.patient.name }}</template>
  71. </el-table-column>
  72. <!--<el-table-column align="center" prop="name" label="患者类型">-->
  73. <!--<template slot-scope="scope"></template>-->
  74. <!--</el-table-column>-->
  75. <el-table-column align="center" prop="name" label="应收金额">
  76. <template slot-scope="scope">{{scope.row.medfee_sumamt}}</template>
  77. </el-table-column>
  78. <el-table-column align="center" prop="name" label="实收金额">
  79. <template slot-scope="scope">{{scope.row.reality_price}}</template>
  80. </el-table-column>
  81. <el-table-column align="center" prop="name" label="科室">
  82. <template slot-scope="scope">{{scope.row.department_name}}</template>
  83. </el-table-column>
  84. <el-table-column align="center" prop="name" label="收费日期">
  85. <template slot-scope="scope">
  86. <div v-if="scope.row.his_hospital_patient.balance_accounts_type == 2">
  87. {{getTimes(scope.row.settle_accounts_date)}}
  88. </div>
  89. <div v-if="scope.row.his_hospital_patient.balance_accounts_type != 2">{{scope.row.setl_time}}
  90. </div>
  91. </template>
  92. </el-table-column>
  93. <el-table-column align="center" prop="name" label="收费员">
  94. <template slot-scope="scope">{{ getName(scope.row.creator) }}</template>
  95. </el-table-column>
  96. <el-table-column align="center" prop="name" label="状态">
  97. <template slot-scope="scope">
  98. <div v-if="scope.row.order_status == 1">待结算</div>
  99. <div v-if="scope.row.order_status == 2">已结算</div>
  100. <div v-if="scope.row.order_status == 3">已退费</div>
  101. </template>
  102. </el-table-column>
  103. <el-table-column align="center" prop="name" label="操作">
  104. <template slot-scope="scope">
  105. <el-button size="mini" type="primary" @click="toDetail(scope.row)">详情</el-button>
  106. <el-button size="mini" type="primary" @click="toPrint(scope.row)"
  107. v-if="(scope.row.order_status == 2 && $store.getters.xt_user.org_id == 10138) || (scope.row.order_status == 2 && $store.getters.xt_user.org_id == 9504) || (scope.row.order_status == 2 && $store.getters.xt_user.org_id == 9919) || ($store.getters.xt_user.org_id == 10106) || (scope.row.order_status == 2 && $store.getters.xt_user.org_id == 4) || ($store.getters.xt_user.org_id == 9990) ">
  108. 结算单
  109. </el-button>
  110. <el-button size="mini" type="primary" @click="toRefund(scope.row)">
  111. 退费
  112. </el-button>
  113. <el-button size="mini" type="primary" @click="uploadInfo(scope.row)"
  114. v-if="scope.row.order_status == 2 && scope.row.result.id == 0">
  115. 上传结算清单
  116. </el-button>
  117. <el-button size="mini" type="primary" @click="invoicePrint(scope.row)">打印发票</el-button>
  118. <el-button size="mini" type="primary" @click="refundOne(scope.row)">
  119. 撤销出院
  120. </el-button>
  121. <!--<el-button size="mini" type="primary" @click="refundTwo(scope.row)" v-if="scope.row.his_hospital_patient.balance_accounts_type == 2">-->
  122. <!--撤销明细-->
  123. <!--</el-button>-->
  124. <el-button size="mini" type="primary" @click="refundTwo(scope.row)" v-if="scope.row.his_hospital_patient.balance_accounts_type != 2">
  125. 撤销明细
  126. </el-button>
  127. <el-button size="mini" type="primary" @click="refundThee(scope.row)">
  128. 撤销入院
  129. </el-button>
  130. </template>
  131. </el-table-column>
  132. </el-table>
  133. <el-pagination
  134. @size-change="handleSizeChange"
  135. @current-change="handleCurrentChange"
  136. :page-sizes="[10, 50, 100]"
  137. :page-size="10"
  138. background
  139. style="margin-top:20px;float: right"
  140. layout="total, sizes, prev, pager, next, jumper"
  141. :total="total"
  142. >
  143. </el-pagination>
  144. </div>
  145. <el-dialog
  146. class="centerDialog"
  147. width="1200px"
  148. title="打印"
  149. :visible.sync="statementVisible">
  150. <!--<statementPrint ref="print" :paramsObj='orderObj'></statementPrint>-->
  151. <new-statement-print ref="print" :paramsObj='orderObj'></new-statement-print>
  152. </el-dialog>
  153. <el-dialog
  154. class="centerDialog"
  155. width="900px"
  156. title="打印"
  157. :visible.sync="listVisible">
  158. <listPrint></listPrint>
  159. </el-dialog>
  160. <el-dialog
  161. class="centerDialog"
  162. width="900px"
  163. title="打印"
  164. :visible.sync="allListVisible">
  165. <allListPrint :paramsObj='paramsObj'></allListPrint>
  166. </el-dialog>
  167. <el-dialog
  168. class="centerDialog"
  169. width="1200px"
  170. title="打印"
  171. :visible.sync="statementVisible9504">
  172. <!--<statementPrint ref="print" :paramsObj='orderObj'></statementPrint>-->
  173. <!--<new-statement-print ref="print" :paramsObj='orderObj9504'></new-statement-print>-->
  174. <new-statement-print-two ref="print" :paramsObj='orderObj9504'></new-statement-print-two>
  175. </el-dialog>
  176. <el-dialog
  177. class="centerDialog"
  178. width="1200px"
  179. title="打印"
  180. :visible.sync="invoiceVisible">
  181. <invoice-print ref="print" :invoiceParams='invoiceParams'></invoice-print>
  182. </el-dialog>
  183. <!-- <el-dialog
  184. class="centerDialog"
  185. width="1200px"
  186. title="打印"
  187. :visible.sync="settlementVisible">
  188. <settlement-print ref="print" :paramsObj='orderObj'></settlement-print>
  189. </el-dialog> -->
  190. </div>
  191. </template>
  192. <script>
  193. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  194. import { getDoctorList, getExportConsumeDetailList, getHisOrderList, HopitalunRefund, Refund,Outhopitaluncheck,Inthopitaluncheck } from '@/api/his/his'
  195. import { uParseTime } from '@/utils/tools'
  196. import NewStatementPrint from './newStatementPrint'
  197. import listPrint from './listPrint'
  198. import allListPrint from './allListPrint'
  199. import NewStatementPrintTwo from './newStatementPrintTwo'
  200. import { fetchAllAdminUsers } from '@/api/doctor'
  201. import axios from 'axios'
  202. import invoicePrint from './invoicePrint'
  203. // import settlementPrint from './settlementPrint'
  204. export default {
  205. components: {
  206. NewStatementPrintTwo,
  207. NewStatementPrint,
  208. BreadCrumb,
  209. listPrint,
  210. allListPrint,
  211. invoicePrint
  212. // settlementPrint
  213. },
  214. data() {
  215. return {
  216. orderObj: {},
  217. statementVisible: false,
  218. statementVisible9504: false,
  219. orderObj9504: {},
  220. crumbs: [
  221. { path: false, name: '门诊收费' },
  222. { path: false, name: '项目消费明细汇总' }
  223. ],
  224. tableData: [],
  225. limit: 10,
  226. page: 1,
  227. keywords: '',
  228. start_time: '',
  229. end_time: '',
  230. total: '',
  231. doctors: [],
  232. admin_user_id: '',
  233. listVisible: false,
  234. allListVisible: false,
  235. adminUserOptions: [],
  236. invoiceVisible: false,
  237. paramsObj: {},
  238. invoiceParams: {},
  239. settlementVisible: false
  240. }
  241. },
  242. methods: {
  243. refundOne(row) {
  244. if(row.his_hospital_patient.balance_accounts_type == 2){
  245. var that = this
  246. this.$confirm('是否撤销出院', '撤销出院', {
  247. confirmButtonText: '确 定',
  248. cancelButtonText: '取 消',
  249. type: 'warning'
  250. }).then(() => {
  251. let params = {
  252. 'id': row.his_hospital_patient.id,
  253. 'admin_user_id': this.$store.getters.xt_user.user.id
  254. }
  255. Outhopitaluncheck(params).then(response => {
  256. if (response.data.state == 0) {
  257. this.$message.error(response.data.msg)
  258. return false
  259. } else {
  260. this.$message.success('撤销出院成功')
  261. this.changeRadioAndPatient(1)
  262. }
  263. })
  264. }).catch(() => {
  265. })
  266. }else{
  267. var that = this
  268. this.$confirm('是否撤销出院', '撤销出院', {
  269. confirmButtonText: '确 定',
  270. cancelButtonText: '取 消',
  271. type: 'warning'
  272. }).then(() => {
  273. let params = {
  274. 'id': row.his_hospital_patient.id,
  275. 'admin_user_id': this.$store.getters.xt_user.user.id
  276. }
  277. axios.get('http://127.0.0.1:9532/zh/api/outhopitaluncheck/get', {
  278. params: params
  279. })
  280. .then(function(response) {
  281. if (response.data.state == 0) {
  282. that.$message.error(response.data.msg)
  283. return false
  284. } else {
  285. if (response.data.data.failed_code == -10) {
  286. // that.$message.error(response.data.data.msg)
  287. that.$confirm(response.data.data.msg, '医保错误信息', {
  288. confirmButtonText: '确 定',
  289. type: 'warning'
  290. }).then(() => {
  291. }).catch(() => {
  292. })
  293. } else {
  294. that.$message({ message: '撤销出院成功', type: 'success', duration: 5000 })
  295. }
  296. }
  297. })
  298. .catch(function(error) {
  299. })
  300. }).catch(() => {
  301. })
  302. }
  303. }, refundThee(row) {
  304. if(row.his_hospital_patient.balance_accounts_type == 2){
  305. this.$confirm('是否撤销入院', '撤销入院', {
  306. confirmButtonText: '确 定',
  307. cancelButtonText: '取 消',
  308. type: 'warning'
  309. }).then(() => {
  310. let params = {
  311. 'id': row.his_hospital_patient.id,
  312. 'admin_user_id': this.$store.getters.xt_user.user.id
  313. }
  314. Inthopitaluncheck(params).then(response => {
  315. if (response.data.state == 0) {
  316. this.$message.error(response.data.msg)
  317. return false
  318. } else {
  319. this.$message.success('撤销入院成功')
  320. }
  321. })
  322. }).catch(() => {
  323. })
  324. }else {
  325. var that = this
  326. this.$confirm('是否撤销入院', '撤销入院', {
  327. confirmButtonText: '确 定',
  328. cancelButtonText: '取 消',
  329. type: 'warning'
  330. }).then(() => {
  331. let params = {
  332. 'id': row.his_hospital_patient.id,
  333. 'admin_user_id': this.$store.getters.xt_user.user.id
  334. }
  335. axios.get('http://127.0.0.1:9532/zh/api/inthopitaluncheck/get', {
  336. params: params
  337. })
  338. .then(function(response) {
  339. if (response.data.state == 0) {
  340. that.$message.error(response.data.msg)
  341. return false
  342. } else {
  343. if (response.data.data.failed_code == -10) {
  344. // that.$message.error(response.data.data.msg)
  345. that.$confirm(response.data.data.msg, '医保错误信息', {
  346. confirmButtonText: '确 定',
  347. type: 'warning'
  348. }).then(() => {
  349. }).catch(() => {
  350. })
  351. } else {
  352. that.changeRadioAndPatient(1)
  353. that.$message({ message: '撤销入院成功', type: 'success', duration: 5000 })
  354. }
  355. }
  356. })
  357. .catch(function(error) {
  358. })
  359. }).catch(() => {
  360. })
  361. }
  362. }, refundTwo(row) {
  363. var that = this
  364. this.$confirm('是否撤销明细', '撤销明细', {
  365. confirmButtonText: '确 定',
  366. cancelButtonText: '取 消',
  367. type: 'warning'
  368. }).then(() => {
  369. let params = {
  370. 'order_id': row.id,
  371. 'admin_user_id': this.$store.getters.xt_user.user.id
  372. }
  373. axios.get('http://127.0.0.1:9532/zh/api/refunddetail', {
  374. params: params
  375. })
  376. .then(function(response) {
  377. if (response.data.state == 0) {
  378. that.$message.error(response.data.msg)
  379. that.loadingtwo = false
  380. return false
  381. } else {
  382. if (response.data.data.failed_code == -10) {
  383. // that.$message.error(response.data.data.msg)
  384. that.$confirm(response.data.data.msg, '医保错误信息', {
  385. confirmButtonText: '确 定',
  386. type: 'warning'
  387. }).then(() => {
  388. }).catch(() => {
  389. })
  390. } else {
  391. that.$message.success('撤销明细成功')
  392. that.changeRadioAndPatient(1)
  393. }
  394. }
  395. })
  396. .catch(function(error) {
  397. })
  398. }).catch(() => {
  399. })
  400. },
  401. uploadInfo(row) {
  402. var that = this
  403. axios.get('http://127.0.0.1:9532/api/settlelist/get', {
  404. params: {
  405. order_id: row.id,
  406. admin_user_id: this.$store.getters.xt_user.user.id
  407. }
  408. }).then(function(response) {
  409. if (response.data.state == 0) {
  410. that.$message.error(response.data.msg)
  411. return false
  412. } else {
  413. if (response.data.data.failed_code == -10) {
  414. // that.$message.error(response.data.data.msg)
  415. that.$confirm(response.data.data.msg, '医保错误信息', {
  416. confirmButtonText: '确 定',
  417. type: 'warning'
  418. }).then(() => {
  419. }).catch(() => {
  420. })
  421. } else {
  422. that.$message.success('上传成功')
  423. row.result.id = response.data.data.result.id
  424. }
  425. }
  426. }).catch(function(error) {
  427. })
  428. },
  429. fetchAllAdminUsers() {
  430. fetchAllAdminUsers().then(response => {
  431. if (response.data.state == 1) {
  432. this.adminUserOptions = response.data.data.users
  433. }
  434. })
  435. },
  436. getName(admin_user_id) {
  437. for (let i = 0; i < this.adminUserOptions.length; i++) {
  438. if (this.adminUserOptions[i].id == admin_user_id) {
  439. return this.adminUserOptions[i].name
  440. }
  441. }
  442. }, toRefund(row) {
  443. console.log("~~~~~~~")
  444. if (row.his_hospital_patient.balance_accounts_type != 2) {
  445. var that = this
  446. this.$confirm('是否退费', '退费', {
  447. confirmButtonText: '确 定',
  448. cancelButtonText: '取 消',
  449. type: 'warning'
  450. }).then(() => {
  451. let params = {
  452. 'order_id': row.id,
  453. 'admin_user_id': this.$store.getters.xt_user.user.id
  454. }
  455. axios.get('http://127.0.0.1:9532/zh/api/refund', {
  456. params: params
  457. })
  458. .then(function(response) {
  459. if (response.data.state == 0) {
  460. that.$message.error(response.data.msg)
  461. return false
  462. } else {
  463. if (response.data.data.failed_code == -10) {
  464. // that.$message.error(response.data.data.msg)
  465. that.$confirm(response.data.data.msg, '医保错误信息', {
  466. confirmButtonText: '确 定',
  467. type: 'warning'
  468. }).then(() => {
  469. }).catch(() => {
  470. })
  471. } else {
  472. that.$message({ message: '退费成功', type: 'success', duration: 5000 })
  473. that.getHisOrderList()
  474. }
  475. }
  476. })
  477. .catch(function(error) {
  478. })
  479. }).catch(() => {
  480. })
  481. } else {
  482. this.$confirm('是否退费', '退费', {
  483. confirmButtonText: '确 定',
  484. cancelButtonText: '取 消',
  485. type: 'warning'
  486. }).then(() => {
  487. let params = {
  488. 'order_id': row.id,
  489. }
  490. HopitalunRefund(params).then(response => {
  491. if (response.data.state == 0) {
  492. this.$message.error(response.data.msg)
  493. return false
  494. } else {
  495. this.$message({ message: '退费成功', type: 'success' })
  496. this.getHisOrderList()
  497. }
  498. })
  499. }).catch(() => {
  500. })
  501. }
  502. },
  503. toPrint(row) {
  504. if (this.$store.getters.xt_user.org_id == 9504 || this.$store.getters.xt_user.org_id == 10028 || (scope.row.order_status == 2 && $store.getters.xt_user.org_id == 10138)) {
  505. this.statementVisible9504 = true
  506. let obj = {
  507. order_id: row.id,
  508. patient_id: row.patient_id,
  509. record_time: this.getTimes(row.settle_accounts_date),
  510. admin_user_id: this.$store.getters.xt_user.user.id
  511. }
  512. this.orderObj9504 = obj
  513. } else {
  514. this.statementVisible = true
  515. let obj = {
  516. order_id: row.id,
  517. settle_type: row.settle_type,
  518. start_time: row.settle_start_time,
  519. end_time: row.settle_end_time
  520. }
  521. this.orderObj = obj
  522. }
  523. },
  524. settlementPrint() {
  525. this.settlementVisible = true
  526. },
  527. export_detail() {
  528. let params = {
  529. start_time: this.start_time,
  530. end_time: this.end_time,
  531. p_type: 1
  532. }
  533. getExportConsumeDetailList(params).then(response => {
  534. if (response.data.state == 0) {
  535. this.$message.error(response.data.msg)
  536. return false
  537. } else {
  538. let list = []
  539. for (let i = 0; i < response.data.data.order.length; i++) {
  540. let order = response.data.data.order[i]
  541. let number = ''
  542. let name = ''
  543. let department = ''
  544. let doctor_name = ''
  545. let balance_accounts = ''
  546. let order_status = ''
  547. if (order.his_patient != null && order.his_patient.number.length > 0) {
  548. number = order.his_patient.number
  549. }
  550. if (order.his_patient != null) {
  551. if (order.his_patient.balance_accounts_type == 1) {
  552. balance_accounts = '自费'
  553. }
  554. if (order.his_patient.balance_accounts_type == 2) {
  555. balance_accounts = '医保'
  556. }
  557. }
  558. if (order.patient != null && order.patient.name.length > 0) {
  559. name = order.patient.name
  560. }
  561. if (order.p_info != null && order.p_info.department != null && order.p_info.department.name.length > 0) {
  562. department = order.p_info.department.name
  563. }
  564. if (order.p_info != null && order.p_info.doctor.length > 0) {
  565. doctor_name = order.p_info.doctor
  566. }
  567. if (order.creator != null) {
  568. charge_name = this.getName(order.creator)
  569. }
  570. if (order.order_status == 1) {
  571. order_status = '待结算'
  572. }
  573. if (order.order_status == 2) {
  574. order_status = '已结算'
  575. }
  576. if (order.order_status == 3) {
  577. order_status = '已退费'
  578. }
  579. let obj = {
  580. '就诊号': number,
  581. '患者姓名': name,
  582. '应收金额': order.medfee_sumamt,
  583. '实收金额': order.psn_cash_pay,
  584. '医保统筹金额': order.fund_pay_sumamt,
  585. '大额基金金额': order.hifob_pay,
  586. '大病基金金额': order.hifmi_pay,
  587. '补充保险基金金额': order.hifes_pay,
  588. '医疗救助基金金额': order.maf_pay,
  589. '公务员基金': order.cvlserv_pay,
  590. '个人支付基金': order.psn_cash_pay,
  591. '个人账户支付金额': order.acct_pay,
  592. '科室': department,
  593. '医生姓名': doctor_name,
  594. '收费类别': balance_accounts,
  595. '收费者姓名': charge_name,
  596. '总金额': order.medfee_sumamt,
  597. '现金支付': '',
  598. '账户支付': '',
  599. '支付宝支付': '',
  600. '微信支付': '',
  601. '其他支付': '',
  602. '收费时间': order.setl_time,
  603. '收费状态': order_status,
  604. '退费日期': ''
  605. }
  606. list.push(obj)
  607. }
  608. import('@/vendor/Export2Excel').then(excel => {
  609. const tHeader = ['就诊号', '患者姓名', '应收金额', '实收金额', '医保统筹金额', '大额基金金额', '大病基金金额', '补充保险基金金额', '医疗救助基金金额', '公务员基金', '个人支付基金', '个人账户支付金额', '科室', '医生姓名', '收费类别', '收费者姓名', '总金额', '现金支付', '账户支付', '支付宝支付', '微信支付', '其他支付', '收费时间', '收费状态', '退费日期']
  610. const filterVal = ['就诊号', '患者姓名', '应收金额', '实收金额', '医保统筹金额', '大额基金金额', '大病基金金额', '补充保险基金金额', '医疗救助基金金额', '公务员基金', '个人支付基金', '个人账户支付金额', '科室', '医生姓名', '收费类别', '收费者姓名', '总金额', '现金支付', '账户支付', '支付宝支付', '微信支付', '其他支付', '收费时间', '收费状态', '退费日期']
  611. const data = this.formatJson(filterVal, list)
  612. excel.export_json_to_excel({
  613. header: tHeader,
  614. data,
  615. filename: '消费明细'
  616. })
  617. })
  618. }
  619. })
  620. }, formatJson(filterVal, jsonData) {
  621. return jsonData.map(v => filterVal.map(j => v[j]))
  622. },
  623. changeDoctor() {
  624. this.page = 1
  625. this.keywords = ''
  626. this.getHisOrderList()
  627. },
  628. handleSizeChange(limit) {
  629. this.limit = limit
  630. this.getHisOrderList()
  631. }, handleCurrentChange(page) {
  632. this.page = page
  633. this.getHisOrderList()
  634. },
  635. handleStartTimeChange() {
  636. this.page = 1
  637. this.keywords = ''
  638. this.getHisOrderList()
  639. }, handleEndTimeChange() {
  640. this.page = 1
  641. this.keywords = ''
  642. this.getHisOrderList()
  643. },
  644. searchAction() {
  645. this.page = 1
  646. this.getHisOrderList()
  647. },
  648. getTimes(time) {
  649. return uParseTime(time, '{y}-{m}-{d}')
  650. },
  651. toDetail(row) {
  652. this.$router.push('/outpatientCharges/summaryDetail?patient_id=' + row.patient.id + '&number=' + row.number + '&id=' + row.id)
  653. }, getTime(value, temp) {
  654. if (value != undefined) {
  655. return uParseTime(value, temp)
  656. }
  657. return ''
  658. }, getHisOrderList() {
  659. let params = {
  660. page: this.page,
  661. limit: this.limit,
  662. keywords: this.keywords,
  663. start_time: this.start_time,
  664. end_time: this.end_time,
  665. type: this.admin_user_id,
  666. p_type: 1
  667. }
  668. getHisOrderList(params).then(response => {
  669. if (response.data.state == 0) {
  670. this.$message.error(response.data.msg)
  671. return false
  672. } else {
  673. this.tableData = response.data.data.order
  674. this.total = response.data.data.total
  675. }
  676. })
  677. }, getDoctorList() {
  678. getDoctorList().then(response => {
  679. if (response.data.state == 0) {
  680. this.$message.error(response.data.msg)
  681. return false
  682. } else {
  683. this.doctors = response.data.data.doctors
  684. }
  685. })
  686. },
  687. open(index) {
  688. if (index == 1) {
  689. this.listVisible = true
  690. } else if (index == 2) {
  691. this.allListVisible = true
  692. }
  693. },
  694. invoicePrint(obj) {
  695. let paramsObj = {
  696. order_id: obj.id,
  697. patient_id: obj.patient_id,
  698. name: obj.patient.name,
  699. age: obj.age,
  700. gend: obj.gend,
  701. setl_time: obj.setl_time
  702. }
  703. this.invoiceParams = paramsObj
  704. this.invoiceVisible = true
  705. }
  706. }, created() {
  707. this.fetchAllAdminUsers()
  708. this.getDoctorList()
  709. this.getHisOrderList()
  710. }
  711. }
  712. </script>