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

printTwo.vue 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
  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="https://kuyi.shengws.com/bailin/bltotle.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.indexOf("(") > -1 ? info.patient_name.substring(0,info.patient_name.indexOf("(")) : 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;min-width:80px;">{{info.patient_info.transBody.outputlist1 ? getName(info.patient_info.transBody.outputlist1) : ''}}</span>
  16. </div>
  17. <div style="margin-left:2px;">电脑号:<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="https://kuyi.shengws.com/bailin/blend.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="https://kuyi.shengws.com/bailin/bltotle.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.indexOf("(") > -1 ? balanceAccounts.patient.name.substring(0,balanceAccounts.patient.name.indexOf("(")) : 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(balanceAccounts.order.settle_accounts_date,"{y}-{m}-{d}")?getTime(balanceAccounts.order.settle_accounts_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 min-width="180" style="min-width:60px;">规格</td>
  101. <td width="40">单位</td>
  102. <td width="40">数量</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).toFixed(2) }}</span>
  141. <span v-if="item.type == 2">{{ (subItem.project.count * subItem.pric).toFixed(2) }}</span>
  142. <span v-if="item.type == 3">{{ (subItem.project.count * subItem.pric).toFixed(2) }}</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="https://kuyi.shengws.com/bailin/blend.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. case '99':
  351. return '诊疗费'
  352. break
  353. }
  354. },
  355. getChargePrint(record_date, patient_id, prescription_id) {
  356. var params = {
  357. record_date: record_date,
  358. patient_id: patient_id,
  359. prescription_id: prescription_id
  360. }
  361. console.log('params', params)
  362. getChargePrint(params).then(response => {
  363. if (response.data.state == 1) {
  364. var list = response.data.data.list
  365. console.log('list9999999999', list)
  366. this.list = list
  367. var prescription = response.data.data.prescription
  368. console.log('prescription', prescription)
  369. this.prescription = prescription
  370. var patient = response.data.data.patient
  371. console.log('patient', patient)
  372. this.patient = patient
  373. var histpatient = response.data.data.hisPatient
  374. console.log('hispatient', histpatient)
  375. }
  376. })
  377. },
  378. getTime(value, temp) {
  379. if (value != undefined) {
  380. return uParseTime(value, temp)
  381. }
  382. return ''
  383. },
  384. },
  385. mounted() {
  386. this.org_id = this.$store.getters.xt_user.org_id
  387. if (this.org_id == 9504 || this.org_id == 10028 || this.org_id == 10138) {
  388. var xtuser = this.$store.getters.xt_user
  389. this.orgname = xtuser.org.org_name
  390. var form = {
  391. 'order_id': this.paramsObj.order_id,
  392. 'patient_id': this.paramsObj.patient_id,
  393. 'record_time': this.paramsObj.record_date,
  394. 'admin_user_id': this.$store.getters.xt_user.user.id
  395. }
  396. var that = this
  397. axios.get('http://127.0.0.1:9532/sz/api/settle/query', {
  398. params: form
  399. })
  400. .then(function(response) {
  401. if (response.data.state == 0) {
  402. // that.$message.error(response.data.msg)
  403. return false
  404. } else {
  405. if (response.data.data.failed_code == -10) {
  406. // that.$message.error(response.data.data.msg)
  407. that.$confirm(response.data.data.msg, '医保错误信息', {
  408. confirmButtonText: '确 定',
  409. type: 'warning'
  410. }).then(() => {
  411. }).catch(() => {
  412. })
  413. } else {
  414. that.result = response.data.data.result
  415. that.org_code = response.data.data.org_code
  416. that.patient_name = response.data.data.patient_name
  417. that.doctor_code = response.data.data.doctor_code
  418. that.doctor_name = response.data.data.doctor_name
  419. that.name_arr = []
  420. that.spec_arr = []
  421. that.count_arr = []
  422. that.price_arr = []
  423. that.total_arr = []
  424. for (let i = 0; i < that.result.transBody.outputlist1.length; i++) {
  425. that.name_arr.push(that.result.transBody.outputlist1[i].ake006)
  426. that.spec_arr.push(that.result.transBody.outputlist1[i].aka074)
  427. that.count_arr.push(that.result.transBody.outputlist1[i].akc226)
  428. that.price_arr.push(that.result.transBody.outputlist1[i].akc225)
  429. that.total_arr.push(that.result.transBody.outputlist1[i].akc264)
  430. }
  431. }
  432. }
  433. })
  434. .catch(function(error) {
  435. })
  436. } else {
  437. var record_date = this.paramsObj.record_date
  438. console.log('record_date', record_date)
  439. var patient_id = this.paramsObj.patient_id
  440. console.log('patient_id', patient_id)
  441. var prescription_id = this.paramsObj.prescription_id
  442. this.getChargePrint(record_date, patient_id, prescription_id)
  443. var xtuser = this.$store.getters.xt_user
  444. this.orgname = xtuser.org.org_name
  445. }
  446. },
  447. watch: {
  448. paramsObj: {//深度监听,可监听到对象、数组的变化
  449. handler(val, oldVal) {
  450. this.paramsObj = val
  451. this.patient_id = this.paramsObj.patient_id
  452. var record_date = this.paramsObj.record
  453. this.record_date = record_date
  454. var prescription_id = this.paramsObj.prescription_id
  455. this.prescription_id = prescription_id
  456. },
  457. deep: true
  458. }
  459. }
  460. }
  461. </script>
  462. <style lang="scss" scoped>
  463. .prescription-print {
  464. -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 60px rgba(0, 0, 0, 0.06) inset;
  465. -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
  466. box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
  467. margin-bottom: 20px;
  468. padding: 20px 10px;
  469. }
  470. .printTitle {
  471. font-size: 22px;
  472. text-align: center;
  473. font-weight: bold;
  474. }
  475. .infoMain {
  476. display: flex;
  477. flex-wrap: wrap;
  478. padding: 0 10px;
  479. margin-top: 10px;
  480. }
  481. .infoMain .infoP {
  482. width: 33%;
  483. line-height: 24px;
  484. }
  485. .chargeBox {
  486. border: 1px solid #000;
  487. }
  488. .chargeUl {
  489. display: flex;
  490. justify-content: space-between;
  491. text-align: center;
  492. }
  493. .chargeUl p {
  494. height: 40px;
  495. line-height: 40px;
  496. }
  497. .chargeP {
  498. height: 40px;
  499. line-height: 40px;
  500. }
  501. .moneyBox {
  502. display: flex;
  503. justify-content: space-between;
  504. padding: 0 10px;
  505. background: #eee;
  506. height: 40px;
  507. align-items: center;
  508. border: 1px solid #000;
  509. border-top: none
  510. }
  511. .actionBar {
  512. display: flex;
  513. justify-content: space-between;
  514. line-height: 24px;
  515. padding: 0 10px;
  516. }
  517. .actionBar div {
  518. width: 150px;
  519. }
  520. table {
  521. td {
  522. padding: 10px 5px;
  523. }
  524. }
  525. </style>