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
2fc4d95330

+ 5 - 0
package-lock.json View File

@@ -6697,6 +6697,11 @@
6697 6697
         "esprima": "^2.6.0"
6698 6698
       }
6699 6699
     },
6700
+    "jsbarcode": {
6701
+      "version": "3.11.5",
6702
+      "resolved": "https://registry.nlark.com/jsbarcode/download/jsbarcode-3.11.5.tgz",
6703
+      "integrity": "sha1-OQs+/QJx81udaMe4r26XJEWWkBQ="
6704
+    },
6700 6705
     "jsbn": {
6701 6706
       "version": "0.1.1",
6702 6707
       "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",

+ 1 - 0
package.json View File

@@ -51,6 +51,7 @@
51 51
     "file-saver": "^1.3.8",
52 52
     "font-awesome": "4.7.0",
53 53
     "js-cookie": "2.2.0",
54
+    "jsbarcode": "^3.11.5",
54 55
     "jsonlint": "1.6.3",
55 56
     "jszip": "3.1.5",
56 57
     "mockjs": "1.0.1-beta3",

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

@@ -515,3 +515,22 @@ export function GetSummarySettle(params) {
515 515
     params: params
516 516
   })
517 517
 }
518
+
519
+
520
+export function GetLabelList(params) {
521
+  return request({
522
+    url: '/api/his/inspectionlist/get',
523
+    method: 'get',
524
+    params: params
525
+  })
526
+}
527
+
528
+
529
+
530
+export function GetLabelInfo(params) {
531
+  return request({
532
+    url: '/api/his/inspectioninfo/get',
533
+    method: 'get',
534
+    params: params
535
+  })
536
+}

+ 2 - 1
src/lang/zh.js View File

@@ -259,7 +259,8 @@ export default {
259 259
     hisTool:"HIS工具",
260 260
     hospitalCharges:'住院收费',
261 261
 
262
-    summary_tool:'项目消费明细汇总'
262
+    summary_tool:'项目消费明细汇总',
263
+    labelPrint:'标签打印',
263 264
   },
264 265
   navbar: {
265 266
     logOut: '退出登录',

+ 12 - 0
src/router/modules/dialysis.js View File

@@ -447,6 +447,18 @@ export default {
447 447
         noCache: true
448 448
       }
449 449
     },
450
+    {
451
+      path: '/dialysis/print/batch/fortyThree',
452
+      component: () =>
453
+        import('@/xt_pages/dialysis/batch_print/batch_print_order_fortyThree'),
454
+      hidden: true,
455
+      is_menu: false,
456
+      name: 'batch_print_order_fortyThree',
457
+      meta: {
458
+        title: '批量打印',
459
+        noCache: true
460
+      }
461
+    },
450 462
     {
451 463
       path: '/dialysis/print/batch/thirtyThree_one',
452 464
       component: () =>

+ 6 - 0
src/router/modules/hisTool.js View File

@@ -40,6 +40,12 @@ export default {
40 40
       name: 'outpatientSickRecord',
41 41
       meta: { title: 'summary_tool', noCache: true }
42 42
     },
43
+    {
44
+      path: '/hisTool/print',
45
+      component: () => import('@/xt_pages/outpatientTool/labelPrint'),
46
+      name: 'labelPrint',
47
+      meta: { title: 'labelPrint', noCache: true }
48
+    },
43 49
 
44 50
   ]
45 51
 }

File diff suppressed because it is too large
+ 1551 - 0
src/xt_pages/dialysis/batch_print/batch_print_order_fortyThree.vue


+ 12 - 0
src/xt_pages/dialysis/bloodPresssWatch.vue View File

@@ -289,6 +289,16 @@
289 289
           >批量打印</el-button
290 290
         >
291 291
       </template>
292
+      <template v-if="this.template_id == 43">
293
+        <el-button
294
+          size="small"
295
+          icon="el-icon-printer"
296
+          :disabled="selecting_schs.length == 0"
297
+          @click="batchPrintAction"
298
+          type="primary"
299
+          >批量打印</el-button
300
+        >
301
+      </template>
292 302
     </div>
293 303
     <div class="app-container">
294 304
       <!-- <div class="filter-container">
