Browse Source

25 2月21打印单,批量

yq1 1 month ago
parent
commit
0fb894efeb

+ 7 - 0
src/api/his/his.js View File

@@ -895,6 +895,13 @@ export function summary2(params) {
895 895
     params: params
896 896
   })
897 897
 }
898
+export function list_batch(id) {
899
+  return request({
900
+    url: '/api/batch/orderlist?id='+id,
901
+    method: 'get',
902
+    // params: params
903
+  })
904
+}
898 905
 
899 906
 
900 907
 

+ 8 - 0
src/router/modules/outpatientCharges.js View File

@@ -85,5 +85,13 @@ export default {
85 85
         name: 'outpatientChargesPrint',
86 86
         meta: { title: 'outpatientChargesPrint', noCache: true }
87 87
     },
88
+    {
89
+      path: '/listTemplate/batch_listPrint',
90
+      component: () => import('@/xt_pages/outpatientCharges/listTemplate/batch_listPrint'),
91
+      hidden: true,
92
+      is_menu: false,
93
+      name: 'outpatientChargesPrint',
94
+      meta: { title: 'outpatientChargesPrint', noCache: true }
95
+  },
88 96
   ]
89 97
 }

+ 3 - 3
src/xt_pages/dialysis/batch_print/batch_print_order_six.vue View File

@@ -2568,7 +2568,7 @@
2568 2568
                       </div>
2569 2569
                     </div>
2570 2570
 
2571
-                    <div class="row" style="padding: 2px 0; line-height: 23px; display: flex">
2571
+                    <div class="row" style="padding: 2px 0; line-height: 23px; display: flex" v-if="org_id!=10735 && org_id!=0">
2572 2572
                       <div class="inline_block" style="flex: 1; display: inline-block">
2573 2573
                         宣教知识:
2574 2574
                         <div class="under_line" style="
@@ -2850,12 +2850,12 @@
2850 2850
                         </div>
2851 2851
                       </div>
2852 2852
 
2853
-                      <div class="inline_block" style="flex: 1" v-if="org_id == 10579">
2853
+                      <!-- <div class="inline_block" style="flex: 1" v-if="org_id == 10579">
2854 2854
                         患者签名:
2855 2855
                         <div class="under_line" style="width: 80px; text-align: center">
2856 2856
 
2857 2857
                         </div>
2858
-                      </div>
2858
+                      </div> -->
2859 2859
                       <div class="inline_block" style="flex: 1">
2860 2860
                         治疗医生:
2861 2861
                         <div class="under_line" style="width: 80px; text-align: center">

+ 5 - 5
src/xt_pages/dialysis/template/DialysisPrintOrderSix.vue View File

@@ -2268,7 +2268,7 @@
2268 2268
                         </span>
2269 2269
                         <span v-if="org_id == 10460">
2270 2270
                           透析中入量
2271
-                          <span v-if="org_id!=10644">(ml)</span> 
2271
+                          <span v-if="org_id!=10644">(ml)</span>
2272 2272
2273 2273
                         </span>
2274 2274
                         <div class="under_line" style="width: 70px; text-align: center">
@@ -2388,7 +2388,7 @@
2388 2388
                       <div class="inline_block" style="flex: 1; display: inline-block">
2389 2389
                         治疗小结:
2390 2390
                         <div class="under_line" style="
2391
-                            width: 860px;
2391
+                            width: 85%;
2392 2392
                             line-height: 25px;
2393 2393
                             text-align: left;
2394 2394
                             margin-left: 2px;
@@ -2403,7 +2403,7 @@
2403 2403
                         </div>
2404 2404
                       </div>
2405 2405
                     </div>
2406
-                    <div v-if="org_id != 10460 && org_id != 10624" class="row"
2406
+                    <div v-if="org_id != 10460 && org_id != 10624 && org_id!=10735 " class="row"
2407 2407
                       style="padding: 2px 0; line-height: 23px; display: flex">
2408 2408
                       <div class="inline_block" style="flex: 1; display: inline-block">
2409 2409
                         宣教知识:
@@ -2806,13 +2806,13 @@
2806 2806
                             " alt="" srcset="" v-else />
2807 2807
                         </div>
2808 2808
                       </div>
