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

printTwo.vue 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. <template>
  2. <div>
  3. <div v-if="paramsObj.balance_accounts_type != 2" id='prescription-print' class="prescription-print" style="position: relative;">
  4. <img style="width:100%;height:80px" src="../../../assets/img/bailinTop.jpg" alt="">
  5. <div class="printTitle" style="position: absolute;left: 40%;top: 50px;">门诊收费清单</div>
  6. <div style="display:flex;">
  7. <div>单据号:<span style="display:inline-block;width:200px;">{{info.order_number ? info.order_number : ''}}</span></div>
  8. <div>透析号:<span style="display:inline-block;width:200px;">{{info.dialysis_no ? info.dialysis_no : ''}}</span></div>
  9. </div>
  10. <div style="display:flex;justify-content: space-between;">
  11. <div style="display:flex;">
  12. <div>姓名:<span style="display:inline-block;width:50px;">{{info.patient_name ? info.patient_name : ''}}</span></div>
  13. <div>性别:<span style="display:inline-block;width:30px;">{{info.patient_info.transBody.aac004 == '1' ? '男' : '女'}}</span></div>
  14. <div>年龄:<span style="display:inline-block;width:50px;">{{info.patient_info.transBody.bae093 ? info.patient_info.transBody.bae093 : ''}}岁</span></div>
  15. <div>费别:<span style="display:inline-block;width:80px;">{{info.patient_info.transBody.outputlist1 ? getName(info.patient_info.transBody.outputlist1) : ''}}</span>
  16. </div>
  17. <div>电脑号:<span style="display:inline-block;width:80px;">{{info.patient_info.transBody.aac999 ? info.patient_info.transBody.aac999 : ''}}</span></div>
  18. <div>收费日期:<span style="display:inline-block;width:100px;">{{info.record_date ? info.record_date : ''}}</span></div>
  19. </div>
  20. <div style="float:right">金额单位:元</div>
  21. </div>
  22. <div style="min-height: 300px;">
  23. <table border='1' style="width:100%;" cellspacing="0">
  24. <tr>
  25. <td width="70">类别</td>
  26. <td>项目</td>
  27. <td min-width="180" style="min-width:60px;">规格</td>
  28. <td width="40">单位</td>
  29. <td width="40">数量</td>
  30. <td width="60">单价</td>
  31. <td width="70">总额</td>
  32. <td width="130">小计</td>
  33. </tr>
  34. <div v-for="(item,i) in info.new_detail_list" :key="i" style="width:100%;display: table-row-group;">
  35. <tr v-for="(subItem,index) in item.details" :key="index">
  36. <td>{{ getItemName(subItem.aka111) }}</td>
  37. <td>{{subItem.ake006}}</td>
  38. <td>{{subItem.aka074}}</td>
  39. <td>{{subItem.aka067}}</td>
  40. <td>{{subItem.akc226}}</td>
  41. <td>{{subItem.akc225}}</td>
  42. <td>{{ subItem.akc264}}</td>
  43. <td :rowspan="item.details.length" v-if="index == 0" style="vertical-align: middle;text-align: center;">{{ item.total.toFixed(2) }}</td>
  44. </tr>
  45. </div>
  46. <tr>
  47. <td colspan="7">
  48. <div style="display:flex;flez-wrap:wrap;font-size:16px;">
  49. <div style="width:33%;" v-for="(item,index) in info.transBody.outputlist2" :key="index">{{getValue(item)}}</div>
  50. </div>
  51. </td>
  52. <td style="font-size:16px;">合计: {{info.transBody.akc264?info.transBody.akc264:0}}元</td>
  53. </tr>
  54. <tr>
  55. <td colspan="7">
  56. <div style="display:flex;flez-wrap:wrap;margin-bottom:10px;font-size:16px;">
  57. <div style="width:33%;">医疗费总额:{{info.transBody.akc264?info.transBody.akc264:0}}元</div>
  58. <div style="width:33%;">基金支付金额:{{info.transBody.akb068?info.transBody.akb068:0}}元</div>
  59. <div style="width:33%;">个人账户支付金额:{{info.transBody.akb066?info.transBody.akb066:0}}元</div>
  60. </div>
  61. <div style="display:flex;flez-wrap:wrap;font-size:16px;">
  62. <div style="width:33%;">个人支付金额:{{info.transBody.akb067?info.transBody.akb067:0}}元</div>
  63. <div style="width:33%;">个人账户金额:{{info.after_money}}元</div>
  64. </div>
  65. </td>
  66. <td style="font-size:16px;">合计:{{info.transBody.akc264?info.transBody.akc264:0}}元</td>
  67. </tr>
  68. </table>
  69. </div>
  70. <div style="float:right;margin:10px 0;display:flex;">
  71. <div>操作人:<span style="width:100px;display:inline-block;">{{info.doctor_name}}</span></div>
  72. <div>操作日期:<span style="width:100px;display:inline-block;">{{info.record_date}}</span></div>
  73. </div>
  74. <img style="width:100%;" src="../../../assets/img/bailinBottom.jpg" alt="">
  75. </div>
  76. <div v-else id='prescription-print' class="prescription-print" style="position: relative;">
  77. <img style="width:100%;height:80px" src="../../../assets/img/bailinTop.jpg" alt="">
  78. <div class="printTitle" style="position: absolute;left: 40%;top: 50px;">门诊收费清单</div>
  79. <div style="display:flex;">
  80. <div>单据号:<span style="display:inline-block;width:200px;">{{balanceAccounts.his.number ? balanceAccounts.his.number : ''}}</span></div>
  81. <div>透析号:<span style="display:inline-block;width:200px;">{{balanceAccounts.patient ? balanceAccounts.patient.dialysis_no : ''}}</span></div>
  82. </div>
  83. <div style="display:flex;justify-content: space-between;">
  84. <div style="display:flex;">
  85. <div>姓名:<span style="display:inline-block;width:50px;">{{balanceAccounts.patient ? balanceAccounts.patient.name : ''}}</span></div>
  86. <div>性别:<span style="display:inline-block;width:30px;">{{balanceAccounts.patient.gender == '1' ? '男' : '女'}}</span></div>
  87. <div>年龄:<span style="display:inline-block;width:50px;">{{balanceAccounts.patient ? balanceAccounts.patient.age : ''}}岁</span></div>
  88. <div>费别:<span style="display:inline-block;width:80px;">自费</span>
  89. </div>
  90. <div>电脑号:<span style="display:inline-block;width:80px;"></span></div>
  91. <div>收费日期:<span style="display:inline-block;width:100px;">{{getTime(new Date(),"{y}-{m}-{d}")?getTime(new Date(),"{y}-{m}-{d}"):""}}</span></div>
  92. </div>
  93. <div style="float:right">金额单位:元</div>
  94. </div>
  95. <div style="min-height: 300px;">
  96. <table border='1' style="width:100%;" cellspacing="0">
  97. <tr>
  98. <td width="70">类别</td>
  99. <td>项目</td>
  100. <td width="180">规格</td>
  101. <td width="50">单位</td>
  102. <td width="50">数量</td>
  103. <td width="60">单价</td>
  104. <td width="70">总额</td>
  105. <td width="130">小计</td>
  106. </tr>
  107. <div v-for="(item,i) in balanceAccounts.new_detail_list" :key="i" style="width:100%;display: table-row-group;">
  108. <tr v-for="(subItem,index) in item.details" :key="index">
  109. <td>
  110. <span v-if="item.type == 1">药品费</span>
  111. <span v-if="item.type == 2">治疗费</span>
  112. <span v-if="item.type == 3">耗材费</span>
  113. </td>
  114. <td>
  115. <span v-if="item.type == 1">{{ subItem.advice.advice_name }}</span>
  116. <span v-if="item.type == 2">{{ subItem.project.project.project_name }}</span>
  117. <span v-if="item.type == 3">{{ subItem.project.good_info.good_name }}</span>
  118. </td>
  119. <td>
  120. <span v-if="item.type == 1"><span v-if="subItem.advice.drug.min_unit != subItem.advice.drug.dose_unit">{{subItem.advice.drug.dose}}{{subItem.advice.drug.dose_unit}}&nbsp;* &nbsp;</span>{{subItem.advice.drug.min_number}}{{subItem.advice.drug.min_unit}}/{{subItem.advice.drug.max_unit}}</span>
  121. <span v-if="item.type == 2"></span>
  122. <span v-if="item.type == 3">{{ subItem.project.good_info.specification_name }}</span>
  123. </td>
  124. <td>
  125. <span v-if="item.type == 1">{{ subItem.advice.drug.max_unit }}</span>
  126. <span v-if="item.type == 2">{{ subItem.project.unit }}</span>
  127. <span v-if="item.type == 3">{{ subItem.project.unit }}</span>
  128. </td>
  129. <td>
  130. <span v-if="item.type == 1">{{ subItem.advice.prescribing_number }}</span>
  131. <span v-if="item.type == 2">{{ subItem.project.count }}</span>
  132. <span v-if="item.type == 3">{{ subItem.project.count }}</span>
  133. </td>
  134. <td>
  135. <span v-if="item.type == 1">{{ subItem.pric }}</span>
  136. <span v-if="item.type == 2">{{ subItem.pric }}</span>
  137. <span v-if="item.type == 3">{{ subItem.pric }}</span>
  138. </td>
  139. <td>
  140. <span v-if="item.type == 1">{{ subItem.advice.prescribing_number * subItem.pric }}</span>
  141. <span v-if="item.type == 2">{{ subItem.project.count * subItem.pric }}</span>
  142. <span v-if="item.type == 3">{{ subItem.project.count * subItem.pric }}</span>
  143. </td>
  144. <td :rowspan="item.details.length" v-if="index == 0" style="vertical-align: middle;text-align: center;">{{ item.total.toFixed(2) }}</td>
  145. </tr>
  146. </div>
  147. <tr>
  148. <td colspan="7">
  149. <div style="display:flex;flez-wrap:wrap;">
  150. <div style="width:33%;" v-for="(item,index) in balanceAccounts.new_detail_list" :key="index">
  151. <span v-if="item.type == 1">药品费: {{ item.total.toFixed(2) }}</span>
  152. <span v-if="item.type == 2">治疗费: {{ item.total.toFixed(2) }}</span>
  153. <span v-if="item.type == 3">耗材费: {{ item.total.toFixed(2) }}</span>
  154. </div>
  155. </div>
  156. </td>
  157. <td>合计: {{balanceAccounts.order.medfee_sumamt?balanceAccounts.order.medfee_sumamt:0}}元</td>
  158. </tr>
  159. <tr>
  160. <td colspan="7">
  161. <div style="display:flex;flez-wrap:wrap;">
  162. <div style="width:33%;">医疗费总额:{{balanceAccounts.order.medfee_sumamt?balanceAccounts.order.medfee_sumamt:0}}元</div>
  163. <div style="width:33%;">基金支付金额:0元</div>
  164. <div style="width:33%;">个人账户支付金额:0元</div>
  165. </div>
  166. <div style="display:flex;flez-wrap:wrap;">
  167. <div style="width:33%;">个人支付金额:{{balanceAccounts.order.medfee_sumamt?balanceAccounts.order.medfee_sumamt:0}}元</div>
  168. <div style="width:33%;">个人账户金额:0元</div>
  169. </div>
  170. </td>
  171. <td>合计:{{balanceAccounts.order.medfee_sumamt?balanceAccounts.order.medfee_sumamt:0}}元</td>
  172. </tr>
  173. </table>
  174. </div>
  175. <div style="float:right;margin:10px 0;display:flex;">
  176. <div>操作人:<span style="width:100px;display:inline-block;">{{balanceAccounts.current_admin.user_name}}</span></div>
  177. <div>操作日期:<span style="width:100px;display:inline-block;">{{getTime(new Date(),"{y}-{m}-{d}")?getTime(new Date(),"{y}-{m}-{d}"):""}}</span></div>
  178. </div>
  179. <img style="width:100%;" src="../../../assets/img/bailinBottom.jpg" alt="">
  180. </div>
  181. </div>
  182. </template>
  183. <script>
  184. import axios from 'axios'
  185. import { getChargePrint } from '@/api/project/project'
  186. import { uParseTime } from '@/utils/tools'
  187. export default {
  188. data() {
  189. return {
  190. list: {},
  191. prescription: [],
  192. patient: {},
  193. orgname: '',
  194. result: {},
  195. org_code: '',
  196. patient_name: '',
  197. doctor_code: '',
  198. doctor_name: '',
  199. name_arr: [],
  200. spec_arr: [],
  201. count_arr: [],
  202. price_arr: [],
  203. total_arr: [],
  204. }
  205. },
  206. props: {
  207. paramsObj: Object,
  208. info: Object,
  209. balanceAccounts:Object
  210. },
  211. methods: {
  212. getName(list) {
  213. let new_list = []
  214. for (let i = 0; i < list.length; i++) {
  215. if (list[i].aac031 == '1') {
  216. new_list.push(list[i])
  217. }
  218. }
  219. switch (new_list[0].bcc334) {
  220. case "A31001":
  221. return "深圳医保1档"
  222. break
  223. case "A31002":
  224. return "深圳医保2档"
  225. break
  226. case "A31003":
  227. return "深圳医保3档"
  228. break
  229. case "A31004":
  230. return "二档(少儿)"
  231. break
  232. case "A31005":
  233. return "学生二档"
  234. break
  235. case "A31006":
  236. return "大学生二档"
  237. break
  238. case "A32001":
  239. return "在职公务员"
  240. break
  241. case "A32002":
  242. return "在职驻深公务员"
  243. break
  244. case "A39301":
  245. return "家属统筹医疗"
  246. break
  247. case "A41001":
  248. return "工伤在职"
  249. break
  250. case "A51001":
  251. return "生育在职"
  252. break
  253. case "A52001":
  254. return "生育医疗一档"
  255. break
  256. case "A52002":
  257. return "生育医疗一档"
  258. break
  259. case "C31001":
  260. return "一档医疗退休"
  261. break
  262. case "C31002":
  263. return "二档医疗退休"
  264. break
  265. }
  266. },
  267. getValue(item) {
  268. return this.getItemName(item.aka111) + ': ' + item.bka058 + '元'
  269. },
  270. getItemName(number) {
  271. switch (number) {
  272. case '01':
  273. return '床位费'
  274. break
  275. case '02':
  276. return '西药费'
  277. break
  278. case '03':
  279. return '中药费'
  280. break
  281. case '04':
  282. return '中成药费'
  283. break
  284. case '05':
  285. return '中草药费'
  286. break
  287. case '06':
  288. return '检查费'
  289. break
  290. case '07':
  291. return '治疗费'
  292. break
  293. case '08':
  294. return '放射费'
  295. break
  296. case '09':
  297. return '手术费'
  298. break
  299. case '10':
  300. return '化验费'
  301. break
  302. case '11':
  303. return '输血费'
  304. break
  305. case '12':
  306. return '输氧费'
  307. break
  308. case '13':
  309. return '其它费'
  310. break
  311. case '14':
  312. return '麻醉费'
  313. break
  314. case '15':
  315. return '材料费'
  316. break
  317. case '16':
  318. return '特殊检查费'
  319. break
  320. case '17':
  321. return '特殊治疗费'
  322. break
  323. case '18':
  324. return '诊疗费(诊查费)'
  325. break
  326. case '19':
  327. return '护理费'
  328. break
  329. case '20':
  330. return '诊金'
  331. break
  332. case '21':
  333. return '检查费(CT)'
  334. break
  335. case '22':
  336. return '检查费(MRT)'
  337. break
  338. case '23':
  339. return '检查费(其他)'
  340. break
  341. case '24':
  342. return '特需服务费'
  343. break
  344. case '25':
  345. return '杂费'
  346. break
  347. case '26':
  348. return '挂号费'
  349. break
  350. }
  351. },
  352. getChargePrint(record_date, patient_id, prescription_id) {
  353. var params = {
  354. record_date: record_date,
  355. patient_id: patient_id,
  356. prescription_id: prescription_id
  357. }
  358. console.log('params', params)
  359. getChargePrint(params).then(response => {
  360. if (response.data.state == 1) {
  361. var list = response.data.data.list
  362. console.log('list9999999999', list)
  363. this.list = list
  364. var prescription = response.data.data.prescription
  365. console.log('prescription', prescription)
  366. this.prescription = prescription
  367. var patient = response.data.data.patient
  368. console.log('patient', patient)
  369. this.patient = patient
  370. var histpatient = response.data.data.hisPatient
  371. console.log('hispatient', histpatient)
  372. }
  373. })
  374. },
  375. getTime(value, temp) {
  376. if (value != undefined) {
  377. return uParseTime(value, temp)
  378. }
  379. return ''
  380. },
  381. },
  382. mounted() {
  383. this.org_id = this.$store.getters.xt_user.org_id
  384. if (this.org_id == 9504 || this.org_id == 10028 || this.org_id == 10138) {
  385. var xtuser = this.$store.getters.xt_user
  386. this.orgname = xtuser.org.org_name
  387. var form = {
  388. 'order_id': this.paramsObj.order_id,
  389. 'patient_id': this.paramsObj.patient_id,
  390. 'record_time': this.paramsObj.record_date,
  391. 'admin_user_id': this.$store.getters.xt_user.user.id
  392. }
  393. var that = this
  394. axios.get('http://127.0.0.1:9532/sz/api/settle/query', {
  395. params: form
  396. })
  397. .then(function(response) {
  398. if (response.data.state == 0) {
  399. // that.$message.error(response.data.msg)
  400. return false
  401. } else {
  402. if (response.data.data.failed_code == -10) {
  403. // that.$message.error(response.data.data.msg)
  404. that.$confirm(response.data.data.msg, '医保错误信息', {
  405. confirmButtonText: '确 定',
  406. type: 'warning'
  407. }).then(() => {
  408. }).catch(() => {
  409. })
  410. } else {
  411. that.result = response.data.data.result
  412. that.org_code = response.data.data.org_code
  413. that.patient_name = response.data.data.patient_name
  414. that.doctor_code = response.data.data.doctor_code
  415. that.doctor_name = response.data.data.doctor_name
  416. that.name_arr = []
  417. that.spec_arr = []
  418. that.count_arr = []
  419. that.price_arr = []
  420. that.total_arr = []
  421. for (let i = 0; i < that.result.transBody.outputlist1.length; i++) {
  422. that.name_arr.push(that.result.transBody.outputlist1[i].ake006)
  423. that.spec_arr.push(that.result.transBody.outputlist1[i].aka074)
  424. that.count_arr.push(that.result.transBody.outputlist1[i].akc226)
  425. that.price_arr.push(that.result.transBody.outputlist1[i].akc225)
  426. that.total_arr.push(that.result.transBody.outputlist1[i].akc264)
  427. }
  428. }
  429. }
  430. })
  431. .catch(function(error) {
  432. })
  433. } else {
  434. var record_date = this.paramsObj.record_date
  435. console.log('record_date', record_date)
  436. var patient_id = this.paramsObj.patient_id
  437. console.log('patient_id', patient_id)
  438. var prescription_id = this.paramsObj.prescription_id
  439. this.getChargePrint(record_date, patient_id, prescription_id)
  440. var xtuser = this.$store.getters.xt_user
  441. this.orgname = xtuser.org.org_name
  442. }
  443. },
  444. watch: {
  445. paramsObj: {//深度监听,可监听到对象、数组的变化
  446. handler(val, oldVal) {
  447. this.paramsObj = val
  448. this.patient_id = this.paramsObj.patient_id
  449. var record_date = this.paramsObj.record
  450. this.record_date = record_date
  451. var prescription_id = this.paramsObj.prescription_id
  452. this.prescription_id = prescription_id
  453. },
  454. deep: true
  455. }
  456. }
  457. }
  458. </script>
  459. <style lang="scss" scoped>
  460. .prescription-print {
  461. -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 60px rgba(0, 0, 0, 0.06) inset;
  462. -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
  463. box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
  464. margin-bottom: 20px;
  465. padding: 20px 10px;
  466. }
  467. .printTitle {
  468. font-size: 22px;
  469. text-align: center;
  470. font-weight: bold;
  471. }
  472. .infoMain {
  473. display: flex;
  474. flex-wrap: wrap;
  475. padding: 0 10px;
  476. margin-top: 10px;
  477. }
  478. .infoMain .infoP {
  479. width: 33%;
  480. line-height: 24px;
  481. }
  482. .chargeBox {
  483. border: 1px solid #000;
  484. }
  485. .chargeUl {
  486. display: flex;
  487. justify-content: space-between;
  488. text-align: center;
  489. }
  490. .chargeUl p {
  491. height: 40px;
  492. line-height: 40px;
  493. }
  494. .chargeP {
  495. height: 40px;
  496. line-height: 40px;
  497. }
  498. .moneyBox {
  499. display: flex;
  500. justify-content: space-between;
  501. padding: 0 10px;
  502. background: #eee;
  503. height: 40px;
  504. align-items: center;
  505. border: 1px solid #000;
  506. border-top: none
  507. }
  508. .actionBar {
  509. display: flex;
  510. justify-content: space-between;
  511. line-height: 24px;
  512. padding: 0 10px;
  513. }
  514. .actionBar div {
  515. width: 150px;
  516. }
  517. table {
  518. td {
  519. padding: 10px 5px;
  520. }
  521. }
  522. </style>