yq1 1 year ago
parent
commit
0ea4e458b0

+ 7 - 4
src/xt_pages/outpatientCharges/invoicePrint.vue View File

@@ -14,8 +14,8 @@
14 14
         <div class='dialysisPage'>
15 15
           <div v-if="org_id != 10106 && org_id != 10215 && org_id != 4 && org_id != 10188 && org_id != 10217 && org_id != 10387&& org_id != 10210 && org_id != 10387 && org_id != 10480 " >
16 16
             <printOne v-if="org_id != 10088 && org_id != 10510 && org_id != 0" :paramsObj="invoiceParams"></printOne>
17
-            <printThree v-if="org_id == 10088 " :paramsObj="invoiceParams"></printThree>
18
-            <printfifteen v-if="org_id == 10510 || org_id == 0" :paramsObj="invoiceParams"></printfifteen>
17
+            <printThree v-if="org_id == 10088 || org_id == 10510" :paramsObj="invoiceParams"></printThree>
18
+            <!-- <printfifteen v-if="org_id == 10510 || org_id == 0" :paramsObj="invoiceParams"></printfifteen> -->
19 19
           </div>
20 20
           <printTwo v-if="org_id == 10106" :paramsObj="invoiceParams"></printTwo>
21 21
           <printFour v-if="org_id == 10215 || org_id == 4 " :paramsObj="invoiceParams"></printFour>
@@ -45,16 +45,19 @@
45 45
         <print-ten :paramsObj="invoiceParams"></print-ten>
46 46
       </div>
47 47
     </div>
48
-    <div class="app-container" v-if="org_id == 10567 ">
48
+
49
+    <!-- <div class="app-container" v-if="org_id == 10567 ">
49 50
       <div class='dialysisPage'>
50 51
         <printfourteen :paramsObj="invoiceParams"></printfourteen>
51 52
       </div>
52
-    </div>
53
+    </div> -->
54
+
53 55
     <!-- <div class="app-container" style="padding-top:30px;" v-if="org_id == 10188 || org_id == 0 ">
54 56
       <div class='dialysisPage'>
55 57
         <printthirteen  :paramsObj="invoiceParams"></printthirteen>
56 58
       </div>
57 59
     </div> -->
60
+
58 61
     <!-- <div class="app-container" style="padding-top:40px;" v-if="org_id == 0">
59 62
       <div class='dialysisPage'>
60 63
         <printthirteen :paramsObj="invoiceParams"></printthirteen>

+ 269 - 0
src/xt_pages/outpatientCharges/invoiceTemplate/printfourteen.vue View File

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