2809
-                      <div class="inline_block" style="flex: 1" v-if="org_id == 10579">
2809
+                      <!-- <div class="inline_block" style="flex: 1" v-if="org_id == 10579">
2810 2810
                         患者签名
2811 2811
                         <div class="under_line" style="width: 80px; text-align: center">
2812 2812
 
2813 2813
 
2814 2814
                         </div>
2815
-                      </div>
2815
+                      </div> -->
2816 2816
                       <div class="inline_block" style="flex: 1">
2817 2817
                         治疗医生:
2818 2818
                         <div v-if="org_id == 10191" class="under_line" style="width: 80px; text-align: center">

+ 370 - 0
src/xt_pages/outpatientCharges/listTemplate/batch_listPrint.vue View File

@@ -0,0 +1,370 @@
1
+<template>
2
+  <div >
3
+    
4
+    <div class="position" >
5
+      <div style="text-align: right;flex: 1;">
6
+        <el-button type='primary' @click="printThisPage">打印</el-button>
7
+      </div>
8
+    </div>
9
+    <div class="app-container">
10
+      <div  id="list-print">
11
+        <div style="page-break-after: always;margin-bottom: 20px;" v-for="(item,index) in list_arr" :key="index">
12
+          <div class="listTitle">{{$store.getters.xt_user.org.org_name}}费用清单</div>
13
+          <div class="listInfo">
14
+            <div>患者姓名:{{item.patient.name}}</div>
15
+            <div>性别:{{item.patient.gender == 1 ? '男': '女'}}</div>
16
+            <div>身份证号:{{item.patient.id_card_no}}</div>
17
+            <div>年龄:{{item.patient.age }}  岁</div>
18
+            <div v-if="org_id!=10489">开方日期:{{getTimes(item.order.settle_accounts_date)}}</div>
19
+          </div>
20
+          <div class="listInfo">
21
+            <div>结算类型:{{item.order.is_medicine_insurance == 1 ? "医保" : "自费"}}</div>
22
+            <div>就诊流水号:{{ item.order.mdtrt_id }}</div>
23
+            <div>透析号:{{ item.patient.dialysis_no }}</div>
24
+            <div v-if="org_id ==10653 ">总金额:{{ item.order.medfee_sumamt }}</div>
25
+            <div v-if="org_id ==10653 ">收费日期:{{getTimes(item.order.ctime)}}</div>
26
+            <div v-if="org_id !=10653">发票号:{{item.order.fa_piao_number}}</div>
27
+          </div>
28
+          <div class="listInfo">
29
+            <div v-if="org_id !=10653">总金额:{{ item.order.medfee_sumamt }}</div>
30
+            <div v-if="org_id !=10653">个人支付金额:{{ item.order.psn_cash_pay }}</div>
31
+            <div v-if="org_id !=10653">基金支付金额:{{ item.order.fund_pay_sumamt }}</div>
32
+            <div v-if="org_id !=10653">收费日期:{{getTimes(item.order.ctime)}}</div>
33
+          </div>
34
+          <table class="listTable" style="text-align: center;">
35
+            <tr style="border-bottom: 1px solid black;">
36
+              <td style="width:12%" v-if="org_id==10489">开方日期</td>
37
+              <td style="width:20%" v-if="org_id !=10653 && org_id !=0">医保编码</td>
38
+              <td style="width:20%">项目名称</td>
39
+              <td style="width:12%">规格</td>
40
+              <td style="width:5%">数量</td>
41
+              <td style="width:5%">单位</td>
42
+              <td style="width:7%">单价(元)</td>
43
+              <td style="width:7%">金额(元)</td>
44
+              <td style="width:8%" v-if="org_id !=10653 && org_id !=0">自付比例</td>
45
+            </tr>
46
+            <tr v-for="(ite,inde) in item.lists" style="line-height: 30px;">
47
+                <td style="width:12%" v-if="org_id==10489">
48
+                  <span v-if="ite.code!=undefined">{{getTimes(ite.record_date) }}</span>
49
+                </td>
50
+                <td style="width:20%" v-if="org_id !=10653 && org_id !=0">{{ite.code}}</td>
51
+                <td style="width:20%">{{ite.name}}</td>
52
+                <td style="width:12%">{{ite.spec}}</td>
53
+                <td style="width:5%" >
54
+                  <span v-if="ite.code!=undefined">{{ite.count}}</span>
55
+                </td>
56
+                <td style="width:5%" >{{ite.unit}}</td>
57
+                <td style="width:7%">
58
+                  <span v-if="ite.code!=undefined">{{(ite.price*1).toFixed(2)}}</span>
59
+                </td>
60
+                <td style="width:7%">{{(ite.price * ite.count).toFixed(2)}}</td>
61
+                <td style="width:8%" v-if="org_id !=10653 ">
62
+                  <div v-if="ite.code!=undefined">
63
+                    {{(ite.selfpay_prop)*100}}
64
+                    <span v-if="ite.selfpay_prop !=''">%</span>
65
+                  </div>
66
+                  
67
+                </td>
68
+            </tr>
69
+          </table>
70
+          <div style="border-top: 1px solid black;">
71
+            <div style="text-align: right;">
72
+              合计金额:{{item.order.medfee_sumamt}}
73
+            </div>
74
+          </div>
75
+        </div>
76
+      </div>
77
+    </div>
78
+  </div>
79
+</template>
80
+
81
+<script>
82
+import { uParseTime } from '@/utils/tools'
83
+import { list_batch } from '@/api/his/his'
84
+import print from "print-js";
85
+export default {
86
+  // props: {
87
+  //   list: {
88
+  //     type: Array,
89
+  //     default: function () {
90
+  //       return [];
91
+  //     }
92
+  //   },
93
+  //   patient: {
94
+  //     type: Object,
95
+  //     default: function () {
96
+  //       return {};
97
+  //     }
98
+  //   }, order: {
99
+  //     type: Object,
100
+  //     default: function () {
101
+  //       return {};
102
+  //     }
103
+  //   }, admin: {
104
+  //     type: Object,
105
+  //     default: function () {
106
+  //       return {};
107
+  //     }
108
+  //   },
109
+  // },
110
+  data(){
111
+      return{
112
+          page:1,
113
+          pageArr:[],
114
+          org_id:'',
115
+          list:[],
116
+          list_id:'',
117
+          list_arr:[],
118
+      }
119
+  },
120
+  // // mounted(){
121
+  // //     this.getPage()
122
+  // // },
123
+  methods:{
124
+    getMedicineInsuranceKind(type){
125
+      switch (type) {
126
+        case "01":
127
+          return '甲类';
128
+        case "02":
129
+          return '乙类';
130
+        case "03":
131
+          return '自费';
132
+          break;
133
+      }
134
+
135
+    },
136
+    getNowTime: function () {
137
+      let dateTime
138
+      let yy = new Date().getFullYear()
139
+      let mm = new Date().getMonth() + 1
140
+      let dd = new Date().getDate()
141
+      let hh = new Date().getHours()
142
+      let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes()
143
+        :
144
+        new Date().getMinutes()
145
+      let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds()
146
+        :
147
+        new Date().getSeconds()
148
+      dateTime = yy + '-' + mm + '-' + dd
149
+      return dateTime
150
+    },
151
+    getTimes(time) {
152
+      return uParseTime(time, '{y}-{m}-{d}')
153
+    },
154
+    getPage(){
155
+
156
+      if(this.list.length <= 17){
157
+          this.page = 1
158
+          this.pageArr.push(this.list.length)
159
+      }else if(this.list.length > 17){
160
+          this.page = parseInt(this.list.length / 17)
161
+          let num = this.list.length % 17
162
+          for (var i=0;i<this.page;i++){
163
+              this.pageArr.push(17)
164
+          }
165
+          if(num != 0){
166
+              this.pageArr.push(num)
167
+          }
168
+      }
169
+      console.log('this.pageArr',this.list);
170
+    },
171
+    getlist(){
172
+      list_batch(this.list_id).then(res =>{
173
+        console.log('res',res);
174
+        this.list_arr = res.data.data.orders
175
+        for(let x in this.list_arr){
176
+          this.list_arr[x]['lists']=[]
177
+          for (let i = 0; i < this.list_arr[x].order_info.length; i++) {
178
+          var infos = this.list_arr[x].order_info[i]
179
+          let obj = {
180
+            med_chrgitm_type: this.getType(infos.med_chrgitm_type),
181
+            price: infos.pric.toFixed(4),
182
+            count: infos.cnt,
183
+            selfpay_prop:infos.selfpay_prop,
184
+          }
185
+          if (infos.advice && infos.advice.id == 0 && infos.project && infos.project.id > 0) {
186
+            obj['p_time'] = this.getTimes(infos.project.prescription.ctime)
187
+            obj['feedetl_sn'] = infos.feedetl_sn
188
+            obj['type'] = infos.chrgitm_lv
189
+
190
+            if(infos.project.type == 2){
191
+              obj['name'] = infos.project.project.project_name
192
+              obj['code'] = infos.project.project.medical_code
193
+              obj['spec'] = ''
194
+              obj['unit'] =  infos.project.project.unit
195
+              obj['is_total']= 0
196
+              obj['record_date'] = infos.project.record_date
197
+
198
+            }else if (infos.project.type == 3){
199
+              obj['name'] = infos.project.good_info.good_name
200
+              obj['spec'] = ""
201
+              obj['code'] = infos.project.good_info.medical_insurance_number
202
+              obj['unit'] = infos.project.good_info.packing_unit
203
+              obj['is_total']= 0
204
+              obj['record_date'] = infos.project.record_date
205
+            }
206
+
207
+          }
208
+          if (infos.advice && infos.advice.id > 0 && infos.project && infos.project.id == 0) {
209
+            obj['type'] = infos.chrgitm_lv
210
+            obj['p_time'] = this.getTimes(infos.advice.prescription.ctime)
211
+            obj['name'] = infos.advice.drug.drug_name
212
+            obj['code'] = infos.advice.drug.medical_insurance_number
213
+            obj['unit'] = infos.advice.prescribing_number_unit
214
+            obj['feedetl_sn'] =  infos.feedetl_sn
215
+            obj['spec'] =  infos.advice.drug.dose +  infos.advice.drug.dose_unit+"*" + infos.advice.drug.min_number +  infos.advice.drug.min_unit+"/"+infos.advice.drug.max_unit
216
+            obj['is_total']= 0
217
+            obj['record_date'] = infos.advice.record_date
218
+            // v-if="scope.row.min_unit != scope.row.dose_unit">{{ scope.row.dose }}{{ scope.row.dose_unit }}&nbsp;* &nbsp;</span>{{ scope.row.min_number }}{{ scope.row.min_unit }}/{{ scope.row.max_unit }}
219
+
220
+
221
+          }
222
+          this.list_arr[x].lists.push(obj)
223
+          this.list_arr[x].lists.sort(function(a, b) {
224
+            return b.p_time < a.p_time ? 1 : -1
225
+          })
226
+        }
227
+
228
+          let newObj = {}
229
+          newObj['name'] = "合计"
230
+          newObj['count']= 1
231
+          newObj['price']= this.list_arr[x].order.medfee_sumamt.toFixed(2)
232
+          newObj['is_total']= 1
233
+          this.list_arr[x].lists.push(newObj)
234
+        }
235
+        
236
+      })
237
+    },
238
+    getType(med_chrgitm_type) {
239
+      switch (med_chrgitm_type) {
240
+        case '01':
241
+          return '床位费'
242
+          break
243
+        case '02':
244
+          return '诊察费'
245
+
246
+          break
247
+        case '03':
248
+          return '检查费'
249
+
250
+          break
251
+        case '04':
252
+          return '化验费'
253
+          break
254
+        case '05':
255
+          return '治疗费'
256
+
257
+          break
258
+        case '06':
259
+          return '手术费'
260
+
261
+          break
262
+        case '07':
263
+          return '护理费'
264
+
265
+          break
266
+        case '08':
267
+          return '材料费'
268
+
269
+          break
270
+        case '09':
271
+          return '西药费'
272
+
273
+          break
274
+        case '10':
275
+          return '中药饮片费'
276
+
277
+          break
278
+        case '11':
279
+          return '中成药费'
280
+
281
+          break
282
+        case '12':
283
+          return '一般诊疗费'
284
+
285
+          break
286
+        case '13':
287
+          return '挂号费'
288
+          break
289
+        case '14':
290
+          return '其他费'
291
+          break
292
+        case '0':
293
+          return '其他费'
294
+          break
295
+
296
+      }
297
+    },
298
+    printThisPage() {
299
+          const style =
300
+            '@media print {.listTitle{font-size: 20px;text-align: center;font-weight: bold;margin-bottom: 10px;} .listInfo{display: flex;font-size: 14px;justify-content: space-around;margin: 10px 0;} .listTable{width: 100%;text-align: center;border-collapse: collapse;line-height: 20px;font-size: 14px;border-color: #000;text-align: left;} .listTable tr td {padding: 0 5px;}}';
301
+          printJS({
302
+            printable: "list-print",
303
+            type: "html",
304
+            style: style,
305
+            scanStyles: false
306
+          });
307
+      },
308
+  },
309
+  created(){
310
+    this.list_id = this.$route.query.list_id
311
+    this.getlist()
312
+    this.org_id = this.$store.getters.xt_user.org_id
313
+  },
314
+  // watch:{
315
+  //     list: {
316
+  //         handler(newVal) {
317
+  //           // this.list = newVal
318
+  //             this.getPage()
319
+  //             // this.getlist()
320
+  //         },
321
+  //         deep: true
322
+  //     }
323
+  // }
324
+
325
+}
326
+
327
+
328
+</script>
329
+
330
+<style lang="scss" scoped>
331
+.list-print{
332
+  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 60px rgba(0, 0, 0, 0.06) inset;
333
+  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
334
+  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
335
+  margin-bottom: 20px;
336
+  padding:20px 10px;
337
+}
338
+.listTitle{
339
+  font-size: 20px;
340
+  text-align: center;
341
+  font-weight: bold;
342
+  margin-bottom: 10px;
343
+}
344
+.listInfo{
345
+  display: flex;
346
+  font-size: 14px;
347
+  justify-content: space-around;
348
+  margin: 10px 0;
349
+}
350
+.listTable{
351
+  width: 100%;
352
+  text-align: center;
353
+  border-collapse: collapse;
354
+  line-height: 20px;
355
+  font-size: 14px;
356
+  border-color: #000;
357
+  text-align: left;
358
+}
359
+.listTable tr td {
360
+  padding: 0 5px;
361
+}
362
+.tableBottom{
363
+  font-size: 12px;
364
+  display: flex;
365
+  margin-top: 20px;
366
+}
367
+.tableBottomOne{
368
+  margin-right: 20px;
369
+}
370
+</style>

