浏览代码

住院单

huangyw 3 年前
父节点
当前提交
34cb425a96

+ 8 - 4
src/xt_pages/hospitalStation/invoicePrint.vue 查看文件

@@ -13,7 +13,8 @@
13 13
     </template>
14 14
     <div class="app-container" style="padding-top:40px;">
15 15
         <div class='dialysisPage'>
16
-            <printOne :paramsObj="invoiceParams"></printOne>
16
+            <printOne v-if="org_id!=10215 && org_id!=0" :paramsObj="invoiceParams"></printOne>
17
+            <printTwo v-if="org_id == 0 || org_id == 10215" :paramsObj="invoiceParams"></printTwo>
17 18
         </div>
18 19
     </div>
19 20
   </div>
@@ -21,10 +22,12 @@
21 22
 
22 23
 <script>
23 24
 import printOne from './invoiceTemplate/printOne'
25
+import printTwo from './invoiceTemplate/printTwo'
24 26
 export default {
25 27
   name: "invoicePrint",
26 28
   components: {
27
-    printOne
29
+    printOne,
30
+    printTwo
28 31
   },
29 32
   props:{
30 33
     invoiceParams:Object
@@ -33,7 +36,7 @@ export default {
33 36
     return {
34 37
       childResponse: {},
35 38
     //   invoiceParams:{}
36
-      
39
+      org_id:''
37 40
 
38 41
     };
39 42
   },
@@ -70,7 +73,6 @@ export default {
70 73
             style: style,
71 74
             scanStyles: false
72 75
         });
73
-
74 76
       // if (this.org_template_info.template_id == 1) {
75 77
       //   printJS({
76 78
       //     printable: "dialysis-print-box",
@@ -83,6 +85,8 @@ export default {
83 85
   },
84 86
   created() {
85 87
       console.log('this.invoiceParams',this.invoiceParams)
88
+      this.org_id = this.$store.getters.xt_user.org_id
89
+      console.log(this.org_id,'this.org_id')
86 90
   },
87 91
   watch:{
88 92
     paramsObj:{//深度监听,可监听到对象、数组的变化

+ 263 - 0
src/xt_pages/hospitalStation/invoiceTemplate/printTwo.vue 查看文件

@@ -0,0 +1,263 @@
1
+<template>
2
+    <div id='invoice-print' style="font-size:12px;">
3
+        <div style="display:flex;">
4
+            <div style="position: absolute;top:50px;left:60px;">{{ list.order_number }}</div>
5
+            <!-- <div>{{ list.id_card_no }}</div> -->
6
+        </div>
7
+        <div style="display:flex;justify-content: space-between;">
8
+            <!-- <div>{{ list.department_name }}</div> -->
9
+            <div  style="position: absolute;top:50px;left:260px">{{ list.id_card_no }}</div>
10
+            <div></div>
11
+        </div>
12
+        <div style="display:flex;justify-content: space-between;">
13
+            <!-- <div>{{ list.department_name }}</div> -->
14
+            <div  style="position: absolute;top:70px;left:90px">门诊</div>
15
+            <div></div>
16
+            <div  style="position: absolute;top:70px;left:240px">{{ list.number }}</div>
17
+            <div  style="position: absolute;left:470px;top:70px;">
18
+                <span>{{  paramsObj.setl_time ? paramsObj.setl_time.split(' ')[0].slice(0,4) : getTime(list.date, '{y}-{m}-{d}').slice(0,4) }}</span>
19
+            </div>
20
+            <div  style="position: absolute;left:530px;top:70px;">
21
+                <span>{{ paramsObj.setl_time ? parseInt(paramsObj.setl_time.split(' ')[0].slice(5,7)) : getTime(list.date, '{y}-{m}-{d}').slice(5,7) }}</span>
22
+            </div>
23
+            <div  style="position: absolute;left:560px;top:70px;">
24
+                <span>{{ paramsObj.setl_time ? parseInt(paramsObj.setl_time.split(' ')[0].slice(8,11)) : getTime(list.date, '{y}-{m}-{d}').slice(8,11) }}</span>
25
+            </div>
26
+        </div>
27
+        <div style="display:flex;justify-content: space-between;">
28
+            <div style="position: absolute;top:85px;left:100px;"> {{ paramsObj.name }}</div>
29
+            <div style="position: absolute;top:85px;left:180px;">√</div>
30
+            <!-- <div>{{ list.pay_way }}</div> -->
31
+            <div style="position: absolute;top:85px;left:380px;">{{ in_hosptial_time }}</div>
32
+            <div style="position: absolute;top:85px;left:530px;">{{ out_hosptial_time }}</div>
33
+        </div>
34
+        <div style="display:flex;justify-content: space-between;">
35
+            <!-- <div>{{ paramsObj.gend == 1 ? '男' : '女' }}</div> -->
36
+            <div v-if="paramsObj.gend == 1" style="position: absolute;top:110px;left:100px;">√</div>
37
+            <div v-else style="position: absolute;top:110px;left:140px;">√</div>
38
+            <div style="position: absolute;top:110px;left:260px;">{{ list.number.length <= 13 ? (totalPrice - list.psn_cash_money).toFixed(2) : '0.00' }}</div>
39
+            <div style="position: absolute;top:110px;left:420px;">{{ list.number.length <= 13 ? list.psn_cash_money.toFixed(2) : (totalPrice - list.psn_cash_money).toFixed(2) }}</div>
40
+            <div style="position: absolute;top:110px;left:540px;">现金</div>
41
+        </div>
42
+        <div style="display:flex;justify-content: space-between;">
43
+            <div style="position: absolute;top:145px;left:50px">西药</div>
44
+            <div style="position: absolute;top:145px;left:130px">{{ list.westernMedicineCostTotal ? list.westernMedicineCostTotal.toFixed(2) : '' }}</div>
45
+            <div style="position: absolute;top:145px;left:180px">检查费</div>
46
+            <div style="position: absolute;top:145px;left:260px">{{ list.checkCostTotal ? list.checkCostTotal.toFixed(2) : '' }}</div>
47
+            <div style="position: absolute;top:145px;left:340px">治疗费</div>
48
+            <div style="position: absolute;top:145px;left:420px">{{ list.treatCostTotal ? list.treatCostTotal.toFixed(2) : '' }}</div>
49
+            <div style="position: absolute;top:145px;left:480px">床位费</div>
50
+            <div style="position: absolute;top:145px;left:540px">{{ list.bedCostTotal ? list.bedCostTotal.toFixed(2) : '' }}</div>
51
+        </div>
52
+        <div style="display:flex;justify-content: space-between;">
53
+            <div style="position: absolute;top:170px;left:50px">中成药</div>
54
+            <div style="position: absolute;top:170px;left:130px">{{ list.chineseTraditionalMedicineCostTotal ? list.chineseTraditionalMedicineCostTotal.toFixed(2) : '' }}</div>
55
+            <div style="position: absolute;top:170px;left:180px">化验费</div>
56
+            <div style="position: absolute;top:170px;left:260px">{{ list.laboratoryCostTotal ? list.laboratoryCostTotal.toFixed(2) : '' }}</div>
57
+            <div style="position: absolute;top:170px;left:340px">手术费</div>
58
+            <div style="position: absolute;top:170px;left:420px">{{ list.operationCostTotal ? list.operationCostTotal.toFixed(2) : '' }}</div>
59
+            <div style="position: absolute;top:170px;left:480px">其他费</div>
60
+            <div style="position: absolute;top:170px;left:540px">{{ list.otherCostTotal ? list.otherCostTotal.toFixed(2) : '' }}</div>
61
+        </div>
62
+        <div style="display:flex;justify-content: space-between;">
63
+            <div style="position: absolute;top:190px;left:50px"></div>
64
+            <div style="position: absolute;top:190px;left:130px"></div>
65
+            <div style="position: absolute;top:190px;left:180px"></div>
66
+            <div style="position: absolute;top:190px;left:260px"></div>
67
+            <div style="position: absolute;top:190px;left:340px">材料费</div>
68
+            <div style="position: absolute;top:190px;left:420px">{{ list.materialCostTotal ? list.materialCostTotal.toFixed(2) : '' }}</div>
69
+            <div style="position: absolute;top:190px;left:480px"></div>
70
+            <div style="position: absolute;top:190px;left:540px"></div>
71
+        </div>
72
+        <div style="display:flex;justify-content: space-between;">
73
+            <div style="position: absolute;top:210px;left:50px"></div>
74
+            <div style="position: absolute;top:210px;left:130px"></div>
75
+            <div style="position: absolute;top:210px;left:180px"></div>
76
+            <div style="position: absolute;top:210px;left:260px">{{ list.psn_cash_money ? list.psn_cash_money.toFixed(2) : '' }}</div>
77
+            <div style="position: absolute;top:210px;left:340px"></div>
78
+            <div style="position: absolute;top:210px;left:420px"></div>
79
+            <div style="position: absolute;top:210px;left:480px"></div>
80
+            <div style="position: absolute;top:210px;left:540px"></div>
81
+        </div>
82
+        <div>
83
+            <span>
84
+            <span  style="position: absolute;top:235px;left:190px">
85
+                <span v-if="zhongwen.indexOf('万') > -1 && zhongwen.indexOf('拾') > -1 && zhongwen.indexOf('拾') == 1">
86
+                    {{ zhongwen.substring(0,1) }}
87
+                </span>
88
+                <span v-else>零</span>
89
+            </span>
90
+            <span  style="position: absolute;top:235px;left:220px">
91
+                <span v-if="zhongwen.indexOf('万') > -1">
92
+                    {{ zhongwen.substring(zhongwen.indexOf('万') - 1,zhongwen.indexOf('万')) }}
93
+                </span>
94
+                <span v-else>零</span>
95
+            </span>
96
+            <span  style="position: absolute;top:235px;left:250px">
97
+                <span v-if="zhongwen.indexOf('仟') > -1">
98
+                    {{ zhongwen.substring(zhongwen.indexOf('仟') - 1,zhongwen.indexOf('仟')) }}
99
+                </span>
100
+                <span v-else>零</span>
101
+            </span>
102
+            <span  style="position: absolute;top:235px;left:290px">
103
+                <span v-if="zhongwen.indexOf('佰') > -1">
104
+                    {{ zhongwen.substring(zhongwen.indexOf('佰') - 1,zhongwen.indexOf('佰')) }}
105
+                </span>
106
+                <span v-else>零</span>
107
+            </span>
108
+            <span style="position: absolute;top:235px;left:320px">
109
+                <span v-if="zhongwen.indexOf('拾') > -1">
110
+                    {{ zhongwen.substring(zhongwen.indexOf('拾') - 1,zhongwen.indexOf('拾')) }}
111
+                </span>
112
+                <span v-else>零</span>
113
+            </span>
114
+            <span  style="position: absolute;top:235px;left:350px">
115
+                <span v-if="zhongwen.indexOf('元') > -1 && zhongwen.substring(zhongwen.indexOf('元') - 1,zhongwen.indexOf('元')) != '拾'">
116
+                    {{ zhongwen.substring(zhongwen.indexOf('元') - 1,zhongwen.indexOf('元')) }}
117
+                </span>
118
+                <span v-else>零</span>
119
+            </span>
120
+            <span  style="position: absolute;top:235px;left:380px">
121
+                <span v-if="zhongwen.indexOf('角') > -1">
122
+                    {{ zhongwen.substring(zhongwen.indexOf('角') - 1,zhongwen.indexOf('角')) }}
123
+                </span>
124
+                <span v-else>零</span>
125
+            </span>
126
+            <span  style="position: absolute;top:235px;left:415px">
127
+                <span v-if="zhongwen.indexOf('分') > -1">
128
+                    {{ zhongwen.substring(zhongwen.indexOf('分') - 1,zhongwen.indexOf('分')) }}
129
+                </span>
130
+                <span v-else>零</span>
131
+            </span>
132
+            </span>
133
+            <span style="position: absolute;top:235px;left:500px">{{ totalPrice.toFixed(2) }}</span>
134
+        </div>
135
+        <!-- <div style="position: absolute;top:300px;left:460px">现金:{{ list.psn_cash_money }}</div> -->
136
+        <div>
137
+            <div style="position: absolute;top:300px;left:120px">{{ org_name }}</div>
138
+            <div style="position: absolute;top:300px;left:460px">高慧裕</div>
139
+        </div>
140
+    </div>
141
+</template>
142
+
143
+
144
+<script>
145
+import { getInvoice } from '@/api/project/project'
146
+import { uParseTime } from '@/utils/tools'
147
+export default {
148
+    props:{
149
+        paramsObj:Object
150
+    },
151
+    data(){
152
+        return{
153
+            list:{},
154
+            printDate:'',
155
+            zhongwen:'',
156
+            totalPrice:0.0,
157
+            org_id:'',
158
+            org_name:'',
159
+            in_hosptial_time:'',
160
+            out_hosptial_time:''
161
+        }
162
+    },
163
+    created(){
164
+        console.log('paramsObj',this.paramsObj)
165
+        let params = {
166
+            order_id: this.paramsObj.order_id,
167
+            patient_id: this.paramsObj.patient_id,
168
+        }
169
+        this.getInvoice(params)
170
+        // var data = new Date();
171
+        // var month =data.getMonth() < 9 ? "0" + (data.getMonth() + 1) : data.getMonth() + 1;
172
+        // var date = data.getDate() <= 9 ? "0" + data.getDate() : data.getDate();
173
+        // this.printDate = data.getFullYear() + "-" + month + "-" + date;
174
+        // this.smalltoBIG(982732.21)
175
+        this.org_id = this.$store.getters.xt_user.org_id
176
+        this.org_name = this.$store.getters.xt_user.org.org_name
177
+    },
178
+    methods:{
179
+        getInvoice(params){
180
+            getInvoice(params).then((res) => {
181
+                // console.log('res',res)
182
+                this.list = res.data.data
183
+                console.log('res',this.list)
184
+                this.totalPrice = this.list.westernMedicineCostTotal + this.list.checkCostTotal + this.list.treatCostTotal + this.list.bedCostTotal + this.list.chineseTraditionalMedicineCostTotal +
185
+                                    this.list.laboratoryCostTotal + this.list.operationCostTotal + this.list.otherCostTotal + this.list.materialCostTotal
186
+                this.smalltoBIG(this.totalPrice)
187
+                var data = new Date(res.data.data.date * 1000);
188
+                var month =data.getMonth() < 9 ? "0" + (data.getMonth() + 1) : data.getMonth() + 1;
189
+                var date = data.getDate() <= 9 ? "0" + data.getDate() : data.getDate();
190
+                this.printDate = data.getFullYear() + "-" + month + "-" + date;
191
+                this.in_hosptial_time = this.list.order.his_hospital_patient.in_hosptial_time
192
+                this.out_hosptial_time = this.list.order.his_hospital_patient.out_hosptial_time
193
+            })
194
+        },
195
+        smalltoBIG(n) {
196
+            // let fraction = ['角', '分'];
197
+            // let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
198
+            // let unit = [['元.', '万,', '亿,'], ["元",'拾', '佰', '仟']];
199
+            // let head = price < 0 ? '欠' : '';
200
+            // price = Math.abs(price);
201
+            // let upper = '';
202
+            // for (let i = 0; i < fraction.length; i++) {
203
+            // upper += (digit[Math.floor(price * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
204
+            // }
205
+            // upper = upper || '整';
206
+            // price = Math.floor(price);
207
+            // for (let i = 0; i < unit[0].length && price > 0; i++) {
208
+            // let p = '';
209
+            // for (let j = 0; j < unit[1].length && price > 0; j++) {
210
+            //     p = digit[price % 10] + unit[1][j] + p;
211
+            //     price = Math.floor(price / 10);
212
+            // }
213
+            // upper = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + upper;
214
+            // }
215
+            // this.zhongwen = head + upper.replace(/(零.)*零圆/, '圆').replace(/(零.)+/g, '零').replace(/^整$/, '零圆整')
216
+            // console.log('6666',head + upper.replace(/(零.)*零圆/, '圆').replace(/(零.)+/g, '零').replace(/^整$/, '零圆整'))
217
+            if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)){
218
+                return "数据非法";  //判断数据是否大于0
219
+            }
220
+
221
+            var unit = "仟佰拾亿仟佰拾万仟佰拾元角分", str = "";
222
+            n += "00";
223
+
224
+            var indexpoint = n.indexOf('.');  // 如果是小数,截取小数点前面的位数
225
+
226
+            if (indexpoint >= 0){
227
+
228
+                n = n.substring(0, indexpoint) + n.substr(indexpoint+1, 2);   // 若为小数,截取需要使用的unit单位
229
+            }
230
+
231
+            unit = unit.substr(unit.length - n.length);  // 若为整数,截取需要使用的unit单位
232
+            for (var i=0; i < n.length; i++){
233
+                str += "零壹贰叁肆伍陆柒捌玖".charAt(n.charAt(i)) + unit.charAt(i);  //遍历转化为大写的数字
234
+            }
235
+
236
+            this.zhongwen =  str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
237
+            console.log(this.zhongwen)
238
+        },
239
+        getTime(value, temp) {
240
+            if (value == 0) {
241
+                return ''
242
+            }
243
+            if (value != undefined) {
244
+                return uParseTime(value, temp)
245
+            }
246
+            return ''
247
+        },
248
+    },
249
+    watch:{
250
+        paramsObj:{//深度监听,可监听到对象、数组的变化
251
+            handler(val, oldVal){
252
+                let params = {
253
+                    order_id: val.order_id,
254
+                    patient_id: val.patient_id,
255
+                }
256
+                this.getInvoice(params)
257
+
258
+            },
259
+            deep:true
260
+        }
261
+    }
262
+}
263
+</script>

+ 2 - 1
src/xt_pages/hospitalStation/summary.vue 查看文件

@@ -193,7 +193,7 @@
193 193
                 width="1200px"
194 194
                 title="打印"
195 195
                 :visible.sync="invoiceVisible">
196
-            <invosuice-print ref="print" :invoiceParams='invoiceParams'></invosuice-print>
196
+            <invoicePrint ref="print" :invoiceParams='invoiceParams'></invoicePrint>
197 197
         </el-dialog>
198 198
         <!-- <el-dialog
199 199
                 class="centerDialog"
@@ -855,6 +855,7 @@
855 855
           setl_time: obj.setl_time
856 856
         }
857 857
         this.invoiceParams = paramsObj
858
+        console.log(this.invoiceParams,'999')
858 859
         this.invoiceVisible = true
859 860
       }
860 861
     }, created() {