printOne.vue 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <template>
  2. <div id="list-print" class="list-print">
  3. <div v-for='(i,index) in pageArr.length' :key="index" style="page-break-after: always;">
  4. <div class="listTitle">{{$store.getters.xt_user.org.org_name}}费用清单</div>
  5. <div class="listInfo">
  6. <div>患者姓名:{{patient.name}}</div>
  7. <div v-if="$store.getters.xt_user.org.id != 10191">透析号:{{patient.dialysis_no}}</div>
  8. <div v-if="$store.getters.xt_user.org.id == 10191">身份证号:{{patient.id_card_no}}</div>
  9. <div>性别:{{patient.gender == 1 ? '男': '女'}}</div>
  10. <div>年龄:{{patient.age}} 岁</div>
  11. <div v-if="order.settle_type == 1">收费日期:{{getTimes(order.settle_accounts_date)}}</div>
  12. <div v-if="order.settle_type == 2">收费日期:{{getTimes(order.settle_start_time)}} 至 {{getTimes(order.settle_end_time)}}</div>
  13. </div>
  14. <table class="listTable" border="1">
  15. <tr>
  16. <td style="width:15%">开方日期</td>
  17. <td style="width:10%">类别</td>
  18. <td style="width:10%">医保编码</td>
  19. <td style="width:30%">项目名称</td>
  20. <td style="width:10%">规格</td>
  21. <td style="width:10%">单价(元)</td>
  22. <td style="width:6%">数量</td>
  23. <td style="width:10%">金额(元)</td>
  24. <td v-if="$store.getters.xt_user.org_id == 10318 || $store.getters.xt_user.org_id == 0 " style="width:10%">医保类型</td>
  25. </tr>
  26. <tr v-for="item in list.slice(index * 16,(index * 16) + pageArr[index])">
  27. <td style="width:15%">{{item.p_time}}</td>
  28. <td style="width:10%">{{item.med_chrgitm_type}}</td>
  29. <td style="width:10%">{{item.code}}</td>
  30. <td style="width:30%">{{item.name}}</td>
  31. <td style="width:10%">{{item.spec}}</td>
  32. <td style="width:10%">{{item.price}}</td>
  33. <td style="width:6%">{{item.count}}{{item.unit}}</td>
  34. <td style="width:10%">{{(item.price * item.count).toFixed(2)}}</td>
  35. <td v-if="$store.getters.xt_user.org_id == 10318 || $store.getters.xt_user.org_id == 0 " style="width:10%">{{getMedicineInsuranceKind(item.type)}}</td>
  36. </tr>
  37. </table>
  38. <div class="tableBottom">
  39. <div class="tableBottomOne">制表人:{{admin.user_name}}</div>
  40. <div class="tableBottomOne" v-if="$store.getters.xt_user.org.id != 10318">制表日期:{{ getNowTime()}}</div>
  41. <div class="tableBottomOne">总费用:{{order.medfee_sumamt}}元</div>
  42. <div class="tableBottomOne">基金总额:{{order.fund_pay_sumamt}}元</div>
  43. <div class="tableBottomOne">统筹支付:{{order.hifp_pay}}元</div>
  44. <div class="tableBottomOne">医疗救助:{{order.maf_pay}}元</div>
  45. <div class="tableBottomOne">医保报销:{{order.fund_pay_sumamt}}元</div>
  46. <div class="tableBottomOne">个人支付:{{order.psn_cash_pay}}元</div>
  47. </div>
  48. </div>
  49. </div>
  50. </template>
  51. <script>
  52. import { uParseTime } from '@/utils/tools'
  53. export default {
  54. props: {
  55. list: {
  56. type: Array,
  57. default: function () {
  58. return [];
  59. }
  60. },
  61. patient: {
  62. type: Object,
  63. default: function () {
  64. return {};
  65. }
  66. }, order: {
  67. type: Object,
  68. default: function () {
  69. return {};
  70. }
  71. }, admin: {
  72. type: Object,
  73. default: function () {
  74. return {};
  75. }
  76. },
  77. },
  78. data(){
  79. return{
  80. page:1,
  81. pageArr:[],
  82. }
  83. },
  84. // mounted(){
  85. // this.getPage()
  86. // },
  87. methods:{
  88. getMedicineInsuranceKind(type){
  89. switch (type) {
  90. case "01":
  91. return '甲类';
  92. case "02":
  93. return '乙类';
  94. case "03":
  95. return '自费';
  96. break;
  97. }
  98. },
  99. getNowTime: function () {
  100. let dateTime
  101. let yy = new Date().getFullYear()
  102. let mm = new Date().getMonth() + 1
  103. let dd = new Date().getDate()
  104. let hh = new Date().getHours()
  105. let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes()
  106. :
  107. new Date().getMinutes()
  108. let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds()
  109. :
  110. new Date().getSeconds()
  111. dateTime = yy + '-' + mm + '-' + dd
  112. return dateTime
  113. },
  114. getTimes(time) {
  115. return uParseTime(time, '{y}-{m}-{d}')
  116. },
  117. getPage(){
  118. if(this.list.length <= 16){
  119. this.page = 1
  120. this.pageArr.push(this.list.length)
  121. }else if(this.list.length > 16){
  122. this.page = parseInt(this.list.length / 16)
  123. let num = this.list.length % 16
  124. for (var i=0;i<this.page;i++){
  125. this.pageArr.push(16)
  126. }
  127. if(num != 0){
  128. this.pageArr.push(num)
  129. }
  130. }
  131. console.log('this.list',this.list);
  132. console.log('this.pageArr',this.pageArr);
  133. }
  134. },
  135. watch:{
  136. list: {
  137. handler(newVal) {
  138. this.getPage()
  139. },
  140. deep: true
  141. }
  142. }
  143. }
  144. </script>
  145. <style lang="scss" scoped>
  146. .list-print{
  147. -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 60px rgba(0, 0, 0, 0.06) inset;
  148. -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
  149. box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
  150. margin-bottom: 20px;
  151. padding:20px 10px;
  152. }
  153. .listTitle{
  154. font-size: 24px;
  155. text-align: center;
  156. font-weight: bold;
  157. margin-bottom: 10px;
  158. }
  159. .listInfo{
  160. display: flex;
  161. font-size: 16px;
  162. justify-content: space-between;
  163. margin: 10px 0;
  164. }
  165. .listTable{
  166. width: 100%;
  167. text-align: center;
  168. border-collapse: collapse;
  169. line-height: 20px;
  170. font-size: 14px;
  171. border-color: #000;
  172. text-align: left;
  173. }
  174. .listTable tr td {
  175. padding: 0 5px;
  176. }
  177. .tableBottom{
  178. font-size: 12px;
  179. display: flex;
  180. margin-top: 20px;
  181. }
  182. .tableBottomOne{
  183. margin-right: 20px;
  184. }
  185. </style>