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

summary.vue 30KB

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