+ 16 - 3
src/xt_pages/outpatientCharges/summary.vue View File

@@ -62,6 +62,7 @@
62 62
                 $store.getters.xt_user.org_id == 10610 || $store.getters.xt_user.org_id == 0"
63 63
             size="small" type="primary" @click="batch_print_settlte">批量打印结算单
64 64
           </el-button>
65
+          <el-button size="small" type="primary" @click="list_click">批量打印费用清单</el-button>
65 66
           <el-button size="small" type="primary" @click="export_detail"
66 67
           >报表下载
67 68
           </el-button>
@@ -71,8 +72,7 @@
71 72
           <el-button v-if="$store.getters.xt_user.org_id == 10318" size="small"
72 73
                      type="primary" @click="export_detail_ten_two">报表下载3
73 74
           </el-button>
74
-
75
-
75
+          
76 76
         </div>
77 77
       </div>
78 78
 
@@ -636,7 +636,7 @@
636 636
 
637 637
 <script>
638 638
 import BreadCrumb from '@/xt_pages/components/bread-crumb'
639
-import { getDoctorList, getExportConsumeDetailList, getHisOrderList, Refund } from '@/api/his/his'
639
+import { getDoctorList, getExportConsumeDetailList, getHisOrderList, Refund,list_batch } from '@/api/his/his'
640 640
 import { ModifyFapiaoCode } from '@/api/his/his_tools'
641 641
 
642 642
 // import NewStatementPrint from './newStatementPrint'
@@ -4204,6 +4204,19 @@ export default {
4204 4204
       }
4205 4205
 
4206 4206
 
4207
+    },
4208
+    list_click(){
4209
+      console.log('selecting_schs',this.selecting_schs);
4210
+      var list_arr=[]
4211
+      for(let i in this.selecting_schs){
4212
+        list_arr.push(this.selecting_schs[i].id)
4213
+      }
4214
+      var list_id = list_arr.join(",")
4215
+      this.$router.push({path:'/listTemplate/batch_listPrint',query:{list_id:list_id}})
4216
+      // list_batch(list_id).then(res =>{
4217
+      //   console.log('res',res);
4218
+        
4219
+      // })
4207 4220
     }
4208 4221
   },
4209 4222