Kaynağa Gözat

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

XMLWAN 4 yıl önce
ebeveyn
işleme
bf963ca6d2
24 değiştirilmiş dosya ile 3467 ekleme ve 1052 silme
  1. 44 7
      src/api/his/his.js
  2. 8 0
      src/router/modules/integration.js
  3. 16 0
      src/router/modules/outpatientCharges.js
  4. 8 0
      src/router/modules/outpatientDoctorStation.js
  5. 81 0
      src/xt_pages/integration/medicalInsurance.vue
  6. 229 128
      src/xt_pages/outpatientCharges/components/prescriptionTable.vue
  7. 386 202
      src/xt_pages/outpatientCharges/outpatientChargesManagement.vue
  8. 1184 0
      src/xt_pages/outpatientCharges/print.vue
  9. 10 10
      src/xt_pages/outpatientCharges/summaryDetail.vue
  10. 107 0
      src/xt_pages/outpatientCharges/template/printOne.vue
  11. 159 0
      src/xt_pages/outpatientCharges/treatPrint.vue
  12. 146 0
      src/xt_pages/outpatientCharges/treatTemplate/printOne.vue
  13. 294 182
      src/xt_pages/outpatientDoctorStation/components/deskPrescription.vue
  14. 18 29
      src/xt_pages/outpatientDoctorStation/components/deskRecord.vue
  15. 13 7
      src/xt_pages/outpatientDoctorStation/components/medicalRecord.vue
  16. 115 38
      src/xt_pages/outpatientDoctorStation/components/prescriptionTable.vue
  17. 1 29
      src/xt_pages/outpatientDoctorStation/components/recordTemplateDetail.vue
  18. 3 1
      src/xt_pages/outpatientDoctorStation/components/saveRecordTemplate.vue
  19. 60 18
      src/xt_pages/outpatientDoctorStation/doctorDesk.vue
  20. 22 395
      src/xt_pages/outpatientDoctorStation/print.vue
  21. 329 0
      src/xt_pages/outpatientDoctorStation/recordPrint.vue
  22. 119 0
      src/xt_pages/outpatientDoctorStation/recordTemplate/printOne.vue
  23. 107 0
      src/xt_pages/outpatientDoctorStation/template/printOne.vue
  24. 8 6
      src/xt_pages/outpatientRegistration/index.vue

+ 44 - 7
src/api/his/his.js Dosyayı Görüntüle

@@ -63,16 +63,53 @@ export function createHisPrescription(data, params) {
63 63
 
64 64
 
65 65
 
66
+export function register(params) {
67
+  return request({
68
+    url: "/api/register/get",
69
+    method: "get",
70
+    params:params,
71
+  });
72
+}
73
+
74
+export function upload(params) {
75
+  return request({
76
+    url: "/api/upload/get",
77
+    method: "get",
78
+    params:params,
79
+  });
80
+}
81
+
82
+
83
+export function delHisPrescription(params) {
84
+  return request({
85
+    url: "/api/hisprescription/delete",
86
+    method: "post",
87
+    params:params,
88
+  });
89
+}
90
+
91
+export function delHisAdvice(params) {
92
+  return request({
93
+    url: "/api/advice/delete",
94
+    method: "post",
95
+    params:params,
96
+  });
97
+}
98
+
99
+export function delHisProject(params) {
100
+  return request({
101
+    url: "/api/project/delete",
102
+    method: "post",
103
+    params:params,
104
+  });
105
+}
106
+
107
+
108
+
109
+
66 110
 
67 111
 
68 112
 
69
-// export function createCaseHistory(params) {
70
-//   return request({
71
-//     url: "/api/doctorworkstation/casehistory/create",
72
-//     method: "post",
73
-//     params:params
74
-//   });
75
-// }
76 113
 
77 114
 
78 115
 

+ 8 - 0
src/router/modules/integration.js Dosyayı Görüntüle

@@ -31,6 +31,14 @@ export default {
31 31
     meta: {
32 32
       title: '质控集成'
33 33
     }
34
+  },
35
+  {
36
+    path: '/data/medicalInsurance',
37
+    component: () => import('@/xt_pages/integration/medicalInsurance'),
38
+    name: '医保绑定',
39
+    meta: {
40
+      title: '医保绑定'
41
+    }
34 42
   }
35 43
 
36 44
   ]

+ 16 - 0
src/router/modules/outpatientCharges.js Dosyayı Görüntüle

@@ -50,5 +50,21 @@ export default {
50 50
         name: 'summaryDetail',
51 51
         meta: { title: 'summaryDetail', noCache: true }
52 52
     },
53
+    {
54
+        path: '/outpatientCharges/treatPrint',
55
+        component: () => import('@/xt_pages/outpatientCharges/treatPrint'),
56
+        hidden: true,
57
+        is_menu: false,
58
+        name: 'outpatientChargesTreatPrint',
59
+        meta: { title: 'outpatientChargesTreatPrint', noCache: true }
60
+    },
61
+    {
62
+        path: '/outpatientCharges/print',
63
+        component: () => import('@/xt_pages/outpatientCharges/print'),
64
+        hidden: true,
65
+        is_menu: false,
66
+        name: 'outpatientChargesPrint',
67
+        meta: { title: 'outpatientChargesPrint', noCache: true }
68
+    },
53 69
   ]
54 70
 }

+ 8 - 0
src/router/modules/outpatientDoctorStation.js Dosyayı Görüntüle

@@ -38,5 +38,13 @@ export default {
38 38
         name: 'outpatientDoctorStationPrint',
39 39
         meta: { title: 'outpatientDoctorStationPrint', noCache: true }
40 40
     },
41
+    {
42
+        path: '/outpatientDoctorStation/recordPrint',
43
+        component: () => import('@/xt_pages/outpatientDoctorStation/recordPrint'),
44
+        hidden: true,
45
+        is_menu: false,
46
+        name: 'outpatientDoctorStationRecordPrint',
47
+        meta: { title: 'outpatientDoctorStationRecordPrint', noCache: true }
48
+    },
41 49
   ]
42 50
 }

+ 81 - 0
src/xt_pages/integration/medicalInsurance.vue Dosyayı Görüntüle

@@ -0,0 +1,81 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs='crumbs'></bread-crumb>
5
+    </div>
6
+    <div class="app-container medicalInsurance">
7
+        <p class="medicalTitle">绑定医疗机构编码</p>
8
+        <p>绑定医疗机构编码后,如系统能正常使用医保扣费,则代表医疗机构编码正确</p>
9
+        <p>此后请勿修改该编码,否则导致系统异常</p>
10
+        <p>此版本医保系统只能在</p>
11
+        <el-form ref="form" :model="form" label-width="120px" label-position="left" style="margin-top:40px;">
12
+            <el-form-item label="医疗机构编码:">
13
+                <el-input v-model.trim="form.dbhost" maxlength="200" style="width :200px;"></el-input>
14
+            </el-form-item>
15
+            <el-form-item label="医疗机构名称:">
16
+                <el-input v-model.trim="form.dbhost" maxlength="200" style="width :200px;"></el-input>
17
+            </el-form-item>
18
+            <el-form-item label="医疗机构VPN:">
19
+                <el-input v-model.trim="form.dbhost" maxlength="200" style="width :200px;"></el-input>
20
+                <span style="margin-left:5px;">提示:如果没有VPN,则使用<span class="defaultVPN">系统默认VPN</span></span>
21
+            </el-form-item>
22
+        </el-form>
23
+        <el-button type="primary">绑定</el-button>
24
+        <el-form ref="form" :model="form" label-width="120px" label-position="left" style="margin-top:40px;">
25
+            <el-form-item label="电子医保卡ID:">
26
+                <el-input v-model.trim="form.dbhost" maxlength="200" style="width :200px;"></el-input>
27
+            </el-form-item>
28
+            <el-form-item label="电子医保卡KEY:">
29
+                <el-input v-model.trim="form.dbhost" maxlength="200" style="width :200px;"></el-input>
30
+            </el-form-item>
31
+            <el-form-item label="渠道号:">
32
+                <el-input v-model.trim="form.dbhost" maxlength="200" style="width :200px;"></el-input>
33
+            </el-form-item>
34
+        </el-form>
35
+        <el-button type="primary">绑定电子卡</el-button>
36
+        <p class="medicalTitle" style="margin-top:20px;">医疗绑定步骤</p>
37
+        <p>1.目前诊所云医保系统只支持广东深圳市区域</p>
38
+        <p>2.绑定医疗机构编码(该编码从深圳医保局申请所得)</p>
39
+        <p>3.系统设置-医师信息;为对应的员工填写成员编码(该编码则是医保局下发的操作员编码)</p>
40
+        <p>4.药品管理-药品信息维护;为需要医保报销的药品设置医保编码</p>
41
+        <p>5.系统设置-检测项目设置;为需要医保报销的检查项目设置医保编码</p>
42
+        <p>6.患者使用医保挂号;挂号成功后到开处方界面从挂号人员列表选择挂号患者,开处方收费即可</p>
43
+    </div>
44
+  </div>
45
+</template>
46
+
47
+
48
+<script>
49
+import BreadCrumb from '@/xt_pages/components/bread-crumb'
50
+export default {
51
+    components:{
52
+        BreadCrumb
53
+    },
54
+    data(){
55
+        return{
56
+            crumbs: [
57
+                { path: false, name: '集成配置' },
58
+                { path: false, name: '医保绑定' }
59
+            ],
60
+            form:{}
61
+        }
62
+    }
63
+}
64
+</script>
65
+
66
+<style lang="scss" scoped>
67
+.medicalInsurance p{
68
+    line-height: 24px;
69
+}
70
+.medicalTitle{
71
+    font-size: 18px;
72
+    color:#409EFF;
73
+}
74
+.defaultVPN{
75
+    background: #409EFF;
76
+    padding: 2px 5px;
77
+    border-radius: 2px;
78
+    color:#fff;
79
+    margin-left:5px;
80
+}
81
+</style>

+ 229 - 128
src/xt_pages/outpatientCharges/components/prescriptionTable.vue Dosyayı Görüntüle

@@ -1,142 +1,243 @@
1 1
 <template>
2
-    <div class="prescriptionTable">
3
-        <el-table :data="preTableData" border style="width: 98%;" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
4
-            <el-table-column align="center" type="selection" width="40"></el-table-column>
5
-            <el-table-column align="center" type="index" width="40" label="序号"></el-table-column>
6
-            <el-table-column align="center" prop="name" label="名称">
7
-                <template slot-scope="scope">{{ scope.row.name }}</template>
8
-            </el-table-column>
9
-            <el-table-column align="center" prop="name" width="50" label="组套">
10
-                <template slot-scope="scope">
11
-                    <!-- <el-select v-model="value" placeholder="">
12
-                        <el-option
13
-                        v-for="item in newoptions"
14
-                        :key="item.value"
15
-                        :label="item.label"
16
-                        :value="item.value">
17
-                        </el-option>
18
-                    </el-select> -->
19
-                    <el-input v-model="input" placeholder=""></el-input>
20
-                </template>
21
-            </el-table-column>
22
-            <el-table-column align="center" prop="name" width="50" :label="'单次\n用量'">
23
-                <template slot-scope="scope">
24
-                    <el-input v-model="input" placeholder=""></el-input>
25
-                </template>
26
-            </el-table-column>
27
-            <el-table-column align="center" prop="name" width="50" label="用法">
28
-                <template slot-scope="scope">
29
-                    <!-- <el-select v-model="value" placeholder="">
30
-                        <el-option
31
-                        v-for="item in newoptions"
32
-                        :key="item.value"
33
-                        :label="item.label"
34
-                        :value="item.value">
35
-                        </el-option>
36
-                    </el-select> -->
37
-                    <el-input v-model="input" placeholder=""></el-input>
38
-                </template>
39
-            </el-table-column>
40
-            <el-table-column align="center" prop="name" width="50" label="频率">
41
-                <template slot-scope="scope">
42
-                    <!-- <el-select v-model="value" placeholder="">
43
-                        <el-option
44
-                        v-for="item in newoptions"
45
-                        :key="item.value"
46
-                        :label="item.label"
47
-                        :value="item.value">
48
-                        </el-option>
49
-                    </el-select> -->
50
-                    <el-input v-model="input" placeholder=""></el-input>
51
-                </template>
52
-            </el-table-column>
53
-            <el-table-column align="center" prop="name" width="50" label="天数">
54
-                <template slot-scope="scope">
55
-                    <!-- <el-select v-model="value" placeholder="">
56
-                        <el-option
57
-                        v-for="item in newoptions"
58
-                        :key="item.value"
59
-                        :label="item.label"
60
-                        :value="item.value">
61
-                        </el-option>
62
-                    </el-select> -->
63
-                    <el-input v-model="input" placeholder=""></el-input>
64
-                </template>
65
-            </el-table-column>
66
-            <el-table-column align="center" prop="name" width="100" label="总量">
67
-                <template slot-scope="scope">
68
-                    <div style="display:flex;">
69
-                        <el-input v-model="input" style="width:50%" placeholder=""></el-input>
70
-                        <!-- <el-select v-model="value" style="width:50%" placeholder="">
71
-                            <el-option
72
-                            v-for="item in newoptions"
73
-                            :key="item.value"
74
-                            :label="item.label"
75
-                            :value="item.value">
76
-                            </el-option>
77
-                        </el-select> -->
78
-                        <el-input v-model="input" style="width:50%" placeholder=""></el-input>
79
-                    </div>
80
-                </template>
81
-            </el-table-column>
82
-            <el-table-column align="center" prop="name" width="50" label="单价">
83
-                <template slot-scope="scope">
84
-                    <el-input v-model="scope.row.unitPrice" placeholder=""></el-input>
85
-                </template>
86
-            </el-table-column>
87
-            <el-table-column align="center" prop="name" width="50" label="备注">
88
-                <template slot-scope="scope">
89
-                    <!-- <el-autocomplete
90
-                    class="inline-input"
91
-                    v-model="state1"
92
-                    :fetch-suggestions="querySearch"
93
-                    placeholder=""
94
-                    @select="handleSelect"
95
-                    ></el-autocomplete> -->
96
-                </template>
97
-            </el-table-column>
98
-            <el-table-column align="center" width="40" prop="name" label="操作">
99
-                <template slot-scope="scope">
100
-                    <i class="el-icon-delete"></i>
101
-                </template>
102
-            </el-table-column>
103
-        </el-table>
104
-    </div>
2
+  <div class="prescriptionTable">
3
+    <el-table v-if="prescription.type == 1" :data="prescription.advices" border style="width: 99%;"
4
+              :row-style="{ color: '#303133' }"
5
+              :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
6
+      <el-table-column align="center" prop="name" label="名称">
7
+        <template slot-scope="scope">{{ scope.row.advice_name }}</template>
8
+      </el-table-column>
9
+
10
+      <el-table-column align="center" prop="name" width="50" :label="'单次\n用量'">
11
+        <template slot-scope="scope">
12
+          <el-input v-model="scope.row.single_dose" readonly></el-input>
13
+          <div> {{scope.row.min_unit}}</div>
14
+        </template>
15
+      </el-table-column>
16
+      <el-table-column align="center" prop="name" width="50" label="用法">
17
+        <template slot-scope="scope">
18
+          <el-select v-model="scope.row.delivery_way" readonly placeholder="请选择">
19
+            <el-option
20
+              v-for="item,index in drugways"
21
+              :key="index"
22
+              :label="item.name"
23
+              :value="item.name">
24
+            </el-option>
25
+          </el-select>
26
+        </template>
27
+      </el-table-column>
28
+      <el-table-column align="center" prop="name" width="50" label="频率">
29
+        <template slot-scope="scope">
30
+          <el-select v-model="scope.row.execution_frequency" readonly placeholder="请选择">
31
+            <el-option
32
+              v-for="item in efs"
33
+              :key="index"
34
+              :label="item.name"
35
+              :value="item.name">
36
+            </el-option>
37
+          </el-select>
38
+        </template>
39
+      </el-table-column>
40
+
41
+      <el-table-column align="center" prop="name" width="100" label="总量">
42
+        <template slot-scope="scope">
43
+          <div style="display:flex;">
44
+            <el-input v-model="scope.row.prescribing_number" style="width:50%" readonly placeholder=""></el-input>
45
+            <div> {{scope.row.min_unit}}</div>
46
+          </div>
47
+        </template>
48
+      </el-table-column>
49
+      <el-table-column align="center" prop="name" width="50" label="单价">
50
+        <template slot-scope="scope">
51
+          <el-input v-model="scope.row.price" placeholder="" readonly></el-input>
52
+        </template>
53
+      </el-table-column>
54
+      <el-table-column align="center" prop="name" width="50" label="备注">
55
+        <template slot-scope="scope">
56
+          <el-input v-model="scope.row.remark" style="width:50%" placeholder="" readonly></el-input>
57
+        </template>
58
+      </el-table-column>
59
+    </el-table>
60
+    <el-table v-if="prescription.type == 2" :data="prescription.project" border style="width: 99%;"
61
+              :row-style="{ color: '#303133' }"
62
+              :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
63
+
64
+      <el-table-column align="center" prop="project_name" label="名称">
65
+        <template slot-scope="scope">{{ scope.row.project.project_name }}</template>
66
+      </el-table-column>
67
+      <el-table-column align="center" prop="statistical_classification" width="50" label="组">
68
+        <template slot-scope="scope">
69
+          {{getGroup(scope.row.project.statistical_classification)}}
70
+        </template>
71
+      </el-table-column>
72
+      <el-table-column align="center" prop="single_dose" width="130" :label="'单次\n用量'">
73
+        <!--<template slot-scope="scope">-->
74
+          <!--&lt;!&ndash;<el-input v-model="scope.row.project.single_dose" placeholder="" readonly></el-input>&ndash;&gt;-->
75
+        <!--</template>-->
76
+      </el-table-column>
77
+      <el-table-column align="center" prop="delivery_way" width="130" label="用法">
78
+        <!--<template slot-scope="scope">-->
79
+          <!--<el-input v-model="scope.row.project.delivery_way" placeholder="" readonly></el-input>-->
80
+        <!--</template>-->
81
+      </el-table-column>
82
+      <el-table-column align="center" prop="execution_frequency" width="130" label="频率">
83
+        <!--<template slot-scope="scope">-->
84
+          <!--<el-input v-model="scope.row.project.execution_frequency" placeholder="" readonly></el-input>-->
85
+        <!--</template>-->
86
+      </el-table-column>
87
+      <el-table-column align="center" prop="number_days" width="130" label="天数">
88
+        <!--<template slot-scope="scope">-->
89
+          <!--<el-input v-model="scope.row.project.number_days" placeholder="" readonly></el-input>-->
90
+        <!--</template>-->
91
+      </el-table-column>
92
+      <el-table-column align="center" prop="total" width="100" label="总量">
93
+        <template slot-scope="scope">
94
+          <div style="display:flex;">
95
+            <el-input v-model="scope.row.project.total" style="width:50" placeholder="" readonly></el-input>
96
+          </div>
97
+        </template>
98
+      </el-table-column>
99
+      <el-table-column align="center" prop="name" width="50" label="单价">
100
+        <template slot-scope="scope">
101
+          <el-input v-model="scope.row.project.price" placeholder="" readonly></el-input>
102
+        </template>
103
+      </el-table-column>
104
+      <el-table-column align="center" prop="name" width="120" label="备注">
105
+        <!--<template slot-scope="scope">-->
106
+          <!--<el-input v-model="scope.row.project.remark" readonly></el-input>-->
107
+        <!--</template>-->
108
+      </el-table-column>
109
+    </el-table>
110
+  </div>
111
+
112
+
113
+
114
+
115
+
105 116
 </template>
106 117
 
107 118
 <script>
