summary.vue 31KB

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