Browse Source

Merge branch '20201109_pc_vue_new_branch' of http://git.shengws.com/csx/Vue_New into 20201109_pc_vue_new_branch

XMLWAN 3 years ago
parent
commit
68a7861075

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

@@ -519,6 +519,18 @@ export function refunddetail(params) {
519 519
 
520 520
 
521 521
 
522
+export function getPrivateExpensesOrder(params) {
523
+  return request({
524
+    url: "/api/privateexpensesorder/get",
525
+    method: "get",
526
+    params:params,
527
+  });
528
+}
529
+
530
+
531
+
532
+
533
+
522 534
 
523 535
 
524 536
 

+ 43 - 7
src/xt_pages/outpatientCharges/listPrint.vue View File

@@ -14,8 +14,10 @@
14 14
     </template>
15 15
 
16 16
     <div class='dialysisPage' style="padding-top:40px;">
17
-      <printOne v-if="org_id != 10106" :list="list" :patient="patient" :order="order" :admin="admin"></printOne>
18
-      <printTwo v-if="org_id == 10106" :info="info" :order_infos="order_infos" :p_admin="p_admin" :charge_admin="charge_admin"></printTwo>
17
+      <printOne v-if="org_id != 10106 && this.paramsObj.balance_accounts_type != 2" :list="list" :patient="patient" :order="order" :admin="admin"></printOne>
18
+      <printTwo v-if="org_id == 10106 && this.paramsObj.balance_accounts_type != 2" :info="info" :order_infos="order_infos" :p_admin="p_admin" :charge_admin="charge_admin"></printTwo>
19
+      <!--<printThree v-if="org_id == 0 && this.paramsObj.balance_accounts_type == 2" :info="info" :order_infos="order_infos" :p_admin="p_admin" :charge_admin="charge_admin"></printThree>-->
20
+      <print-three v-if="org_id == 0 && this.paramsObj.balance_accounts_type == 2" :info="info" :order_infos="order_infos" :p_admin="p_admin" :charge_admin="charge_admin"></print-three>
19 21
     </div>
20 22
   </div>
21 23
 </template>
@@ -23,13 +25,17 @@
23 25
 <script>
24 26
   import printOne from './listTemplate/printOne'
25 27
   import printTwo from './listTemplate/printTwo'
26
-  import { getHisOrderDetail } from '@/api/his/his'
28
+  // import printThree from './listTemplate/printThree'
29
+
30
+  import { getHisOrderDetail,getPrivateExpensesOrder } from '@/api/his/his'
27 31
   import { uParseTime } from '@/utils/tools'
28 32
   import axios from 'axios'
33
+  import PrintThree from './listTemplate/printThree'
29 34
 
30 35
   export default {
31 36
     name: 'listPrint',
32 37
     components: {
38
+      PrintThree,
33 39
       printOne,
34 40
       printTwo
35 41
     },
@@ -42,8 +48,7 @@
42 48
         patient:{},
43 49
         order:{},
44 50
         admin:{},
45
-
46
-
51
+        order_infos:null,
47 52
         info:null,
48 53
         p_admin:{},
49 54
         charge_admin:{},
@@ -53,8 +58,17 @@
53 58
     created() {
54 59
       this.getInfo(this.paramsObj.id)
55 60
       this.org_id = this.$store.getters.xt_user.org_id
56
-      if(this.org_id == 10106){
57
-        this.getInfo10106(this.paramsObj.id)
61
+      if(this.org_id == 0){
62
+        if(this.paramsObj.balance_accounts_type == 2){
63
+
64
+          this.getInfoPrivateExpenses10106(this.paramsObj.id)
65
+
66
+        }else{
67
+          this.getInfo10106(this.paramsObj.id)
68
+
69
+
70
+
71
+        }
58 72
       }
59 73
 
60 74
     },
@@ -204,6 +218,28 @@
204 218
         //     scanStyles: false
205 219
         //   });
206 220
         // }
221
+      },getInfoPrivateExpenses10106(order_id){
222
+        let params = {
223
+          order_id: order_id,
224
+          admin_user_id:this.$store.getters.xt_user.user.id
225
+        }
226
+
227
+        getPrivateExpensesOrder(params).then(response => {
228
+          if (response.data.state == 0) {
229
+            this.$message.error(response.data.msg)
230
+            return false
231
+          } else {
232
+            this.info = response.data.data.info
233
+            this.info['org_name'] = response.data.data.org_name
234
+            this.info['date'] = response.data.data.date
235
+            this.info['number'] = response.data.data.number
236
+            this.info['name'] = response.data.data.name
237
+            this.p_admin = response.data.data.printor_admin
238
+            this.charge_admin = response.data.data.charge_admin
239
+            this.order_infos = response.data.data
240
+          }
241
+        })
242
+
207 243
       },
208 244
       getInfo10106(order_id) {
209 245
         if (this.$store.getters.xt_user.org_id == 3877 || this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 4  || this.$store.getters.xt_user.org_id == 9538 || this.$store.getters.xt_user.org_id == 9671 ||  this.$store.getters.xt_user.org_id == 9674 || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990 ) {

+ 300 - 0
src/xt_pages/outpatientCharges/listTemplate/printThree.vue View File

@@ -0,0 +1,300 @@
1
+<template>
2
+    <div id="statement-print" class="statement-print">
3
+        <div class="statementTitle" style="margin-top:20px;" >医保费用明细清单</div>
4
+        <!--<div class="statementTitle" style="margin-top:20px;" v-if="info.insutype == '390'">医保费用明细清单</div>-->
5
+
6
+        <div style="display:flex">
7
+            <div style="width:70%">医疗机构名称:{{info.org_name}}</div>
8
+            <!--<div style="width:30%" v-if="info.hosp_lv == '1'">医院等级:三级特等</div>-->
9
+            <!--<div style="width:30%" v-if="info.hosp_lv == '2'">医院等级:三级甲等</div>-->
10
+            <!--<div style="width:30%" v-if="info.hosp_lv == '3'">医院等级:三级乙等</div>-->
11
+            <!--<div style="width:30%" v-if="info.hosp_lv == '4'">医院等级:三级丙等</div>-->
12
+            <!--<div style="width:30%" v-if="info.hosp_lv == '5'">医院等级:二级甲等</div>-->
13
+            <!--<div style="width:30%" v-if="info.hosp_lv == '6'">医院等级:二级乙等</div>-->
14
+            <!--<div style="width:30%" v-if="info.hosp_lv == '7'">医院等级:二级丙等</div>-->
15
+            <!--<div style="width:30%" v-if="info.hosp_lv == '8'">医院等级:一级甲等</div>-->
16
+            <!--<div style="width:30%" v-if="info.hosp_lv == '9'">医院等级:一级乙等</div>-->
17
+            <!--<div style="width:30%" v-if="info.hosp_lv == '10'">医院等级:一级丙等</div>-->
18
+            <!--<div style="width:30%" v-if="info.hosp_lv == '11'">医院等级:无等级</div>-->
19
+
20
+        </div>
21
+        <div style="display:flex;justify-content: space-between;border-bottom:1px solid #000;padding-bottom:10px;">
22
+            <div style="flex:1;">单据编码:{{info.number}}</div>
23
+            <div style="width:33%">就诊时间:{{getTime(info.date)}}</div>
24
+            <div>金额单位:元</div>
25
+        </div>
26
+        <div style="display:flex">
27
+            <div style="width:50%">姓名:{{info.name}}</div>
28
+            <!--<div style="width:50%">个人电脑号:{{info.psn_no}}</div>-->
29
+        </div>
30
+        <div style="display:flex">
31
+            <div style="width:50%">社保卡号</div>
32
+            <div style="width:50%">诊断:慢性肾脏病5期</div>
33
+        </div>
34
+        <!--<div style="display:flex">-->
35
+            <!--<div style="width:50%" v-if="info.psn_type == '11'">人员类别:在职</div>-->
36
+            <!--<div style="width:50%" v-if="info.psn_type == '1101'">人员类别:职工在职</div>-->
37
+            <!--<div style="width:50%" v-if="info.psn_type == '1102'">人员类别:公务员在职</div>-->
38
+            <!--<div style="width:50%" v-if="info.psn_type == '1103'">人员类别:灵活就业人员在职</div>-->
39
+            <!--<div style="width:50%" v-if="info.psn_type == '1160'">人员类别:地方其他扩展人员</div>-->
40
+            <!--<div style="width:50%" v-if="info.psn_type == '12'">人员类别:退休人员</div>-->
41
+            <!--<div style="width:50%" v-if="info.psn_type == '1201'">人员类别:职工退休</div>-->
42
+            <!--<div style="width:50%" v-if="info.psn_type == '1202'">人员类别:公务员退休</div>-->
43
+            <!--<div style="width:50%" v-if="info.psn_type == '1203'">人员类别:灵活就业人员退休</div>-->
44
+            <!--<div style="width:50%" v-if="info.psn_type == '1260'">人员类别:地方其他扩展人员</div>-->
45
+            <!--<div style="width:50%" v-if="info.psn_type == '13'">人员类别:离休</div>-->
46
+            <!--<div style="width:50%" v-if="info.psn_type == '1300'">人员类别:离休人员</div>-->
47
+            <!--<div style="width:50%" v-if="info.psn_type == '1360'">人员类别:地方其他扩展人员</div>-->
48
+            <!--<div style="width:50%" v-if="info.psn_type == '14'">人员类别:居民(未成年)</div>-->
49
+            <!--<div style="width:50%" v-if="info.psn_type == '1401'">人员类别:新生儿</div>-->
50
+            <!--<div style="width:50%" v-if="info.psn_type == '1402'">人员类别:学龄前儿童</div>-->
51
+            <!--<div style="width:50%" v-if="info.psn_type == '1403'">人员类别:中小学生</div>-->
52
+            <!--<div style="width:50%" v-if="info.psn_type == '1404'">人员类别:大学生</div>-->
53
+            <!--<div style="width:50%" v-if="info.psn_type == '1405'">人员类别:未成年(未入学)</div>-->
54
+            <!--<div style="width:50%" v-if="info.psn_type == '15'">人员类别:居民(成年)</div>-->
55
+            <!--<div style="width:50%" v-if="info.psn_type == '1501'">人员类别:普通居民(成年)</div>-->
56
+            <!--<div style="width:50%" v-if="info.psn_type == '1560'">人员类别:地方其他扩展身份</div>-->
57
+            <!--<div style="width:50%" v-if="info.psn_type == '16'">人员类别:居民(老年)</div>-->
58
+
59
+
60
+            <!--<div style="width:50%">待遇类别:</div>-->
61
+        <!--</div>-->
62
+        <div style="display:flex;padding:10px 0;border-top:1px solid #000;border-bottom:1px solid #000;">
63
+            <div style="width:20%;text-align:center;">医保编码</div>
64
+            <div style="width:20%;text-align:center;">项目名称</div>
65
+            <div style="width:10%;text-align:center;">单价</div>
66
+            <div style="width:10%;text-align:center;">数量</div>
67
+            <div style="width:10%;text-align:center;">金额</div>
68
+            <div style="width:10%;text-align:center;">先行自付金额</div>
69
+            <div style="width:10%;text-align:center;">自费</div>
70
+            <div style="width:10%;text-align:center;">自费比例</div>
71
+        </div>
72
+        <div v-for="(newItem,index) in Object.keys(obj)" :key="index">
73
+            <div v-if="Object.values(obj)[index].length > 0"  style="border-bottom:1px solid #000;padding:10px 0;">
74
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type01'">床位费<span>小记:{{ price01 }}</span></span>
75
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type03'">检查费<span>小记:{{ price03 }}</span></span>
76
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type04'">化验费<span>小记:{{ price04 }}</span></span>
77
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type05'">治疗费<span>小记:{{ price05 }}</span></span>
78
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type06'">手术费<span>小记:{{ price06 }}</span></span>
79
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type08'">材料费<span>小记:{{ price08 }}</span></span>
80
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type09'">西药费<span>小记:{{ price09 }}</span></span>
81
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type11'">中成费<span>小记:{{ price11 }}</span></span>
82
+                <span v-if="Object.keys(obj)[index] == 'med_chrgitm_type14'">其他费<span>小记:{{ price14 }}</span></span>
83
+            </div>
84
+            <div>
85
+                <div v-if="Object.values(obj)[index].length > 0" v-for="(item,itemIndex) in Object.values(obj)[index]" :key="itemIndex" style="border-bottom:1px solid #000;padding:10px 0;display:flex;" >
86
+                    <div style="width:20%;text-align:center;" v-if="item.advice_id > 0">{{ item.advice.drug.medical_insurance_number }}</div>
87
+                    <div style="width:20%;text-align:center;" v-if="item.project_id > 0">{{item.project.type == 2?item.project.project.medical_code: item.project.good_info.medical_insurance_number}}</div>
88
+                    <div style="width:20%;text-align:center;" v-if="item.advice_id > 0">{{item.advice.drug.drug_name}}</div>
89
+                    <div style="width:20%;text-align:center;" v-if="item.project_id > 0">{{item.project.type == 2?item.project.project.project_name:item.project.good_info.good_name}}</div>
90
+
91
+                    <div style="width:10%;text-align:center;">{{item.pric}}</div>
92
+                    <div style="width:10%;text-align:center;">{{item.cnt}}</div>
93
+                    <div style="width:10%;text-align:center;">{{item.det_item_fee_sumamt}}</div>
94
+                    <div style="width:10%;text-align:center;">{{item.preselfpay_amt}}</div>
95
+                    <div style="width:10%;text-align:center;">{{item.fulamt_ownpay_amt}}</div>
96
+                    <div style="width:10%;text-align:center;">{{item.selfpay_prop}}</div>
97
+                </div>
98
+            </div>
99
+        </div>
100
+
101
+        <div style="display:flex;border-bottom:1px solid #000;padding:20px 0 10px;">
102
+            <div style="width:70%;">合计:</div>
103
+            <div style="width:10%;text-align:center;">{{info.medfee_sumamt}}</div>
104
+            <div style="width:20%;"></div>
105
+        </div>
106
+        <div>医保基金支付金额:{{''}}</div>
107
+        <div>个人现金支付金额:{{info.medfee_sumamt}}</div>
108
+        <div>其中</div>
109
+        <div style="display:flex;border-bottom:1px solid #000;padding-bottom:10px;">
110
+            <div>个人自付:</div>
111
+            <div>其中:1.乙类自付 {{''}}</div>
112
+            <div style="margin-left:20px;">2.自费 {{info.medfee_sumamt}}</div>
113
+        </div>
114
+        <div style="display:flex;padding-top:10px;">
115
+            <div style="width:33%">参保人签名:</div>
116
+            <div style="width:33%">审核人:</div>
117
+            <div style="width:33%">医院盖章:</div>
118
+        </div>
119
+
120
+    </div>
121
+    <!-- <div>
122
+        123
123
+    <div v-for='(item,index) in Object.values(obj)' :key="index">
124
+        <div>{{Object.keys(obj)[index]}}</div>
125
+        <div v-for="it in Object.values(obj)[index]">{{ it.name }}</div>
126
+    </div>
127
+    </div> -->
128
+</template>
129
+<script>
130
+  import {uParseTime} from '@/utils/tools'
131
+  export default {
132
+    props: {
133
+      info: {
134
+        type: Object,
135
+        default: function () {
136
+          return {}
137
+        }
138
+      },
139
+      order_infos: {
140
+        type: Object,
141
+        default: function () {
142
+          return {}
143
+        }
144
+      },
145
+      p_admin: {
146
+        type: Object,
147
+        default: function () {
148
+          return {}
149
+        }
150
+      }, charge_admin: {
151
+        type: Object,
152
+        default: function () {
153
+          return {}
154
+        }
155
+      }
156
+    },
157
+    data(){
158
+      return{
159
+        obj:{},
160
+        price01: 0,
161
+        price03: 0,
162
+        price04: 0,
163
+        price05: 0,
164
+        price06: 0,
165
+        price08: 0,
166
+        price09: 0,
167
+        price11: 0,
168
+        price14: 0,
169
+      }
170
+    },
171
+    created(){
172
+      // let obj = {
173
+      //     med_chrgitm_type01:[{name:1,age:2},{name:'张三',age:41}],
174
+      //     med_chrgitm_type03:[{name:3,age:4}],
175
+      //     med_chrgitm_type04:[{name:5,age:6}],
176
+      // }
177
+      // this.obj = obj
178
+      // console.log(1111,Object.values(obj))
179
+      // obj.map(item => {
180
+      //     console.log(111,item)
181
+
182
+
183
+      // })
184
+    },
185
+    methods: {
186
+      getTime(val) {
187
+        if (val < 0) {
188
+          return ""
189
+        }
190
+        if (val == "") {
191
+          return ""
192
+        } else {
193
+          return uParseTime(val, '{y}-{m}-{d}')
194
+        }
195
+      },
196
+      getNowTime: function () {
197
+        let dateTime
198
+        let yy = new Date().getFullYear()
199
+        let mm = new Date().getMonth() + 1
200
+        let dd = new Date().getDate()
201
+        let hh = new Date().getHours()
202
+        let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes()
203
+          :
204
+          new Date().getMinutes()
205
+        let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds()
206
+          :
207
+          new Date().getSeconds()
208
+        dateTime = yy + '-' + mm + '-' + dd + ' ' + hh + ':' + mf + ':' + ss
209
+        return dateTime
210
+      },
211
+
212
+    },
213
+    watch:{
214
+      "order_infos.order_infos":{
215
+        handler(newVal){
216
+          let obj = {
217
+            'med_chrgitm_type01':[],
218
+            'med_chrgitm_type03':[],
219
+            'med_chrgitm_type04':[],
220
+            'med_chrgitm_type05':[],
221
+            'med_chrgitm_type06':[],
222
+            'med_chrgitm_type08':[],
223
+            'med_chrgitm_type09':[],
224
+            'med_chrgitm_type11':[],
225
+            'med_chrgitm_type14':[],
226
+          }
227
+
228
+          newVal.map(item => {
229
+
230
+            if(item.med_chrgitm_type == '01'){
231
+              obj.med_chrgitm_type01.push(item)
232
+              this.price01 += item.det_item_fee_sumamt
233
+            }else if(item.med_chrgitm_type == '03'){
234
+              obj.med_chrgitm_type03.push(item)
235
+              this.price03 += item.det_item_fee_sumamt
236
+            }else if(item.med_chrgitm_type == '04'){
237
+              obj.med_chrgitm_type04.push(item)
238
+              this.price04 += item.det_item_fee_sumamt
239
+            }else if(item.med_chrgitm_type == '05'){
240
+              obj.med_chrgitm_type05.push(item)
241
+              this.price05 += item.det_item_fee_sumamt
242
+            }else if(item.med_chrgitm_type == '06'){
243
+              obj.med_chrgitm_type06.push(item)
244
+              this.price06 += item.det_item_fee_sumamt
245
+            }else if(item.med_chrgitm_type == '08'){
246
+              obj.med_chrgitm_type08.push(item)
247
+              this.price08 += item.det_item_fee_sumamt
248
+            }else if(item.med_chrgitm_type == '09'){
249
+              obj.med_chrgitm_type09.push(item)
250
+              this.price09 += item.det_item_fee_sumamt
251
+            }else if(item.med_chrgitm_type == '11'){
252
+              obj.med_chrgitm_type11.push(item)
253
+              this.price11 += item.det_item_fee_sumamt
254
+            }else if(item.med_chrgitm_type == '14'){
255
+              obj.med_chrgitm_type14.push(item)
256
+              this.price14 += item.det_item_fee_sumamt
257
+            }
258
+
259
+          })
260
+          this.obj = obj
261
+          console.log('this.obj',this.obj)
262
+        },
263
+        deep:true
264
+      }
265
+    }
266
+  }
267
+
268
+
269
+
270
+</script>
271
+
272
+
273
+<style lang="scss" scoped>
274
+    #statement-print{
275
+        width: 800px;
276
+        margin: 0 auto;
277
+    }
278
+    .statement-print {
279
+        -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 60px rgba(0, 0, 0, 0.06) inset;
280
+        -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
281
+        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
282
+        margin-bottom: 20px;
283
+        padding: 20px 10px;
284
+    }
285
+
286
+    .statementTitle {
287
+        font-size: 22px;
288
+        text-align: center;
289
+        margin-bottom: 10px;
290
+    }
291
+
292
+    .statementTable {
293
+        width: 100%;
294
+        text-align: center;
295
+        border-collapse: collapse;
296
+        line-height: 40px;
297
+        font-size: 14px;
298
+        border-color: #000;
299
+    }
300
+</style>

+ 2 - 2
src/xt_pages/outpatientCharges/listTemplate/printTwo.vue View File

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div id="statement-print" class="statement-print">
3
-    <div class="statementTitle" style="margin-top:20px;" v-if="info.insutype == '310'">医保费用明细清单</div>
4
-    <div class="statementTitle" style="margin-top:20px;" v-if="info.insutype == '390'">医保费用明细清单</div>
3
+    <div class="statementTitle" style="margin-top:20px;" >医保费用明细清单</div>
4
+    <!--<div class="statementTitle" style="margin-top:20px;" v-if="info.insutype == '390'">医保费用明细清单</div>-->
5 5
 
6 6
     <div style="display:flex">
7 7
       <div style="width:70%">医疗机构名称:{{info.fixmedins_name}}</div>

+ 5 - 1
src/xt_pages/outpatientCharges/summaryDetail.vue View File

@@ -173,7 +173,8 @@ export default {
173 173
           listVisible:false,
174 174
           allListVisible:false,
175 175
           paramsObj:{
176
-            id:this.$route.query.id
176
+            id:this.$route.query.id,
177
+            balance_accounts_type:0
177 178
           },
178 179
             crumbs: [
179 180
                 { path: false, name: '门诊收费' },
@@ -213,10 +214,13 @@ export default {
213 214
       open(val){
214 215
         if(val == 1){
215 216
           this.paramsObj.id == this.$route.query.id
217
+          this.paramsObj.balance_accounts_type = this.hisPatientInfo.balance_accounts_type
216 218
           this.listVisible = true
217 219
 
218 220
         }else if(val == 2){
219 221
           this.paramsObj.id == this.$route.query.id
222
+          this.paramsObj.balance_accounts_type = this.hisPatientInfo.balance_accounts_type
223
+
220 224
           this.allListVisible = true
221 225
         }
222 226
       },