108
-export default {
109
-    props:{
110
-        preTableData:Array
119
+  import { getInitData } from '@/api/his/his'
120
+  import { getDictionaryDataConfig} from "@/utils/data";
121
+
122
+  export default {
123
+    props: {
124
+      prescription: Object
111 125
     },
112
-    data(){
113
-        return{
114
-            tableData: [],
115
-            newoptions: [{
116
-            value: '1',
117
-            label: '1'
118
-            }, {
119
-            value: '2',
120
-            label: '2'
121
-            }, {
122
-            value: '3',
123
-            label: '3'
124
-            }, {
125
-            value: '4',
126
-            label: '4'
127
-            }, {
128
-            value: '5',
129
-            label: '5'
130
-            }],
131
-            value:'1',
132
-            input:1
126
+    data() {
127
+      return {
128
+        drugways: [],
129
+        efs: []
130
+      }
131
+    }, mounted() {
132
+      getInitData().then(response => {
133
+        if (response.data.state == 0) {
134
+          this.$message.error(response.data.msg)
135
+          return false
136
+        } else {
137
+          this.drugways = response.data.data.drugways
138
+          this.efs = response.data.data.efs
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+        }
197
+      })
198
+    }, methods:  {
199
+      getGroup(id){
200
+        var name = ""
201
+        var statistics_category =  getDictionaryDataConfig('system','statistics_category')
202
+        console.log("2235",statistics_category)
203
+        for(let i=0;i<statistics_category.length;i++){
204
+          if(id == statistics_category[i].id){
205
+            name = statistics_category[i].name
206
+          }
133 207
         }
208
+        return name
209
+      },
210
+
211
+
134 212
     }
135
-}
213
+  }
136 214
 </script>
137 215
 
138 216
 <style lang="scss">
139 217
 .prescriptionTable{
218
+    .additionalBox{
219
+      margin-top: 20px;
220
+      display: flex;
221
+      flex-wrap: wrap;
222
+      .additionalOne{
223
+        margin-right:20px;
224
+        margin-bottom:10px;
225
+        display: flex;
226
+        align-items: center;
227
+        >span{
228
+          white-space: nowrap;
229
+          overflow: hidden;
230
+          text-overflow: ellipsis;
231
+          width:60px;
232
+          display: inline-block;
233
+          font-size: 14px;
234
+        }
235
+      }
236
+      .deleteIcon{
237
+        color:red;
238
+        margin-left:5px;
239
+      }
240
+    }
140 241
     .el-table th .cell, .el-table td .cell{
141 242
         padding: 0 2px;
142 243
         white-space: pre-line;

+ 386 - 202
src/xt_pages/outpatientCharges/outpatientChargesManagement.vue Dosyayı Görüntüle

@@ -5,100 +5,186 @@
5 5
         </div>
6 6
         <div class="app-container" style="display:flex;flex: 1;padding: 20px 20px 0px 20px;">
7 7
             <div class="mainLeft">
8
-                <div class="mainCell" style="justify-content: space-between;">
9
-                    <p>未就诊:<span>1</span>人</p>
10
-                    <p>已就诊:<span>0</span>人</p>
11
-                </div>
12
-                <div class="mainCell">
13
-                    <el-radio-group v-model="radio" @change="changeRadio">
14
-                        <el-radio :label=1>未就诊</el-radio>
15
-                        <el-radio :label=2>已就诊</el-radio>
16
-                        <el-radio :label=3>全部</el-radio>
17
-                    </el-radio-group>
18
-                </div>
8
+                <!--<div class="mainCell" style="justify-content: space-between;">-->
9
+                    <!--<p>未就诊:<span>1</span>人</p>-->
10
+                    <!--<p>已就诊:<span>0</span>人</p>-->
11
+                <!--</div>-->
12
+                <!--<div class="mainCell">-->
13
+                    <!--<el-radio-group v-model="radio" @change="changeRadio">-->
14
+                        <!--<el-radio :label=1>未就诊</el-radio>-->
15
+                        <!--<el-radio :label=2>已就诊</el-radio>-->
16
+                        <!--<el-radio :label=3>全部</el-radio>-->
17
+                    <!--</el-radio-group>-->
18
+                <!--</div>-->
19 19
                 <div class="mainCell" style="margin-bottom:10px;">
20 20
                     <el-input size="small" @keyup.enter.native='searchAction' v-model.trim="search_input" class="filter-item"/>
21 21
                     <el-button size="small" style="margin-left:10px;" class="filter-item" type="primary" @click="searchAction">搜索</el-button>
22 22
                 </div>
23
-                <div style="flex:1;overflow-y:auto;">
24
-                    <el-table :data="tableData" border  style="width: 100%;" :row-style="{ color: '#303133' }" 
25
-                    :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" 
26
-                    highlight-current-row ref="tab"
27
-                    @current-change="handleCurrentChange">
28
-                        <el-table-column align="center" prop="name" label="患者姓名">
29
-                            <template slot-scope="scope">{{ scope.row.name }}</template>
30
-                        </el-table-column>
31
-                        <el-table-column align="center" prop="name" label="就诊号" width="90">
32
-                            <template slot-scope="scope">3222</template>
33
-                        </el-table-column>
34
-                    </el-table>
35
-                </div>
23
+              <div style="flex:1;overflow-y:auto;">
24
+                <el-table :data="patientTableData" border style="width: 100%;" :row-style="{ color: '#303133' }"
25
+                          :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
26
+                          highlight-current-row ref="tab"
27
+                          @current-change="handleCurrentChange">
28
+                  <el-table-column align="center" prop="name" label="患者姓名">
29
+                    <template slot-scope="scope">{{ scope.row.patients.name }}</template>
30
+                  </el-table-column>
31
+                  <el-table-column align="center" prop="name" label="就诊号" width="90">
32
+                    <template slot-scope="scope">{{ scope.row.his_patient.number }}</template>
33
+                  </el-table-column>
34
+                </el-table>
35
+              </div>
36 36
             </div>
37 37
             <div class="mainRight">
38
-                <div class="mainCell" style="margin-bottom:10px;flex-direction: row-reverse;">
39
-                    <el-button size="small" @click="open(1)" type="primary" style="margin-left:10px;">打印处置单</el-button>
40
-                    <el-button size="small" @click="open(2)" type="primary">打印治疗单</el-button>
41
-                    <el-button size="small" @click="open(3)" type="primary">打印</el-button>
42
-                    <el-button size="small" @click="open(4)" type="primary">收费</el-button>
43
-                    <el-button size="small" v-if="state == '已收费'" @click="open(5)" type="primary">退费</el-button>
44
-                </div>
38
+
39
+              <div class="mainCell" style="margin-bottom:10px;flex-direction: row-reverse;">
40
+                <el-button size="small" @click="open(1)" type="primary" style="margin-left:10px;">打印处置单</el-button>
41
+                <el-button size="small" @click="open(2)" type="primary">打印治疗单</el-button>
42
+                <el-button size="small" @click="open(3)" type="primary">打印</el-button>
43
+                <el-button v-loading="loadingone" v-if="hisPatientInfo == null || hisPatientInfo.id == 0 " size="small" @click="open(6)"
44
+                           type="primary">挂号
45
+                </el-button>
46
+                <el-button v-loading="loadingtwo" v-if="hisPatientInfo != null && hisPatientInfo.id > 0 " size="small" @click="open(4)"
47
+                           type="primary">收费
48
+                </el-button>
49
+                <el-button size="small" @click="open(5)" type="primary">退费</el-button>
50
+              </div>
51
+
45 52
                 <div class="mainCenter">
46
-                    <div class="centerLeft">
47
-                        <div class="tabsBox">
48
-                            <el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button>
49
-                            <el-tabs class="preTabs" v-model="editableTabsValue" type="card" closable @tab-remove="removeTab" :before-leave="moreState">
50
-                                <el-tab-pane
51
-                                    v-for="(item, index) in editableTabs"
52
-                                    :key="index"
53
-                                    :label="item.title"
54
-                                    :name="item.name"
55
-                                >
56
-                                    <div class="RP">Rp</div>
57
-                                    <prescription-table :preTableData='preTableData'></prescription-table>
58
-                                </el-tab-pane>
59
-                                <el-tab-pane name="more" closable><span slot="label"><i class="el-icon-plus" @click="addTab"></i></span></el-tab-pane>
60
-                            </el-tabs>
61
-                            
62
-                        </div>
63
-                        <div class="costBox">
64
-                            <span>处方编号:2134348971237883</span>
65
-                            <span>当前处方总费用:<span style="color:red;">{{ total }}元</span></span>
66
-                            <span>{{ state }}</span>
67
-                        </div>
68
-                    </div>
69
-                    <div class="centerRight">
70
-                        <p class="centerRightTitle">人员信息</p>
71
-                        <div style="display:flex;justify-content: space-between;line-height:30px;">
72
-                            <span style="font-size:14px;">人员编码:</span>
73
-                            <span style="font-size:14px;">日期:{{start_time}}</span>
74
-                        </div>
75
-                        <ul class="basicUl">
76
-                            <li style="width:50%;">姓名:{{ patientInfo.name }}</li>
77
-                            <li style="width:50%;">性别:{{ patientInfo && patientInfo.gend == 1 ? '男' : "女" }}</li>
78
-                            <li style="width:50%;">年龄:{{ patientInfo.age }}</li>
79
-                            <li style="width:50%;">身高:</li>
80
-                            <li style="width:50%;">体重:</li>
81
-                            <li style="width:50%;">电话:</li>
82
-                            <li style="width:100%;">地址:</li>
83
-                            <li style="width:100%;">过敏史:</li>
84
-                        </ul>
85
-                        <p class="centerRightTitle">诊断信息</p>
86
-                        <div style="display:flex;justify-content: space-between;line-height:30px;">
87
-                            <span style="font-size:14px;">门诊编号:676273816287361</span>
88
-                        </div>
89
-                        <ul class="basicUl">
90
-                            <li style="width:50%;">医生:{{ doctor.name }}</li>
91
-                            <li style="width:50%;">科室:{{ doctor.department }}</li>
92
-                            <li style="width:100%;">费用:{{ doctor.total }}元</li>
93
-                            <li style="width:100%;">判断结果:</li>
94
-                            <li style="width:100%;">是否有传染病:</li>
95
-                            <li style="width:100%;">血压:</li>
96
-                        </ul>
97
-                    </div>
53
+                    <el-tabs class="settlementTabs" v-model="activeName" @tab-click="handleClick">
54
+                        <el-tab-pane label="日结" name="first">
55
+                            <div style="display:flex;height:100%;">
56
+                                <div class="centerLeft">
57
+                                    <div class="tabsBox">
58
+                                        <!--<el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button>-->
59
+                                        <el-tabs class="preTabs" v-model="editableTabsValue" type="card" closable >
60
+                                            <el-tab-pane
61
+                                                v-for="(item, index) in prescriptions"
62
+                                                :key="index"
63
+                                                :label="item.title"
64
+                                                :name="item.name"
65
+                                            >
66
+                                                <div class="RP">
67
+                                                    Rp
68
+                                                    <el-date-picker
69
+                                                    v-model="value1"
70
+                                                    type="date"
71
+                                                    placeholder="选择日期">
72
+                                                    </el-date-picker>
73
+                                                </div>
74
+                                            </el-tab-pane>
75
+                                          <prescription-table ref="prescription_tables" :prescription="curPrescriptions"></prescription-table>
76
+                                        </el-tabs>
77
+
78
+                                    </div>
79
+                                    <div class="costBox">
80
+                                      <span>当前处方总费用:<span style="color:red;">{{ getTotal() }}元</span></span>
81
+                                      <span>{{ state }}</span>
82
+                                    </div>
83
+                                </div>
84
+                                <div class="centerRight">
85
+                                    <p class="centerRightTitle">人员信息</p>
86
+                                    <div style="display:flex;justify-content: space-between;line-height:30px;">
87
+                                        <span style="font-size:14px;">人员编码:</span>
88
+                                        <span style="font-size:14px;">日期:{{record_date}}</span>
89
+                                    </div>
90
+                                    <ul class="basicUl">
91
+                                      <li style="width:50%;">姓名:{{patientInfo.name}}</li>
92
+                                      <li style="width:50%;">性别:{{patientInfo.gender == 1 ? '男' : '女' }}</li>
93
+                                      <li style="width:50%;">年龄:{{patientInfo.age }}</li>
94
+                                      <li style="width:50%;">身高:{{patientInfo.height}}</li>
95
+                                      <li style="width:50%;">体重:{{patientInfo.weight}}</li>
96
+                                      <li style="width:50%;">电话:{{patientInfo.phone}}</li>
97
+                                      <li style="width:100%;">地址:{{patientInfo.home_address}}</li>
98
+                                        <li style="width:100%;">过敏史:</li>
99
+                                    </ul>
100
+                                    <p class="centerRightTitle">诊断信息</p>
101
+                                    <div style="display:flex;justify-content: space-between;line-height:30px;">
102
+                                        <span style="font-size:14px;">门诊编号:676273816287361</span>
103
+                                    </div>
104
+                                    <ul class="basicUl">
105
+                                        <li style="width:50%;">医生:{{ doctor.name }}</li>
106
+                                        <li style="width:50%;">科室:{{ doctor.department }}</li>
107
+                                        <li style="width:100%;">费用:{{ doctor.total }}元</li>
108
+                                        <li style="width:100%;">判断结果:</li>
109
+                                        <li style="width:100%;">是否有传染病:</li>
110
+                                        <li style="width:100%;">血压:</li>
111
+                                    </ul>
112
+                                </div>
113
+                            </div>
114
+                        </el-tab-pane>
115
+                        <el-tab-pane label="月结" name="second">
116
+                            <div style="display:flex;height:100%;">
117
+                                <div class="centerLeft">
118
+                                    <div class="tabsBox">
119
+                                        <!--<el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button>-->
120
+                                        <el-tabs class="preTabs" v-model="editableTabsValue" type="card" closable>
121
+                                            <el-tab-pane
122
+                                                v-for="(item, index) in editableTabs"
123
+                                                :key="index"
124
+                                                :label="item.title"
125
+                                                :name="item.name"
126
+                                            >
127
+                                                <div class="RP">
128
+                                                    Rp
129
+                                                    <el-date-picker
130
+                                                    style="width:420px;"
131
+                                                    v-model="value1"
132
+                                                    type="daterange"
133
+                                                    range-separator="至"
134
+                                                    start-placeholder="开始日期"
135
+                                                    end-placeholder="结束日期">
136
+                                                    </el-date-picker>
137
+                                                </div>
138
+                                                <prescription-table :preTableData='preTableData'></prescription-table>
139
+                                            </el-tab-pane>
140
+                                            <!--<el-tab-pane name="more" closable><span slot="label"><i class="el-icon-plus" @click="addTab"></i></span></el-tab-pane>-->
141
+                                        </el-tabs>
142
+
143
+                                    </div>
144
+                                    <div class="costBox">
145
+                                        <span>处方编号:2134348971237883</span>
146
+                                        <span>当前处方总费用:<span style="color:red;">{{ total }}元</span></span>
147
+                                        <span>{{ state }}</span>
148
+                                    </div>
149
+                                </div>
150
+                                <div class="centerRight">
151
+                                    <p class="centerRightTitle">人员信息</p>
152
+                                    <div style="display:flex;justify-content: space-between;line-height:30px;">
153
+                                        <span style="font-size:14px;">人员编码:</span>
154
+                                        <span style="font-size:14px;">日期:{{start_time}}</span>
155
+                                    </div>
156
+                                    <ul class="basicUl">
157
+                                        <li style="width:50%;">姓名:{{ patientInfo.name }}</li>
158
+                                        <li style="width:50%;">性别:{{ patientInfo && patientInfo.gend == 1 ? '男' : "女" }}</li>
159
+                                        <li style="width:50%;">年龄:{{ patientInfo.age }}</li>
160
+                                        <li style="width:50%;">身高:</li>
161
+                                        <li style="width:50%;">体重:</li>
162
+                                        <li style="width:50%;">电话:</li>
163
+                                        <li style="width:100%;">地址:</li>
164
+                                        <li style="width:100%;">过敏史:</li>
165
+                                    </ul>
166
+                                    <p class="centerRightTitle">诊断信息</p>
167
+                                    <div style="display:flex;justify-content: space-between;line-height:30px;">
168
+                                        <span style="font-size:14px;">门诊编号:676273816287361</span>
169
+                                    </div>
170
+                                    <ul class="basicUl">
171
+                                        <li style="width:50%;">医生:{{ doctor.name }}</li>
172
+                                        <li style="width:50%;">科室:{{ doctor.department }}</li>
173
+                                        <li style="width:100%;">费用:{{ doctor.total }}元</li>
174
+                                        <li style="width:100%;">判断结果:</li>
175
+                                        <li style="width:100%;">是否有传染病:</li>
176
+                                        <li style="width:100%;">血压:</li>
177
+                                    </ul>
178
+                                </div>
179
+                            </div>
180
+                        </el-tab-pane>
181
+                    </el-tabs>
182
+
183
+
98 184
                 </div>
99 185
             </div>
100 186
         </div>
101
-        <additionalCharges ref='additionalCharges'></additionalCharges>
187
+        <!--<additionalCharges ref='additionalCharges'></additionalCharges>-->
102 188
     </div>
103 189
 </template>
104 190
 
@@ -111,6 +197,8 @@ import medicalInsuranceRefund from './components/medicalInsuranceRefund'
111 197
 import prescriptionTable from './components/prescriptionTable'
112 198
 import additionalCharges from './components/additionalCharges'
113 199
 import { getPatientList,getPatientInformation } from "@/api/project/project"
200
+import { getPatientInfo, getSchedulePatientList, register,upload } from '@/api/his/his'
201
+
114 202
 const moment = require('moment')
115 203
 export default {
116 204
     components:{
@@ -123,106 +211,170 @@ export default {
123 211
     },
124 212
     data(){
125 213
         return{
126
-            crumbs: [
127
-                { path: false, name: '门诊收费' },
128
-                { path: false, name: '门诊收费管理' }
129
-            ],
130
-            tableData: [],
131
-            editableTabsValue: '1',
132
-            editableTabs: [{
214
+          crumbs: [
215
+            { path: false, name: '门诊收费' },
216
+            { path: false, name: '门诊收费管理' }
217
+          ],
218
+          activeName:"",
219
+          curPrescriptions: {},
220
+          prescriptions: [],
221
+          record_date: '',
222
+          tableData: [],
223
+          editableTabsValue: '1',
224
+          loadingone:false,
225
+          editableTabs: [{
133 226
             title: '处方1',
134
-            name: '1',
135
-            }],
136
-            tabIndex: 1,
137
-
138
-            patientTableData:[{
139
-                name:'杨美英',
140
-                mdtrt_id:"1709946",
141
-            }],
142
-            patientInfo:{},
143
-            doctor:{},
144
-            total:0,
145
-            state:'未收费',
146
-            radio:1,
147
-            radioStatus:1,
148
-            search_input:"",
149
-            start_time:moment().locale('zh-cn').format('YYYY-MM-DD')
227
+            name: '1'
228
+          }],
229
+          tabIndex: 1,
230
+          hisPatientInfo: {},
231
+          loadingtwo:false,
232
+          patientTableData: [{
233
+            name: '杨美英',
234
+            mdtrt_id: '1709946'
235
+          }],
236
+          patientInfo: { id: 0 },
237
+          doctor: {},
238
+          total: 0,
239
+          state: '未收费',
240
+          radio: 1,
241
+          radioStatus: 1,
242
+          search_input: '',
243
+          start_time: moment().locale('zh-cn').format('YYYY-MM-DD')
150 244
         }
151 245
     },
152 246
     created(){
153
-       
154
-       //获取患者信息
155
-       this.getPatientList()
247
+      var nowDate = new Date()
248
+      var nowYear = nowDate.getFullYear()
249
+      var nowMonth = nowDate.getMonth() + 1
250
+      var nowDay = nowDate.getDate()
251
+      this.record_date =
252
+        nowYear +
253
+        '-' +
254
+        (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
255
+        '-' +
256
+        (nowDay < 10 ? '0' + nowDay : nowDay)
257
+
258
+      //获取患者信息
259
+      this.getPatientList()
156 260
     },
157 261
     methods:{
262
+      handleClick(){
263
+
264
+      },
265
+      searchAction(){
266
+
267
+
268
+      },
269
+      tabclickEvent(val) {
270
+        for (let i = 0; i < this.prescriptions.length; i++) {
271
+          if (this.prescriptions[i].name == val.name) {
272
+            this.curPrescriptions = {}
273
+            var temp = this.deepClone(this.prescriptions[i])
274
+            this.curPrescriptions = temp
275
+            console.log(this.curPrescriptions)
276
+          }
277
+        }
278
+      }, deepClone(source) {
279
+        if (!source && typeof source !== 'object') {
280
+          throw new Error('error arguments', 'shallowClone')
281
+        }
282
+        const targetObj = source.constructor === Array ? [] : {}
283
+        Object.keys(source).forEach((keys) => {
284
+          if (source[keys] && typeof source[keys] === 'object') {
285
+            targetObj[keys] = this.deepClone(source[keys])
286
+          } else {
287
+            targetObj[keys] = source[keys]
288
+          }
289
+        })
290
+        return targetObj
291
+      },
292
+      getTotal() {
293
+        var total = 0
294
+        console.log(this.prescriptions)
295
+        for (let i = 0; i < this.prescriptions.length; i++) {
296
+          if (this.prescriptions[i].advices != null) {
297
+            for (let a = 0; a < this.prescriptions[i].advices.length; a++) {
298
+              total = total + this.prescriptions[i].advices[a].price * this.prescriptions[i].advices[a].prescribing_number
299
+            }
300
+          }
301
+          if (this.prescriptions[i].project != null) {
302
+            for (let b = 0; b < this.prescriptions[i].project.length; b++) {
303
+              total = total + this.prescriptions[i].project[b].price * this.prescriptions[i].project[b].count
304
+            }
305
+          }
306
+        }
307
+        return total
308
+      },
158 309
         moreState(tab, event){
159 310
           if(tab == 'more'){
160 311
             return false;
161 312
           }
162 313
         },
163
-        open(index){
164
-            if(index == 1){
165
-            }else if(index == 2){
166
-                
167
-            }else if(index == 4){
168
-                this.state = '已收费'
169
-                this.$message({message: '收费成功',type: 'success'});
170
-            }else if(index == 5){
171
-                this.$message({message: '退费成功',type: 'success'});
314
+      open(index) {
315
+        if (index == 1) {
316
+        } else if (index == 2) {
317
+
318
+        } else if (index == 4) {
319
+
320
+          let params = {
321
+            'id': this.patientInfo.id,
322
+            'record_time': this.record_date
323
+          }
324
+          this.loadingtwo = true
325
+          upload(params).then(response => {
326
+            if (response.data.state == 0) {
327
+              this.$message.error(response.data.msg)
328
+              this.loadingtwo = false
329
+
330
+              return false
331
+
332
+            } else {
333
+              this.loadingtwo = false
334
+
172 335
             }
173
-            
174
-        },
175
-        addTab(targetName) {
176
-            let newTabName = ++this.tabIndex + '';
177
-            this.editableTabs.push({
178
-                title: '处方' + this.tabIndex,
179
-                name: newTabName,
180
-            });
181
-            this.editableTabsValue = newTabName;
182
-        },
183
-        removeTab(targetName) {
184
-            let tabs = this.editableTabs;
185
-            let activeName = this.editableTabsValue;
186
-            if (activeName === targetName) {
187
-            tabs.forEach((tab, index) => {
188
-                if (tab.name === targetName) {
189
-                let nextTab = tabs[index + 1] || tabs[index - 1];
190
-                if (nextTab) {
191
-                    activeName = nextTab.name;
192
-                }
193
-                }
194
-            });
336
+          })
337
+
338
+          this.state = '已收费'
339
+          this.$message({ message: '收费成功', type: 'success' })
340
+        } else if (index == 5) {
341
+          this.$message({ message: '退费成功', type: 'success' })
342
+        } else if (index == 6) {
343
+
344
+          if (this.patientInfo.id == 0) {
345
+            this.$message.error('请先选择要挂号的病人')
346
+            return
347
+          }
348
+          let params = {
349
+            'id': this.patientInfo.id,
350
+            'record_time': this.record_date
351
+          }
352
+          this.loadingone = true
353
+          register(params).then(response => {
354
+            if (response.data.state == 0) {
355
+              this.$message.error(response.data.msg)
356
+              this.loadingone = false
357
+
358
+              return false
359
+
360
+            } else {
361
+              this.loadingone = false
362
+              var his_info = response.data.data.his_info
363
+              this.hisPatientInfo = his_info
195 364
             }
196
-            
197
-            this.editableTabsValue = activeName;
198
-            this.editableTabs = tabs.filter(tab => tab.name !== targetName);
199
-        },
200
-        addCharges(){
201
-            this.$refs.additionalCharges.show()
202
-        },
365
+          })
366
+        }
367
+      },
368
+
369
+        // addCharges(){
370
+        //     this.$refs.additionalCharges.show()
371
+        // },
203 372
         choosePatient(){
204
-            let a = JSON.parse(localStorage.getItem("drugs"))
205
-            this.preTableData = a
206
-            this.preTableData.map(item => {
207
-                this.total += item.unitPrice
208
-            })
209
-            // this.patientInfo = {
210
-            //     certno:"440221195903290027",
211
-            //     psn_no:"0221201972",
212
-            //     gend:"2",
213
-            //     brdy:"1960-03-29",
214
-            //     naty:"01",
215
-            //     psn_cert_type:"01",
216
-            //     psn_name:"杨美英",
217
-            //     age:60.7
218
-            // }
219
-            // this.doctor = {
220
-            //     name:'刘志刚',
221
-            //     department:'血透中心',
222
-            //     total:20,
223
-            // }
373
+          console.log(id)
374
+          this.radioStatus = id
375
+          this.getPatientList()
224 376
         },
225
-       changeRadio(id){ 
377
+       changeRadio(id){
226 378
          console.log(id)
227 379
          this.radioStatus = id
228 380
          this.getPatientList()
@@ -230,27 +382,23 @@ export default {
230 382
 
231 383
         //患者列表
232 384
         getPatientList(){
233
-           getPatientList().then(response=>{
234
-               if(response.data.state == 1){
235
-                 var hisPatient = response.data.data.hisPatient
236
-                 console.log("his",hisPatient)
237
-                 var scheduleList = response.data.data.scheduleList
238
-                 hisPatient.push(...scheduleList)
239
-                 console.log("arrr",hisPatient)
240
-                 var tabArr = this.unique(hisPatient)
241
-                 console.log("22222",tabArr)
242
-                 if(this.radioStatus == 1){
243
-                    this.tableData = tabArr
244
-                    this.$refs.tab.setCurrentRow(this.tableData[0])
245
-                 }
246
-                 if(this.radioStatus == 2){
247
-                    var prescription = response.data.data.prescription
248
-                    this.tableData = prescription
249
-                    this.$refs.tab.setCurrentRow(this.tableData[0])
250
-                 }
251
-                
252
-               }  
253
-           })
385
+          let params = {
386
+            'record_date': this.record_date
387
+          }
388
+          getSchedulePatientList(params).then(response => {
389
+            if (response.data.state == 0) {
390
+              this.$message.error(response.data.msg)
391
+              return false
392
+            } else {
393
+              this.patientTableData = []
394
+              for (let i = 0; i < response.data.data.list.length; i++) {
395
+
396
+                if (response.data.data.list[i].prescription != null && response.data.data.list[i].prescription.length > 0) {
397
+                  this.patientTableData.push(response.data.data.list[i])
398
+                }
399
+              }
400
+            }
401
+          })
254 402
         },
255 403
 
256 404
         unique(arr) {
@@ -259,20 +407,40 @@ export default {
259 407
         },
260 408
         handleCurrentChange(val){
261 409
           console.log("val",val)
262
-          this.getPatientInformation(val.id)
410
+          this.getPatientInformation(val.patients.id)
263 411
         },
264
-        
412
+
265 413
         //获取患者的基本信息
266
-        getPatientInformation(id){
267
-            console.log(id)
268
-            getPatientInformation(id).then(response=>{
269
-               if(response.data.state == 1){
270
-                  var information = response.data.data.information
271
-                  console.log("information",information)
272
-                  this.patientInfo = information
273
-               }
274
-            })
414
+      getPatientInformation(id) {
415
+        let params = {
416
+          'record_date': this.record_date,
417
+          'patient_id': id
275 418
         }
419
+        getPatientInfo(params).then(response => {
420
+          if (response.data.state == 0) {
421
+            this.$message.error(response.data.msg)
422
+            return false
423
+          } else {
424
+            this.patientInfo = response.data.data.xt_info
425
+            this.hisPatientInfo = response.data.data.his_info
426
+            this.prescriptions = []
427
+            for (let i = 0; i < response.data.data.prescription.length; i++) {
428
+              var prescription = response.data.data.prescription[i]
429
+              let index = i + 1
430
+              let obj = {
431
+                name: '处方' + index,
432
+                advices: prescription.advices,
433
+                project: prescription.project,
434
+                type: response.data.data.prescription[i].type
435
+              }
436
+              this.prescriptions.push(obj)
437
+              this.curPrescriptions = this.prescriptions[0]
438
+
439
+            }
440
+            // this.$refs.prescriptions.setData(this.prescriptions)
441
+          }
442
+        })
443
+      }
276 444
     }
277 445
 }
278 446
 </script>
@@ -293,7 +461,7 @@ export default {
293 461
         .el-radio{
294 462
             margin-right:5px;
295 463
         }
296
-        
464
+
297 465
     }
298 466
     .mainCell{
299 467
         height:36px;
@@ -347,6 +515,17 @@ export default {
347 515
         display: flex;
348 516
         flex-direction: column;
349 517
         position: relative;
518
+        height: 100%;
519
+    }
520
+    .settlementTabs{
521
+        flex: 1;
522
+        .el-tab-pane{
523
+            // display: flex;
524
+            height:100%;
525
+        }
526
+        .el-tabs__content{
527
+            height:100%;
528
+        }
350 529
     }
351 530
     .centerRight{
352 531
         width: 300px;
@@ -387,5 +566,10 @@ export default {
387 566
         display: none;
388 567
     }
389 568
 }
569
+.settlementTabs{
570
+    .el-tabs__content{
571
+        height:90%;
572
+    }
573
+}
390 574
 </style>
391 575
 

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1184 - 0
src/xt_pages/outpatientCharges/print.vue


+ 10 - 10
src/xt_pages/outpatientCharges/summaryDetail.vue Dosyayı Görüntüle

@@ -7,7 +7,7 @@
7 7
             <div class="mainCenter">
8 8
                 <div class="centerLeft">
9 9
                     <div class="tabsBox">
10
-                        <el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button>
10
+                        <!--<el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button>-->
11 11
                         <el-tabs class="preTabs" v-model="editableTabsValue" type="card" closable @tab-remove="removeTab" :before-leave="moreState">
12 12
                             <el-tab-pane
13 13
                                 v-for="(item, index) in editableTabs"
@@ -23,48 +23,48 @@
23 23
                                     </el-table-column>
24 24
                                     <el-table-column align="center" prop="name" width="50" label="组套">
25 25
                                         <template slot-scope="scope">
26
-                                            
26
+
27 27
                                         </template>
28 28
                                     </el-table-column>
29 29
                                     <el-table-column align="center" prop="name" width="50" :label="'单次\n用量'">
30 30
                                         <template slot-scope="scope">
31
-                                            
31
+
32 32
                                         </template>
33 33
                                     </el-table-column>
34 34
                                     <el-table-column align="center" prop="name" width="50" label="用法">
35 35
                                         <template slot-scope="scope">
36
-                                            
36
+
37 37
                                         </template>
38 38
                                     </el-table-column>
39 39
                                     <el-table-column align="center" prop="name" width="50" label="频率">
40 40
                                         <template slot-scope="scope">
41
-                                            
41
+
42 42
                                         </template>
43 43
                                     </el-table-column>
44 44
                                     <el-table-column align="center" prop="name" width="50" label="天数">
45 45
                                         <template slot-scope="scope">
46
-                                            
46
+
47 47
                                         </template>
48 48
                                     </el-table-column>
49 49
                                     <el-table-column align="center" prop="name" width="100" label="总量">
50 50
                                         <template slot-scope="scope">
51
-                                            
51
+
52 52
                                         </template>
53 53
                                     </el-table-column>
54 54
                                     <el-table-column align="center" prop="name" width="50" label="单价">
55 55
                                         <template slot-scope="scope">
56
-                                            
56
+
57 57
                                         </template>
58 58
                                     </el-table-column>
59 59
                                     <el-table-column align="center" prop="name" width="50" label="备注">
60 60
                                         <template slot-scope="scope">
61
-                                            
61
+
62 62
                                         </template>
63 63
                                     </el-table-column>
64 64
                                 </el-table>
65 65
                             </el-tab-pane>
66 66
                         </el-tabs>
67
-                        
67
+
68 68
                     </div>
69 69
                     <div class="costBox">
70 70
                         <span>处方编号:2134348971237883</span>

+ 107 - 0
src/xt_pages/outpatientCharges/template/printOne.vue Dosyayı Görüntüle

@@ -0,0 +1,107 @@
1
+<template>
2
+    <div id='prescription-print' class="prescription-print">
3
+        <div class="printTitle">血液透析中心处方笺</div>
4
+        <div class="infoTitle">
5
+            <p>姓名:阿萨德</p>
6
+            <p>性别:男</p>
7
+            <p>年龄:12岁</p>
8
+        </div>
9
+        <div class="infoMain">
10
+            <p style="margin-bottom: 10px;">门诊号:111111111111</p>
11
+            <p style="margin-bottom: 10px;">科室:全科</p>
12
+            <p style="margin-bottom: 10px;">医保卡号:111111111111</p>
13
+            <p style="margin-bottom: 10px;">电话:111111111111</p>
14
+            <p>地址:加上来看待就卢萨卡的及拉丝机的了</p>
15
+            <p>临床诊断:拉胯手机上的拉丝机的</p>
16
+        </div>
17
+        <div class="prescriptionBox">
18
+            <p class="Rp">Rp:</p>
19
+            <div class="drugsBox">
20
+                <p class="drugsOne">重组人促红素(CHO细胞)注射液&nbsp;&nbsp;0.5毫升&nbsp;×&nbsp; 2支</p>
21
+                <p style="margin-left:100px;"><span>用法:0.5毫升</span>&nbsp;&nbsp;<span>一天一次</span>&nbsp;&nbsp;<span>静脉注射</span></p>
22
+            </div>
23
+            <div class="drugsBox">
24
+                <p class="drugsOne">重组人促红素(CHO细胞)注射液&nbsp;&nbsp;0.5毫升&nbsp;×&nbsp; 2支</p>
25
+                <p style="margin-left:100px;"><span>用法:0.5毫升</span>&nbsp;&nbsp;<span>一天一次</span>&nbsp;&nbsp;<span>静脉注射</span></p>
26
+            </div>
27
+        </div>
28
+        <div class="doctorBox">
29
+            <p>医师:高华</p>
30
+            <p>日期:2020-11-14 09:12:32</p>
31
+        </div>
32
+        <div class="actionBar">
33
+            <p>审核:</p>
34
+            <p>配对:</p>
35
+            <p>核对:</p>
36
+            <p>发药:</p>
37
+            <p>药费:</p>
38
+        </div>
39
+    </div>
40
+</template>
41
+
42
+
43
+
44
+<style lang="scss" scoped>
45
+.printTitle{
46
+    font-size: 22px;
47
+    text-align: center;
48
+    font-weight: bold;
49
+}
50
+.infoTitle{
51
+    display: flex;
52
+    border-bottom: 2px solid #000;
53
+    margin-top:10px;
54
+    line-height: 24px;
55
+    padding:0 10px;
56
+}
57
+.infoTitle p{
58
+    width: 200px;
59
+}
60
+.infoMain{
61
+    display: flex;
62
+    flex-wrap: wrap;
63
+    border-bottom: 2px solid #000;
64
+    padding:0 10px;
65
+}
66
+.infoMain p{
67
+    width: 50%;
68
+    line-height: 24px;
69
+}
70
+.prescriptionBox{
71
+    padding:0 10px;
72
+    height:600px;
73
+}
74
+.Rp{
75
+    font-size: 22px;
76
+    font-weight: bold;
77
+}
78
+.drugsBox{
79
+    padding-left: 40px;
80
+    margin-bottom: 10px;
81
+}
82
+.drugsBox p{
83
+    line-height: 30px;
84
+}
85
+.drugsOne{
86
+    line-height: 24px;
87
+}
88
+.drugsOne span{
89
+    margin-right: 20px;
90
+}
91
+.doctorBox{
92
+    display: flex;
93
+    justify-content: space-between;
94
+    padding:0 10px;
95
+    line-height: 24px;
96
+    border-bottom: 2px solid #000;
97
+}
98
+.actionBar{
99
+    display: flex;
100
+    justify-content: space-between; 
101
+    line-height: 24px;
102
+    padding:0 10px;
103
+}
104
+.actionBar p{
105
+    width:150px;
106
+}
107
+</style>

+ 159 - 0
src/xt_pages/outpatientCharges/treatPrint.vue Dosyayı Görüntüle

@@ -0,0 +1,159 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+       <template>
6
+        <el-button
7
+          :loading="loading"
8
+          size="small"
9
+          icon="el-icon-printer"
10
+          @click="printThisPage"
11
+          type="primary"
12
+          >打印</el-button
13
+        >
14
+      </template>
15
+    </div>
16
+    <div class="app-container" style="min-height:0;">
17
+        <div class='dialysisPage' style="flex: 1;height: calc(100vh - 178px);overflow-x:auto;::-webkit-scrollbar:height:15px">
18
+            <printOne v-bind:childResponse="childResponse"></printOne>
19
+        </div>
20
+    </div>
21
+  </div>
22
+</template>
23
+
24
+<script>
25
+
26
+import {
27
+  getDialysisRecordInitData,
28
+  getDialysisSchedules
29
+} from "@/api/dialysis_record";
30
+import { parseTime } from "@/utils";
31
+import { getDialysisRecord } from "@/api/dialysis";
32
+import { getDataConfig } from "@/utils/data";
33
+import { jsGetAge, uParseTime } from "@/utils/tools";
34
+// import LabelBox from "./printItem/LabelBox";
35
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
36
+import print from "print-js";
37
+import printOne from "./treatTemplate/printOne"
38
+export default {
39
+  name: "dialysisPrintOrder",
40
+  components: {
41
+    BreadCrumb,
42
+    printOne
43
+  },
44
+  data() {
45
+    return {
46
+      crumbs: [
47
+        { path: false, name: "透析管理" },
48
+        { path: false, name: "打印单" }
49
+      ],
50
+      childResponse: {},
51
+      
52
+
53
+    };
54
+  },
55
+  methods: {
56
+    getAdminUser(id) {
57
+      if (id == 0) {
58
+        return "";
59
+      }
60
+      if (id == undefined) {
61
+        return "";
62
+      }
63
+      for (let i = 0; i < this.adminUser.length; i++) {
64
+        if (this.adminUser[i].id == id) {
65
+          return this.adminUser[i].name;
66
+        }
67
+      }
68
+    },
69
+    getTime(value, temp) {
70
+      if (value == 0) {
71
+        return "";
72
+      }
73
+      if (value != undefined) {
74
+        return uParseTime(value, temp);
75
+      }
76
+      return "";
77
+    },
78
+    printThisPage() {
79
+      var ptime = Math.round(new Date().getTime() / 1000);
80
+      this.print_time = uParseTime(ptime, "{y}-{m}-{d} {h}:{i}");
81
+
82
+      const style =
83
+        '@media print {.printTitle{font-size: 22px;text-align: center;font-weight: bold;}.infoMain{display: flex;flex-wrap: wrap;padding:0 10px;margin-top:10px;}.infoMain .infoP{width: 33%;line-height: 1px;}.chargeBox{border: 1px solid #000;}.chargeUl{display:flex;justify-content: space-between;text-align: center;}.chargeUl p{line-height: 1px;}.chargeP{line-height: 1px;padding-bottom:16px;}.moneyBox{display: flex;justify-content: space-between;padding: 0 10px;background: #eeeeee;-webkit-print-color-adjust:exact;-moz-print-color-adjust:exact;-ms-print-color-adjust:exact;print-color-adjust:exact;height: 40px;align-items: center;border:1px solid #000; border-top:none}.actionBar{display: flex;justify-content: space-between; line-height: 24px;padding:0 10px;}.actionBar p{width:150px;}}';
84
+        printJS({
85
+            printable: "prescription-print",
86
+            type: "html",
87
+            style: style,
88
+            scanStyles: false
89
+        });
90
+
91
+      // if (this.org_template_info.template_id == 1) {
92
+      //   printJS({
93
+      //     printable: "dialysis-print-box",
94
+      //     type: "html",
95
+      //     style: style,
96
+      //     scanStyles: false
97
+      //   });
98
+      // }
99
+    },
100
+  },
101
+  created() {
102
+  },
103
+};
104
+</script>
105
+
106
+<style lang="scss" scoped>
107
+.printTitle{
108
+    font-size: 22px;
109
+    text-align: center;
110
+    font-weight: bold;
111
+}
112
+.infoMain{
113
+    display: flex;
114
+    flex-wrap: wrap;
115
+    border-bottom: 2px solid #000;
116
+    padding:0 10px;
117
+}
118
+.infoMain .infoP{
119
+    width: 33%;
120
+    line-height: 24px;
121
+}
122
+.prescriptionBox{
123
+    padding:0 10px;
124
+    height:600px;
125
+}
126
+.Rp{
127
+    font-size: 22px;
128
+    font-weight: bold;
129
+}
130
+.drugsBox{
131
+    padding-left: 40px;
132
+    margin-bottom: 10px;
133
+}
134
+.drugsBox p{
135
+    line-height: 30px;
136
+}
137
+.drugsOne{
138
+    line-height: 24px;
139
+}
140
+.drugsOne span{
141
+    margin-right: 20px;
142
+}
143
+.doctorBox{
144
+    display: flex;
145
+    justify-content: space-between;
146
+    padding:0 10px;
147
+    line-height: 24px;
148
+    border-bottom: 2px solid #000;
149
+}
150
+.actionBar{
151
+    display: flex;
152
+    justify-content: space-between; 
153
+    line-height: 24px;
154
+    padding:0 10px;
155
+}
156
+.actionBar p{
157
+    width:150px;
158
+}
159
+</style>

+ 146 - 0
src/xt_pages/outpatientCharges/treatTemplate/printOne.vue Dosyayı Görüntüle

@@ -0,0 +1,146 @@
1
+<template>
2
+    <div id='prescription-print' class="prescription-print">
3
+        <div class="printTitle">血液透析中心医药费收据及收费项目清单</div>
4
+        <div class="infoMain">
5
+            <p class="infoP">医院(药店)编号:H8D50</p>
6
+            <p class="infoP">名称:血液透析中心</p>
7
+            <p class="infoP">医生工号:H8D50</p>
8
+            <p class="infoP">门诊流水号:H8D50</p>
9
+            <p class="infoP">科别:全科</p>
10
+            <p class="infoP">处方单据号:H8D50</p>
11
+            <p class="infoP">姓名:张三</p>
12
+            <p class="infoP">医疗账号:98798798</p>
13
+            <p class="infoP">医疗类别:普通</p>
14
+        </div>
15
+        <div class="chargeBox">
16
+            <div style="display:flex;justify-content: space-between;border-bottom:1px solid #000;">
17
+                <div class="chargeUl" style="width:20%;">
18
+                    <p style="width:50%;border-right:1px solid #000;">费用类型</p>
19
+                    <p style="width:50%;border-right:1px solid #000;">金额</p>
20
+                </div>
21
+                <div class="chargeUl" style="width:80%;">
22
+                    <p style="width:40%;border-right:1px solid #000;">明细名称</p>
23
+                    <p style="width:15%;border-right:1px solid #000;">规格</p>
24
+                    <p style="width:15%;border-right:1px solid #000;">数量</p>
25
+                    <p style="width:15%;border-right:1px solid #000;">单价</p>
26
+                    <p style="width:15%;">金额</p>
27
+                </div>
28
+            </div>
29
+            <div style="display:flex;justify-content: space-between;">
30
+                <div style="width:20%;">
31
+                    <div class="chargeUl" v-for="item in 3">
32
+                        <p style="width:50%;">材料费</p>
33
+                        <p style="width:50%;">122</p>
34
+                    </div>
35
+                    <div class="chargeUl" style="border-top:1px solid #000;"> 
36
+                        <p style="width:50%;">费用合计</p>
37
+                        <p style="width:50%;">123</p>
38
+                    </div>
39
+                    <div class="chargeUl" style="border-top:1px solid #000;">
40
+                        <p style="width:50%;">记账支付</p>
41
+                        <p style="width:50%;">123</p>
42
+                    </div>
43
+                    <div class="chargeUl" style="border-top:1px solid #000;">
44
+                        <p style="width:50%;">个人账号</p>
45
+                        <p style="width:50%;">123</p>
46
+                    </div>
47
+                    <div class="chargeUl" style="border-top:1px solid #000;border-bottom:1px solid #000;">
48
+                        <p style="width:50%;">现金支付</p>
49
+                        <p style="width:50%;">123</p>
50
+                    </div>
51
+                </div>
52
+                <div style="width:80%;display:flex;height:600px;">
53
+                    <!-- <ul class="chargeUl" v-for="item in 4">
54
+                        <li style="width:20%;">血压透析器(进口)FFX60</li>
55
+                        <li style="width:20%;">次</li>
56
+                        <li style="width:20%;">1个</li>
57
+                        <li style="width:20%;">123</li>
58
+                        <li style="width:20%;">123</li>
59
+                    </ul> -->
60
+                    <div style="border-left:1px solid #000;border-right:1px solid #000;width:40%;text-align:center;">
61
+                        <p v-for="item in 4" class="chargeP">血压透析器(进口)FFX60</p>
62
+                    </div>
63
+                    <div style="border-right:1px solid #000;width:15%;text-align:center;">
64
+                        <p v-for="item in 4" class="chargeP">次</p>
65
+                    </div>
66
+                    <div style="border-right:1px solid #000;width:15%;text-align:center;">
67
+                        <p v-for="item in 4" class="chargeP">1个</p>
68
+                    </div>
69
+                    <div style="border-right:1px solid #000;width:15%;text-align:center;">
70
+                        <p v-for="item in 4" class="chargeP">123</p>
71
+                    </div>
72
+                    <div style="width:15%;text-align:center;">
73
+                        <p v-for="item in 4" class="chargeP">123</p>
74
+                    </div>
75
+                </div>
76
+            </div>
77
+            
78
+        </div>
79
+        <div class="moneyBox">
80
+            <p>实收金:111</p>
81
+            <p>记账前金额:111</p>
82
+            <p>扣款金额:111</p>
83
+            <p>记账后金额:111</p>
84
+            <p>找赎金:111</p>
85
+        </div>
86
+        <div class="actionBar">
87
+            <p>收费员:</p>
88
+            <p>日期:</p>
89
+        </div>
90
+    </div>
91
+</template>
92
+
93
+
94
+
95
+<style lang="scss" scoped>
96
+.printTitle{
97
+    font-size: 22px;
98
+    text-align: center;
99
+    font-weight: bold;
100
+}
101
+.infoMain{
102
+    display: flex;
103
+    flex-wrap: wrap;
104
+    padding:0 10px;
105
+    margin-top:10px;
106
+}
107
+.infoMain .infoP{
108
+    width: 33%;
109
+    line-height: 24px;
110
+}
111
+.chargeBox{
112
+    border: 1px solid #000;
113
+}
114
+.chargeUl{
115
+    display:flex;
116
+    justify-content: space-between;
117
+    text-align: center;
118
+}
119
+.chargeUl p{
120
+    height:40px;
121
+    line-height: 40px;
122
+}
123
+.chargeP{
124
+    height:40px;
125
+    line-height: 40px;
126
+}
127
+.moneyBox{
128
+    display: flex;
129
+    justify-content: space-between;
130
+    padding: 0 10px;
131
+    background: #eee;
132
+    height: 40px;
133
+    align-items: center;
134
+    border:1px solid #000;
135
+    border-top:none
136
+}
137
+.actionBar{
138
+    display: flex;
139
+    justify-content: space-between; 
140
+    line-height: 24px;
141
+    padding:0 10px;
142
+}
143
+.actionBar p{
144
+    width:150px;
145
+}
146
+</style>

+ 294 - 182
src/xt_pages/outpatientDoctorStation/components/deskPrescription.vue Dosyayı Görüntüle

@@ -11,7 +11,7 @@
11 11
     <div class="backColor"></div>
12 12
     <div class="mainCenter">
13 13
       <div class="centerLeft">
14
-        <el-form :model="form"  ref="form" label-width="80px">
14
+        <el-form :model="form" ref="form" label-width="80px">
15 15
           <el-form-item label="姓名:" prop="name">
16 16
             <el-input v-model="patientInfo.name" placeholder="" readonly></el-input>
17 17
           </el-form-item>
@@ -21,6 +21,16 @@
21 21
           <el-form-item label="挂号类型: " prop="name">
22 22
             <el-input v-model="hisPatientInfo.register_type" placeholder="" readonly></el-input>
23 23
           </el-form-item>
24
+          <el-form-item label="挂号类型: " prop="name">
25
+            <el-select style="margin-right:5px;" v-model="doctorValue" placeholder="">
26
+              <el-option
27
+                v-for="(item,index) in doctors"
28
+                :key="index"
29
+                :label="item.user_name"
30
+                :value="item.id">
31
+              </el-option>
32
+            </el-select>
33
+          </el-form-item>
24 34
           <el-form-item label="诊断:" prop="name">
25 35
             <el-autocomplete
26 36
               style="width:100%;"
@@ -30,7 +40,7 @@
30 40
               placeholder="请输入内容"
31 41
             ></el-autocomplete>
32 42
           </el-form-item>
33
-          <el-form-item label="过敏及特殊病史: " prop="name">
43
+          <el-form-item label="特殊病史: " prop="name">
34 44
             <el-autocomplete
35 45
               style="width:100%;"
36 46
               class="inline-input"
@@ -42,7 +52,7 @@
42 52
         </el-form>
43 53
         <div class="tabsBox">
44 54
 
45
-          <el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button>
55
+          <!--<el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button>-->
46 56
           <el-tabs class="preTabs" v-model="editableTabsValue" type="card" closable @tab-remove="removeTab"
47 57
                    :before-leave="moreState" @tab-click="tabclickEvent">
48 58
             <el-tab-pane
@@ -56,7 +66,8 @@
56 66
             <el-tab-pane name="more" closable><span slot="label"><i class="el-icon-plus" @click="addTab"></i></span>
57 67
             </el-tab-pane>
58 68
             <div class="RP">Rp</div>
59
-            <prescription-table ref="prescription_tables" :prescription="curPrescriptions" :preDrugs="preDrugs" :activeType="customTabIndex"></prescription-table>
69
+            <prescription-table ref="prescription_tables" :prescription="curPrescriptions" :preDrugs="preDrugs"
70
+                                :activeType="customTabIndex"></prescription-table>
60 71
           </el-tabs>
61 72
 
62 73
         </div>
@@ -80,7 +91,7 @@
80 91
             </el-option>
81 92
           </el-select>
82 93
           <span>总计:</span>
83
-          <span style="color:red;">{{ total }}</span>元
94
+          <span style="color:red;">{{ getTotal() }}</span>元
84 95
         </div>
85 96
       </div>
86 97
       <div class='centerRight'>
@@ -89,22 +100,23 @@
89 100
           <p :class="rightTab == 2 ? 'activeP' : ''" @click="clickTab(2)">项目</p>
90 101
         </div>
91 102
         <template>
92
-          <div style="margin-top:5px;">
93
-            <el-input style="width:50%;" v-model="input" placeholder=""></el-input>
94
-            <el-select style="float: right;width: 49%;" v-model="value" placeholder="">
95
-              <el-option
96
-                v-for="item in options"
97
-                :key="item.value"
98
-                :label="item.label"
99
-                :value="item.value">
100
-              </el-option>
101
-            </el-select>
102
-          </div>
103
+          <!--<div style="margin-top:5px;">-->
104
+          <!--<el-input style="width:50%;" v-model="input" placeholder=""></el-input>-->
105
+          <!--<el-select style="float: right;width: 49%;" v-model="value" placeholder="">-->
106
+          <!--<el-option-->
107
+          <!--v-for="item in options"-->
108
+          <!--:key="item.value"-->
109
+          <!--:label="item.label"-->
110
+          <!--:value="item.value">-->
111
+          <!--</el-option>-->
112
+          <!--</el-select>-->
113
+          <!--</div>-->
103 114
           <div style="height:84%;overflow-y: auto;margin-bottom: 60px;" v-show="showOne">
104 115
             <el-tabs class="rightTabs" v-model="activeName">
105 116
               <el-tab-pane label="药品列表" name="1">
106
-                <el-table :data="drugs" border @select='selectDrugs' style="width: 100%;"
117
+                <el-table ref="multipleTable" :data="drugs" border @select='selectDrugs' style="width: 100%;"
107 118
                           :row-style="{ color: '#303133' }"
119
+                          @select-all="changeAllGoodInfoTableData"
108 120
                           :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
109 121
                           highlight-current-row>
110 122
                   <el-table-column align="center" type="selection" width="40"></el-table-column>
@@ -121,7 +133,8 @@
121 133
 
122 134
               </el-tab-pane>
123 135
               <el-tab-pane label="医嘱模板" name="2">
124
-                <el-table :data="advices_template" border style="width: 100%;" :row-style="{ color: '#303133' }"
136
+                <el-table ref="multipleTableTwo" :data="advices_template" border style="width: 100%;"
137
+                          :row-style="{ color: '#303133' }"
125 138
                           :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
126 139
                           highlight-current-row>
127 140
                   <el-table-column align="center" type="selection" width="40"></el-table-column>
@@ -142,13 +155,14 @@
142 155
             </el-tabs>
143 156
           </div>
144 157
 
145
-         <div style="height:84%;overflow-y: auto;margin-bottom: 60px;" v-show="showTwo">
158
+          <div style="height:84%;overflow-y: auto;margin-bottom: 60px;" v-show="showTwo">
146 159
             <el-tabs class="rightTabs" v-model="activeName">
147 160
               <el-tab-pane label="项目列表" name="1">
148
-                 <el-table :data="tabProject" border @select='selectChange' style="width: 100%;"
161
+                <el-table ref="tables" :data="tabProject" border @select='selectChange' style="width: 100%;"
149 162
                           :row-style="{ color: '#303133' }"
163
+                          @select-all="changeAllGoodInfoTableDataTwo"
150 164
                           :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
151
-                          highlight-current-row >
165
+                          highlight-current-row>
152 166
                   <el-table-column align="center" type="selection" width="40"></el-table-column>
153 167
                   <el-table-column align="center" prop="name" label="名称">
154 168
                     <template slot-scope="scope">{{ scope.row.project_name }}</template>
@@ -165,7 +179,7 @@
165 179
                 <el-table :data="tabPrjectTeam" border style="width: 100%;" :row-style="{ color: '#303133' }"
166 180
                           :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
167 181
                           highlight-current-row
168
-                         @select='selectTeam'>
182
+                          @select='selectTeam'>
169 183
                   <el-table-column align="center" type="selection" width="40"></el-table-column>
170 184
                   <el-table-column align="center" prop="name" label="名称">
171 185
                     <template slot-scope="scope">{{scope.row.project_team}}</template>
@@ -204,21 +218,34 @@
204 218
 
205 219
 
206 220
 <script>
207
-  import { getPatientInfo, getSchedulePatientList, getInitData,createHisPrescription } from '@/api/his/his'
208
-  import { getDictionaryDataConfig} from "@/utils/data";
221
+  import {
222
+    createHisPrescription,
223
+    delHisPrescription,
224
+    getInitData,
225
+    getPatientInfo,
226
+    getSchedulePatientList
227
+  } from '@/api/his/his'
228
+  import { getDictionaryDataConfig } from '@/utils/data'
209 229
   import prescriptionTable from './prescriptionTable'
210 230
   import selectTemplate from './selectTemplate'
211 231
   import saveTemplate from './saveTemplate'
212 232
   import additionalCharges from './additionalCharges'
213
-  import { getHisProject,addProjectTeam,getAllProjectTeam,getPojectListById } from '@/api/project/project'
214
-  // import { getPatientInfo, getSchedulePatientList,createHisPrescription } from '@/api/his/his'
233
+  import { addProjectTeam, getAllProjectTeam, getHisProject, getPojectListById } from '@/api/project/project'
215 234
 
216 235
   export default {
217 236
     props: {
218 237
       patientInfo: Object,
219 238
       hisPatientInfo: Object,
220 239
       prescriptions: Array,
221
-      record_date:String,
240
+      record_date: String,
241
+      other_sick: {
242
+        type: Array,
243
+        default: []
244
+      },
245
+      diagnoses: {
246
+        type: Array,
247
+        default: []
248
+      }
222 249
     },
223 250
     components: {
224 251
       selectTemplate,
@@ -228,13 +255,13 @@
228 255
     },
229 256
     data() {
230 257
       return {
231
-        value:"",
258
+        value: '',
232 259
         form: {
233 260
           name: ''
234 261
         },
235
-        drugs:[],
236
-        allDrugs:[],
237
-        advices_template:[],
262
+        drugs: [],
263
+        allDrugs: [],
264
+        advices_template: [],
238 265
 
239 266
         editableTabsValue: '处方1',
240 267
         editableTabs: [{
@@ -242,7 +269,7 @@
242 269
           name: '1'
243 270
         }],
244 271
         tabIndex: 1,
245
-        currenet_inedx:0,
272
+        currenet_inedx: 0,
246 273
         rightTab: 1,
247 274
         activeName: '1',
248 275
         curPrescriptions: this.prescriptions[0],
@@ -253,32 +280,47 @@
253 280
         doctorValue: '',
254 281
         departmentOptions: [],
255 282
         departmentValue: '',
256
-        diagnoses: this.getDictionaryDataConfig('system','diagnose'),
257
-        other_sick:this.getDictionaryDataConfig('system','other_sick_history'),
258 283
         total: 0,
259
-        state1:"",
260
-        state2:"",
261
-        customTabIndex:1,
262
-        options:[],
263
-        tabProject:[],
264
-        strids:"",
265
-        showOne:true,
266
-        showTwo:false,
267
-        tableData:[],
268
-        tabPrjectTeam:[],
269
-        teamList:[],
270
-        doctors:[],
271
-        departMent:[]
284
+        state1: '',
285
+        state2: '',
286
+        customTabIndex: 1,
287
+        options: [],
288
+        tabProject: [],
289
+        strids: '',
290
+        showOne: true,
291
+        showTwo: false,
292
+        tableData: [],
293
+        tabPrjectTeam: [],
294
+        teamList: [],
295
+        doctors: [],
296
+        departMent: [],
297
+        curStatus: 0
272 298
       }
273 299
     },
274 300
     methods: {
275
-      createFilter (queryString) {
301
+      getTotal() {
302
+        var total = 0
303
+        for (let i = 0; i < this.prescriptions.length; i++) {
304
+          if (this.prescriptions[i].advices != null) {
305
+            for (let a = 0; a < this.prescriptions[i].advices.length; a++) {
306
+              total = total + this.prescriptions[i].advices[a].price * this.prescriptions[i].advices[a].prescribing_number
307
+            }
308
+          }
309
+          if (this.prescriptions[i].project != null) {
310
+            for (let b = 0; b < this.prescriptions[i].project.length; b++) {
311
+              total = total + this.prescriptions[i].project[b].price * this.prescriptions[i].project[b].count
312
+            }
313
+          }
314
+        }
315
+        return total
316
+      },
317
+      createFilter(queryString) {
276 318
         return (restaurant) => {
277 319
           return (restaurant.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
278 320
         }
279 321
       },
280 322
 
281
-      querySearch (queryString, cb) {
323
+      querySearch(queryString, cb) {
282 324
         var restaurants = this.diagnoses
283 325
         console.log(restaurants)
284 326
         restaurants.map(item => {
@@ -288,7 +330,8 @@
288 330
         // 调用 callback 返回建议列表的数据
289 331
         cb(results)
290 332
       },
291
-      querySearch2 (queryString, cb) {
333
+
334
+      querySearch2(queryString, cb) {
292 335
         var restaurants = this.other_sick
293 336
         restaurants.map(item => {
294 337
           item.value = item.name
@@ -297,7 +340,7 @@
297 340
         // 调用 callback 返回建议列表的数据
298 341
         cb(results)
299 342
       },
300
-      changeKind(val){
343
+      changeKind(val) {
301 344
         this.drugs = []
302 345
 
303 346
         if(val == 0){
@@ -311,11 +354,10 @@
311 354
         }
312 355
       },
313 356
       getDictionaryDataConfig(module, filed_name) {
314
-        console.log(getDictionaryDataConfig(module, filed_name))
315 357
         return getDictionaryDataConfig(module, filed_name)
316 358
 
317 359
       },
318
-      getInitData(){
360
+      getInitData() {
319 361
         getInitData().then(response => {
320 362
           if (response.data.state == 0) {
321 363
             this.$message.error(response.data.msg)
@@ -325,42 +367,46 @@
325 367
             this.allDrugs = response.data.data.drugs
326 368
             this.advices_template = response.data.data.advices_template
327 369
             this.doctors = response.data.data.doctors
328
-            this.departMent =  response.data.data.department
329
-           
370
+            this.departMent = response.data.data.department
371
+
330 372
           }
331 373
         })
332 374
 
333 375
       },
334
-      tabclickEvent(val){
335
-        for (let i= 0; i<this.prescriptions.length; i++){
376
+      tabclickEvent(val) {
377
+        for (let i = 0; i < this.prescriptions.length; i++) {
336 378
           console.log(this.prescriptions[i].name)
337
-            if(this.prescriptions[i].name == val.name){
338
-              this.curPrescriptions = this.prescriptions[i]
339
-
340
-              //用来区分处方属于项目还是药品
341
-              if(this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0){
342
-                this.customTabIndex = 1
343
-              }
344
-              if(this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0){
379
+          if (this.prescriptions[i].name == val.name) {
380
+            this.curPrescriptions = this.prescriptions[i]
345 381
 
346
-                this.customTabIndex = 2
347
-              }
382
+            //用来区分处方属于项目还是药品
383
+            if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
384
+              this.customTabIndex = 1
385
+              this.curStatus = 1
386
+            }
387
+            if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0) {
348 388
 
349
-              if(this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length == 0){
350
-                this.customTabIndex = this.rightTab
351
-              }
389
+              this.customTabIndex = 2
390
+              this.curStatus = 2
391
+            }
352 392
 
393
+            if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length == 0) {
394
+              this.customTabIndex = this.rightTab
353 395
             }
354 396
 
397
+          }
355 398
 
356 399
         }
400
+      }, clearData() {
401
+
402
+        this.curPrescriptions = []
357 403
       },
358
-      setData(data){
404
+      setData(data) {
359 405
         this.prescriptions = data
360 406
         console.log(this.$refs)
361 407
         this.$nextTick(() => {
362
-         this.$refs.prescription_tables.setNewData(this.prescriptions[0])
363
-        });
408
+          this.$refs.prescription_tables.setNewData(this.prescriptions[0])
409
+        })
364 410
       },
365 411
       moreState(tab, event) {
366 412
         if (tab == 'more') {
@@ -369,7 +415,7 @@
369 415
       },
370 416
       open(index) {
371 417
         if (index == 1) {
372
-          let params ={
418
+          let params = {
373 419
             patient_id: this.patientInfo.id,
374 420
             diagnose: this.state1,
375 421
             sick_history: this.state2,
@@ -378,34 +424,30 @@
378 424
             record_date: this.record_date,
379 425
             his_patient_id: this.hisPatientInfo.id
380 426
           }
381
-         
382
-          for (let i = 0; i < this.prescriptions.length; i++){
383
-            if(this.prescriptions[i].advices.length > 0 && this.prescriptions[i].project.length == 0){
427
+
428
+          for (let i = 0; i < this.prescriptions.length; i++) {
429
+            if (this.prescriptions[i].advices.length > 0 && this.prescriptions[i].project.length == 0) {
384 430
               this.prescriptions[i]['type'] = 1
385 431
             }
386
-            if(this.prescriptions[i].advices.length == 0 && this.prescriptions[i].project.length > 0){
432
+            if (this.prescriptions[i].advices.length == 0 && this.prescriptions[i].project.length > 0) {
387 433
               this.prescriptions[i]['type'] = 2
388 434
             }
389
-            for (let b = 0; b < this.prescriptions[i].advices.length; b++){
435
+            for (let b = 0; b < this.prescriptions[i].advices.length; b++) {
390 436
               this.prescriptions[i].advices[b].single_dose = this.prescriptions[i].advices[b].single_dose.toString()
391 437
               this.prescriptions[i].advices[b].prescribing_number = this.prescriptions[i].advices[b].prescribing_number.toString()
392 438
               this.prescriptions[i].advices[b].retail_price = this.prescriptions[i].advices[b].retail_price.toString()
393 439
 
394 440
             }
395 441
           }
396
-          let data={
397
-            "prescriptions":this.prescriptions
442
+          let data = {
443
+            'prescriptions': this.prescriptions
398 444
           }
399
-           console.log("data",data)
400
-           console.log("params",params)
401
-          createHisPrescription(data,params).then(response=>{
402
-            if(response.data.state == 1){
445
+          createHisPrescription(data, params).then(response => {
446
+            if (response.data.state == 1) {
403 447
               this.prescriptions = []
404
-              this.$message.success("保存成功")
448
+              this.$message.success('保存成功')
405 449
             }
406 450
           })
407
-          localStorage.setItem('drugs', JSON.stringify(this.preDrugs))
408
-          // this.$message({ message: '保存成功', type: 'success' })
409 451
         } else if (index == 2) {
410 452
           this.$router.push('/outpatientDoctorStation/print')
411 453
         } else if (index == 4) {
@@ -419,111 +461,186 @@
419 461
         ++this.tabIndex
420 462
         let newTabName = '处方' + this.tabIndex
421 463
         this.prescriptions.push({
464
+          id: 0,
422 465
           name: newTabName,
423 466
           advices: [],
424
-          project:[],
425
-          projects:[]
467
+          project: []
426 468
 
427 469
         })
428 470
         this.editableTabsValue = newTabName
429
-        this.curPrescriptions = this.prescriptions[this.prescriptions.length-1]
471
+        this.curPrescriptions = this.prescriptions[this.prescriptions.length - 1]
472
+        this.curStatus = 0
430 473
       },
431 474
       removeTab(targetName) {
475
+        let id = 0
476
+        for (let i = 0; i < this.prescriptions.length; i++) {
477
+          if (this.prescriptions[i].name == targetName) {
478
+            id = this.prescriptions[i].id
479
+          }
480
+        }
481
+
482
+        if (id == 0) {
483
+          let tabs = this.prescriptions
484
+          let activeName = this.editableTabsValue
485
+          if (activeName === targetName) {
486
+            tabs.forEach((tab, index) => {
487
+              if (tab.name === targetName) {
488
+                let nextTab = tabs[index + 1] || tabs[index - 1]
489
+                if (nextTab) {
490
+                  activeName = nextTab.name
491
+
492
+                }
493
+              }
494
+            })
495
+          }
496
+          this.editableTabsValue = activeName
497
+          this.prescriptions = tabs.filter(tab => tab.name !== targetName)
432 498
 
433
-        let tabs = this.prescriptions
434
-        let activeName = this.editableTabsValue
435
-        if (activeName === targetName) {
436
-          tabs.forEach((tab, index) => {
437
-            if (tab.name === targetName) {
438
-              let nextTab = tabs[index + 1] || tabs[index - 1]
439
-              if (nextTab) {
440
-                activeName = nextTab.name
499
+          for (let i = 0; i < this.prescriptions.length; i++) {
500
+            if (activeName == this.prescriptions[i].name) {
501
+              this.curPrescriptions = this.prescriptions[i]
502
+              if(this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0){
503
+                this.curStatus = 1
441 504
               }
505
+              if(this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0){
506
+                this.curStatus = 2
507
+              }
508
+            }
509
+          }
510
+          if (this.prescriptions.length == 0) {
511
+            this.curPrescriptions = []
512
+            this.curStatus = 0
513
+          }
514
+        } else {
515
+          let params = {
516
+            'id': id
517
+          }
518
+          delHisPrescription(params).then(response => {
519
+            if (response.data.state == 1) {
520
+              this.$message.success('删除成功')
521
+            } else {
522
+              this.$message.success(response.data.msg)
442 523
             }
443 524
           })
444 525
         }
445
-
446
-        this.editableTabsValue = activeName
447
-        this.prescriptions = tabs.filter(tab => tab.name !== targetName)
448
-        console.log(this.prescriptions)
449 526
       },
450 527
       clickTab(index) {
451
-        if(index == 1){
528
+        if (index == 1) {
452 529
           this.showOne = true
453 530
           this.showTwo = false
454 531
           this.$nextTick(() => {
455
-            this.$refs.prescription_tables.setNewData(this.prescriptions[this.prescriptions.length-1])
456
-          });
457
-         this.customTabIndex = 1
532
+            this.$refs.prescription_tables.setNewData(this.prescriptions[this.prescriptions.length - 1])
533
+          })
534
+          this.customTabIndex = 1
458 535
         }
459
-        if(index == 2){
536
+        if (index == 2) {
460 537
           this.showTwo = true
461 538
           this.showOne = false
462
-           this.$nextTick(() => {
463
-            this.$refs.prescription_tables.setNewData(this.prescriptions[this.prescriptions.length-1])
464
-          });
465
-         this.customTabIndex = 2
539
+          this.$nextTick(() => {
540
+            this.$refs.prescription_tables.setNewData(this.prescriptions[this.prescriptions.length - 1])
541
+          })
542
+          this.customTabIndex = 2
466 543
         }
467 544
         this.rightTab = index
468 545
 
469
-
470 546
         //用来区分处方属于项目还是药品
471
-        if(this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0){
547
+        if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
472 548
 
473 549
           this.customTabIndex = 1
474 550
         }
475
-        if(this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0){
551
+        if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0) {
476 552
 
477 553
           this.customTabIndex = 2
478 554
         }
479
-        if(this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length == 0){
555
+        if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length == 0) {
480 556
           // this.customTabIndex = this.rightTab
481 557
           this.customTabIndex = index
482 558
         }
483
-
484
-
485
-
486
-
487
-      },
488
-      addCharges() {
559
+      }, changeAllGoodInfoTableData: function(selection) {
560
+        this.curDrugs = selection
561
+      }, addCharges() {
489 562
         this.$refs.additionalCharges.show()
490 563
       },
491 564
       selectDrugs(selection, row) {
492 565
         this.curDrugs = selection
493 566
       },
494 567
       comfirm() {
495
-        this.preDrugs = this.curDrugs
568
+        console.log(this.curStatus)
569
+        console.log(this.rightTab)
570
+        console.log(this.curPrescriptions)
571
+
572
+
573
+        if (this.curStatus == 1  && this.rightTab == 2) {
574
+          this.$message.error('改处方是药品,无法添加项目')
575
+          this.teamList = []
576
+          this.$refs.tables.clearSelection()
577
+          return
578
+        }
579
+
580
+        if (this.curStatus ==2 && this.rightTab == 1) {
581
+          this.$message.error('改处方是项目,无法添加药品')
582
+          this.curDrugs = []
583
+          this.$refs.multipleTable.clearSelection()
584
+          return
585
+        }
496 586
 
497
-        for (let i = 0; i < this.prescriptions.length; i++){
498
-          console.log("名称",this.prescriptions[i].name)
499
-          console.log("名称2",this.editableTabsValue)
500
-          if(this.prescriptions[i].name == this.editableTabsValue){
501
-           var temp =  this.deepClone(this.preDrugs)
502
-            var temp2 =  this.deepClone(this.teamList)
587
+        for (let i = 0; i < this.prescriptions.length; i++) {
588
+          if (this.prescriptions[i].name == this.editableTabsValue) {
589
+            var temp = this.deepClone(this.curDrugs)
590
+            var temp2 = this.deepClone(this.teamList)
591
+
592
+            if (temp.length > 0) {
593
+              for (let b = 0; b < temp.length; b++) {
594
+                let obj = {
595
+                  advice_id: 0,
596
+                  drug_name: temp[b].drug_name,
597
+                  single_dose: temp[b].single_dose,
598
+                  delivery_way: temp[b].delivery_way,
599
+                  execution_frequency: temp[b].execution_frequency,
600
+                  retail_price: temp[b].retail_price.toString(),
601
+                  remark: '',
602
+                  prescribing_number: temp[b].prescribing_number,
603
+                  single_dose_unit: temp[b].min_unit,
604
+                  prescribing_number_unit: temp[b].min_unit,
605
+                  min_unit: temp[b].min_unit
606
+
607
+                }
608
+                this.prescriptions[i].advices.push(obj)
609
+              }
610
+              this.curStatus = 1
611
+            }
503 612
 
504
-            this.prescriptions[i].advices = temp
505
-            this.prescriptions[i].project = temp2
613
+            if (temp2.length > 0) {
614
+              for (let b = 0; b < temp2.length; b++) {
615
+                this.prescriptions[i].project.push(temp2[b])
616
+              }
617
+              this.curStatus = 2
618
+            }
506 619
             this.curPrescriptions = this.prescriptions[i]
507
-            // this.$refs.prescription_tables.setNewData(this.prescriptions[i])
620
+            this.$refs.multipleTable.clearSelection()
621
+            this.$refs.tables.clearSelection()
622
+
508 623
           }
509 624
         }
510
-        console.log("222222",this.prescriptions)
625
+        this.curDrugs = []
626
+        this.preDrugs = []
627
+        this.teamList = []
628
+
629
+      }, changeAllGoodInfoTableDataTwo(row) {
630
+        this.teamList = row
511 631
       },
512
-      selectChange(row){
632
+      selectChange(row) {
513 633
         this.teamList = row
514 634
       },
515
-      getlist(){
516
-        getHisProject().then(response=>{
517
-          if(response.data.state == 1){
635
+      getlist() {
636
+        getHisProject().then(response => {
637
+          if (response.data.state == 1) {
518 638
             var project = response.data.data.project
519
-            console.log("project",project)
639
+            console.log('project', project)
520 640
             this.tabProject = project
521 641
           }
522 642
         })
523
-      },
524
-      querySearch(){
525
-
526
-      },deepClone(source) {
643
+      }, deepClone(source) {
527 644
         if (!source && typeof source !== 'object') {
528 645
           throw new Error('error arguments', 'shallowClone')
529 646
         }
@@ -537,63 +654,58 @@
537 654
         })
538 655
         return targetObj
539 656
       },
540
-      getAllProjectTeam(){
541
-        getAllProjectTeam().then(response=>{
542
-          if(response.data.state == 1){
543
-            var team =  response.data.data.team
544
-            console.log("team",team)
657
+      getAllProjectTeam() {
658
+        getAllProjectTeam().then(response => {
659
+          if (response.data.state == 1) {
660
+            var team = response.data.data.team
661
+            console.log('team', team)
545 662
             this.tabPrjectTeam = team
546 663
           }
547 664
         })
548 665
       },
549
-      selectTeam(row){
550
-          var arr = []
551
-          for(let i=0;i<row.length;i++){
552
-             arr.push(row[i].project_id)
553
-          }
554
-        var ids =  arr.join(",")
555
-        console.log("ids",ids)
556
-        var strArr = ids.split(",")
557
-        var res = [];//接收不重复的数据
558
-
559
-        for (var i = 0; i<strArr.length; i++){
560
-        var flag = true;
561
-
562
-        for (var j = 0; j<i; j++){
563
-          if(strArr[i]===strArr[j]){
564
-            flag = false;
565
-            break;
566
-           }
567
-         }
568
-        if(flag){
569
-          res.push(strArr[i])
570
-         }
666
+      selectTeam(row) {
667
+        var arr = []
668
+        for (let i = 0; i < row.length; i++) {
669
+          arr.push(row[i].project_id)
571 670
         }
572
-        console.log("res",res)
671
+        var ids = arr.join(',')
672
+        var strArr = ids.split(',')
673
+        var res = []//接收不重复的数据
674
+
675
+        for (var i = 0; i < strArr.length; i++) {
676
+          var flag = true
573 677
 
574
-        var idstr =  res.join(",")
575
-        console.log("idstr",idstr)
678
+          for (var j = 0; j < i; j++) {
679
+            if (strArr[i] === strArr[j]) {
680
+              flag = false
681
+              break
682
+            }
683
+          }
684
+          if (flag) {
685
+            res.push(strArr[i])
686
+          }
687
+        }
688
+        var idstr = res.join(',')
576 689
         const params = {
577
-           project_id:idstr
690
+          project_id: idstr
578 691
         }
579
-        getPojectListById(params).then(response=>{
580
-           if(response.data.state == 1){
581
-             var project =  response.data.data.project
582
-             console.log("project222",project)
583
-             this.teamList = []
584
-             this.teamList = project
585
-           }
692
+        getPojectListById(params).then(response => {
693
+          if (response.data.state == 1) {
694
+            var project = response.data.data.project
695
+            console.log('project222', project)
696
+            this.teamList = []
697
+            this.teamList = project
698
+          }
586 699
         })
587 700
       }
588 701
     },
589
-    created(){
702
+    created() {
590 703
       this.getInitData()
591 704
       //获取所有项目
592 705
       this.getlist()
593 706
       //获取所以项目组套
594 707
       this.getAllProjectTeam()
595 708
 
596
-
597 709
     }
598 710
   }
599 711
 </script>

+ 18 - 29
src/xt_pages/outpatientDoctorStation/components/deskRecord.vue Dosyayı Görüntüle

@@ -36,9 +36,18 @@
36 36
       <el-form-item label="联系电话: " prop="name">
37 37
         <el-input v-model="patientInfo.phone" placeholder="" readonly></el-input>
38 38
       </el-form-item>
39
-
40
-      <el-form-item label="关系联系人电话: " prop="name">
41
-        <el-input v-model="patientInfo.relative_phone" placeholder="" readonly></el-input>
39
+      <el-form-item label="医保类型: " prop="name">
40
+        <!-- <el-select v-model="scope.row.delivery_way" placeholder="请选择">
41
+          <el-option
42
+            v-for="(item,index) in arr"
43
+            :key="index"
44
+            :label="item.name"
45
+            :value="item.name">
46
+          </el-option>
47
+        </el-select> -->
48
+      </el-form-item>
49
+      <el-form-item label="医保证号: " prop="name">
50
+        <el-input v-model="patientInfo.home_address" placeholder="" readonly></el-input>
42 51
       </el-form-item>
43 52
       <el-form-item label="家庭住址: " prop="name">
44 53
         <el-input v-model="patientInfo.home_address" placeholder="" readonly></el-input>
@@ -50,44 +59,23 @@
50 59
         <el-input v-model="case_history.temperature" placeholder=""></el-input>
51 60
         <span>℃</span>
52 61
       </el-form-item>
53
-      <el-form-item label="血糖: " prop="name">
54
-        <el-input v-model="case_history.blood_sugar" placeholder=""></el-input>
55
-        mmol/L
56
-      </el-form-item>
57 62
       <el-form-item label="脉搏: " prop="name">
58 63
         <el-input v-model="case_history.pulse" placeholder=""></el-input>
59 64
         (次/分)
60 65
       </el-form-item>
66
+      <el-form-item label="呼吸: " prop="name">
67
+        <el-input v-model="case_history.pulse" placeholder=""></el-input>
68
+        (次/分)
69
+      </el-form-item>
61 70
       <el-form-item label="血压:" prop="name">
62 71
         <el-input v-model="case_history.sbp" placeholder=""></el-input>
63 72
         /
64 73
         <el-input v-model="case_history.dbp" placeholder=""></el-input>
65 74
         mmHg
66 75
       </el-form-item>
67
-      <el-form-item label="身高: " prop="name">
68
-        <el-input v-model="case_history.height" placeholder=""></el-input>
69
-        cm
70
-      </el-form-item>
71
-      <el-form-item label="血脂: " prop="name">
72
-        <el-input v-model="case_history.blood_fat" placeholder=""></el-input>
73
-        mmol/L
74
-      </el-form-item>
75 76
     </el-form>
76 77
     <div class="mainTitle">病历信息:</div>
77 78
     <el-form class="recordForm" :model="case_history" :rules="rules" ref="form" label-width="80px">
78
-      <el-form-item label="疾病分类:" prop="name">
79
-        <el-select style="width:100%;" v-model="case_history.sick_type" placeholder="">
80
-          <el-option
81
-            v-for="item,index in getDictionaryDataConfig('system','sick_type')"
82
-            :key="index"
83
-            :label="item.name"
84
-            :value="item.id">
85
-          </el-option>
86
-        </el-select>
87
-      </el-form-item>
88
-      <el-form-item label="症状: " prop="name">
89
-        <el-input v-model="case_history.symptom" placeholder=""></el-input>
90
-      </el-form-item>
91 79
       <el-form-item label="发病日期: " prop="name">
92 80
         <el-date-picker
93 81
           style="width:100%;"
@@ -249,7 +237,7 @@
249 237
             }
250 238
           })
251 239
         } else if (index == 2) {
252
-
240
+          this.$router.push('/outpatientDoctorStation/recordPrint')
253 241
         } else if (index == 3) {
254 242
           this.$refs.medicalRecord.show()
255 243
         } else if (index == 4) {
@@ -267,6 +255,7 @@
267 255
     font-size: 18px;
268 256
     font-weight: bold;
269 257
     margin-bottom: 10px;
258
+    color:#409EFF;
270 259
   }
271 260
 
272 261
   .backColor {

+ 13 - 7
src/xt_pages/outpatientDoctorStation/components/medicalRecord.vue Dosyayı Görüntüle

@@ -33,16 +33,19 @@
33 33
                         <el-table-column align="center" prop="name" label="病历编号">
34 34
                             <template slot-scope="scope">{{ scope.row.date }}</template>
35 35
                         </el-table-column>
36
-                        <el-table-column align="center" prop="name" label="诊断信息">
36
+                        <el-table-column align="center" prop="name" label="名称">
37 37
                             <template slot-scope="scope">{{ scope.row.date }}</template>
38 38
                         </el-table-column>
39
-                        <el-table-column align="center" prop="name" label="医生">
39
+                        <el-table-column align="center" prop="name" label="创建人">
40 40
                             <template slot-scope="scope">{{ scope.row.date }}</template>
41 41
                         </el-table-column>
42 42
                         <el-table-column align="center" prop="name" label="创建日期">
43 43
                             <template slot-scope="scope">{{ scope.row.date }}</template>
44 44
                         </el-table-column>
45
-                        <el-table-column align="center" prop="name" label="操作">
45
+                        <el-table-column align="center" prop="name" label="模板说明">
46
+                            <template slot-scope="scope">{{ scope.row.date }}</template>
47
+                        </el-table-column>
48
+                        <el-table-column align="center" prop="name" label="操作" width='200'>
46 49
                             <template slot-scope="scope">
47 50
                                 <el-button type="primary" size="mini">调用</el-button>
48 51
                                 <el-button type="primary" size="mini" @click="toHistoryDetail">详情</el-button>
@@ -75,22 +78,25 @@
75 78
                         <el-table-column align="center" prop="name" label="病历编号">
76 79
                             <template slot-scope="scope">{{ scope.row.date }}</template>
77 80
                         </el-table-column>
78
-                        <el-table-column align="center" prop="name" label="诊断信息">
81
+                        <el-table-column align="center" prop="name" label="名称">
79 82
                             <template slot-scope="scope">{{ scope.row.date }}</template>
80 83
                         </el-table-column>
81
-                        <el-table-column align="center" prop="name" label="医生">
84
+                        <el-table-column align="center" prop="name" label="创建人">
82 85
                             <template slot-scope="scope">{{ scope.row.date }}</template>
83 86
                         </el-table-column>
84 87
                         <el-table-column align="center" prop="name" label="创建日期">
85 88
                             <template slot-scope="scope">{{ scope.row.date }}</template>
86 89
                         </el-table-column>
87
-                        <el-table-column align="center" prop="name" label="操作">
90
+                        <el-table-column align="center" prop="name" label="模板说明">
91
+                            <template slot-scope="scope">{{ scope.row.date }}</template>
92
+                        </el-table-column>
93
+                        <el-table-column align="center" prop="name" label="操作" width='200'>
88 94
                             <template slot-scope="scope">
89 95
                                 <el-button type="primary" size="mini">调用</el-button>
90 96
                                 <el-button type="primary" size="mini" @click="totemplateDetail">详情</el-button>
91 97
                             </template>
92 98
                         </el-table-column>
93
-                    </el-table> 
99
+                    </el-table>
94 100
                 </el-tab-pane>
95 101
             </el-tabs>
96 102
         </div>

+ 115 - 38
src/xt_pages/outpatientDoctorStation/components/prescriptionTable.vue Dosyayı Görüntüle

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="prescriptionTable">
3
-    <el-table v-if="activeType  == 1" :data="prescription.advices" border style="width: 98%;" :row-style="{ color: '#303133' }"
3
+    <el-table v-if="activeType  == 1" :data="prescription.advices" border style="width: 99%;" :row-style="{ color: '#303133' }"
4 4
               :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
5 5
       <el-table-column align="center" prop="name" label="名称">
6 6
         <template slot-scope="scope">{{ scope.row.drug_name }}</template>
@@ -16,7 +16,7 @@
16 16
         <template slot-scope="scope">
17 17
           <el-select v-model="scope.row.delivery_way" placeholder="请选择">
18 18
             <el-option
19
-              v-for="item,index in drugways"
19
+              v-for="(item,index) in drugways"
20 20
               :key="index"
21 21
               :label="item.name"
22 22
               :value="item.name">
@@ -26,9 +26,9 @@
26 26
       </el-table-column>
27 27
       <el-table-column align="center" prop="name" width="50" label="频率">
28 28
         <template slot-scope="scope">
29
-          <el-select v-model="scope.row.execution_frequency" placeholder="请选择">
29
+          <el-select v-model="scope.row.execution_frequency" placehold er="请选择">
30 30
             <el-option
31
-              v-for="item in efs"
31
+              v-for="item,index in efs"
32 32
               :key="index"
33 33
               :label="item.name"
34 34
               :value="item.name">
@@ -57,12 +57,12 @@
57 57
       </el-table-column>
58 58
       <el-table-column align="center" width="40" prop="name" label="操作">
59 59
         <template slot-scope="scope">
60
-          <i class="el-icon-delete" @click="deleteDrug(scope.row)"></i>
60
+          <i class="el-icon-delete" @click="deleteDrug(scope.$index, scope.row)"></i>
61 61
         </template>
62 62
       </el-table-column>
63 63
     </el-table>
64 64
 
65
-    <el-table v-if="activeType == 2" :data="prescription.project" border style="width: 98%;" :row-style="{ color: '#303133' }"
65
+    <el-table v-if="activeType == 2" :data="prescription.project" border style="width: 99%;" :row-style="{ color: '#303133' }"
66 66
               :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
67 67
       <el-table-column align="center" type="selection" width="40"></el-table-column>
68 68
       <el-table-column align="center" type="index" width="40" label="序号">
@@ -70,7 +70,7 @@
70 70
             {{scope.$index + 1}}
71 71
          </template>
72 72
       </el-table-column>
73
-      <el-table-column align="center" prop="project_name" label="名称">
73
+      <el-table-column align="center" prop="project_name" width="50" label="名称">
74 74
         <template slot-scope="scope">{{ scope.row.project_name }}</template>
75 75
       </el-table-column>
76 76
       <el-table-column align="center" prop="statistical_classification" width="50" label="组">
@@ -78,27 +78,27 @@
78 78
           {{getGroup(scope.row.statistical_classification)}}
79 79
         </template>
80 80
       </el-table-column>
81
-      <el-table-column align="center" prop="single_dose" width="130" :label="'单次\n用量'">
81
+      <el-table-column align="center" prop="single_dose" :label="'单次\n用量'">
82 82
         <template slot-scope="scope">
83 83
           <el-input v-model="scope.row.single_dose" placeholder=""></el-input>
84 84
         </template>
85 85
       </el-table-column>
86
-      <el-table-column align="center" prop="delivery_way" width="130" label="用法">
86
+      <el-table-column align="center" prop="delivery_way" width="50" label="用法">
87 87
         <template slot-scope="scope">
88 88
           <el-input v-model="scope.row.delivery_way" placeholder=""></el-input>
89 89
         </template>
90 90
       </el-table-column>
91
-      <el-table-column align="center" prop="execution_frequency" width="130" label="频率">
91
+      <el-table-column align="center" prop="execution_frequency" width="50" label="频率">
92 92
         <template slot-scope="scope">
93 93
           <el-input v-model="scope.row.execution_frequency" placeholder=""></el-input>
94 94
         </template>
95 95
       </el-table-column>
96
-      <el-table-column align="center" prop="number_days" width="130" label="天数">
96
+      <el-table-column align="center" prop="number_days" width="50" label="天数">
97 97
         <template slot-scope="scope">
98 98
           <el-input v-model="scope.row.number_days" placeholder=""></el-input>
99 99
         </template>
100 100
       </el-table-column>
101
-      <el-table-column align="center" prop="total" width="100" label="总量">
101
+      <el-table-column align="center" prop="total" width="50" label="总量">
102 102
         <template slot-scope="scope">
103 103
           <div style="display:flex;">
104 104
             <el-input v-model="scope.row.total" style="width:50" placeholder=""></el-input>
@@ -110,7 +110,7 @@
110 110
           <el-input v-model="scope.row.price" placeholder=""></el-input>
111 111
         </template>
112 112
       </el-table-column>
113
-      <el-table-column align="center" prop="name" width="120" label="备注">
113
+      <el-table-column align="center" prop="name" width="50" label="备注">
114 114
         <template slot-scope="scope">
115 115
            <el-input v-model="scope.row.remark"></el-input>
116 116
         </template>
@@ -122,6 +122,16 @@
122 122
       </el-table-column>
123 123
     </el-table>
124 124
 
125
+    <!--<div class="additionalBox">-->
126
+      <!--<div class="additionalOne" v-for="(item,index) in 8" :key="index">-->
127
+        <!--<span>治疗费</span>-->
128
+        <!--<el-input v-model="input" placeholder="" style="width:50px;"></el-input>-->
129
+        <!--共-->
130
+        <!--<el-input v-model="input" placeholder="" style="width:50px;"></el-input>-->
131
+        <!--次-->
132
+        <!--<i class="el-icon-delete deleteIcon"></i>-->
133
+      <!--</div>-->
134
+    <!--</div>-->
125 135
 
126 136
 
127 137
 
@@ -130,7 +140,7 @@
130 140
 
131 141
 <script>
132 142
   import { getDictionaryDataConfig} from "@/utils/data";
133
-  import { getInitData } from '@/api/his/his'
143
+  import { getInitData,delHisAdvice,delHisProject } from '@/api/his/his'
134 144
 
135 145
   export default {
136 146
     props: {
@@ -185,15 +195,48 @@
185 195
           }
186 196
         })
187 197
 
188
-      },deleteDrug:function(row){
189
-        for (let i = 0; i < this.prescription.advices.length; i++){
190
-          if(this.prescription.advices[i].id == row.id){
191
-              this.prescription.advices.splice(i, 1)
198
+      },deleteDrug:function(index, row){
199
+        console.log(row)
200
+       console.log(index)
201
+
202
+       if(row.advice_id == 0){
203
+          this.prescription.advices.splice(index, 1)
204
+        }else{
205
+          let params = {
206
+            'id': row.advice_id,
192 207
           }
208
+          delHisAdvice(params).then(response => {
209
+            if (response.data.state == 0) {
210
+              this.$message.error(response.data.msg)
211
+              return false
212
+            } else {
213
+              var temp2 = this.deepClone(this.prescription.advices)
214
+              temp2.splice(index, 1)
215
+              this.prescription.advices = temp2
216
+              this.$message.success(response.data.data.msg)
217
+            }
218
+          })
219
+
220
+
193 221
         }
194
-      },
195
-    
222
+
223
+      },deepClone(source) {
224
+       if (!source && typeof source !== 'object') {
225
+         throw new Error('error arguments', 'shallowClone')
226
+       }
227
+       const targetObj = source.constructor === Array ? [] : {}
228
+       Object.keys(source).forEach((keys) => {
229
+         if (source[keys] && typeof source[keys] === 'object') {
230
+           targetObj[keys] = this.deepClone(source[keys])
231
+         } else {
232
+           targetObj[keys] = source[keys]
233
+         }
234
+       })
235
+       return targetObj
236
+     },
237
+
196 238
       setNewData:function(data){
239
+        this.prescription = data
197 240
 
198 241
         // this.prescription.advices = data.advices
199 242
       },
@@ -212,36 +255,70 @@
212 255
          return name
213 256
       },
214 257
       deleteProject(row){
215
-       
216
-        for (let i = 0; i < this.prescription.project.length; i++){
217
-          if(this.prescription.project[i].id == row.id){
218
-              this.prescription.project.splice(i, 1)
258
+        if(row.id == 0){
259
+          this.prescription.project.splice(i, 1)
260
+
261
+        }else{
262
+          let params = {
263
+            'id': row.id,
219 264
           }
265
+          delHisProject(params).then(response => {
266
+            if (response.data.state == 0) {
267
+              this.$message.error(response.data.msg)
268
+              return false
269
+            } else {
270
+              for (let i = 0; i < this.prescription.project.length; i++){
271
+                if(this.prescription.project[i].id == row.id){
272
+                  this.prescription.project.splice(i, 1)
273
+                }
274
+              }
275
+              this.$message.error(response.data.data.msg)
276
+            }
277
+          })
278
+
279
+
220 280
         }
281
+
221 282
       },
222 283
     },mounted(){
223 284
       this.getInitData()
224 285
     },
225
-    watch:{
226
-      prescription:function(){
227
-        console.log("8888888",this)
228
-        console.log("9999999",this.prescription)
229
-      }
230
-    }
231 286
   }
232 287
 </script>
233 288
 
234 289
 <style lang="scss">
235 290
   .prescriptionTable {
291
+    .additionalBox{
292
+      margin-top: 20px;
293
+      display: flex;
294
+      flex-wrap: wrap;
295
+      .additionalOne{
296
+        margin-right:20px;
297
+        margin-bottom:10px;
298
+        display: flex;
299
+        align-items: center;
300
+        >span{
301
+          white-space: nowrap;
302
+          overflow: hidden;
303
+          text-overflow: ellipsis;
304
+          width:60px;
305
+          display: inline-block;
306
+          font-size: 14px;
307
+        }
308
+      }
309
+      .deleteIcon{
310
+        color:red;
311
+        margin-left:5px;
312
+      }
313
+    }
314
+    .el-table th .cell, .el-table td .cell {
315
+      padding: 0 2px;
316
+      white-space: pre-line;
317
+    }
236 318
 
237
-  .el-table th .cell, .el-table td .cell {
238
-    padding: 0 2px;
239
-    white-space: pre-line;
240
-  }
241
-
242
-  .el-icon-delete {
243
-    color: red;
244
-  }
319
+    .el-icon-delete {
320
+      color: red;
321
+    }
245 322
 
246 323
   }
247 324
 </style>

+ 1 - 29
src/xt_pages/outpatientDoctorStation/components/recordTemplateDetail.vue Dosyayı Görüntüle

@@ -8,40 +8,12 @@
8 8
         append-to-body
9 9
     >
10 10
         <el-form class="recordForm" :model="form" :rules="rules" ref="form" label-width="80px">
11
-            <el-form-item label="模板名称: " prop="name" style="width:49%;">
11
+            <el-form-item label="模板名称: " prop="name" style="width:100%;">
12 12
                 <el-input v-model="form.name" placeholder=""></el-input>
13 13
             </el-form-item>
14
-            <el-form-item label="" prop="name" style="width:49%;">
15
-                <el-radio v-model="radio" label="1">私人模板</el-radio>
16
-                <el-radio v-model="radio" label="2">公共模板</el-radio>
17
-            </el-form-item>
18 14
             <el-form-item label="模板说明: " prop="name" style="width:100%;">
19 15
                 <el-input v-model="form.name" placeholder=""></el-input>
20 16
             </el-form-item>
21
-            <el-form-item label="病历分类:" prop="name">
22
-                <el-select style="width:100%;" v-model="value" placeholder="">
23
-                    <el-option
24
-                    v-for="item in options"
25
-                    :key="item.value"
26
-                    :label="item.label"
27
-                    :value="item.value">
28
-                    </el-option>
29
-                </el-select>
30
-            </el-form-item>
31
-            <el-form-item label="症状: " prop="name">
32
-                <el-input v-model="form.name" placeholder=""></el-input>
33
-            </el-form-item>
34
-            <el-form-item label="发病日期: " prop="name">
35
-                <el-date-picker
36
-                style="width:100%;"
37
-                v-model="value1"
38
-                type="date"
39
-                placeholder="选择日期">
40
-                </el-date-picker>
41
-            </el-form-item>
42
-            <el-form-item label="" prop="name">
43
-                <el-checkbox v-model="checked">是否传染</el-checkbox>
44
-            </el-form-item>
45 17
             <el-form-item label="主诉:" prop="name" style="width:100%;">
46 18
                 <el-input
47 19
                 type="textarea"

+ 3 - 1
src/xt_pages/outpatientDoctorStation/components/saveRecordTemplate.vue Dosyayı Görüntüle

@@ -22,7 +22,9 @@
22 22
                 v-model="textarea">
23 23
                 </el-input>
24 24
             </el-form-item>
25
-            <el-form-item label="创建人:" prop="name" style="width:100%;">
25
+            <el-form-item label="创建人:" prop="name" style="width:49%;">
26
+            </el-form-item>
27
+            <el-form-item label="创建时间:" prop="name" style="width:49%;">
26 28
             </el-form-item>
27 29
         </el-form>
28 30
         <div slot="footer" class="dialog-footer">

+ 60 - 18
src/xt_pages/outpatientDoctorStation/doctorDesk.vue Dosyayı Görüntüle

@@ -26,14 +26,14 @@
26 26
           <el-table :data="patientTableData" @row-click='choosePatient' border style="width: 100%;"
27 27
                     :row-style="{ color: '#303133' }"
28 28
                     :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
29
-                     highlight-current-row
29
+                    highlight-current-row
30 30
                     ref="tab"
31
-                   >
31
+          >
32 32
             <el-table-column align="center" prop="name" label="患者姓名">
33
-              <template slot-scope="scope">{{ scope.row.patients.name }}</template>
33
+              <template slot-scope="scope">{{scope.row.patients?scope.row.patients.name:''}}</template>
34 34
             </el-table-column>
35 35
             <el-table-column align="center" prop="name" label="就诊号" width="90">
36
-              <template slot-scope="scope">{{ scope.row.his_patient.number }}</template>
36
+              <template slot-scope="scope">{{ scope.row.his_patient ?scope.row.his_patient.number:''}}</template>
37 37
             </el-table-column>
38 38
           </el-table>
39 39
         </div>
@@ -46,8 +46,10 @@
46 46
           </el-radio-group>
47 47
         </div>
48 48
         <!--<desk-prescription ref="prescriptions"   :prescriptions="prescriptions" :patientInfo="patientInfo" :hisPatientInfo="hisPatientInfo"-->
49
-                   <!--v-if="titleType == '处方'" style="flex:1;"></desk-prescription>-->
50
-        <desk-prescription :record_date="record_date" ref="prescriptions"  :prescriptions="prescriptions" :patientInfo="patientInfo" :hisPatientInfo="hisPatientInfo"
49
+        <!--v-if="titleType == '处方'" style="flex:1;"></desk-prescription>-->
50
+        <desk-prescription :diagnoses="diagnoses" :other_sick="other_sick" :record_date="record_date"
51
+                           ref="prescriptions" :prescriptions="prescriptions" :patientInfo="patientInfo"
52
+                           :hisPatientInfo="hisPatientInfo"
51 53
                            v-if="titleType == '处方'" style="flex:1;"></desk-prescription>
52 54
         <desk-record :record_date="record_date" :case_history="case_history" :patientInfo="patientInfo"
53 55
                      :hisPatientInfo="hisPatientInfo" v-if="titleType == '病历'"></desk-record>
@@ -62,6 +64,7 @@
62 64
   import deskPrescription from './components/deskPrescription'
63 65
   import deskRecord from './components/deskRecord'
64 66
   import { getPatientInfo, getSchedulePatientList } from '@/api/his/his'
67
+  import { getDictionaryDataConfig } from '@/utils/data'
65 68
 
66 69
   import { uParseTime } from '@/utils/tools'
67 70
 
@@ -94,10 +97,18 @@
94 97
         patientInfo: {},
95 98
         hisPatientInfo: {},
96 99
         case_history: {},
97
-        patient_id:0,
100
+        patient_id: 0,
101
+        diagnoses: [],
102
+        other_sick: []
103
+
98 104
       }
99 105
     },
100 106
     methods: {
107
+      getDictionaryDataConfig(module, filed_name) {
108
+        console.log(getDictionaryDataConfig(module, filed_name))
109
+        return getDictionaryDataConfig(module, filed_name)
110
+
111
+      },
101 112
       changeTab(val) {
102 113
 
103 114
       },
@@ -119,7 +130,7 @@
119 130
             return false
120 131
           } else {
121 132
             this.patientTableData = response.data.data.list
122
-            console.log("222",this.patientTableData)
133
+            console.log('222', this.patientTableData)
123 134
             // this.$refs.tab.setCurrentRow(this.patientTableData[0])
124 135
             let cal_one = 0
125 136
             let cal_two = 0
@@ -131,7 +142,9 @@
131 142
                 cal_two = cal_two + 1
132 143
               }
133 144
             }
134
-
145
+            this.$refs.tab.setCurrentRow(this.patientTableData[0])
146
+            console.log(this.patientTableData[0])
147
+            this.choosePatient(this.patientTableData[0])
135 148
             this.cal_one = cal_one
136 149
             this.cal_two = cal_two
137 150
           }
@@ -142,11 +155,16 @@
142 155
           'record_date': this.record_date,
143 156
           'patient_id': val.patients.id
144 157
         }
158
+        console.log("-------")
145 159
         getPatientInfo(params).then(response => {
146 160
           if (response.data.state == 0) {
147 161
             this.$message.error(response.data.msg)
148 162
             return false
149 163
           } else {
164
+            console.log("999888811111")
165
+
166
+            this.prescriptions = []
167
+            this.$refs.prescriptions.clearData()
150 168
             this.patientInfo = response.data.data.xt_info
151 169
             this.hisPatientInfo = response.data.data.his_info
152 170
             this.case_history = response.data.data.case_history
@@ -181,27 +199,46 @@
181 199
             } else {
182 200
               this.case_history.is_infect = false
183 201
             }
184
-            this.prescriptions = []
185 202
             if (response.data.data.prescription.length > 0) {
186 203
               for (let i = 0; i < response.data.data.prescription.length; i++) {
187 204
                 var prescription = response.data.data.prescription[i]
205
+                let tempAdvice = []
206
+                for (let b = 0; b < prescription.advices.length; b++) {
207
+                  let obj = {
208
+                    advice_id: prescription.advices[b].id,
209
+                    drug_name: prescription.advices[b].advice_name,
210
+                    single_dose: prescription.advices[b].single_dose,
211
+                    delivery_way: prescription.advices[b].delivery_way,
212
+                    execution_frequency: prescription.advices[b].execution_frequency,
213
+                    retail_price: prescription.advices[b].price.toString(),
214
+                    remark: prescription.advices[b].remark,
215
+                    prescribing_number:prescription.advices[b].prescribing_number,
216
+                    single_dose_unit:prescription.advices[b].single_dose_unit,
217
+                    prescribing_number_unit:prescription.advices[b].prescribing_number_unit,
218
+                    min_unit:prescription.advices[b].single_dose_unit
219
+
220
+                  }
221
+                  tempAdvice.push(obj)
222
+                }
188 223
                 let index = i + 1
189 224
                 let obj = {
190
-                  name: "处方" + index,
191
-                  advices: prescription.advices,
192
-                  projects: prescription.project,
225
+                  id: prescription.id,
226
+                  name: '处方' + index,
227
+                  advices: tempAdvice,
228
+                  project: prescription.project
193 229
                 }
194 230
                 this.prescriptions.push(obj)
195 231
               }
196
-            }else{
232
+            } else {
197 233
               let obj = {
198
-                name: "处方" + 1,
234
+                id:0,
235
+                name: '处方' + 1,
199 236
                 advices: [],
200
-                projects: [],
237
+                project: []
201 238
               }
202 239
               this.prescriptions.push(obj)
203 240
             }
204
-           
241
+
205 242
             this.$refs.prescriptions.setData(this.prescriptions)
206 243
           }
207 244
         })
@@ -216,7 +253,7 @@
216 253
         //     psn_name:"杨美英",
217 254
         //     age:60.7
218 255
         // }
219
-      },
256
+      }
220 257
       // changePatient(val){
221 258
       //   console.log("患者val",val)
222 259
       //   this.hisPatientInfo = val.hisPatientInfo
@@ -235,6 +272,11 @@
235 272
         (nowDay < 10 ? '0' + nowDay : nowDay)
236 273
       this.getList()
237 274
 
275
+      this.diagnoses = this.getDictionaryDataConfig('system', 'diagnose')
276
+      this.other_sick = this.getDictionaryDataConfig('system', 'other_sick_history')
277
+
278
+
279
+
238 280
     }
239 281
   }
240 282
 </script>

+ 22 - 395
src/xt_pages/outpatientDoctorStation/print.vue Dosyayı Görüntüle

@@ -2,7 +2,7 @@
2 2
   <div class="main-contain">
3 3
     <div class="position">
4 4
       <bread-crumb :crumbs="crumbs"></bread-crumb>
5
-       <template v-if="org_template_info.template_id == 25">
5
+       <template>
6 6
         <el-button
7 7
           :loading="loading"
8 8
           size="small"
@@ -34,12 +34,8 @@
34 34
                 </el-table>
35 35
             </div>
36 36
             
37
-            <div class='dialysisPage' style="height: calc(100vh - 178px);overflow-x:auto;::-webkit-scrollbar:height:15px">
38
-            <DialysisPrintOrderOne
39
-                v-bind:childResponse="childResponse"
40
-                v-if="org_template_info.template_id == 1"
41
-            >
42
-            </DialysisPrintOrderOne>
37
+            <div class='dialysisPage' style="flex: 1;height: calc(100vh - 178px);overflow-x:auto;::-webkit-scrollbar:height:15px">
38
+              <printOne v-bind:childResponse="childResponse"></printOne>
43 39
             </div>
44 40
         </el-container>
45 41
     </div>
@@ -58,63 +54,13 @@ import { getDataConfig } from "@/utils/data";
58 54
 import { jsGetAge, uParseTime } from "@/utils/tools";
59 55
 // import LabelBox from "./printItem/LabelBox";
60 56
 import BreadCrumb from "@/xt_pages/components/bread-crumb";
61
-// import DialysisPrintOrderOne from "./template/dialysisPrintOrderOne";
62
-// import DialysisPrintOrderTwo from "./template/dialysisPrintOrderTwo";
63
-// import DialysisPrintOrderThree from "./template/dialysisPrintOrderThree";
64
-// import DialysisPrintOrderFour from "./template/DialysisPrintOrderFour";
65
-// import DialysisPrintOrderFive from "./template/DialysisPrintOrderFive";
66
-// import DialysisPrintOrderSix from "./template/DialysisPrintOrderSix";
67
-// import DialysisPrintOrderSeven from "./template/DialysisPrintOrderSeven";
68
-// import DialysisPrintOrderEight from "./template/DialysisPrintOrderEight";
69
-// import DialysisPrintOrderNine from "./template/DialysisPrintOrderNine";
70 57
 import print from "print-js";
71
-// import DialysisPrintOrderTen from "./template/DialysisPrintOrderTen";
72
-// import DialysisPrintOrderEleven from "./template/DialysisPrintOrderEleven";
73
-// import DialysisPrintOrderTwelve from "./template/DialysisPrintOrderTwelve";
74
-// import DialysisPrintOrderThirteen from "./template/DialysisPrintOrderThirteen";
75
-// import DialysisPrintOrderFourteen from "./template/DialysisPrintOrderFourteen";
76
-// import DialysisPrintOrderFifteen from "./template/DialysisPrintOrderFifteen";
77
-// import DialysisPrintOrderSixteen from "./template/DialysisPrintOrderSixteen";
78
-// import DialysisPrintOrderSeventeen from "./template/DialysisPrintOrderSeventeen";
79
-// import DialysisPrintOrderEighteen from "./template/DialysisPrintOrderEighteen";
80
-// import DialysisPrintOrderNineteen from "./template/DialysisPrintOrderNineteen";
81
-// import DialysisPrintOrderTwenty from "./template/DialysisPrintOrderTwenty";
82
-// import DialysisPrintOrderTwentyOne from "./template/DialysisPrintOrderTwentyOne";
83
-// import DialysisPrintOrderTwentyTwo from "./template/DialysisPrintOrderTwentyTwo";
84
-// import DialysisPrintOrderTwentyThree from "./template/DialysisPrintOrderTwentyThree";
85
-// import DialysisPrintOrderTwentyFour from "./template/DialysisPrintOrderTwentyFour";
86
-// import DialysisPrintOrderTwentyFive from "./template/DialysisPrintOrderTwentyFive";
58
+import printOne from "./template/printOne"
87 59
 export default {
88 60
   name: "dialysisPrintOrder",
89 61
   components: {
90
-    // DialysisPrintOrderTwentyFive,
91
-    // DialysisPrintOrderTwentyFour,
92
-    // DialysisPrintOrderTwentyThree,
93
-    // DialysisPrintOrderTwentyTwo,
94
-    // DialysisPrintOrderTwentyOne,
95
-    // DialysisPrintOrderTwenty,
96
-    // DialysisPrintOrderNineteen,
97
-    // DialysisPrintOrderEighteen,
98
-    // DialysisPrintOrderSeventeen,
99
-    // DialysisPrintOrderSixteen,
100
-    // DialysisPrintOrderFifteen,
101
-    // DialysisPrintOrderFourteen,
102
-    // DialysisPrintOrderThirteen,
103
-    // DialysisPrintOrderTwelve,
104
-    // DialysisPrintOrderEleven,
105
-    // DialysisPrintOrderTen,
106
-    // DialysisPrintOrderOne,
107
-    // DialysisPrintOrderTwo,
108
-    // DialysisPrintOrderThree,
109
-    // DialysisPrintOrderFour,
110
-    // DialysisPrintOrderFive,
111
-    // DialysisPrintOrderSix,
112
-    // DialysisPrintOrderSeven,
113
-    // DialysisPrintOrderEight,
114
-    // DialysisPrintOrderNine,
115
-
116
-    // LabelBox,
117
-    BreadCrumb
62
+    BreadCrumb,
63
+    printOne
118 64
   },
119 65
   data() {
120 66
     return {
@@ -272,278 +218,24 @@ export default {
272 218
       this.print_time = uParseTime(ptime, "{y}-{m}-{d} {h}:{i}");
273 219
 
274 220
       const style =
275
-        '@media print {.dialysis-print-order{width:960px;margin:0 auto}.dialysis-print-order .order-yy-name{margin:auto;text-align:center;font-size:20px;letter-spacing:5px}.dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px 20px 20px 20px}.dialysis-print-order .table-box{width:100%;line-height:23px;font-size:14px}.dialysis-print-order .print-table{width:100%;text-align:center;border-collapse:collapse;line-height:25px;font-size:14px}.dialysis-print-order .print-table-no{width:100%;text-align:center;border-collapse:collapse;font-size:14px}.dialysis-print-order .under-line{border-bottom:1px solid #999;width:95%;text-align:center;margin-left:2px}.dialysis-print-order .title-box{text-align:center;font-size:16px;border:1px solid #666}.dialysis-print-order .radio-lebel-box{font-weight:400;cursor:pointer}.dialysis-print-order .radio-no{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.dialysis-print-order .radio-inner{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.dialysis-print-order .radio-fang{display:inline-block;position:relative;border:1px solid #000;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.dialysis-print-order .is-checked-radio::after{content:"√";font-size:15px}}.dialysis-print-order .print-table-no tr td { padding: 8px 5px; line-height: 25px; }.es-img{height: 20px; }.advice-name{text-align: left;}.advice-children{display:flex;} .dialysis-print-order .print-table tr td{padding: 0px 0px;} .print-template-two tr {line-height: 30px;}   .title-box-pro{border: 0 #fff;line-height: 40px;height: 40px;text-align: left;padding-left: 10px !important;}  .text-align-left{text-align: left !important;padding-left:10px !important;font-size: 14px !important;line-height: 25px;}';
276
-      const style2 =
277
-        '@media print {.option_panel { margin: 0 5px 0 0; } .option_panel .check_box_panel { white-space: nowrap; outline: none; display: inline-block; line-height: 1; position: relative; vertical-align: middle; } .dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px}.option_panel .check_box_panel .check_box { display: inline-block; position: relative; border: 1px solid #000; box-sizing: border-box; width: 14px; height: 12px; background-color: #fff; } .check_box_panel .did_checked::after { content: "√"; font-size: 15px; } .print_page_main_content {background-color: white;width: 960px;margin: 0 auto 50px;padding: 0 0 0 0; page-break-after: always;}.print_page_main_content .order-yy-name {margin: auto;text-align: center;font-size: 20px;letter-spacing: 5px;}.print_page_main_content .order_title {text-align: center;font-size: 23px; line-height: 50px;font-weight: 500;} .row {font-size: 14px;line-height: 20px;padding: 5px 0;}.inline_block { display: inline-block;}.under_line_two {display: inline-block;border-bottom: 1px solid #999;text-align: left;white-space: nowrap;width: 50%;}.under_line {display: inline-block;border-bottom: 1px solid #999;text-align: center;white-space: nowrap; width: 50%;}.flex {display: -webkit-box;display: -moz-box; display: -ms-flexbox; display: -webkit-flex;display: flex;align-items: center;-webkit-align-items: center;box-align: center;-moz-box-align: center;-webkit-box-align: center;text-align: center;-webkit-justify-content: space-between;justify-content: space-between;-moz-box-pack: space-between;-webkit--moz-box-pack: space-between;box-pack: space-between;}.print_page_main_content .proj_table {width: 100%;border: 1px solid;border-collapse: collapse;padding: 2px;}.print_page_main_content .proj_table tbody tr td {border: 1px solid;font-size: 16px;padding: 3px 8px;line-height: 30px;}.print_page_main_content .proj_table .inside_table {width: 100%;border: hidden; border-collapse: collapse;}.print_page_main_content .proj_table .inside_table tr td {border: 1px solid; text-align: center;font-size: 14px;padding: 6px 5px;line-height: 16px;}.print-table-no {width: 100%;text-align: center;border-collapse: collapse;font-size: 14px;}.es-img {height: 30px;}.advice-name {text-align: left !important;line-height: 16px !important;}.advice-children {display: flex;}}.margin-bottom-50{margin-bottom:50px;}.margin-bottom-300 {margin-bottom:450px;}.margin-bottom-600 {margin-bottom:600px;}.margin-bottom-900 {margin-bottom:900px;}.print-yema{ position: absolute;top: 920px;left: 50%;} .print-yema2{ position: absolute;top: 400px;left: 50%;}.print-yema3{position: absolute;top: 1230px;left: 50%;}.print-yema4{position: absolute;top: 1050px;left: 50%;}.check_box{width:15px !important;height:15px !important;}.did_checke::after {font-size: 8px;margin-left: 2px;margin-top: 12px !important;position: absolute;}.table-box1 {border: 1px solid #000;width: 100%;line-height: 30px;font-size: 14px;border-collapse: collapse;}.table-box1 tr {border-bottom: 1px solid #000;}';
278
-      const style3 =
279
-        '@media print {.dialysis-print-order{width:960px;margin:0 auto}.dialysis-print-order .order-yy-name{margin:auto;text-align:center;font-size:20px;letter-spacing:5px}.dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px 20px 20px 20px}.dialysis-print-order .table-box{width:100%;line-height:23px;font-size:14px}.dialysis-print-order .print-table{width:100%;text-align:center;border-collapse:collapse;line-height:25px;font-size:16px;border-color: #000;}.dialysis-print-order .print-table-no{width:100%;text-align:center;border-collapse:collapse;font-size:14px}.dialysis-print-order .under-line{border-bottom:1px solid #000;width:95%;text-align:center;margin-left:2px}.dialysis-print-order .title-box{text-align:center;font-size:16px;border:1px solid #666}.dialysis-print-order .radio-lebel-box{font-weight:400;cursor:pointer}.dialysis-print-order .radio-no{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.dialysis-print-order .radio-inner{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.dialysis-print-order .radio-fang{display:inline-block;position:relative;border:1px solid #000;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.dialysis-print-order .is-checked-radio::after{content:"√";font-size:15px}}.dialysis-print-order .print-table-no tr td { padding: 8px 5px; line-height: 25px; }.es-img{height: 20px; }.advice-name{text-align: left;}.advice-children{display:flex;} .dialysis-print-order .print-table tr td{padding: 0px 0px;} .print-template-two tr {line-height: 30px;}   .title-box-pro{border: 0 #fff;line-height: 40px;height: 40px;text-align: left;padding-left: 10px !important;}  .text-align-left{text-align: left !important;padding-left:10px !important;font-size: 14px !important;line-height: 25px;}.row {font-size: 16px;line-height: 20px;padding: 5px 0;}.inline_block { display: inline-block;}.under_line {display: inline-block;border-bottom: 1px solid #000;text-align: center;white-space: nowrap; width: 50%;}';
280
-      // const style3 =
281
-      //   '@media print {.option_panel { margin: 0 5px 0 0; } .option_panel .check_box_panel { white-space: nowrap; outline: none; display: inline-block; line-height: 1; position: relative; vertical-align: middle; } .dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px}.option_panel .check_box_panel .check_box { display: inline-block; position: relative; border: 1px solid #000; box-sizing: border-box; width: 14px; height: 12px; background-color: #fff; } .check_box_panel .did_checked::after { content: "√"; font-size: 15px; } .print_page_main_content {background-color: white;width: 960px;margin: 0 auto 50px;padding: 0 0 0 0; page-break-after: always;}.print_page_main_content .order-yy-name {margin: auto;text-align: center;font-size: 20px;letter-spacing: 5px;}.print_page_main_content .order_title {text-align: center;font-size: 23px; line-height: 50px;font-weight: 500;} .row {font-size: 16px;line-height: 20px;padding: 5px 0;}.inline_block { display: inline-block;}.under_line_two {display: inline-block;border-bottom: 1px solid #999;text-align: left;white-space: nowrap;width: 50%;}.under_line {display: inline-block;border-bottom: 1px solid #999;text-align: center;white-space: nowrap; width: 50%;}.flex {display: -webkit-box;display: -moz-box; display: -ms-flexbox; display: -webkit-flex;display: flex;align-items: center;-webkit-align-items: center;box-align: center;-moz-box-align: center;-webkit-box-align: center;text-align: center;-webkit-justify-content: space-between;justify-content: space-between;-moz-box-pack: space-between;-webkit--moz-box-pack: space-between;box-pack: space-between;}.print_page_main_content .proj_table {width: 100%;border: 1px solid;border-collapse: collapse;padding: 2px;}.print_page_main_content .proj_table tbody tr td {border: 1px solid;font-size: 16px;padding: 5px 8px;line-height: 30px;}.print_page_main_content .proj_table .inside_table {width: 100%;border: hidden; border-collapse: collapse;}.print_page_main_content .proj_table .inside_table tr td {border: 1px solid; text-align: center;font-size: 16px;padding: 5px 5px;line-height: 18px;}.print-table-no {width: 100%;text-align: center;border-collapse: collapse;font-size: 14px;}.es-img {height: 30px;}.advice-name {text-align: left !important;line-height: 16px !important;}.advice-children {display: flex;}}.margin-bottom-300 {margin-bottom:450px;}.margin-bottom-600 {margin-bottom:600px;}.margin-bottom-900 {margin-bottom:950px;}.print-yema{ position: absolute;top: 920px;left: 50%;} .print-yema2{ position: absolute;top: 400px;left: 50%;}.print-yema3{position: absolute;top: 1230px;left: 50%;}.print-yema4{position: absolute;top:1050px;left: 50%;}.print-yema5{position: absolute;top:1370px;left: 50%;}.check_box{width:15px !important;height:15px !important;}.did_checke::after {font-size: 8px;margin-left: 2px;margin-top: 12px !important;position: absolute;}';
282
-      //
283
-
284
-      const style5 =
285
-        '@media print {.dialysis-print-order {width: 960px; margin: 0 auto;}.dialysis-print-order .order-yy-name {margin: auto;text-align: center;font-size: 20px;letter-spacing: 5px;}.dialysis-print-order .order-title {  margin: auto;  font-weight: 600;  text-align: center;  font-size: 22px;  padding: 10px 20px 0px 20px;}.dialysis-print-order .table-box {  width: 100%;  line-height: 18px;  font-size: 14px;}.dialysis-print-order .print-table {  width: 100%;  text-align: center;  border-collapse: collapse;  line-height: 28px;  font-size: 14px;}.dialysis-print-order .print-table-no {  width: 100%;  text-align: center;  border-collapse: collapse;  font-size: 14px;}.dialysis-print-order .under-line {  border-bottom: 1px solid #999;  width: 95%;  text-align: center;  margin-left: 2px;}.dialysis-print-order .title-box {  text-align: center;  font-size: 16px;}.dialysis-print-order .radio-lebel-box {  font-weight: 400;  cursor: pointer;}.dialysis-print-order .radio-no {  opacity: 0;  outline: none;  position: absolute;  margin: 0;  width: 0;  height: 0;  z-index: -1;}.dialysis-print-order .radio-inner {  white-space: nowrap;  cursor: pointer;  outline: none;  display: inline-block;  line-height: 1;  position: relative;  vertical-align: middle;}.dialysis-print-order .radio-fang {  display: inline-block;  position: relative;  border: 1px solid #000;  box-sizing: border-box;  width: 14px;  height: 14px;  background-color: #fff;  z-index: 1;  transition: border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46),    background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46);}.dialysis-print-order .is-checked-radio::after {  content: "√";  font-size: 15px;}.dialysis-print-order .print-table-no tr td {  padding: 8px 5px;  line-height: 25px;}.dialysis-print-order .print-table tr td {  padding: 1px 1px;  /*line-height: 25px;*/}.es-img {  height: 25px;}.advice-name {  text-align: left;}.advice-children {  display: flex;}.title-box-pro {  border: 0 #fff;  line-height: 25px;  height: 25px;  text-align: left;  padding-left: 10px !important;}.title-box-pro-tr {  border: 0 #fff;}.text-align-left {  text-align: left !important;  padding-left: 10px !important;  font-size: 14px !important;  line-height: 25px;}.print-table-tr-new td {line-height: 20px !important;}.border-top-solid {border: solid 1px #000;}.print-template-two tr {line-height: 30px;}}';
286
-      const style6 =
287
-        '@media print {.dialysis-print-order{width:960px;margin:0 auto}.dialysis-print-order .order-yy-name{margin:auto;text-align:center;font-size:20px;letter-spacing:5px}.dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px 20px 20px 20px}.dialysis-print-order .table-box{width:100%;line-height:23px;font-size:16px}.dialysis-print-order .print-table{width:100%;text-align:center;border-collapse:collapse;line-height:25px;font-size:16px}.dialysis-print-order .print-table-no{width:100%;text-align:center;border-collapse:collapse;font-size:16px}.dialysis-print-order .under-line{border-bottom:1px solid #999;width:95%;text-align:center;margin-left:2px}.dialysis-print-order .title-box{text-align:center;font-size:16px;border:1px solid #666}.dialysis-print-order .radio-lebel-box{font-weight:400;cursor:pointer}.dialysis-print-order .radio-no{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.dialysis-print-order .radio-inner{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.dialysis-print-order .radio-fang{display:inline-block;position:relative;border:1px solid #000;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.dialysis-print-order .is-checked-radio::after{content:"√";font-size:15px}}.dialysis-print-order .print-table-no tr td { padding: 8px 5px; line-height: 25px; }.es-img{height: 20px; }.advice-name{text-align: left;}.advice-children{display:flex;} .dialysis-print-order .print-table tr td{padding: 0px 0px;} .print-template-two tr {line-height: 30px;}   .title-box-pro{border: 0 #fff;line-height: 40px;height: 40px;text-align: left;padding-left: 10px !important;}  .text-align-left{text-align: left !important;padding-left:10px !important;font-size: 14px !important;line-height: 25px;}';
288
-
289
-      if (this.org_template_info.template_id == 1) {
290
-        printJS({
291
-          printable: "dialysis-print-box",
292
-          type: "html",
293
-          style: style,
294
-          scanStyles: false
295
-        });
296
-      } else if (
297
-        this.org_template_info.template_id == 2 ||
298
-        this.org_template_info.template_id == 0
299
-      ) {
300
-        printJS({
301
-          printable: "dialysis-print-box-1",
302
-          type: "html",
303
-          style: style2,
304
-          scanStyles: false
305
-        });
306
-      } else if (this.org_template_info.template_id == 3) {
307
-        printJS({
308
-          printable: "dialysis-print-box",
309
-          type: "html",
310
-          style: style,
311
-          scanStyles: false
312
-        });
313
-      } else if (this.org_template_info.template_id == 4) {
314
-        printJS({
315
-          printable: "dialysis-print-box",
316
-          type: "html",
317
-          style: style,
318
-          scanStyles: false
319
-        });
320
-      } else if (this.org_template_info.template_id == 5) {
321
-        printJS({
322
-          printable: "dialysis-print-box-1",
323
-          type: "html",
324
-          style: style2,
325
-          scanStyles: false
326
-        });
327
-      } else if (
328
-        this.org_template_info.template_id == 6 ||
329
-        this.org_template_info.template_id == 10 ||
330
-        this.org_template_info.template_id == 11
331
-      ) {
332
-        printJS({
333
-          printable: "dialysis-print-box-1",
334
-          type: "html",
335
-          style: style2,
336
-          scanStyles: false
337
-        });
338
-      } else if (this.org_template_info.template_id == 7) {
339
-        printJS({
340
-          printable: "dialysis-print-box",
341
-          type: "html",
342
-          style: style,
343
-          scanStyles: false
344
-        });
345
-      } else if (this.org_template_info.template_id == 8) {
346
-        printJS({
347
-          printable: "dialysis-print-box",
348
-          type: "html",
349
-          style: style,
350
-          scanStyles: false
351
-        });
352
-      } else if (this.org_template_info.template_id == 9 ||  this.org_template_info.template_id==25) {
353
-        printJS({
354
-          printable: "dialysis-print-box",
355
-          type: "html",
356
-          style: style5,
357
-          scanStyles: false
358
-        });
359
-      } else if (this.org_template_info.template_id == 12) {
360
-        printJS({
361
-          printable: "dialysis-print-box",
362
-          type: "html",
363
-          style: style,
364
-          scanStyles: false
365
-        });
366
-      } else if (this.org_template_info.template_id == 13) {
367
-        printJS({
368
-          printable: "dialysis-print-box-1",
369
-          type: "html",
370
-          style: style3,
371
-          scanStyles: false
372
-        });
373
-      } else if (this.org_template_info.template_id == 14){
374
-        printJS({
375
-          printable: "dialysis-print-box",
376
-          type: "html",
377
-          style: style,
378
-          scanStyles: false
379
-        });
380
-      } else if (this.org_template_info.template_id == 15){
381
-        printJS({
382
-          printable: "dialysis-print-box",
383
-          type: "html",
384
-          style: style,
385
-          scanStyles: false
386
-        });
387
-      } else if (this.org_template_info.template_id == 16){
388
-        printJS({
389
-          printable: "dialysis-print-box",
390
-          type: "html",
391
-          style: style,
392
-          scanStyles: false
393
-        });
394
-      } else if (this.org_template_info.template_id == 17) {
395
-        printJS({
396
-          printable: "dialysis-print-box",
397
-          type: "html",
398
-          style: style6,
399
-          scanStyles: false
400
-        });
401
-      } else if (this.org_template_info.template_id == 18) {
402
-        printJS({
403
-          printable: "dialysis-print-box",
404
-          type: "html",
405
-          style: style,
406
-          scanStyles: false
407
-        });
408
-      } else if (this.org_template_info.template_id == 19) {
409
-        printJS({
410
-          printable: "dialysis-print-box-1",
411
-          type: "html",
412
-          style: style2,
413
-          scanStyles: false
414
-        });
415
-      } else if (this.org_template_info.template_id == 20) {
416
-        printJS({
417
-          printable: "dialysis-print-box",
418
-          type: "html",
419
-          style: style,
420
-          scanStyles: false
421
-        });
422
-      } else if (this.org_template_info.template_id == 21) {
423
-        printJS({
424
-          printable: "dialysis-print-box",
425
-          type: "html",
426
-          style: style,
427
-          scanStyles: false
428
-        });
429
-      } else if (this.org_template_info.template_id == 22) {
430
-        printJS({
431
-          printable: "dialysis-print-box-1",
432
-          type: "html",
433
-          style: style2,
434
-          scanStyles: false
435
-        });
436
-      } else if (this.org_template_info.template_id == 23){
437
-        printJS({
438
-          printable: "dialysis-print-box",
439
-          type: "html",
440
-          style: style,
441
-          scanStyles: false
442
-        });
443
-      } else if (this.org_template_info.template_id == 24){
444
-        printJS({
445
-          printable: "dialysis-print-box",
446
-          type: "html",
447
-          style: style,
448
-          scanStyles: false
449
-        });
450
-      }else if (this.org_template_info.template_id == 25) {
451
-        printJS({
452
-          printable: "dialysis-print-box",
453
-          type: "html",
454
-          style: style5,
455
-          scanStyles: false
456
-        });
457
-      }
458
-    },
459
-    printThisOnePage() {
460
-      var ptime = Math.round(new Date().getTime() / 1000);
461
-      this.print_time = uParseTime(ptime, "{y}-{m}-{d} {h}:{i}");
462
-
463
-      const style =
464
-        '@media print {.dialysis-print-order{width:960px;margin:0 auto}.dialysis-print-order .order-yy-name{margin:auto;text-align:center;font-size:20px;letter-spacing:5px}.dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px 20px 20px 20px}.dialysis-print-order .table-box{width:100%;line-height:23px;font-size:14px}.dialysis-print-order .print-table{width:100%;text-align:center;border-collapse:collapse;line-height:25px;font-size:14px}.dialysis-print-order .print-table-no{width:100%;text-align:center;border-collapse:collapse;font-size:14px}.dialysis-print-order .under-line{border-bottom:1px solid #999;width:95%;text-align:center;margin-left:2px}.dialysis-print-order .title-box{text-align:center;font-size:16px;border:1px solid #666}.dialysis-print-order .radio-lebel-box{font-weight:400;cursor:pointer}.dialysis-print-order .radio-no{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.dialysis-print-order .radio-inner{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.dialysis-print-order .radio-fang{display:inline-block;position:relative;border:1px solid #000;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.dialysis-print-order .is-checked-radio::after{content:"√";font-size:15px}}.dialysis-print-order .print-table-no tr td { padding: 8px 5px; line-height: 25px; }.es-img{height: 20px; }.advice-name{text-align: left;}.advice-children{display:flex;} .dialysis-print-order .print-table tr td{padding: 0px 0px;} .print-template-two tr {line-height: 30px;}   .title-box-pro{border: 0 #fff;line-height: 40px;height: 40px;text-align: left;padding-left: 10px !important;}  .text-align-left{text-align: left !important;padding-left:10px !important;font-size: 14px !important;line-height: 25px;}';
465
-      const style2 =
466
-        '@media print {.option_panel { margin: 0 5px 0 0; } .option_panel .check_box_panel { white-space: nowrap; outline: none; display: inline-block; line-height: 1; position: relative; vertical-align: middle; } .dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px}.option_panel .check_box_panel .check_box { display: inline-block; position: relative; border: 1px solid #000; box-sizing: border-box; width: 14px; height: 12px; background-color: #fff; } .check_box_panel .did_checked::after { content: "√"; font-size: 15px; } .print_page_main_content {background-color: white;width: 960px;margin: 0 auto 50px;padding: 0 0 0 0; page-break-after: always;}.print_page_main_content .order-yy-name {margin: auto;text-align: center;font-size: 20px;letter-spacing: 5px;}.print_page_main_content .order_title {text-align: center;font-size: 23px; line-height: 50px;font-weight: 500;} .row {font-size: 14px;line-height: 20px;padding: 5px 0;}.inline_block { display: inline-block;}.under_line_two {display: inline-block;border-bottom: 1px solid #999;text-align: left;white-space: nowrap;width: 50%;}.under_line {display: inline-block;border-bottom: 1px solid #999;text-align: center;white-space: nowrap; width: 50%;}.flex {display: -webkit-box;display: -moz-box; display: -ms-flexbox; display: -webkit-flex;display: flex;align-items: center;-webkit-align-items: center;box-align: center;-moz-box-align: center;-webkit-box-align: center;text-align: center;-webkit-justify-content: space-between;justify-content: space-between;-moz-box-pack: space-between;-webkit--moz-box-pack: space-between;box-pack: space-between;}.print_page_main_content .proj_table {width: 100%;border: 1px solid;border-collapse: collapse;padding: 2px;}.print_page_main_content .proj_table tbody tr td {border: 1px solid;font-size: 16px;padding: 3px 8px;line-height: 30px;}.print_page_main_content .proj_table .inside_table {width: 100%;border: hidden; border-collapse: collapse;}.print_page_main_content .proj_table .inside_table tr td {border: 1px solid; text-align: center;font-size: 14px;padding: 6px 5px;line-height: 16px;}.print-table-no {width: 100%;text-align: center;border-collapse: collapse;font-size: 14px;}.es-img {height: 30px;}.advice-name {text-align: left !important;line-height: 16px !important;}.advice-children {display: flex;}}.margin-bottom-50{margin-bottom:50px;}.margin-bottom-300 {margin-bottom:450px;}.margin-bottom-600 {margin-bottom:600px;}.margin-bottom-900 {margin-bottom:200px;}.print-yema{ position: absolute;top: 920px;left: 50%;} .print-yema2{ position: absolute;top: 400px;left: 50%;}.print-yema3{position: absolute;top: 1230px;left: 50%;}.print-yema4{position: absolute;top: 1370px;left: 50%;}.check_box{width:15px !important;height:15px !important;}.did_checke::after {font-size: 8px;margin-left: 2px;margin-top: 12px !important;position: absolute;}';
467
-
468
-      if (this.org_template_info.template_id == 1) {
469
-        printJS({
470
-          printable: "dialysis-print-box",
471
-          type: "html",
472
-          style: style,
473
-          scanStyles: false
474
-        });
475
-      } else if (
476
-        this.org_template_info.template_id == 2 ||
477
-        this.org_template_info.template_id == 0 ||
478
-        this.org_template_info.template_id == 5 ||
479
-        this.org_template_info.template_id == 22 
480
-      ) {
481
-        printJS({
482
-          printable: "dialysis-print-box-1-1",
483
-          type: "html",
484
-          style: style2,
485
-          scanStyles: false
486
-        });
487
-      } else if(this.org_template_info.template_id == 14){
488
-        printJS({
489
-          printable: "new-dialysis-1",
490
-          type: "html",
491
-          style: style,
492
-          scanStyles: false
493
-        });
494
-      } else if(this.org_template_info.template_id == 21){
495
-        printJS({
496
-          printable: "new-dialysis-1",
497
-          type: "html",
498
-          style: style,
499
-          scanStyles: false
500
-        });
501
-      }
502
-    },
503
-    printThisTwoPage() {
504
-      var ptime = Math.round(new Date().getTime() / 1000);
505
-      this.print_time = uParseTime(ptime, "{y}-{m}-{d} {h}:{i}");
506
-
507
-      const style =
508
-        '@media print {.dialysis-print-order{width:960px;margin:0 auto}.dialysis-print-order .order-yy-name{margin:auto;text-align:center;font-size:20px;letter-spacing:5px}.dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px 20px 20px 20px}.dialysis-print-order .table-box{width:100%;line-height:23px;font-size:14px}.dialysis-print-order .print-table{width:100%;text-align:center;border-collapse:collapse;line-height:25px;font-size:14px}.dialysis-print-order .print-table-no{width:100%;text-align:center;border-collapse:collapse;font-size:14px}.dialysis-print-order .under-line{border-bottom:1px solid #999;width:95%;text-align:center;margin-left:2px}.dialysis-print-order .title-box{text-align:center;font-size:16px;border:1px solid #666}.dialysis-print-order .radio-lebel-box{font-weight:400;cursor:pointer}.dialysis-print-order .radio-no{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.dialysis-print-order .radio-inner{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.dialysis-print-order .radio-fang{display:inline-block;position:relative;border:1px solid #000;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.dialysis-print-order .is-checked-radio::after{content:"√";font-size:15px}}.dialysis-print-order .print-table-no tr td { padding: 8px 5px; line-height: 25px; }.es-img{height: 20px; }.advice-name{text-align: left;}.advice-children{display:flex;} .dialysis-print-order .print-table tr td{padding: 0px 0px;} .print-template-two tr {line-height: 30px;}   .title-box-pro{border: 0 #fff;line-height: 40px;height: 40px;text-align: left;padding-left: 10px !important;}  .text-align-left{text-align: left !important;padding-left:10px !important;font-size: 14px !important;line-height: 25px;}';
509
-      const style2 =
510
-        '@media print {.option_panel { margin: 0 5px 0 0; } .option_panel .check_box_panel { white-space: nowrap; outline: none; display: inline-block; line-height: 1; position: relative; vertical-align: middle; } .dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px}.option_panel .check_box_panel .check_box { display: inline-block; position: relative; border: 1px solid #000; box-sizing: border-box; width: 14px; height: 12px; background-color: #fff; } .check_box_panel .did_checked::after { content: "√"; font-size: 15px; } .print_page_main_content {background-color: white;width: 960px;margin: 0 auto 50px;padding: 0 0 0 0; page-break-after: always;}.print_page_main_content .order-yy-name {margin: auto;text-align: center;font-size: 20px;letter-spacing: 5px;}.print_page_main_content .order_title {text-align: center;font-size: 23px; line-height: 50px;font-weight: 500;} .row {font-size: 14px;line-height: 20px;padding: 5px 0;}.inline_block { display: inline-block;}.under_line_two {display: inline-block;border-bottom: 1px solid #999;text-align: left;white-space: nowrap;width: 50%;}.under_line {display: inline-block;border-bottom: 1px solid #999;text-align: center;white-space: nowrap; width: 50%;}.flex {display: -webkit-box;display: -moz-box; display: -ms-flexbox; display: -webkit-flex;display: flex;align-items: center;-webkit-align-items: center;box-align: center;-moz-box-align: center;-webkit-box-align: center;text-align: center;-webkit-justify-content: space-between;justify-content: space-between;-moz-box-pack: space-between;-webkit--moz-box-pack: space-between;box-pack: space-between;}.print_page_main_content .proj_table {width: 100%;border: 1px solid;border-collapse: collapse;padding: 2px;}.print_page_main_content .proj_table tbody tr td {border: 1px solid;font-size: 16px;padding: 3px 8px;line-height: 30px;}.print_page_main_content .proj_table .inside_table {width: 100%;border: hidden; border-collapse: collapse;}.print_page_main_content .proj_table .inside_table tr td {border: 1px solid; text-align: center;font-size: 14px;padding: 6px 5px;line-height: 16px;}.print-table-no {width: 100%;text-align: center;border-collapse: collapse;font-size: 14px;}.es-img {height: 30px;}.advice-name {text-align: left !important;line-height: 16px !important;}.advice-children {display: flex;}}.margin-bottom-50{margin-bottom:50px;}.margin-bottom-300 {margin-bottom:450px;}.margin-bottom-600 {margin-bottom:600px;}.margin-bottom-900 {margin-bottom:900px;}.print-yema{ position: absolute;top: 920px;left: 50%;} .print-yema2{ position: absolute;top: 400px;left: 50%;}.print-yema3{position: absolute;top: 1230px;left: 50%;}.print-yema4{position: absolute;top: 1370px;left: 50%;}.check_box{width:15px !important;height:15px !important;}.did_checke::after {font-size: 8px;margin-left: 2px;margin-top: 12px !important;position: absolute;}';
221
+        '@media print {.printTitle{font-size: 22px;text-align: center;font-weight: bold;}.infoTitle{display: flex;border-bottom: 2px solid #000;margin-top:10px;line-height: 1px; padding:0 10px;}.infoTitle p{width: 200px;}.infoMain{display: flex;flex-wrap: wrap;border-bottom: 2px solid #000;padding:0 10px;}.infoMain p{width: 50%;line-height: 1px;}.prescriptionBox{padding:0 10px;height:750px;}.Rp{font-size: 22px;font-weight: bold;line-height:1px;}.drugsBox{padding-left: 40px;margin-bottom: 10px;margin-bottom: 10px;}.drugsBox p{line-height: 1px;padding-bottom:10px !important;} .drugsOne{line-height: 1px;margin-bottom:10px !important;} .drugsOne span{margin-right: 20px;} .doctorBox{display: flex; justify-content: space-between; padding:0 10px; line-height: 1px; border-bottom: 2px solid #000;} .actionBar{display: flex; justify-content: space-between; line-height: 1px; padding:0 10px;} .actionBar p{width:150px;}}';
222
+      printJS({
223
+        printable: "prescription-print",
224
+        type: "html",
225
+        style: style,
226
+        scanStyles: false
227
+      });
511 228
 
512
-      if (this.org_template_info.template_id == 1) {
513
-        printJS({
514
-          printable: "dialysis-print-box",
515
-          type: "html",
516
-          style: style,
517
-          scanStyles: false
518
-        });
519
-      } else if (
520
-        this.org_template_info.template_id == 2 ||
521
-        this.org_template_info.template_id == 0 ||
522
-        this.org_template_info.template_id == 5 ||
523
-        this.org_template_info.template_id == 22 
524
-      ) {
525
-        printJS({
526
-          printable: "dialysis-print-box-1-2",
527
-          type: "html",
528
-          style: style2,
529
-          scanStyles: false
530
-        });
531
-      }else if(this.org_template_info.template_id == 14){
532
-        printJS({
533
-          printable: "new-dialysis-2",
534
-          type: "html",
535
-          style: style,
536
-          scanStyles: false
537
-        });
538
-      } else if(this.org_template_info.template_id == 21){
539
-        printJS({
540
-          printable: "new-dialysis-2",
541
-          type: "html",
542
-          style: style,
543
-          scanStyles: false
544
-        });
545
-      }
229
+      // if (this.org_template_info.template_id == 1) {
230
+      //   printJS({
231
+      //     printable: "dialysis-print-box",
232
+      //     type: "html",
233
+      //     style: style,
234
+      //     scanStyles: false
235
+      //   });
236
+      // }
546 237
     },
238
+    
547 239
     getNumber() {
548 240
       if (this.dialysisOrder != null) {
549 241
         return (
@@ -1194,71 +886,6 @@ export default {
1194 886
     }
1195 887
   },
1196 888
   created() {
1197
-    var schedule_type_selected = this.$store.getters.schedule_type_selected
1198
-    var zone_selected = this.$store.getters.zone_selected
1199
-    var patient_state_selected = this.$store.getters.patient_state_selected
1200
-    var treat_state_selected = this.$store.getters.treat_state_selected
1201
-    var selected_date = this.$store.getters.selected_date
1202
-    if (schedule_type_selected) {
1203
-      this.scheduleStateVal = schedule_type_selected.schedule_type_selected
1204
-    }
1205
-    if (zone_selected) {
1206
-      this.zoneVal = zone_selected.zone_selected
1207
-    }
1208
-    if (patient_state_selected) {
1209
-      this.patientStateVal = patient_state_selected.patient_state_selected
1210
-    }
1211
-    if (treat_state_selected) {
1212
-      this.treatStateVal = treat_state_selected.treat_state_selected
1213
-    }
1214
-    if (selected_date.selected_date) {
1215
-      this.selected_date = selected_date.selected_date
1216
-    }
1217
-    this.getInitData();
1218
-
1219
-    var xtuser = this.$store.getters.xt_user;
1220
-    this.orgname = xtuser.org.org_name;
1221
-    // this.orgname = "遂溪方济医院";
1222
-    this.modeOptions = this.$store.getters.treatment_mode;
1223
-    this.replacementWays = this.$store.getters.replacement_ways;
1224
-    this.perfusionApparatus = this.$store.getters.perfusion_apparatus;
1225
-    this.anticoagulantsConfit = this.$store.getters.anticoagulants_confit;
1226
-
1227
-    // this.bloodAccessParOpera = getDataConfig('hemodialysis', 'vascular_access_desc')
1228
-
1229
-    var bloodAccessParOpera = getDataConfig(
1230
-      "hemodialysis",
1231
-      "vascular_access_desc"
1232
-    );
1233
-    for (var key in bloodAccessParOpera) {
1234
-      this.bloodAccessParOpera[bloodAccessParOpera[key].id] =
1235
-        bloodAccessParOpera[key];
1236
-    }
1237
-
1238
-    var dialysateFormulationOptions = getDataConfig(
1239
-      "hemodialysis",
1240
-      "dialysate_formulation"
1241
-    );
1242
-    for (var key in dialysateFormulationOptions) {
1243
-      this.dialysateFormulationOptions[dialysateFormulationOptions[key].id] =
1244
-        dialysateFormulationOptions[key];
1245
-    }
1246
-
1247
-    const xtdate = this.$route.query && this.$route.query.xtdate;
1248
-    const xtno = this.$route.query && this.$route.query.xtno;
1249
-    if (
1250
-      typeof xtdate === "string" &&
1251
-      xtdate.length > 0 &&
1252
-      typeof xtno === "string" &&
1253
-      xtno.length > 0
1254
-    ) {
1255
-      this.queryParams.xtdate = xtdate;
1256
-      this.queryParams.xtno = xtno;
1257
-      this.getDialysisRecord();
1258
-    } else {
1259
-      this.$message.error("参数不齐");
1260
-      return false;
1261
-    }
1262 889
   },
1263 890
   computed:{
1264 891
     filtedSchedules: function() {

+ 329 - 0
src/xt_pages/outpatientDoctorStation/recordPrint.vue Dosyayı Görüntüle

@@ -0,0 +1,329 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+       <template>
6
+        <el-button
7
+          :loading="loading"
8
+          size="small"
9
+          icon="el-icon-printer"
10
+          @click="printThisPage"
11
+          type="primary"
12
+          >打印</el-button
13
+        >
14
+      </template>
15
+    </div>
16
+    <div class="app-container" style="min-height:0;">
17
+        <el-container class="newContainer">
18
+            <div style="width:270px;margin-right:20px;">
19
+                <div class="cell clearfix" style="margin-bottom:10px;">
20
+                    <el-input size="small" @keyup.enter.native='searchAction' v-model.trim="search_input" class="filter-item"/>
21
+                    <el-button size="small" class="filter-item" type="primary" @click="searchAction">搜索</el-button>
22
+                </div>
23
+                <el-table ref="tab" @row-click="changePatient" highlight-current-row :data="tableData" height="480" border style="width: 100%">
24
+                    <el-table-column prop="date"  label="患者">
25
+                        <template slot-scope="scope">
26
+                            {{ scope.row.patient.name }}
27
+                        </template>
28
+                    </el-table-column>
29
+                    <el-table-column prop="name" label="透析号">
30
+                        <template slot-scope="scope">
31
+                            {{ scope.row.patient.dialysis_no }}
32
+                        </template>
33
+                    </el-table-column>
34
+                </el-table>
35
+            </div>
36
+            
37
+            <div class='dialysisPage' style="flex: 1;height: calc(100vh - 178px);overflow-x:auto;::-webkit-scrollbar:height:15px">
38
+              <printOne v-bind:childResponse="childResponse"></printOne>
39
+            </div>
40
+        </el-container>
41
+    </div>
42
+  </div>
43
+</template>
44
+
45
+<script>
46
+
47
+import {
48
+  getDialysisRecordInitData,
49
+  getDialysisSchedules
50
+} from "@/api/dialysis_record";
51
+import { parseTime } from "@/utils";
52
+import { getDialysisRecord } from "@/api/dialysis";
53
+import { getDataConfig } from "@/utils/data";
54
+import { jsGetAge, uParseTime } from "@/utils/tools";
55
+// import LabelBox from "./printItem/LabelBox";
56
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
57
+import print from "print-js";
58
+import printOne from "./recordTemplate/printOne"
59
+export default {
60
+  name: "dialysisPrintOrder",
61
+  components: {
62
+    BreadCrumb,
63
+    printOne
64
+  },
65
+  data() {
66
+    return {
67
+      crumbs: [
68
+        { path: false, name: "透析管理" },
69
+        { path: false, name: "打印单" }
70
+      ],
71
+      childResponse: {},
72
+    };
73
+  },
74
+  methods: {
75
+    getAdminUser(id) {
76
+      if (id == 0) {
77
+        return "";
78
+      }
79
+      if (id == undefined) {
80
+        return "";
81
+      }
82
+      for (let i = 0; i < this.adminUser.length; i++) {
83
+        if (this.adminUser[i].id == id) {
84
+          return this.adminUser[i].name;
85
+        }
86
+      }
87
+    },
88
+    getTime(value, temp) {
89
+      if (value == 0) {
90
+        return "";
91
+      }
92
+      if (value != undefined) {
93
+        return uParseTime(value, temp);
94
+      }
95
+      return "";
96
+    },
97
+    printThisPage() {
98
+      var ptime = Math.round(new Date().getTime() / 1000);
99
+      this.print_time = uParseTime(ptime, "{y}-{m}-{d} {h}:{i}");
100
+
101
+      const style =
102
+        '@media print {.printTitle{font-size: 22px;text-align: center;font-weight: bold;}.infoTitle{display: flex;margin-top:10px;line-height: 1px;padding:0 10px;}.infoTitle p{width: 200px;}.otherInfo{display: flex;margin-top:10px;padding:0 10px;}.otherInfo span{display:inline-block;}.recordTitle{display: flex;margin-top:10px;line-height: 24px;padding:0 10px;border-bottom: 2px solid #000;}.recordTitle p{width: 200px;}}';
103
+      printJS({
104
+        printable: "prescription-print",
105
+        type: "html",
106
+        style: style,
107
+        scanStyles: false
108
+      });
109
+
110
+      // if (this.org_template_info.template_id == 1) {
111
+      //   printJS({
112
+      //     printable: "dialysis-print-box",
113
+      //     type: "html",
114
+      //     style: style,
115
+      //     scanStyles: false
116
+      //   });
117
+      // }
118
+    },
119
+  },
120
+  created() {
121
+  },
122
+  computed:{
123
+    filtedSchedules: function() {
124
+      var search_keyword = this.search_keyword
125
+      if (search_keyword.length > 0) {
126
+        var schedules = []
127
+        for (let o_i = 0; o_i < this.zone_schedules.length; o_i++) {
128
+        const scheduleInfo = this.zone_schedules[o_i]
129
+        var originSchedules = scheduleInfo.schedules
130
+        if (originSchedules.length == 0) {
131
+            continue
132
+        }
133
+        var filtedSchedules = []
134
+        for (let s_i = 0; s_i < originSchedules.length; s_i++) {
135
+            const schedule = originSchedules[s_i]
136
+            if (schedule.patient.name.indexOf(search_keyword) != -1) {
137
+            filtedSchedules.push(schedule)
138
+            // break
139
+            }
140
+        }
141
+        if (filtedSchedules.length > 0) {
142
+            schedules.push({ zone_id: scheduleInfo.zone_id, zone_name: scheduleInfo.zone_name, schedules: filtedSchedules })
143
+        }
144
+        }
145
+        return schedules
146
+      }
147
+    }
148
+  },
149
+};
150
+</script>
151
+
152
+<style>
153
+.dialysis-print-order {
154
+  width: 960px;
155
+  margin: 0 auto;
156
+}
157
+
158
+.dialysis-print-order .order-yy-name {
159
+  margin: auto;
160
+  text-align: center;
161
+  font-size: 20px;
162
+  letter-spacing: 5px;
163
+}
164
+
165
+.dialysis-print-order .order-title {
166
+  margin: auto;
167
+  font-weight: 600;
168
+  text-align: center;
169
+  font-size: 22px;
170
+  padding: 10px;
171
+}
172
+
173
+.dialysis-print-order .table-box {
174
+  width: 100%;
175
+  line-height: 23px;
176
+  font-size: 14px;
177
+}
178
+
179
+.dialysis-print-order .print-table {
180
+  width: 100%;
181
+  text-align: center;
182
+  border-collapse: collapse;
183
+  line-height: 40px;
184
+  font-size: 14px;
185
+  border-color: #000;
186
+}
187
+
188
+.dialysis-print-order .print-table-no {
189
+  width: 100%;
190
+  text-align: center;
191
+  border-collapse: collapse;
192
+  font-size: 14px;
193
+}
194
+
195
+.dialysis-print-order .under-line {
196
+  border-bottom: 1px solid #999;
197
+  width: 95%;
198
+  text-align: center;
199
+  margin-left: 2px;
200
+}
201
+
202
+.dialysis-print-order .title-box {
203
+  text-align: center;
204
+  font-size: 16px;
205
+}
206
+
207
+.dialysis-print-order .radio-lebel-box {
208
+  font-weight: 400;
209
+  cursor: pointer;
210
+}
211
+
212
+.dialysis-print-order .radio-no {
213
+  opacity: 0;
214
+  outline: none;
215
+  position: absolute;
216
+  margin: 0;
217
+  width: 0;
218
+  height: 0;
219
+  z-index: -1;
220
+}
221
+
222
+.dialysis-print-order .radio-inner {
223
+  white-space: nowrap;
224
+  cursor: pointer;
225
+  outline: none;
226
+  display: inline-block;
227
+  line-height: 1;
228
+  position: relative;
229
+  vertical-align: middle;
230
+}
231
+
232
+.dialysis-print-order .radio-fang {
233
+  display: inline-block;
234
+  position: relative;
235
+  border: 1px solid #000;
236
+  box-sizing: border-box;
237
+  width: 14px;
238
+  height: 14px;
239
+  background-color: #fff;
240
+  z-index: 1;
241
+  transition: border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46),
242
+    background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46);
243
+}
244
+
245
+.dialysis-print-order .is-checked-radio::after {
246
+  content: "√";
247
+  font-size: 15px;
248
+}
249
+
250
+.dialysis-print-order .print-table-no tr td {
251
+  padding: 8px 5px;
252
+  line-height: 25px;
253
+}
254
+
255
+.dialysis-print-order .print-table tr td {
256
+  padding: 1px 1px;
257
+  /*line-height: 25px;*/
258
+}
259
+
260
+.es-img {
261
+  height: 30px;
262
+}
263
+
264
+.advice-name {
265
+  text-align: left;
266
+}
267
+
268
+.advice-children {
269
+  display: flex;
270
+}
271
+
272
+.title-box-pro {
273
+  border: 0 #fff;
274
+  line-height: 25px;
275
+  height: 25px;
276
+  text-align: left;
277
+  padding-left: 10px !important;
278
+}
279
+.title-box-pro-tr {
280
+  border: 0 #fff;
281
+}
282
+.text-align-left {
283
+  text-align: left !important;
284
+  padding-left: 10px !important;
285
+  font-size: 14px !important;
286
+  line-height: 25px;
287
+}
288
+.print-table-tr-new td {
289
+  line-height: 20px !important;
290
+}
291
+.border-top-solid {
292
+  border: solid 1px #000;
293
+}
294
+.print-template-two tr {
295
+  line-height: 30px;
296
+}
297
+
298
+.table-box1 {
299
+  border: 1px solid #000;
300
+  width: 100%;
301
+  line-height: 30px;
302
+  font-size: 14px;
303
+  border-collapse: collapse;
304
+}
305
+.table-box1 tr {
306
+  border-bottom: 1px solid #000;
307
+}
308
+</style>
309
+
310
+<style lang="scss">
311
+
312
+.newContainer{
313
+  .dialysisPage::-webkit-scrollbar {
314
+    height: 15px;
315
+  }
316
+  
317
+  .el-date-editor{
318
+    .el-input__inner{
319
+      padding-right:0px;
320
+    }
321
+  }
322
+  .el-table td, .el-table th{
323
+    text-align: center;
324
+  }
325
+}
326
+.newContainer::-webkit-scrollbar{
327
+  height: 15px !important;
328
+}
329
+</style>

+ 119 - 0
src/xt_pages/outpatientDoctorStation/recordTemplate/printOne.vue Dosyayı Görüntüle

@@ -0,0 +1,119 @@
1
+<template>
2
+    <div id='prescription-print' class="prescription-print">
3
+        <div class="printTitle">门诊病历</div>
4
+        <div class="infoTitle">
5
+            <p>姓名:阿萨德</p>
6
+            <p>性别:男</p>
7
+            <p>年龄:12岁</p>
8
+        </div>
9
+        <div class="infoTitle">
10
+            <p>婚姻状况:婚姻状况保密</p>
11
+            <p>职业:未分类</p>
12
+        </div>
13
+        <div class="otherInfo">
14
+            <p>医保号:</p>
15
+            <p style="flex:1;">7938749234</p>
16
+        </div>
17
+        <div class="otherInfo">
18
+            <p>联系电话:</p>
19
+            <p style="flex:1;">23234343234</p>
20
+        </div>
21
+        <div class="otherInfo">
22
+            <p>通讯地址:</p>
23
+            <p style="flex:1;">奥数都我阿苏do一按实际的福克斯</p>
24
+        </div>
25
+        <div class="otherInfo">
26
+            <p>药物过敏史:</p>
27
+            <p style="flex:1;">奥数都我阿苏do一按实际的福克斯</p>
28
+        </div>
29
+        <div class="otherInfo">
30
+            <p>病历编号:</p>
31
+            <p style="flex:1;">2020110300002525</p>
32
+        </div>
33
+        <div style="page-break-after:always;margin-top:50px;"></div>
34
+
35
+
36
+        <div class="printTitle">病历内容</div>
37
+        <div class="recordTitle">
38
+            <p>科别:全科</p>
39
+            <p>姓名:阿萨德</p>
40
+            <p>性别:男</p>
41
+            <p>年龄:12岁</p>
42
+        </div>
43
+        <div class="otherInfo">
44
+            <p class="otherName">主诉:</p>
45
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
46
+        </div>
47
+        <div class="otherInfo">
48
+            <p class="otherName">现病史:</p>
49
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
50
+        </div>
51
+        <div class="otherInfo">
52
+            <p class="otherName">既往史:</p>
53
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
54
+        </div>
55
+        <div class="otherInfo">
56
+            <p class="otherName">药物过敏史:</p>
57
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
58
+        </div>
59
+        <div class="otherInfo">
60
+            <p class="otherName">个人史:</p>
61
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的爱神的箭了卡萨建档立卡加上来得及阿斯利康的爱神的箭了卡萨建档立卡加上来得及阿斯利康的爱神的箭了卡萨建档立卡加上来得及阿斯利康的爱神的箭了卡萨建档立卡加上来得及阿斯利康的爱神的箭了卡萨建档立卡加上来得及阿斯利康的爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
62
+        </div>
63
+        <div class="otherInfo">
64
+            <p class="otherName">家族史:</p>
65
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
66
+        </div>
67
+        <div class="otherInfo">
68
+            <p class="otherName">体格检查:</p>
69
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
70
+        </div>
71
+        <div class="otherInfo">
72
+            <p class="otherName">门诊诊断:</p>
73
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
74
+        </div>
75
+        <div class="otherInfo">
76
+            <p class="otherName">门诊医嘱:</p>
77
+            <p style="flex:1;">爱神的箭了卡萨建档立卡加上来得及阿斯利康的</p>
78
+        </div>
79
+        <div style="margin-top:20px;text-align:right;">
80
+            医生签名:阿斯加德
81
+        </div>
82
+    </div>
83
+</template>
84
+
85
+
86
+
87
+<style lang="scss" scoped>
88
+.printTitle{
89
+    font-size: 22px;
90
+    text-align: center;
91
+    font-weight: bold;
92
+}
93
+.infoTitle{
94
+    display: flex;
95
+    margin-top:10px;
96
+    line-height: 24px;
97
+    padding:0 10px;
98
+}
99
+.infoTitle p{
100
+    width: 200px;
101
+}
102
+.otherInfo{
103
+    display: flex;
104
+    margin-top:10px;
105
+    line-height: 24px;
106
+    padding:0 10px;
107
+}
108
+.recordTitle{
109
+    display: flex;
110
+    margin-top:10px;
111
+    line-height: 24px;
112
+    padding:0 10px;
113
+    border-bottom: 2px solid #000;
114
+}
115
+.recordTitle p{
116
+    width: 200px;
117
+}
118
+
119
+</style>

+ 107 - 0
src/xt_pages/outpatientDoctorStation/template/printOne.vue Dosyayı Görüntüle

@@ -0,0 +1,107 @@
1
+<template>
2
+    <div id='prescription-print' class="prescription-print">
3
+        <div class="printTitle">血液透析中心处方笺</div>
4
+        <div class="infoTitle">
5
+            <p>姓名:阿萨德</p>
6
+            <p>性别:男</p>
7
+            <p>年龄:12岁</p>
8
+        </div>
9
+        <div class="infoMain">
10
+            <p style="margin-bottom: 10px;">门诊号:111111111111</p>
11
+            <p style="margin-bottom: 10px;">科室:全科</p>
12
+            <p style="margin-bottom: 10px;">医保卡号:111111111111</p>
13
+            <p style="margin-bottom: 10px;">电话:111111111111</p>
14
+            <p>地址:加上来看待就卢萨卡的及拉丝机的了</p>
15
+            <p>临床诊断:拉胯手机上的拉丝机的</p>
16
+        </div>
17
+        <div class="prescriptionBox">
18
+            <p class="Rp">Rp:</p>
19
+            <div class="drugsBox">
20
+                <p class="drugsOne">重组人促红素(CHO细胞)注射液&nbsp;&nbsp;0.5毫升&nbsp;×&nbsp; 2支</p>
21
+                <p style="margin-left:100px;"><span>用法:0.5毫升</span>&nbsp;&nbsp;<span>一天一次</span>&nbsp;&nbsp;<span>静脉注射</span></p>
22
+            </div>
23
+            <div class="drugsBox">
24
+                <p class="drugsOne">重组人促红素(CHO细胞)注射液&nbsp;&nbsp;0.5毫升&nbsp;×&nbsp; 2支</p>
25
+                <p style="margin-left:100px;"><span>用法:0.5毫升</span>&nbsp;&nbsp;<span>一天一次</span>&nbsp;&nbsp;<span>静脉注射</span></p>
26
+            </div>
27
+        </div>
28
+        <div class="doctorBox">
29
+            <p>医师:高华</p>
30
+            <p>日期:2020-11-14 09:12:32</p>
31
+        </div>
32
+        <div class="actionBar">
33
+            <p>审核:</p>
34
+            <p>配对:</p>
35
+            <p>核对:</p>
36
+            <p>发药:</p>
37
+            <p>药费:</p>
38
+        </div>
39
+    </div>
40
+</template>
41
+
42
+
43
+
44
+<style lang="scss" scoped>
45
+.printTitle{
46
+    font-size: 22px;
47
+    text-align: center;
48
+    font-weight: bold;
49
+}
50
+.infoTitle{
51
+    display: flex;
52
+    border-bottom: 2px solid #000;
53
+    margin-top:10px;
54
+    line-height: 24px;
55
+    padding:0 10px;
56
+}
57
+.infoTitle p{
58
+    width: 200px;
59
+}
60
+.infoMain{
61
+    display: flex;
62
+    flex-wrap: wrap;
63
+    border-bottom: 2px solid #000;
64
+    padding:0 10px;
65
+}
66
+.infoMain p{
67
+    width: 50%;
68
+    line-height: 24px;
69
+}
70
+.prescriptionBox{
71
+    padding:0 10px;
72
+    height:600px;
73
+}
74
+.Rp{
75
+    font-size: 22px;
76
+    font-weight: bold;
77
+}
78
+.drugsBox{
79
+    padding-left: 40px;
80
+    margin-bottom: 10px;
81
+}
82
+.drugsBox p{
83
+    line-height: 30px;
84
+}
85
+.drugsOne{
86
+    line-height: 24px;
87
+}
88
+.drugsOne span{
89
+    margin-right: 20px;
90
+}
91
+.doctorBox{
92
+    display: flex;
93
+    justify-content: space-between;
94
+    padding:0 10px;
95
+    line-height: 24px;
96
+    border-bottom: 2px solid #000;
97
+}
98
+.actionBar{
99
+    display: flex;
100
+    justify-content: space-between; 
101
+    line-height: 24px;
102
+    padding:0 10px;
103
+}
104
+.actionBar p{
105
+    width:150px;
106
+}
107
+</style>

+ 8 - 6
src/xt_pages/outpatientRegistration/index.vue Dosyayı Görüntüle

@@ -18,8 +18,10 @@
18 18
                         </el-select>
19 19
                     </el-form-item>
20 20
                     <el-form-item class="specialFormItem" label="医保卡号:">
21
-                        <el-input v-model="form.medicalInsuranceCard"></el-input>
22
-                        <el-button type="primary" @click="reading">读卡</el-button>
21
+                        <div style="display:flex;">
22
+                            <el-input v-model="form.medicalInsuranceCard"></el-input>
23
+                            <el-button style="margin-left:10px;" type="primary" @click="reading">读卡</el-button>
24
+                        </div>
23 25
                     </el-form-item>
24 26
                     <el-form-item label="患者姓名:">
25 27
                         <el-input v-model="form.name"></el-input>
@@ -442,19 +444,19 @@ export default {
442 444
     flex-wrap: wrap;
443 445
     justify-content: space-between;
444 446
     .el-form-item{
445
-        width: 260px;
447
+        width: 33%;
446 448
     }
447 449
     .specialFormItem{
448
-        width:625px;
450
+        width:67%;
449 451
         .el-input{
450 452
             min-width: 150px;
451 453
         }
452 454
     }
453 455
     .el-select{
454
-        width: 180px;
456
+        width: 100%;
455 457
     }
456 458
     .el-input{
457
-        width: 180px;
459
+        width: 100%;
458 460
     }
459 461
 }
460 462
     .el-form-item__error{