@@ -881,6 +891,8 @@ export default {
881 891
         this.$router.push({ path: "/dialysis/print/batch/forty" });
882 892
       } else if (this.template_id == 41) {
883 893
         this.$router.push({ path: "/dialysis/print/batch/fortyOne" });
894
+      } else if (this.template_id == 43) {
895
+        this.$router.push({ path: "/dialysis/print/batch/fortyThree" });
884 896
       }
885 897
     },
886 898
     batchPrintActionOne: function() {

+ 4 - 4
src/xt_pages/dialysis/template/DialysisPrintOrderFortyThree.vue View File

@@ -302,8 +302,8 @@
302 302
                   <td width="60" style="height:20px;line-height:20px">动脉压</td>
303 303
                   <td width="60" style="height:20px;line-height:20px">跨膜压</td>
304 304
                   <td width="60" style="height:20px;line-height:20px">温度</td>
305
-                  <td width="60" style="height:20px;line-height:20px" v-if="prescription.mode_id != 2">超滤率</td>
306
-                  <td width="60" style="height:20px;line-height:20px" v-if="prescription.mode_id != 2">超滤量</td>
305
+                  <td width="60" style="height:20px;line-height:20px">超滤率</td>
306
+                  <td width="60" style="height:20px;line-height:20px">超滤量</td>
307 307
                   <td width="60" style="height:20px;line-height:20px" v-if="prescription.mode_id == 2">置换率</td>
308 308
                   <td width="60" style="height:20px;line-height:20px" v-if="prescription.mode_id == 2">置换量</td>
309 309
                   <td width="60" style="height:20px;line-height:20px">血容量</td>
@@ -326,8 +326,8 @@
326 326
                   
327 327
                   <td>&nbsp;<span v-if="monitor.operate_time">{{ monitor.transmembrane_pressure ? monitor.transmembrane_pressure : "/" }}</span></td>
328 328
                   <td>&nbsp;<span v-if="monitor.operate_time">{{monitor.dialysate_temperature ? monitor.dialysate_temperature : '/'}}</span></td>
329
-                  <td v-if="prescription.mode_id != 2">&nbsp;<span v-if="monitor.operate_time">{{ monitor.ultrafiltration_rate ? monitor.ultrafiltration_rate : '/'}}</span></td>
330
-                  <td v-if="prescription.mode_id != 2">&nbsp;<span v-if="monitor.operate_time">{{ monitor.ultrafiltration_volume ? monitor.ultrafiltration_volume : "/" }}</span></td>
329
+                  <td>&nbsp;<span v-if="monitor.operate_time">{{ monitor.ultrafiltration_rate ? monitor.ultrafiltration_rate : '/'}}</span></td>
330
+                  <td>&nbsp;<span v-if="monitor.operate_time">{{ monitor.ultrafiltration_volume ? monitor.ultrafiltration_volume : "/" }}</span></td>
331 331
                   <td v-if="prescription.mode_id == 2">&nbsp;<span v-if="monitor.operate_time">{{ monitor.replacement_rate ? monitor.replacement_rate : '/'}}</span></td>
332 332
                   <td v-if="prescription.mode_id == 2">&nbsp;<span v-if="monitor.operate_time">{{ monitor.displacement_quantity ? monitor.displacement_quantity : "/" }}</span></td>
333 333
                   <td>&nbsp;<span v-if="monitor.operate_time">{{ monitor.accumulated_blood_volume ? monitor.accumulated_blood_volume : "/" }}</span></td>

+ 0 - 1
src/xt_pages/hospitalStation/summary.vue View File

@@ -31,7 +31,6 @@
31 31
                                     format="yyyy-MM-dd"
32 32
                                     value-format="yyyy-MM-dd"
33 33
                                     align="right"></el-date-picker>
34
-
35 34
                     <el-date-picker size="small" v-model="end_time" prefix-icon="el-icon-date"
36 35
                                     @change="handleEndTimeChange" :editable="false" :clearable="false"
37 36
                                     style="width: 196px;margin-right:10px;" type="date" placeholder="选择结束日期"

+ 267 - 0
src/xt_pages/outpatientTool/labelPrint.vue View File

@@ -0,0 +1,267 @@
1
+<template>
2
+    <div class="main-contain outpatientChargesManagement">
3
+        <div class="position">
4
+            <bread-crumb :crumbs='crumbs'></bread-crumb>
5
+        </div>
6
+        <div>
7
+            <div style="display: flex;justify-content: space-between;margin-bottom:10px;">
8
+                <div>
9
+                    <el-input size="small" style="width:150px;" v-model="keywords" @input="searchAction"
10
+                              @keyup.enter.native='searchAction'
11
+                              placeholder="请输入患者姓名"
12
+                              class="filter-item"/>
13
+                    <el-select size="small" v-model="item_type" placeholder="请选择"
14
+                               style="width:150px;margin-left:10px;" @change="changeItem">
15
+                        <el-option
16
+                                label="全部"
17
+                                value="0">
18
+                        </el-option>
19
+                        <el-option
20
+                                v-for="item,index in items"
21
+                                :key="index"
22
+                                :label="item.name"
23
+                                :value="item.id">
24
+                        </el-option>
25
+                    </el-select>
26
+                    <el-date-picker
27
+                            v-model="chargeDate"
28
+                            type="date"
29
+                            format="yyyy-MM-dd"
30
+                            value-format="yyyy-MM-dd"
31
+                            @change="changeDate"
32
+                    >
33
+                    </el-date-picker>
34
+                </div>
35
+            </div>
36
+            <el-table :data="tableData" border :row-style="{ color: '#303133' }" ref="table"
37
+                      :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
38
+                      highlight-current-row>
39
+
40
+                <el-table-column align="center" prop="name" label="患者名字">
41
+                    <template slot-scope="scope">{{ scope.row.patient_name }}</template>
42
+                </el-table-column>
43
+
44
+                <el-table-column align="center" prop="name" label="处方号">
45
+                    <template slot-scope="scope">{{scope.row.number}}</template>
46
+                </el-table-column>
47
+                <el-table-column align="center" prop="name" label="创建时间">
48
+                    <template slot-scope="scope">{{getTime(scope.row.record_date, '{y}-{m}-{d}')}}</template>
49
+                </el-table-column>
50
+                <el-table-column align="center" prop="name" label="创建医生">
51
+                    <template slot-scope="scope">{{scope.row.doctor_name}}</template>
52
+                </el-table-column>
53
+                <el-table-column align="center" prop="name" label="项目名称">
54
+                    <template slot-scope="scope">
55
+                        <div>{{scope.row.project_name}}</div>
56
+                    </template>
57
+                </el-table-column>
58
+
59
+                <el-table-column
60
+                        align="center"
61
+                        label="操作"
62
+                        width="180"
63
+                        class-name="small-padding fixed-width"
64
+                >
65
+                    <template slot-scope="scope">
66
+                        <el-tooltip class="item" effect="dark" content="打印" placement="top">
67
+                            <el-button
68
+                                    type="primary"
69
+                                    size="small"
70
+                                    icon="el-icon-edit-outline"
71
+                                    @click="Print(scope.row, scope.$index)"
72
+                            >
73
+                            </el-button>
74
+                        </el-tooltip>
75
+                    </template>
76
+                </el-table-column>
77
+
78
+
79
+            </el-table>
80
+            <el-pagination
81
+                    @size-change="handleSizeChange"
82
+                    @current-change="handleCurrentChange"
83
+                    :page-sizes="[10, 50, 100]"
84
+                    :page-size="10"
85
+                    background
86
+                    style="margin-top:20px;float: right"
87
+                    layout="total, sizes, prev, pager, next, jumper"
88
+                    :total="total"
89
+            >
90
+            </el-pagination>
91
+        </div>
92
+
93
+        <el-dialog title="打印" :visible.sync="labelVisible">
94
+            <div>
95
+                <el-row style="float:right;">
96
+                    <el-col :span="24">
97
+                        <el-button size="small" icon="el-icon-printer" type="primary" @click="printAction">打印
98
+                        </el-button>
99
+                    </el-col>
100
+                </el-row>
101
+                  <div id="sign" class="signPrint">
102
+                      <div style="display:flex;margin-bottom:10px;">
103
+                          <div style="margin-left:15px;">
104
+                              <div style="font-weight:bold;font-size:24px;">C</div>
105
+                              <div>{{getTime(current_ctime,'{m}-{d}')}}</div>
106
+                              <div>{{getTime(current_ctime,'{h}:{i}')}}</div>
107
+                          </div>
108
+                          <img style="width:300px;height:80px;margin-left:10px;" id="barcode">
109
+                      </div>
110
+                      <div style="margin-bottom:5px;">{{current_number}}</div>
111
+                      <div style="display:flex;">
112
+                          <div style="padding-left:20px;">{{current_project_name}}</div>
113
+                          <div style="font-size:24px;margin-left:20px;">{{current_name}}</div>
114
+                      </div>
115
+                  </div>
116
+            </div>
117
+            <div slot="footer" class="dialog-footer">
118
+                <el-button @click="labelVisible = false">取 消</el-button>
119
+                <el-button type="primary" @click="labelVisible = false">确 定</el-button>
120
+            </div>
121
+        </el-dialog>
122
+    </div>
123
+
124
+</template>
125
+
126
+
127
+<script>
128
+  import BreadCrumb from '@/xt_pages/components/bread-crumb'
129
+  import { GetLabelList } from '@/api/his/his'
130
+  import { uParseTime } from '@/utils/tools'
131
+  import SignPrint from '../dialysis/signPrint'
132
+  import JsBarcode from 'jsbarcode'
133
+
134
+  // import NewStatementPrint from './newStatementPrint'
135
+  const moment = require('moment')
136
+  export default {
137
+    components: {
138
+      SignPrint,
139
+      BreadCrumb
140
+
141
+    },
142
+    data() {
143
+      return {
144
+        current_ctime: 0,
145
+        current_number: '',
146
+        current_project_name: '',
147
+        current_name: '',
148
+
149
+        labelVisible: false,
150
+        crumbs: [
151
+          { path: false, name: 'HIS工具' },
152
+          { path: false, name: '标签打印' }
153
+        ],
154
+        detail_loading: false,
155
+        tempArr: [],
156
+        pos: 0,
157
+        page: 1,
158
+        limit: 10,
159
+        total: 0,
160
+        current_id: 0,
161
+        sameRowArr: [],
162
+        keywords: '',
163
+        tableData: [],
164
+        chargeDate: moment(new Date()).add('year', 0).format('YYYY-MM-DD'),
165
+        item_type: '0',
166
+        items: [
167
+          { id: 1, name: '已打印' },
168
+          { id: 2, name: '未打印' }
169
+        ]
170
+
171
+      }
172
+    },
173
+    methods: {
174
+      printAction: function() {
175
+        const style = '@media print { .sign{width:960px;margin: 0 auto;text-align: center;border-collapse: collapse;}.order_title_panl {text-align: center;.main_title {font-size: 18px;line-height: 40px;font-weight: 500;}}.dialysisTable tr{padding: 10px 0;}.dialysisTable th {color: #000;padding: 0;margin: 0;height: 30px;}.dialysisTable tr td {padding: 12px 0;}.subadvice_content {text-align: left;padding-left: 25px !important;padding-right: 5px !important;}.advice_content {text-align: left;padding-left: 5px !important;padding-right: 5px !important;padding: 15px 5px !important;} }'
176
+        printJS({
177
+          printable: 'sign',
178
+          type: 'html',
179
+          documentTitle: '  ',
180
+          style: style,
181
+          scanStyles: false
182
+        })
183
+      },
184
+      getTime(value, temp) {
185
+        if (value != undefined) {
186
+          return uParseTime(value, temp)
187
+        }
188
+        return ''
189
+      },
190
+      Print(row, index) {
191
+        this.labelVisible = true
192
+        this.current_ctime = row.ctime
193
+        this.current_number = row.number
194
+        this.current_project_name = row.project_name
195
+        this.current_name = row.patient_name
196
+
197
+        this.$nextTick(() => {
198
+          JsBarcode('#barcode', 'DY2020080400088', {
199
+            format: 'CODE39',
200
+            lineColor: '#000',
201
+            background: '#EBEEF5',
202
+            width: 2,
203
+            height: 100,
204
+            displayValue: false
205
+          })
206
+
207
+        });
208
+
209
+      },
210
+      handleCurrentChange(page) {
211
+        this.page = page
212
+        this.getList()
213
+
214
+      },
215
+
216
+      handleSizeChange(limit) {
217
+        this.limit = limit
218
+        this.getList()
219
+
220
+      },
221
+
222
+      changeDate() {
223
+        this.page = 1
224
+        this.limit = 10
225
+        this.getList()
226
+      },
227
+      changeItem() {
228
+        this.page = 1
229
+        this.limit = 10
230
+        this.getList()
231
+      },
232
+      searchAction() {
233
+        this.page = 1
234
+        this.limit = 10
235
+        this.getList()
236
+      },
237
+      getList() {
238
+        let params = {
239
+          record_date: this.chargeDate,
240
+          is_print: this.item_type,
241
+          keyword: this.keywords,
242
+          page: this.page,
243
+          limit: this.limit
244
+        }
245
+        GetLabelList(params).then(response => {
246
+          if (response.data.state == 0) {
247
+
248
+            this.$message.error(response.data.msg)
249
+            return false
250
+          } else {
251
+
252
+            this.tableData = response.data.data.labels
253
+            this.total = response.data.data.total
254
+
255
+          }
256
+
257
+        })
258
+      }
259
+    },
260
+    created() {
261
+      this.getList()
262
+
263
+    }, mounted() {
264
+
265
+    }
266
+  }
267
+</script>

+ 94 - 0
src/xt_pages/outpatientTool/signPrint.vue View File

@@ -0,0 +1,94 @@
1
+<template>
2
+    <div class="main-contain">
3
+        <div class="position">
4
+        <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+        <el-row style="float:right;">
6
+            <el-col :span="24">
7
+            <el-button size="small" icon="el-icon-printer" type="primary" @click="printAction">打印</el-button>
8
+            </el-col>
9
+        </el-row>
10
+        </div>
11
+        <div class="app-container" style="background-color: white;" v-show="show">
12
+            <div id="sign" class="signPrint">
13
+                <div style="display:flex;margin-bottom:10px;">
14
+                    <div style="margin-left:15px;">
15
+                        <div>C</div>
16
+                        <div>09-15</div>
17
+                        <div>09-15</div>
18
+                    </div>
19
+                    <div style="width:100px;">
20
+                        <img id="barcode">
21
+                    </div>
22
+                </div>
23
+                <div>6821737912312983</div>
24
+                <div style="display:flex;">
25
+                    <div style="padding-left:20px;">哈顺利到家啦收到了空间</div>
26
+                    <div style="font-size:24px;">哈顺</div>
27
+                </div>
28
+            </div>
29
+        </div>
30
+    </div>
31
+</template>
32
+<script>
33
+import BreadCrumb from '@/xt_pages/components/bread-crumb'
34
+import { getSchedualDoctors } from '@/api/advice'
35
+import { parseTime } from '@/utils'
36
+import print from 'print-js'
37
+import JsBarcode from 'jsbarcode'
38
+const moment = require('moment')
39
+export default {
40
+    components:{
41
+        BreadCrumb
42
+    },
43
+    data(){
44
+        return{
45
+            crumbs: [
46
+                { path: false, name: '标签打印' },
47
+                { path: false, name: '打印' }
48
+            ],
49
+        }
50
+    },
51
+    methods:{
52
+        printAction: function() {
53
+            const style = '@media print { .sign{width:960px;margin: 0 auto;text-align: center;border-collapse: collapse;}.order_title_panl {text-align: center;.main_title {font-size: 18px;line-height: 40px;font-weight: 500;}}.dialysisTable tr{padding: 10px 0;}.dialysisTable th {color: #000;padding: 0;margin: 0;height: 30px;}.dialysisTable tr td {padding: 12px 0;}.subadvice_content {text-align: left;padding-left: 25px !important;padding-right: 5px !important;}.advice_content {text-align: left;padding-left: 5px !important;padding-right: 5px !important;padding: 15px 5px !important;} }'
54
+
55
+            printJS({
56
+            printable: 'sign',
57
+            type: 'html',
58
+            documentTitle: '  ',
59
+            style: style,
60
+            scanStyles: false
61
+            })
62
+        },
63
+
64
+    },
65
+    created(){
66
+      JsBarcode('#barcode', 'DY2020080400088', {
67
+        format: 'CODE39',
68
+        lineColor: '#000',
69
+        background: '#EBEEF5',
70
+        width: 2,
71
+        height: 40,
72
+        displayValue: false
73
+      })
74
+    }
75
+}
76
+</script>
77
+
78
+
79
+<style rel="stylesheet/scss" lang="scss" scoped>
80
+.signPrint{
81
+    -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 60px rgba(0, 0, 0, 0.06) inset;
82
+    -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
83
+    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
84
+    margin-bottom: 20px;
85
+    padding: 20px 10px;
86
+}
87
+.sign{
88
+    width:960px;
89
+    margin: 0 auto;
90
+    text-align: center;
91
+    border-collapse: collapse;
92
+}
93
+</style>
94
+