Browse Source

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

See999 4 years ago
parent
commit
749433f07c

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

@@ -0,0 +1,81 @@
1
+import request from "@/utils/request";
2
+
3
+
4
+
5
+export function getSchedulePatientList(params) {
6
+  return request({
7
+    url: "/api/hispatient/list",
8
+    method: "get",
9
+    params:params
10
+  });
11
+}
12
+
13
+
14
+export function getPatientInfo(params) {
15
+  return request({
16
+    url: "/api/hispatient/get",
17
+    method: "get",
18
+    params:params
19
+  });
20
+}
21
+
22
+
23
+export function createCaseHistory(params) {
24
+  return request({
25
+    url: "/api/doctorworkstation/casehistory/create",
26
+    method: "post",
27
+    params:params
28
+  });
29
+}
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+export function getInitData(params) {
38
+  return request({
39
+    url: "/api/hisprescription/config",
40
+    method: "get",
41
+    params:params
42
+  });
43
+}
44
+
45
+
46
+export function getDoctors() {
47
+  return request({
48
+    url: "/api/admin/get",
49
+    method: "get",
50
+  });
51
+}
52
+
53
+
54
+
55
+export function createHisPrescription(data, params) {
56
+  return request({
57
+    url: "/api/hisprescription/create",
58
+    method: "post",
59
+    data:data,
60
+    params:params,
61
+  });
62
+}
63
+
64
+
65
+
66
+
67
+
68
+
69
+// export function createCaseHistory(params) {
70
+//   return request({
71
+//     url: "/api/doctorworkstation/casehistory/create",
72
+//     method: "post",
73
+//     params:params
74
+//   });
75
+// }
76
+
77
+
78
+
79
+
80
+
81
+

+ 1 - 1
src/api/patient.js View File

@@ -373,7 +373,7 @@ export function modifyDryWeightData(params) {
373 373
 }
374 374
 
375 375
 export function deleteDryWeight(id, data) {
376
-  console.log('id', id)
376
+ 
377 377
   return request({
378 378
     url: '/api/patient/deletedryweight?id=' + id,
379 379
     method: 'delete',

+ 111 - 1
src/api/project/project.js View File

@@ -160,4 +160,114 @@ export function saveCharges(data){
160 160
        method:"post",
161 161
        data:data
162 162
     })
163
-}
163
+}
164
+
165
+
166
+export function getAllProjectList(params){
167
+    return request({
168
+       url:"/api/his/getallprojectlist",
169
+       methods:"get",
170
+       params:params
171
+    })
172
+}
173
+
174
+export function addProjectList(params){
175
+  
176
+    return request({
177
+       url:"/api/his/addprojectlist",
178
+       methods:"get",
179
+       params:params
180
+    })
181
+}
182
+
183
+export function getPatientInformation(id,params){
184
+   
185
+   return request({
186
+     url:"/api/his/getpatientinformation?id="+id,
187
+     methods:"Get",
188
+     params:params
189
+   })
190
+}
191
+
192
+export function DeleteProject(id,params){
193
+   
194
+    return request({
195
+       url:"/api/his/deleteproject?id="+id,
196
+       methods:"Get",
197
+       params:params
198
+    })
199
+}
200
+
201
+
202
+export function getHisProject(params){
203
+  
204
+    return request({
205
+       url:"/api/his/gethisproject",
206
+       methods:"get",
207
+       params:params
208
+    })
209
+}
210
+
211
+export function addProjectTeam(params){
212
+   
213
+  return request({
214
+      url:"/api/his/getprojectteam",
215
+      methods:"Get",
216
+      params:params
217
+  })
218
+}
219
+
220
+export function getAllDoctorList(params){
221
+   
222
+  return request({
223
+      url:"/api/his/getalldoctorlist",
224
+      methods:"Get",
225
+      params:params
226
+  })
227
+} 
228
+
229
+export function saveHisPatient(params){
230
+   
231
+    return request({
232
+        url:"/api/his/savehispatient",
233
+        methods:"get",
234
+        params:params
235
+    })
236
+}
237
+
238
+export function getAllProjectTeam(params){
239
+  
240
+  return request({
241
+     url:"/api/hist/getallprojecteam",
242
+     methods:"get",
243
+     params:params
244
+  })
245
+}
246
+
247
+export function getPojectListById(params){
248
+  
249
+  return request({
250
+    url:"/api/his/getprojectlistbyid",
251
+    methods:"get",
252
+    params:params 
253
+  })
254
+}
255
+
256
+export function getHisPatientHistory(params){
257
+  
258
+    return request({
259
+        url:"/api/his/gethispatienthistory",
260
+        methods:"get",
261
+        params:params
262
+    })
263
+}
264
+
265
+
266
+export function changePatient(id,params){
267
+   
268
+    return request({
269
+      url:"/api/patient/changepatient?id="+id,
270
+      method:"get",
271
+      params:params
272
+    })
273
+  }

+ 134 - 7
src/xt_pages/data/components/addInspection.vue View File

@@ -43,6 +43,60 @@
43 43
                 <el-form-item label="备注 : " prop="name" style="width:100%;">
44 44
                     <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.remark"></el-input>
45 45
                 </el-form-item>
46
+  
47
+                 <el-form-item label="组套明细" style="width:50%;">
48
+                    <el-select v-model="form.project_detail" placeholder="请选择">
49
+                        <el-option
50
+                        v-for="item in projectList"
51
+                        :key="item.id"
52
+                        :label="item.project_name"
53
+                        :value="item.id">
54
+                        </el-option>
55
+                    </el-select>
56
+
57
+                    </el-form-item>
58
+                 <el-form-item label="数量" style="width:50%;"> 
59
+                      <div style="display:flex;"> 
60
+                         <el-input v-model="form.number" style="margin-right:10px;"></el-input>
61
+                         <el-button type="primary" @click="addProjectList">添加</el-button>
62
+                      </div>
63
+                  </el-form-item>
64
+            </el-form>
65
+            <el-form>
66
+                <el-table :data="tableData" border  style="100%" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row ref="tab">
67
+                    <el-table-column align="center" prop="name" label="分类" width="120">
68
+                        <template slot-scope="scope">{{getId(scope.row.cost_classify)}}</template>
69
+                    </el-table-column>
70
+                    <el-table-column align="center" prop="name" label="组套明细" width="120">
71
+                        <template slot-scope="scope">{{scope.row.project_name}}</template>
72
+                    </el-table-column>
73
+                     <el-table-column align="center" prop="name" label="数量" width="120">
74
+                        <template slot-scope="scope">{{scope.row.number}}</template>
75
+                    </el-table-column>
76
+                     <el-table-column align="center" prop="name" label="单位" width="120">
77
+                        <template slot-scope="scope">{{scope.row.unit}}</template>
78
+                    </el-table-column>
79
+                    <el-table-column align="center" prop="name" label="单价" width="120">
80
+                        <template slot-scope="scope">{{scope.row.price}}</template>
81
+                    </el-table-column>
82
+                    <el-table-column align="center" prop="name" label="操作">
83
+                        <template slot-scope="scope">
84
+                          <el-tooltip
85
+                            class="item"
86
+                            effect="dark"
87
+                            content="删除"
88
+                            placement="top"
89
+                            >
90
+                            <el-button
91
+                                type="danger"
92
+                                icon="el-icon-delete"
93
+                                size="small"
94
+                                @click="DeleteProject(scope.row.id,scope.$index)"
95
+                            ></el-button>
96
+                            </el-tooltip>
97
+                        </template>
98
+                    </el-table-column>
99
+                </el-table>
46 100
             </el-form>
47 101
         </div>
48 102
 
@@ -56,7 +110,7 @@
56 110
 
57 111
 <script>
58 112
 import { getDictionaryDataConfig,getDataConfig } from "@/utils/data";
59
-import { saveProjectTeam } from "@/api/project/project"
113
+import { saveProjectTeam,getAllProjectList,addProjectList,DeleteProject } from "@/api/project/project"
60 114
 export default {
61 115
     data(){
62 116
         return{
@@ -70,7 +124,9 @@ export default {
70 124
               wubi:"",
71 125
               tube_color:"",
72 126
               team_type:"",
73
-              remark:""
127
+              remark:"",
128
+              project_detail:"",
129
+              number:""
74 130
             },
75 131
             options: [
76 132
             {value: 1,label: '是'},
@@ -84,7 +140,9 @@ export default {
84 140
               wubi: [{ required: true, message: '请填写五笔' , trigger: 'blur' }],
85 141
               price: [{ required: true, message: '请填写价格', trigger: 'change' }],
86 142
               team_type: [{ required:true,message:'请填写组套类型',trigger:'change' }]
87
-           }
143
+           },
144
+           tableData:[],
145
+           projectList:[]
88 146
         }
89 147
     },
90 148
     methods:{
@@ -110,23 +168,30 @@ export default {
110 168
          this.visible = false
111 169
         },
112 170
         submitAction(formName){
171
+          
113 172
            this.$refs[formName].validate((valid)=>{
114
-               var params = {
173
+                var arr = []
174
+                for(let i=0;i<this.tableData.length;i++){
175
+                    arr.push(this.tableData[i].id)
176
+                }
177
+                console.log("arr",arr)
178
+                var ids = arr.join(",")
179
+                var params = {
115 180
                  project_team:this.form.project_team,
116 181
                  price:this.form.price,
117 182
                  pinyin:this.form.pinyin,
118 183
                  wubi:this.form.wubi,
119 184
                  tube_color:this.form.tube_color,
120 185
                  team_type:this.form.team_type,
121
-                 remark:this.form.remark
186
+                 remark:this.form.remark,
187
+                 ids:ids,
122 188
                }
123 189
                console.log("params",params)
124 190
               saveProjectTeam(params).then(response=>{
125 191
                  if(response.data.state == 1){
126 192
                    var projectTeam = response.data.data.projectTeam
127 193
                    console.log("projectTeam",projectTeam)
128
-                   this.$message.success("保存成功")
129
-                  
194
+                   this.$message.success("保存成功")  
130 195
                    this.visible = false
131 196
                    this.form.project_team = "",
132 197
                    this.form.price = "",
@@ -136,10 +201,72 @@ export default {
136 201
                    this.form.team_type = "",
137 202
                    this.form.remark = ""
138 203
                    this.$parent.getlist()
204
+                 }else{
205
+                    this.$message.error("项目组套名称已存在!")
139 206
                  }
140 207
               }) 
141 208
            })
209
+        },
210
+        getlist(){
211
+          getAllProjectList().then(response=>{
212
+             if(response.data.state == 1){
213
+               var projectList = response.data.data.projectList
214
+               console.log('projectlist33333',projectList)
215
+               this.projectList = projectList
216
+               var hisprojectlist = response.data.data.hisprojectlist
217
+               console.log("hisprojectlist",hisprojectlist)
218
+               this.tableData = hisprojectlist
219
+             }
220
+          })   
221
+        },
222
+        addProjectList(){
223
+            const params = {
224
+              id:this.form.project_detail,
225
+              number:parseInt(this.form.number)
226
+            }
227
+           console.log("params",params)
228
+          addProjectList(params).then(response=>{
229
+             if(response.data.state == 1){
230
+               var projectList = response.data.data.projectList
231
+               this.$message.success("保存成功")
232
+               this.form.project_detail = ""
233
+               this.form.number = ""
234
+               this.getlist()
235
+             }
236
+          })
237
+        },
238
+        getId(id){
239
+          var name = ""
240
+          var statistics_category =  getDictionaryDataConfig('system','statistics_category') 
241
+          console.log("2235",statistics_category)
242
+          for(let i=0;i<statistics_category.length;i++){
243
+             if(id == statistics_category[i].id){
244
+                 name = statistics_category[i].name
245
+             }
246
+          }
247
+          return name
248
+        },
249
+        DeleteProject(id,index){
250
+           this.$confirm("确认删除此项目吗?", "删除", {
251
+            confirmButtonText: "确 定",
252
+            cancelButtonText: "取 消",
253
+            type: "warning"
254
+         }).then(() => {
255
+          DeleteProject(id).then(response => {
256
+            if (response.data.state == 1) {
257
+               this.tableData.splice(index, 1);
258
+            } else {
259
+             
260
+            }
261
+          });
262
+        })
263
+        .catch(() => {});
142 264
         }
265
+    },
266
+    created(){
267
+      //获取所以的项目
268
+      this.getlist()
269
+   
143 270
     }
144 271
 }
145 272
 </script>

+ 33 - 1
src/xt_pages/data/components/addProject.vue View File

@@ -104,6 +104,21 @@
104 104
                                 </el-option>
105 105
                             </el-select>
106 106
                         </el-form-item>
107
+                        <el-form-item label="单次用量 : " prop="medical_code">
108
+                            <el-input v-model="form.single_dose" style="width:160px;" placeholder="" maxlength="30"></el-input>
109
+                        </el-form-item>
110
+                          <el-form-item label="用法 : " prop="medical_code">
111
+                            <el-input v-model="form.delivery_way" style="width:160px;" placeholder="" maxlength="30"></el-input>
112
+                        </el-form-item>
113
+                          <el-form-item label="频率 : " prop="medical_code">
114
+                            <el-input v-model="form.execution_frequency" style="width:160px;" placeholder="" maxlength="30"></el-input>
115
+                        </el-form-item>
116
+                          <el-form-item label="天数 : " prop="medical_code">
117
+                            <el-input v-model="form.number_days" style="width:160px;" placeholder="" maxlength="30"></el-input>
118
+                        </el-form-item>
119
+                          <el-form-item label="总量 : " prop="medical_code">
120
+                            <el-input v-model="form.total" style="width:160px;" placeholder="" maxlength="30"></el-input>
121
+                        </el-form-item>
107 122
                         <el-form-item label="状态 : " prop="medical_status" style="width:100%;">
108 123
                             <el-radio-group v-model="form.medical_status">
109 124
                                 <el-radio :label="1">停用</el-radio>
@@ -233,6 +248,11 @@ export default {
233 248
               is_workload:"",
234 249
               sort:"",
235 250
               is_advice:"",
251
+              single_dose:"",
252
+              delivery_way:"",
253
+              execution_frequency:"",
254
+              number_days:"",
255
+              total:""
236 256
             },
237 257
             rules: {
238 258
                 project_name: [{ required: true, message: '请填写项目名称', trigger: 'blur'  }],
@@ -300,7 +320,12 @@ export default {
300 320
                     is_workload:this.form.is_workload,
301 321
                     sort:this.form.sort,
302 322
                     is_advice:this.form.is_advice,
303
-                    is_default:this.form.is_default
323
+                    is_default:this.form.is_default,
324
+                    single_dose:this.form.single_dose,
325
+                    delivery_way:this.form.delivery_way,
326
+                    execution_frequency:this.form.execution_frequency,
327
+                    number_days:this.form.number_days,
328
+                    total:this.form.total,
304 329
                }
305 330
            
306 331
               saveProject(params).then(response=>{
@@ -332,6 +357,13 @@ export default {
332 357
                    this.form.sort = ""
333 358
                    this.form.is_advice = ""
334 359
                    this.form.is_default = ""
360
+                   this.form.single_dose = ""
361
+                   this.form.delivery_way = ""
362
+                   this.form.execution_frequency = ""
363
+                   this.form.number_days = ""
364
+                   this.form.total = ""
365
+                 }else {
366
+                    this.$message.error("项目名称已存在!")
335 367
                  }
336 368
               })
337 369
             }

+ 127 - 5
src/xt_pages/data/components/editInspection.vue View File

@@ -43,6 +43,59 @@
43 43
                 <el-form-item label="备注 : " prop="name" style="width:100%;">
44 44
                     <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.remark"></el-input>
45 45
                 </el-form-item>
46
+                 <el-form-item label="组套明细" style="width:50%;">
47
+                    <el-select v-model="form.project_detail" placeholder="请选择">
48
+                        <el-option
49
+                        v-for="item in projectList"
50
+                        :key="item.id"
51
+                        :label="item.project_name"
52
+                        :value="item.id">
53
+                        </el-option>
54
+                    </el-select>
55
+
56
+                    </el-form-item>
57
+                 <el-form-item label="数量" style="width:50%;"> 
58
+                      <div style="display:flex;"> 
59
+                         <el-input v-model="form.number" style="margin-right:10px;"></el-input>
60
+                         <el-button type="primary" @click="addProjectList">添加</el-button>
61
+                      </div>
62
+                  </el-form-item>
63
+            </el-form>
64
+            <el-form>
65
+                <el-table :data="tableData" border  style="100%" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row ref="tab">
66
+                    <el-table-column align="center" prop="name" label="分类" width="120">
67
+                        <template slot-scope="scope">{{getId(scope.row.cost_classify)}}</template>
68
+                    </el-table-column>
69
+                    <el-table-column align="center" prop="name" label="组套明细" width="120">
70
+                        <template slot-scope="scope">{{scope.row.project_name}}</template>
71
+                    </el-table-column>
72
+                     <el-table-column align="center" prop="name" label="数量" width="120">
73
+                        <template slot-scope="scope">{{scope.row.number}}</template>
74
+                    </el-table-column>
75
+                     <el-table-column align="center" prop="name" label="单位" width="120">
76
+                        <template slot-scope="scope">{{scope.row.unit}}</template>
77
+                    </el-table-column>
78
+                    <el-table-column align="center" prop="name" label="单价" width="120">
79
+                        <template slot-scope="scope">{{scope.row.price}}</template>
80
+                    </el-table-column>
81
+                    <el-table-column align="center" prop="name" label="操作">
82
+                        <template slot-scope="scope">
83
+                          <el-tooltip
84
+                            class="item"
85
+                            effect="dark"
86
+                            content="删除"
87
+                            placement="top"
88
+                            >
89
+                            <el-button
90
+                                type="danger"
91
+                                icon="el-icon-delete"
92
+                                size="small"
93
+                                @click="DeleteProject(scope.row.id,scope.$index)"
94
+                            ></el-button>
95
+                            </el-tooltip>
96
+                        </template>
97
+                    </el-table-column>
98
+                </el-table>
46 99
             </el-form>
47 100
         </div>
48 101
 
@@ -55,7 +108,7 @@
55 108
 </template>
56 109
 
57 110
 <script>
58
-import { getProjectTeamDetail,updatedProjectTeam } from "@/api/project/project"
111
+import { getProjectTeamDetail,updatedProjectTeam,getAllProjectList,addProjectList,DeleteProject } from "@/api/project/project"
59 112
 import { getDictionaryDataConfig,getDataConfig} from "@/utils/data";
60 113
 export default {
61 114
     data(){
@@ -71,7 +124,9 @@ export default {
71 124
               wubi:"",
72 125
               tube_color:"",
73 126
               team_type:"",
74
-              remark:""
127
+              remark:"",
128
+              project_detail:"",
129
+              number:"",
75 130
             },
76 131
             options: [{
77 132
             value: 1,
@@ -88,7 +143,8 @@ export default {
88 143
               wubi: [{ required: true, message: '请填写五笔' , trigger: 'blur' }],
89 144
               price: [{ required: true, message: '请填写价格', trigger: 'change' }],
90 145
               team_type: [{ required:true,message:'请填写组套类型',trigger:'change' }]
91
-           }
146
+           },
147
+           tableData:[]
92 148
         }
93 149
     },
94 150
     methods:{
@@ -133,7 +189,13 @@ export default {
133 189
         },
134 190
         submitAction(formName){
135 191
            this.$refs[formName].validate((valid)=>{
136
-              if(valid){
192
+               var arr = []
193
+                for(let i=0;i<this.tableData.length;i++){
194
+                    arr.push(this.tableData[i].id)
195
+                }
196
+               console.log("arr",arr)
197
+               var ids = arr.join(",")
198
+               if(valid){
137 199
                 var params = {
138 200
                     id:this.form.id,
139 201
                     project_team:this.form.project_team,
@@ -142,8 +204,10 @@ export default {
142 204
                     wubi:this.form.wubi,
143 205
                     tube_color:this.form.tube_color,
144 206
                     team_type:this.form.team_type,
145
-                    remark:this.form.remark
207
+                    remark:this.form.remark,
208
+                    ids:ids,
146 209
                 }
210
+                console.log("params",params)
147 211
                  updatedProjectTeam(params).then(response=>{
148 212
                    if(response.data.state == 1){
149 213
                      var projectTeam = response.data.data.projectTeam
@@ -155,7 +219,65 @@ export default {
155 219
               }
156 220
            })  
157 221
         
222
+        },
223
+       getlist(){
224
+          getAllProjectList().then(response=>{
225
+             if(response.data.state == 1){
226
+               var projectList = response.data.data.projectList
227
+               console.log('projectlist33333',projectList)
228
+               this.projectList = projectList
229
+               var hisprojectlist = response.data.data.hisprojectlist
230
+               console.log("hisprojectlist",hisprojectlist)
231
+               this.tableData = hisprojectlist
232
+             }
233
+          })   
234
+        },
235
+        getId(id){
236
+          var name = ""
237
+          var statistics_category =  getDictionaryDataConfig('system','statistics_category') 
238
+          console.log("2235",statistics_category)
239
+          for(let i=0;i<statistics_category.length;i++){
240
+             if(id == statistics_category[i].id){
241
+                 name = statistics_category[i].name
242
+             }
243
+          }
244
+          return name
245
+        },
246
+       addProjectList(){
247
+            const params = {
248
+              id:this.form.project_detail,
249
+              number:parseInt(this.form.number)
250
+            }
251
+           console.log("params",params)
252
+          addProjectList(params).then(response=>{
253
+             if(response.data.state == 1){
254
+               var projectList = response.data.data.projectList
255
+               this.$message.success("保存成功")
256
+               this.form.project_detail = ""
257
+               this.form.number = ""
258
+               this.getlist()
259
+             }
260
+          })
261
+        },
262
+        DeleteProject(id,index){
263
+           this.$confirm("确认删除此项目吗?", "删除", {
264
+            confirmButtonText: "确 定",
265
+            cancelButtonText: "取 消",
266
+            type: "warning"
267
+         }).then(() => {
268
+          DeleteProject(id).then(response => {
269
+            if (response.data.state == 1) {
270
+               this.tableData.splice(index, 1);
271
+            } else {
272
+             
273
+            }
274
+          });
275
+        })
276
+        .catch(() => {});
158 277
         }
278
+    },
279
+    created(){
280
+       this.getlist()   
159 281
     }
160 282
 }
161 283
 </script>

+ 33 - 1
src/xt_pages/data/components/editProject.vue View File

@@ -103,6 +103,21 @@
103 103
                                 :value="item.id">
104 104
                                 </el-option>
105 105
                             </el-select>
106
+                        </el-form-item>
107
+                         <el-form-item label="单次用量 : " prop="medical_code">
108
+                            <el-input v-model="form.single_dose" style="width:160px;" placeholder="" maxlength="30"></el-input>
109
+                        </el-form-item>
110
+                          <el-form-item label="用法 : " prop="medical_code">
111
+                            <el-input v-model="form.delivery_way" style="width:160px;" placeholder="" maxlength="30"></el-input>
112
+                        </el-form-item>
113
+                          <el-form-item label="频率 : " prop="medical_code">
114
+                            <el-input v-model="form.execution_frequency" style="width:160px;" placeholder="" maxlength="30"></el-input>
115
+                        </el-form-item>
116
+                          <el-form-item label="天数 : " prop="medical_code">
117
+                            <el-input v-model="form.number_days" style="width:160px;" placeholder="" maxlength="30"></el-input>
118
+                        </el-form-item>
119
+                          <el-form-item label="总量 : " prop="medical_code">
120
+                            <el-input v-model="form.total" style="width:160px;" placeholder="" maxlength="30"></el-input>
106 121
                         </el-form-item>
107 122
                         <el-form-item label="状态 : " prop="medical_status" style="width:100%;">
108 123
                             <el-radio-group v-model="form.medical_status">
@@ -113,6 +128,8 @@
113 128
                         <el-form-item label="备注 : " prop="remark" style="width:100%;">
114 129
                             <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.remark"></el-input>
115 130
                         </el-form-item>
131
+
132
+                        
116 133
                     </el-form>
117 134
                 </div>
118 135
             </el-tab-pane>
@@ -235,6 +252,11 @@ export default {
235 252
               is_workload:"",
236 253
               sort:"",
237 254
               is_advice:"",
255
+              single_dose:"",
256
+              delivery_way:"",
257
+              execution_frequency:"",
258
+              number_days:"",
259
+              total:""
238 260
             },
239 261
             rules: {
240 262
                 project_name: [{ required: true, message: '请填写项目名称', trigger: 'blur'  }],
@@ -302,6 +324,11 @@ export default {
302 324
               this.form.is_workload = projecDetail.is_workload
303 325
               this.form.sort = projecDetail.sort
304 326
               this.form.is_advice = projecDetail.doctor_advice
327
+              this.form.single_dose = projecDetail.single_dose
328
+              this.form.delivery_way = projecDetail.delivery_way
329
+              this.form.execution_frequency = projecDetail.execution_frequency
330
+              this.form.number_days = projecDetail.number_days
331
+              this.form.total = projecDetail.total
305 332
             }
306 333
          })
307 334
        },
@@ -334,7 +361,12 @@ export default {
334 361
                     is_workload:this.form.is_workload,
335 362
                     sort:this.form.sort,
336 363
                     is_advice:this.form.is_advice,
337
-                    is_default:this.form.is_default
364
+                    is_default:this.form.is_default,
365
+                    single_dose:this.form.single_dose,
366
+                    delivery_way:this.form.delivery_way,
367
+                    execution_frequency:this.form.execution_frequency,
368
+                    number_days:this.form.number_days,
369
+                    total:this.form.total,
338 370
                }
339 371
               
340 372
               updatedProject(params).then(response=>{

+ 13 - 4
src/xt_pages/data/components/inspection.vue View File

@@ -4,15 +4,15 @@
4 4
             <div class="cell clearfix" style="margin-bottom:0;">
5 5
                 <el-input style="width: 180px;margin-right:10px;" @keyup.enter.native='searchAction' v-model.trim="search_input" class="filter-item"/>
6 6
                 <el-button style="margin-right:10px;" class="filter-item" type="primary" icon="el-icon-search" @click="searchAction">搜索</el-button>
7
-                <label class="title"><span class="name">是否启用</span> : </label>
8
-                <el-select v-model="value" style="width:140px;margin-right:10px;" placeholder="请选择">
7
+                <!-- <label class="title"><span class="name">是否启用</span> : </label> -->
8
+                <!-- <el-select v-model="value" style="width:140px;margin-right:10px;" placeholder="请选择">
9 9
                     <el-option
10 10
                     v-for="item in options"
11 11
                     :key="item.value"
12 12
                     :label="item.label"
13 13
                     :value="item.value">
14 14
                     </el-option>
15
-                </el-select>
15
+                </el-select> -->
16 16
             </div>
17 17
             <el-button type="primary" @click="openForm(0)">新增</el-button>
18 18
         </div>
@@ -75,6 +75,7 @@
75 75
 <script>
76 76
 import addInspection from './addInspection'
77 77
 import editInspection from './editInspection'
78
+import { getDictionaryDataConfig,getDataConfig } from "@/utils/data";
78 79
 import { getProjectTeamList,DeleteProjectTeam } from "@/api/project/project"
79 80
 export default {
80 81
     components:{
@@ -100,6 +101,12 @@ export default {
100 101
         }
101 102
     },
102 103
     methods:{
104
+       getDataConfig(module, filed_name){
105
+         return getDataConfig(module, filed_name)
106
+       },
107
+        getDictionaryDataConfig(module, filed_name) {
108
+          return getDictionaryDataConfig(module, filed_name)
109
+       },
103 110
       handleSizeChange(val) {
104 111
         this.limit = val
105 112
         this.getlist()
@@ -123,6 +130,7 @@ export default {
123 130
         },
124 131
         getlist(){
125 132
             const params = {
133
+               keyword:this.search_input,
126 134
                limit:this.limit,
127 135
                page:this.page,
128 136
             }
@@ -154,7 +162,8 @@ export default {
154 162
         }
155 163
     },
156 164
     created(){
157
-       this.getlist()  
165
+       this.getlist() 
166
+      
158 167
     }
159 168
 }
160 169
 </script>

+ 24 - 12
src/xt_pages/data/components/project.vue View File

@@ -3,9 +3,9 @@
3 3
         <div style="display:flex;justify-content: space-between;width:100%;margin-bottom:20px;">
4 4
             <div class="cell clearfix" style="margin-bottom:0;">
5 5
                 <el-input style="width: 180px;margin-right:10px;" @keyup.enter.native='searchAction' v-model.trim="search_input" class="filter-item"/>
6
-                <el-button style="margin-right:10px;" class="filter-item" type="primary" icon="el-icon-search" @click="searchAction">搜索</el-button>
6
+                <el-button style="margin-right:10px;" class="filter-item" type="primary" icon="el-icon-search" @click="searchAction" >搜索</el-button>
7 7
                 <label class="title"><span class="name">是否启用</span> : </label>
8
-                <el-select v-model="value" style="width:140px;margin-right:10px;" placeholder="请选择">
8
+                <el-select v-model="is_start" style="width:140px;margin-right:10px;" placeholder="请选择" @change="changeStart">
9 9
                     <el-option
10 10
                     v-for="item in options"
11 11
                     :key="item.value"
@@ -14,9 +14,9 @@
14 14
                     </el-option>
15 15
                 </el-select>
16 16
                 <label class="title"><span class="name">是否收费</span> : </label>
17
-                <el-select v-model="value" style="width:140px;margin-right:10px;" placeholder="请选择">
17
+                <el-select v-model="is_charge" style="width:140px;margin-right:10px;" placeholder="请选择">
18 18
                     <el-option
19
-                    v-for="item in options"
19
+                    v-for="item in optionOne"
20 20
                     :key="item.value"
21 21
                     :label="item.label"
22 22
                     :value="item.value">
@@ -96,21 +96,29 @@ export default {
96 96
     data(){
97 97
         return{
98 98
             search_input:'',
99
-            options: [{
100
-            value: '1',
101
-            label: '是'
102
-            }, {
103
-            value: '2',
104
-            label: '否'
105
-            },],
99
+            options: [
100
+             {value:0,label:'全部'},
101
+             {value:1,label: '停用'},
102
+             {value:2,label: '收费'}
103
+            ],
104
+            optionOne:[
105
+              {value:0,label:'全部'},
106
+              {value:1,label:'是'},
107
+              {value:2,label:'否'}
108
+            ],
106 109
             value: '',
107 110
             limit:20,
108 111
             page:1,
109 112
             total:0,
110
-            tableData: []
113
+            tableData: [],
114
+            is_start:0,
115
+            is_charge:0
111 116
         }
112 117
     },
113 118
     methods:{
119
+        changeStart(id){
120
+          console.log("id",id)
121
+        },
114 122
         handleSizeChange(val) {
115 123
             this.limit = val
116 124
             this.getlist()
@@ -154,9 +162,13 @@ export default {
154 162
       
155 163
         getlist(){
156 164
             var params = {
165
+               keyword:this.search_input,
166
+               is_charge:this.is_charge,
167
+               is_start:this.is_start,
157 168
                limit:this.limit,
158 169
                page:this.page,
159 170
             }
171
+           console.log("222",params)
160 172
           getProjectList(params).then(response=>{
161 173
              if(response.data.state == 1){
162 174
                var projecList = response.data.data.projecList

+ 1 - 1
src/xt_pages/data/specialDictionary.vue View File

@@ -1,4 +1,4 @@
1
-<template>
1
+ <template>
2 2
   <div class="main-contain">
3 3
     <div class="position">
4 4
       <bread-crumb :crumbs="crumbs"></bread-crumb>

+ 3 - 2
src/xt_pages/outpatientCharges/components/additionalCharges.vue View File

@@ -39,8 +39,9 @@ export default {
39 39
                 name:''
40 40
             },
41 41
             tableData:[
42
-              {id:1,name:"zs",money:50},
43
-              {id:2,name:"ls",money:60}  
42
+              {id:1,name:"工本费",money:""},
43
+              {id:2,name:"挂号费",money:""},
44
+              {id:3,name:"诊疗费",money:""}  
44 45
             ],
45 46
             patient_id:0,
46 47
             chargeTable:[]

+ 89 - 87
src/xt_pages/outpatientCharges/outpatientChargesManagement.vue View File

@@ -10,10 +10,10 @@
10 10
                     <p>已就诊:<span>0</span>人</p>
11 11
                 </div>
12 12
                 <div class="mainCell">
13
-                    <el-radio-group v-model="radio">
14
-                        <el-radio :label="1">未就诊</el-radio>
15
-                        <el-radio :label="2">已就诊</el-radio>
16
-                        <el-radio :label="3">全部</el-radio>
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 17
                     </el-radio-group>
18 18
                 </div>
19 19
                 <div class="mainCell" style="margin-bottom:10px;">
@@ -21,12 +21,15 @@
21 21
                     <el-button size="small" style="margin-left:10px;" class="filter-item" type="primary" @click="searchAction">搜索</el-button>
22 22
                 </div>
23 23
                 <div style="flex:1;overflow-y:auto;">
24
-                    <el-table :data="patientTableData" border @row-click='choosePatient' style="width: 100%;" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
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">
25 28
                         <el-table-column align="center" prop="name" label="患者姓名">
26 29
                             <template slot-scope="scope">{{ scope.row.name }}</template>
27 30
                         </el-table-column>
28 31
                         <el-table-column align="center" prop="name" label="就诊号" width="90">
29
-                            <template slot-scope="scope">{{ scope.row.mdtrt_id }}</template>
32
+                            <template slot-scope="scope">3222</template>
30 33
                         </el-table-column>
31 34
                     </el-table>
32 35
                 </div>
@@ -66,11 +69,11 @@
66 69
                     <div class="centerRight">
67 70
                         <p class="centerRightTitle">人员信息</p>
68 71
                         <div style="display:flex;justify-content: space-between;line-height:30px;">
69
-                            <span style="font-size:14px;">人员编码:{{ patientInfo.psn_no }}</span>
70
-                            <span style="font-size:14px;">日期:2020-11-13</span>
72
+                            <span style="font-size:14px;">人员编码:</span>
73
+                            <span style="font-size:14px;">日期:{{start_time}}</span>
71 74
                         </div>
72 75
                         <ul class="basicUl">
73
-                            <li style="width:50%;">姓名:{{ patientInfo.psn_name }}</li>
76
+                            <li style="width:50%;">姓名:{{ patientInfo.name }}</li>
74 77
                             <li style="width:50%;">性别:{{ patientInfo && patientInfo.gend == 1 ? '男' : "女" }}</li>
75 78
                             <li style="width:50%;">年龄:{{ patientInfo.age }}</li>
76 79
                             <li style="width:50%;">身高:</li>
@@ -107,6 +110,8 @@ import charged from './components/charged'
107 110
 import medicalInsuranceRefund from './components/medicalInsuranceRefund'
108 111
 import prescriptionTable from './components/prescriptionTable'
109 112
 import additionalCharges from './components/additionalCharges'
113
+import { getPatientList,getPatientInformation } from "@/api/project/project"
114
+const moment = require('moment')
110 115
 export default {
111 116
     components:{
112 117
         BreadCrumb,
@@ -122,67 +127,7 @@ export default {
122 127
                 { path: false, name: '门诊收费' },
123 128
                 { path: false, name: '门诊收费管理' }
124 129
             ],
125
-            tableData: [{
126
-            date: '2016-05-02',
127
-            name: '王小虎',
128
-            address: '上海市普陀区金沙江路 1518 弄'
129
-            }, {
130
-            date: '2016-05-04',
131
-            name: '王小虎',
132
-            address: '上海市普陀区金沙江路 1517 弄'
133
-            }, {
134
-            date: '2016-05-01',
135
-            name: '王小虎',
136
-            address: '上海市普陀区金沙江路 1519 弄'
137
-            }, {
138
-            date: '2016-05-03',
139
-            name: '王小虎',
140
-            address: '上海市普陀区金沙江路 1516 弄'
141
-            },{
142
-            date: '2016-05-02',
143
-            name: '王小虎',
144
-            address: '上海市普陀区金沙江路 1518 弄'
145
-            }, {
146
-            date: '2016-05-04',
147
-            name: '王小虎',
148
-            address: '上海市普陀区金沙江路 1517 弄'
149
-            }, {
150
-            date: '2016-05-01',
151
-            name: '王小虎',
152
-            address: '上海市普陀区金沙江路 1519 弄'
153
-            }, {
154
-            date: '2016-05-03',
155
-            name: '王小虎',
156
-            address: '上海市普陀区金沙江路 1516 弄'
157
-            },{
158
-            date: '2016-05-02',
159
-            name: '王小虎',
160
-            address: '上海市普陀区金沙江路 1518 弄'
161
-            }, {
162
-            date: '2016-05-04',
163
-            name: '王小虎',
164
-            address: '上海市普陀区金沙江路 1517 弄'
165
-            }, {
166
-            date: '2016-05-01',
167
-            name: '王小虎',
168
-            address: '上海市普陀区金沙江路 1519 弄'
169
-            }, {
170
-            date: '2016-05-03',
171
-            name: '王小虎',
172
-            address: '上海市普陀区金沙江路 1516 弄'
173
-            }, {
174
-            date: '2016-05-04',
175
-            name: '王小虎',
176
-            address: '上海市普陀区金沙江路 1517 弄'
177
-            }, {
178
-            date: '2016-05-01',
179
-            name: '王小虎',
180
-            address: '上海市普陀区金沙江路 1519 弄'
181
-            }, {
182
-            date: '2016-05-03',
183
-            name: '王小虎',
184
-            address: '上海市普陀区金沙江路 1516 弄'
185
-            }],
130
+            tableData: [],
186 131
             editableTabsValue: '1',
187 132
             editableTabs: [{
188 133
             title: '处方1',
@@ -197,11 +142,17 @@ export default {
197 142
             patientInfo:{},
198 143
             doctor:{},
199 144
             total:0,
200
-            state:'未收费'
145
+            state:'未收费',
146
+            radio:1,
147
+            radioStatus:1,
148
+            search_input:"",
149
+            start_time:moment().locale('zh-cn').format('YYYY-MM-DD')
201 150
         }
202 151
     },
203 152
     created(){
204
-        
153
+       
154
+       //获取患者信息
155
+       this.getPatientList()
205 156
     },
206 157
     methods:{
207 158
         moreState(tab, event){
@@ -255,21 +206,72 @@ export default {
255 206
             this.preTableData.map(item => {
256 207
                 this.total += item.unitPrice
257 208
             })
258
-            this.patientInfo = {
259
-                certno:"440221195903290027",
260
-                psn_no:"0221201972",
261
-                gend:"2",
262
-                brdy:"1960-03-29",
263
-                naty:"01",
264
-                psn_cert_type:"01",
265
-                psn_name:"杨美英",
266
-                age:60.7
267
-            }
268
-            this.doctor = {
269
-                name:'刘志刚',
270
-                department:'血透中心',
271
-                total:20,
272
-            }
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
+            // }
224
+        },
225
+       changeRadio(id){ 
226
+         console.log(id)
227
+         this.radioStatus = id
228
+         this.getPatientList()
229
+       },
230
+
231
+        //患者列表
232
+        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
+           })
254
+        },
255
+
256
+        unique(arr) {
257
+            const res = new Map();
258
+            return arr.filter((arr) => !res.has(arr.id_card_no) && res.set(arr.id_card_no, 1))
259
+        },
260
+        handleCurrentChange(val){
261
+          console.log("val",val)
262
+          this.getPatientInformation(val.id)
263
+        },
264
+        
265
+        //获取患者的基本信息
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
+            })
273 275
         }
274 276
     }
275 277
 }

+ 42 - 4
src/xt_pages/outpatientDoctorStation/components/additionalCharges.vue View File

@@ -5,32 +5,45 @@
5 5
         :visible.sync="visible"
6 6
         :before-close="_close"
7 7
     >
8
-        <el-table :data="tableData" border style="width: 100%;" height="300" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
8
+        <el-table :data="tableData" border style="width: 100%;" height="300" :row-style="{ color: '#303133' }" 
9
+        :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row
10
+          @selection-change="handleSelectionChange">
9 11
             <el-table-column align="center" type="selection" width="40"></el-table-column>
10 12
             <el-table-column align="center" prop="name" label="名称" width="100">
11
-                <template slot-scope="scope">{{ scope.row.date }}</template>
13
+                <template slot-scope="scope">{{ scope.row.name }}</template>
12 14
             </el-table-column>
13 15
             <el-table-column align="center" prop="name" label="金额(元)">
14 16
                 <template slot-scope="scope">
15
-                    <el-input v-model="input" placeholder=""></el-input>
17
+                    <el-input v-model="scope.row.money" placeholder=""></el-input>
16 18
                 </template>
17 19
             </el-table-column>
18 20
         </el-table>
19 21
         <div slot="footer" class="dialog-footer">
20 22
             <el-button @click="hide">取 消</el-button>
21
-            <el-button type="primary" :loading="submitLoading" @click="submitAction()">保 存</el-button>
23
+            <el-button type="primary"  @click="submitAction()">保 存</el-button>
22 24
         </div>
23 25
     </el-dialog>         
24 26
 </template>
25 27
 
26 28
 <script>
29
+ import { saveCharges } from "@/api/project/project"
27 30
 export default {
31
+   props: {
32
+      hisPatientInfo: Object,
33
+      patientInfo:Object,
34
+    },
28 35
     data(){
29 36
         return{
30 37
             visible:false,
31 38
             form:{
32 39
                 name:''
33 40
             },
41
+            tableData:[
42
+              {id:1,name:"工本费",money:""},
43
+              {id:2,name:"挂号费",money:""},
44
+              {id:3,name:"诊疗费",money:""}  
45
+            ],
46
+            chargeTable:[]
34 47
         }
35 48
     },
36 49
     methods:{
@@ -51,6 +64,31 @@ export default {
51 64
             // this.clear()
52 65
             this.visible = false
53 66
         },
67
+        handleSelectionChange(val){
68
+          console.log("val",val)
69
+          this.chargeTable = val
70
+        },
71
+        submitAction(){
72
+          var params = {
73
+             his_patient_id:this.hisPatientInfo.id,
74
+             patient_id:this.patientInfo.id,
75
+             medicineData:this.chargeTable
76
+           }
77
+           console.log("params",params)
78
+          saveCharges(params).then(response=>{
79
+             if(response.data.state == 1){
80
+               var additionalCharge =  response.data.data.additionalCharge
81
+               console.log("additionalchar",additionalCharge)
82
+               this.visible = false
83
+               this.$message.success("保存成功")
84
+             }
85
+          })      
86
+        }
87
+    },
88
+    watch:{
89
+       hisPatientInfo:function(val){
90
+         console.log("患者ID",this)  
91
+       }
54 92
     }
55 93
 }
56 94
 </script>

File diff suppressed because it is too large
+ 751 - 503
src/xt_pages/outpatientDoctorStation/components/deskPrescription.vue


+ 305 - 223
src/xt_pages/outpatientDoctorStation/components/deskRecord.vue View File

@@ -1,245 +1,327 @@
1 1
 <template>
2
-    <div class="deskRecord">
3
-        <div style="overflow:hidden;border-top:1px solid #e5e5e5;margin-top:5px;">
4
-            <div class="mainCell" style="margin-bottom:10px;float:right">
5
-                <el-button size="small" @click="open(1)" type="primary" style="margin-left:10px;">保存</el-button>
6
-                <el-button size="small" @click="open(2)" type="primary">打印</el-button>
7
-                <el-button size="small" @click="open(3)" type="primary">病历调用</el-button>
8
-                <el-button size="small" @click="open(4)" type="primary">存模板</el-button>
9
-            </div>
10
-        </div>
11
-        <div class="backColor"></div>
12
-        <div class="mainTitle">基本信息:</div>
13
-        <el-form class="basicForm" :model="form" :rules="rules" ref="form" label-width="120px">
14
-            <el-form-item label="姓名:" prop="name">
15
-                <el-input v-model="form.name" placeholder=""></el-input>
16
-            </el-form-item>
17
-            <el-form-item label="性别: " prop="name">
18
-                <el-select style="width:100%;" v-model="value" placeholder="">
19
-                    <el-option
20
-                    v-for="item in options"
21
-                    :key="item.value"
22
-                    :label="item.label"
23
-                    :value="item.value">
24
-                    </el-option>
25
-                </el-select>
26
-            </el-form-item>
27
-            <el-form-item label="年龄: " prop="name">
28
-                <el-input v-model="form.name" placeholder=""></el-input>
29
-            </el-form-item>
30
-            <el-form-item label="证件号:" prop="name">
31
-                <el-input v-model="form.name" placeholder=""></el-input>
32
-            </el-form-item>
33
-            <el-form-item label="出生日期: " prop="name">
34
-                <el-date-picker
35
-                style="width:100%;"
36
-                v-model="value1"
37
-                type="date"
38
-                placeholder="选择日期">
39
-                </el-date-picker>
40
-            </el-form-item>
41
-            <el-form-item label="联系电话: " prop="name">
42
-                <el-input v-model="form.name" placeholder=""></el-input>
43
-            </el-form-item>
44
-            <el-form-item label="关系联系人: " prop="name">
45
-                <el-input v-model="form.name" placeholder=""></el-input>
46
-            </el-form-item>
47
-            <el-form-item label="关系联系人电话: " prop="name">
48
-                <el-input v-model="form.name" placeholder=""></el-input>
49
-            </el-form-item>
50
-            <el-form-item label="家庭住址: " prop="name">
51
-                <el-input v-model="form.name" placeholder=""></el-input>
52
-            </el-form-item>
53
-        </el-form>
54
-        <div class="mainTitle">体格信息:</div>
55
-        <el-form class="physiqueForm" :model="form" :rules="rules" ref="form" label-width="80px">
56
-            <el-form-item label="体温:" prop="name">
57
-                <el-input v-model="form.name" placeholder=""></el-input><span>℃</span>
58
-            </el-form-item>
59
-            <el-form-item label="血糖: " prop="name">
60
-                <el-input v-model="form.name" placeholder=""></el-input>mmol/L
61
-            </el-form-item>
62
-            <el-form-item label="脉搏: " prop="name">
63
-                <el-input v-model="form.name" placeholder=""></el-input>(次/分)
64
-            </el-form-item>
65
-            <el-form-item label="血压:" prop="name">
66
-                <el-input v-model="form.name" placeholder=""></el-input>/
67
-                <el-input v-model="form.name" placeholder=""></el-input>mmHg
68
-            </el-form-item>
69
-            <el-form-item label="身高: " prop="name">
70
-                <el-input v-model="form.name" placeholder=""></el-input>cm
71
-            </el-form-item>
72
-            <el-form-item label="血脂: " prop="name">
73
-                <el-input v-model="form.name" placeholder=""></el-input>mmol/L
74
-            </el-form-item>
75
-            <el-form-item label="脉搏: " prop="name">
76
-                <el-input v-model="form.name" placeholder=""></el-input>(次/分)
77
-            </el-form-item>
78
-            <el-form-item label="体重: " prop="name">
79
-                <el-input v-model="form.name" placeholder=""></el-input>kg
80
-            </el-form-item>
81
-        </el-form>
82
-        <div class="mainTitle">病历信息:</div>
83
-        <el-form class="recordForm" :model="form" :rules="rules" ref="form" label-width="80px">
84
-            <el-form-item label="病历分类:" prop="name">
85
-                <el-select style="width:100%;" v-model="value" placeholder="">
86
-                    <el-option
87
-                    v-for="item in options"
88
-                    :key="item.value"
89
-                    :label="item.label"
90
-                    :value="item.value">
91
-                    </el-option>
92
-                </el-select>
93
-            </el-form-item>
94
-            <el-form-item label="症状: " prop="name">
95
-                <el-input v-model="form.name" placeholder=""></el-input>
96
-            </el-form-item>
97
-            <el-form-item label="发病日期: " prop="name">
98
-                <el-date-picker
99
-                style="width:100%;"
100
-                v-model="value1"
101
-                type="date"
102
-                placeholder="选择日期">
103
-                </el-date-picker>
104
-            </el-form-item>
105
-            <el-form-item label="" prop="name">
106
-                <el-checkbox v-model="checked">是否传染</el-checkbox>
107
-            </el-form-item>
108
-            <el-form-item label="主诉:" prop="name" style="width:100%;">
109
-                <el-input
110
-                type="textarea"
111
-                :rows="2"
112
-                placeholder="请输入内容"
113
-                v-model="textarea">
114
-                </el-input>
115
-            </el-form-item>
116
-            <el-form-item label="现病史:" prop="name" style="width:100%;">
117
-                <el-input
118
-                type="textarea"
119
-                :rows="2"
120
-                placeholder="请输入内容"
121
-                v-model="textarea">
122
-                </el-input>
123
-            </el-form-item>
124
-            <el-form-item label="既往史:" prop="name" style="width:100%;">
125
-                <el-input
126
-                type="textarea"
127
-                :rows="2"
128
-                placeholder="请输入内容"
129
-                v-model="textarea">
130
-                </el-input>
131
-            </el-form-item>
132
-            <el-form-item label="个人史:" prop="name" style="width:100%;">
133
-                <el-input
134
-                type="textarea"
135
-                :rows="2"
136
-                placeholder="请输入内容"
137
-                v-model="textarea">
138
-                </el-input>
139
-            </el-form-item>
140
-            <el-form-item label="家族史:" prop="name" style="width:100%;">
141
-                <el-input
142
-                type="textarea"
143
-                :rows="2"
144
-                placeholder="请输入内容"
145
-                v-model="textarea">
146
-                </el-input>
147
-            </el-form-item>
148
-            <el-form-item label="诊断信息:" prop="name" style="width:100%;">
149
-                <el-input
150
-                type="textarea"
151
-                :rows="2"
152
-                placeholder="请输入内容"
153
-                v-model="textarea">
154
-                </el-input>
155
-            </el-form-item>
156
-        </el-form>
157
-        <medicalRecord ref='medicalRecord'></medicalRecord>
158
-        <saveRecordTemplate ref='saveRecordTemplate'></saveRecordTemplate>
2
+  <div class="deskRecord">
3
+    <div style="overflow:hidden;border-top:1px solid #e5e5e5;margin-top:5px;">
4
+      <div class="mainCell" style="margin-bottom:10px;float:right">
5
+        <el-button size="small" @click="open(1)" type="primary" style="margin-left:10px;">保存</el-button>
6
+        <el-button size="small" @click="open(2)" type="primary">打印</el-button>
7
+        <el-button size="small" @click="open(3)" type="primary">病历调用</el-button>
8
+        <el-button size="small" @click="open(4)" type="primary">存模板</el-button>
9
+      </div>
159 10
     </div>
11
+    <div class="backColor"></div>
12
+    <div class="mainTitle">基本信息:</div>
13
+    <el-form class="basicForm" :model="patientInfo" :rules="rules" ref="form" label-width="120px">
14
+      <el-form-item label="姓名:" prop="name">
15
+        <el-input v-model="patientInfo.name" placeholder="" readonly></el-input>
16
+      </el-form-item>
17
+      <el-form-item label="性别: " prop="name">
18
+        <div v-if="patientInfo.gender == 1">男</div>
19
+        <div v-if="patientInfo.gender == 2">女</div>
20
+      </el-form-item>
21
+      <el-form-item label="年龄: " prop="name">
22
+        <el-input v-model="patientInfo.age" placeholder="" readonly></el-input>
23
+      </el-form-item>
24
+      <el-form-item label="证件号:" prop="name">
25
+        <el-input v-model="patientInfo.id_card_no" placeholder="" readonly></el-input>
26
+      </el-form-item>
27
+      <el-form-item label="出生日期: " prop="name">
28
+        <el-date-picker
29
+          style="width:100%;"
30
+          v-model="patientInfo.birth"
31
+          type="date"
32
+          readonly
33
+          placeholder="选择日期">
34
+        </el-date-picker>
35
+      </el-form-item>
36
+      <el-form-item label="联系电话: " prop="name">
37
+        <el-input v-model="patientInfo.phone" placeholder="" readonly></el-input>
38
+      </el-form-item>
39
+
40
+      <el-form-item label="关系联系人电话: " prop="name">
41
+        <el-input v-model="patientInfo.relative_phone" placeholder="" readonly></el-input>
42
+      </el-form-item>
43
+      <el-form-item label="家庭住址: " prop="name">
44
+        <el-input v-model="patientInfo.home_address" placeholder="" readonly></el-input>
45
+      </el-form-item>
46
+    </el-form>
47
+    <div class="mainTitle">体格信息:</div>
48
+    <el-form class="physiqueForm" :model="case_history" :rules="rules" ref="form" label-width="80px">
49
+      <el-form-item label="体温:" prop="name">
50
+        <el-input v-model="case_history.temperature" placeholder=""></el-input>
51
+        <span>℃</span>
52
+      </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
+      <el-form-item label="脉搏: " prop="name">
58
+        <el-input v-model="case_history.pulse" placeholder=""></el-input>
59
+        (次/分)
60
+      </el-form-item>
61
+      <el-form-item label="血压:" prop="name">
62
+        <el-input v-model="case_history.sbp" placeholder=""></el-input>
63
+        /
64
+        <el-input v-model="case_history.dbp" placeholder=""></el-input>
65
+        mmHg
66
+      </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
+    </el-form>
76
+    <div class="mainTitle">病历信息:</div>
77
+    <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
+      <el-form-item label="发病日期: " prop="name">
92
+        <el-date-picker
93
+          style="width:100%;"
94
+          v-model="case_history.sick_date"
95
+          type="date"
96
+          placeholder="选择日期">
97
+        </el-date-picker>
98
+      </el-form-item>
99
+      <el-form-item label="" prop="name">
100
+        <el-checkbox v-model="case_history.is_infect">是否传染</el-checkbox>
101
+      </el-form-item>
102
+      <el-form-item label="主诉:" prop="name" style="width:100%;">
103
+        <el-input
104
+          type="textarea"
105
+          :rows="2"
106
+          placeholder="请输入内容"
107
+          v-model="case_history.chief_conplaint">
108
+        </el-input>
109
+      </el-form-item>
110
+      <el-form-item label="现病史:" prop="name" style="width:100%;">
111
+        <el-input
112
+          type="textarea"
113
+          :rows="2"
114
+          placeholder="请输入内容"
115
+          v-model="case_history.history_of_present_illness">
116
+        </el-input>
117
+      </el-form-item>
118
+      <el-form-item label="既往史:" prop="name" style="width:100%;">
119
+        <el-input
120
+          type="textarea"
121
+          :rows="2"
122
+          placeholder="请输入内容"
123
+          v-model="case_history.past_history">
124
+        </el-input>
125
+      </el-form-item>
126
+      <el-form-item label="个人史:" prop="name" style="width:100%;">
127
+        <el-input
128
+          type="textarea"
129
+          :rows="2"
130
+          placeholder="请输入内容"
131
+          v-model="case_history.personal_history">
132
+        </el-input>
133
+      </el-form-item>
134
+      <el-form-item label="家族史:" prop="name" style="width:100%;">
135
+        <el-input
136
+          type="textarea"
137
+          :rows="2"
138
+          placeholder="请输入内容"
139
+          v-model="case_history.family_history">
140
+        </el-input>
141
+      </el-form-item>
142
+      <el-form-item label="诊断信息:" prop="name" style="width:100%;">
143
+        <el-input
144
+          type="textarea"
145
+          :rows="2"
146
+          placeholder="请输入内容"
147
+          v-model="case_history.diagnostic">
148
+        </el-input>
149
+      </el-form-item>
150
+    </el-form>
151
+    <medicalRecord ref='medicalRecord'></medicalRecord>
152
+    <saveRecordTemplate ref='saveRecordTemplate'></saveRecordTemplate>
153
+  </div>
160 154
 </template>
161 155
 
162 156
 <script>
163
-import medicalRecord from './medicalRecord'
164
-import saveRecordTemplate from './saveRecordTemplate'
165
-export default {
166
-    components:{
167
-       medicalRecord,
168
-       saveRecordTemplate 
157
+  import medicalRecord from './medicalRecord'
158
+  import saveRecordTemplate from './saveRecordTemplate'
159
+  import { getDictionaryDataConfig } from "@/utils/data";
160
+  import {  createCaseHistory } from '@/api/his/his'
161
+
162
+
163
+  export default {
164
+    props: {
165
+      case_history: Object,
166
+      patientInfo: Object,
167
+      hisPatientInfo: Object,
168
+      record_date:String,
169 169
     },
170
-    data(){
171
-        return{
172
-            form:{
173
-                name:''
174
-            },
170
+    components: {
171
+      medicalRecord,
172
+      saveRecordTemplate
173
+    },
174
+    data() {
175
+      return {
176
+        case_history:{
177
+          sick_type:'',
178
+          symptom:"",
179
+          sick_date:"",
180
+          is_infect:"",
181
+          chief_conplaint:"",
182
+          history_of_present_illness:"",
183
+          past_history:"",
184
+          diagnostic:"",
185
+          personal_history:"",
186
+          family_history:"",
187
+
188
+        },
189
+        formValue:{
190
+          temperature:"",
191
+          blood_sugar:"",
192
+          pulse:"",
193
+          sbp:"",
194
+          dbp:"",
195
+          height:"",
196
+          blood_fat:"",
197
+        },
198
+        form: {
199
+          name: ''
175 200
         }
201
+      }
176 202
     },
177
-    methods:{
178
-        open(index){
179
-            if(index == 1){
180
-                
181
-            }else if(index == 2){
182
-                
183
-            }else if(index == 3){
184
-                this.$refs.medicalRecord.show()
185
-            }else if(index == 4){
186
-                this.$refs.saveRecordTemplate.show()
203
+    methods: {
204
+      getDictionaryDataConfig(module, filed_name) {
205
+        return getDictionaryDataConfig(module, filed_name)
206
+
207
+      },
208
+      setData(case_history,patientInfo,hisPatientInfo){
209
+        this.form.name = patientInfo.name
210
+
211
+
212
+
213
+      },
214
+      open(index) {
215
+        if (index == 1) {
216
+          if(this.patientInfo.id == undefined){
217
+            this.$message.error("请先选择病人")
218
+            return
219
+          }
220
+
221
+          let params = {
222
+            "patient_id":this.patientInfo.id,
223
+            "temperature":this.case_history.temperature,
224
+            "blood_sugar":this.case_history.blood_sugar,
225
+            "pulse":this.case_history.pulse,
226
+            "sbp":this.case_history.sbp,
227
+            "dbp":this.case_history.dbp,
228
+            "blood_fat":this.case_history.blood_fat,
229
+            "height":this.case_history.height,
230
+            "sick_type":this.case_history.sick_type,
231
+            "symptom":this.case_history.symptom,
232
+            "sick_date":this.case_history.sick_date,
233
+            "is_infect":this.case_history.is_infect,
234
+            "chief_conplaint":this.case_history.chief_conplaint,
235
+            "history_of_present_illness":this.case_history.history_of_present_illness,
236
+            "past_history":this.case_history.past_history,
237
+            "personal_history":this.case_history.personal_history,
238
+            "family_history":this.case_history.family_history,
239
+            "record_date":this.record_date,
240
+
241
+
242
+          }
243
+          createCaseHistory(params).then(response => {
244
+            if (response.data.state == 0) {
245
+              this.$message.error(response.data.msg)
246
+              return false
247
+            } else {
248
+              this.$message.success("保存成功")
187 249
             }
188
-            
189
-        },
250
+          })
251
+        } else if (index == 2) {
252
+
253
+        } else if (index == 3) {
254
+          this.$refs.medicalRecord.show()
255
+        } else if (index == 4) {
256
+          this.$refs.saveRecordTemplate.show()
257
+        }
258
+
259
+      }
190 260
     }
191
-}
261
+  }
192 262
 </script>
193 263
 
194 264
 
195 265
 <style lang="scss" scoped>
196
-.mainTitle{
197
-    font-size:18px;
198
-    font-weight:bold;
266
+  .mainTitle {
267
+    font-size: 18px;
268
+    font-weight: bold;
199 269
     margin-bottom: 10px;
200
-}
201
-.backColor{
270
+  }
271
+
272
+  .backColor {
202 273
     background: #f6f8f9;
203 274
     height: 5px;
204 275
     margin-bottom: 5px;
205
-}
206
-.deskRecord{
207
-    .basicForm{
208
-        display: flex;
209
-        flex-wrap: wrap;
210
-        .el-form-item{
211
-            width:32%;
212
-            margin-right: 1%;
213
-        }
214
-    }
215
-    .physiqueForm{
216
-        display: flex;
217
-        flex-wrap: wrap;
218
-        .el-form-item{
219
-            width:24%;
220
-            margin-right: 1%;
221
-        }
222
-    }
223
-    .recordForm{
224
-        display: flex;
225
-        flex-wrap: wrap;
226
-        .el-form-item{
227
-            width:24%;
228
-            margin-right: 1%;
229
-        }
230
-    }
231
-    
232
-}
276
+  }
277
+
278
+  .deskRecord {
279
+
280
+  .basicForm {
281
+    display: flex;
282
+    flex-wrap: wrap;
283
+
284
+  .el-form-item {
285
+    width: 32%;
286
+    margin-right: 1%;
287
+  }
288
+
289
+  }
290
+  .physiqueForm {
291
+    display: flex;
292
+    flex-wrap: wrap;
293
+
294
+  .el-form-item {
295
+    width: 24%;
296
+    margin-right: 1%;
297
+  }
298
+
299
+  }
300
+  .recordForm {
301
+    display: flex;
302
+    flex-wrap: wrap;
303
+
304
+  .el-form-item {
305
+    width: 24%;
306
+    margin-right: 1%;
307
+  }
308
+
309
+  }
310
+
311
+  }
233 312
 </style>
234 313
 
235 314
 <style lang="scss">
236
-.physiqueForm{
237
-    .el-form-item__content{
238
-        display: flex;
239
-    }
240
-    .el-input{
241
-        width:80px;
242
-        margin-right:5px;
243
-    }
244
-}
315
+  .physiqueForm {
316
+
317
+  .el-form-item__content {
318
+    display: flex;
319
+  }
320
+
321
+  .el-input {
322
+    width: 80px;
323
+    margin-right: 5px;
324
+  }
325
+
326
+  }
245 327
 </style>

+ 236 - 137
src/xt_pages/outpatientDoctorStation/components/prescriptionTable.vue View File

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

+ 3 - 1
src/xt_pages/outpatientDoctorStation/components/saveTemplate.vue View File

@@ -6,7 +6,7 @@
6 6
         :before-close="_close"
7 7
     >
8 8
         <div>
9
-            <el-form :model="form" :rules="rules" class="adviceForm" ref="form" label-width="100px" style="display: flex;flex-wrap: wrap;justify-content: space-between;">
9
+            <el-form :model="form"  class="adviceForm" ref="form" label-width="100px" style="display: flex;flex-wrap: wrap;justify-content: space-between;">
10 10
                 <el-form-item label="创建人 : " style="width: 100%;margin-bottom:0;">
11 11
                     医生
12 12
                 </el-form-item>
@@ -59,6 +59,8 @@ export default {
59 59
             form:{
60 60
                 name:''
61 61
             },
62
+            radio:"1",
63
+            options:[]
62 64
         }
63 65
     },
64 66
     methods:{

+ 385 - 260
src/xt_pages/outpatientDoctorStation/doctorDesk.vue View File

@@ -1,324 +1,449 @@
1 1
 <template>
2
-    <div class="main-contain new-main-contain">
3
-        <div class="position">
4
-            <bread-crumb :crumbs='crumbs'></bread-crumb>
2
+  <div class="main-contain new-main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs='crumbs'></bread-crumb>
5
+    </div>
6
+    <div class="app-container" style="display:flex;flex: 1;padding: 20px 20px 0px 20px;">
7
+      <div class="mainLeft">
8
+        <div class="mainCell" style="justify-content: space-between;">
9
+          <p>未就诊:<span>{{cal_one}}</span>人</p>
10
+          <p>已就诊:<span>{{cal_two}}</span>人</p>
11
+        </div>
12
+        <div class="mainCell">
13
+          <el-radio-group v-model="radio" @change="change">
14
+            <el-radio :label="1">未就诊</el-radio>
15
+            <el-radio :label="2">已就诊</el-radio>
16
+            <el-radio :label="0">全部</el-radio>
17
+          </el-radio-group>
18
+        </div>
19
+        <div class="mainCell" style="margin-bottom:10px;">
20
+          <el-input size="small" @keyup.enter.native='searchAction' v-model="search_input" class="filter-item"/>
21
+          <el-button size="small" style="margin-left:10px;" class="filter-item" type="primary" @click="searchAction">
22
+            搜索
23
+          </el-button>
5 24
         </div>
6
-        <div class="app-container" style="display:flex;flex: 1;padding: 20px 20px 0px 20px;">
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">
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
-                <div class="mainCell" 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" style="margin-left:10px;" class="filter-item" type="primary" @click="searchAction">搜索</el-button>
22
-                </div>
23
-                <div style="flex:1;overflow-y:auto;">
24
-                    <el-table :data="patientTableData" @row-click='choosePatient' border style="width: 100%;" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
25
-                        <el-table-column align="center" prop="name" label="患者姓名">
26
-                            <template slot-scope="scope">{{ scope.row.name }}</template>
27
-                        </el-table-column>
28
-                        <el-table-column align="center" prop="name" label="就诊号" width="90">
29
-                            <template slot-scope="scope">{{ scope.row.mdtrt_id }}</template>
30
-                        </el-table-column>
31
-                    </el-table>
32
-                </div>
33
-            </div> 
34
-            <div class="mainRight">
35
-                <div class="mainHeader">
36
-                    <el-radio-group v-model="titleType">
37
-                        <el-radio-button label="处方"></el-radio-button>
38
-                        <el-radio-button label="病历"></el-radio-button>
39
-                    </el-radio-group>
40
-                </div>
41
-                <desk-prescription :patientInfo="patientInfo" v-if="titleType == '处方'" style="flex:1;"></desk-prescription>
42
-                <desk-record v-if="titleType == '病历'"></desk-record>
43
-            </div>
44
-            
25
+        <div style="flex:1;overflow-y:auto;">
26
+          <el-table :data="patientTableData" @row-click='choosePatient' border style="width: 100%;"
27
+                    :row-style="{ color: '#303133' }"
28
+                    :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
29
+                     highlight-current-row
30
+                    ref="tab"
31
+                   >
32
+            <el-table-column align="center" prop="name" label="患者姓名">
33
+              <template slot-scope="scope">{{ scope.row.patients.name }}</template>
34
+            </el-table-column>
35
+            <el-table-column align="center" prop="name" label="就诊号" width="90">
36
+              <template slot-scope="scope">{{ scope.row.his_patient.number }}</template>
37
+            </el-table-column>
38
+          </el-table>
45 39
         </div>
40
+      </div>
41
+      <div class="mainRight">
42
+        <div class="mainHeader">
43
+          <el-radio-group v-model="titleType" @change="changeTab">
44
+            <el-radio-button label="处方"></el-radio-button>
45
+            <el-radio-button label="病历"></el-radio-button>
46
+          </el-radio-group>
47
+        </div>
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"
51
+                           v-if="titleType == '处方'" style="flex:1;"></desk-prescription>
52
+        <desk-record :record_date="record_date" :case_history="case_history" :patientInfo="patientInfo"
53
+                     :hisPatientInfo="hisPatientInfo" v-if="titleType == '病历'"></desk-record>
54
+      </div>
55
+
46 56
     </div>
57
+  </div>
47 58
 </template>
48 59
 
49 60
 <script>
50
-import BreadCrumb from '@/xt_pages/components/bread-crumb'
51
-import deskPrescription from './components/deskPrescription'
52
-import deskRecord from './components/deskRecord'
53
-export default {
54
-    components:{
55
-        BreadCrumb,
56
-        deskPrescription,
57
-        deskRecord
61
+  import BreadCrumb from '@/xt_pages/components/bread-crumb'
62
+  import deskPrescription from './components/deskPrescription'
63
+  import deskRecord from './components/deskRecord'
64
+  import { getPatientInfo, getSchedulePatientList } from '@/api/his/his'
65
+
66
+  import { uParseTime } from '@/utils/tools'
67
+
68
+  export default {
69
+    components: {
70
+      BreadCrumb,
71
+      deskPrescription,
72
+      deskRecord
58 73
     },
59
-    data(){
60
-        return{
61
-            crumbs: [
62
-                { path: false, name: '门诊医生站' },
63
-                { path: false, name: '医生工作台' }
64
-            ],
65
-            titleType:'处方',
66
-            patientTableData:[{
67
-                name:'杨美英',
68
-                mdtrt_id:"1709946",
69
-            }],
70
-            tableData: [{
71
-            date: '2016-05-02',
72
-            name: '王小虎',
73
-            address: '上海市普陀区金沙江路 1518 弄'
74
-            }, {
75
-            date: '2016-05-04',
76
-            name: '王小虎',
77
-            address: '上海市普陀区金沙江路 1517 弄'
78
-            }, {
79
-            date: '2016-05-01',
80
-            name: '王小虎',
81
-            address: '上海市普陀区金沙江路 1519 弄'
82
-            }, {
83
-            date: '2016-05-03',
84
-            name: '王小虎',
85
-            address: '上海市普陀区金沙江路 1516 弄'
86
-            },{
87
-            date: '2016-05-02',
88
-            name: '王小虎',
89
-            address: '上海市普陀区金沙江路 1518 弄'
90
-            }, {
91
-            date: '2016-05-04',
92
-            name: '王小虎',
93
-            address: '上海市普陀区金沙江路 1517 弄'
94
-            }, {
95
-            date: '2016-05-01',
96
-            name: '王小虎',
97
-            address: '上海市普陀区金沙江路 1519 弄'
98
-            }, {
99
-            date: '2016-05-03',
100
-            name: '王小虎',
101
-            address: '上海市普陀区金沙江路 1516 弄'
102
-            },{
103
-            date: '2016-05-02',
104
-            name: '王小虎',
105
-            address: '上海市普陀区金沙江路 1518 弄'
106
-            }, {
107
-            date: '2016-05-04',
108
-            name: '王小虎',
109
-            address: '上海市普陀区金沙江路 1517 弄'
110
-            }, {
111
-            date: '2016-05-01',
112
-            name: '王小虎',
113
-            address: '上海市普陀区金沙江路 1519 弄'
114
-            }, {
115
-            date: '2016-05-03',
116
-            name: '王小虎',
117
-            address: '上海市普陀区金沙江路 1516 弄'
118
-            }, {
119
-            date: '2016-05-04',
120
-            name: '王小虎',
121
-            address: '上海市普陀区金沙江路 1517 弄'
122
-            }, {
123
-            date: '2016-05-01',
124
-            name: '王小虎',
125
-            address: '上海市普陀区金沙江路 1519 弄'
126
-            }, {
127
-            date: '2016-05-03',
128
-            name: '王小虎',
129
-            address: '上海市普陀区金沙江路 1516 弄'
130
-            }],
131
-            patientInfo:{}
132
-        }
74
+    data() {
75
+      return {
76
+        prescriptions: [
77
+          {
78
+            name: '处方1',
79
+            advice: [],
80
+            project: []
81
+          }
82
+        ],
83
+        search_input: '',
84
+        cal_one: 0,
85
+        cal_two: 0,
86
+        radio: 0,
87
+        record_date: '',
88
+        crumbs: [
89
+          { path: false, name: '门诊医生站' },
90
+          { path: false, name: '医生工作台' }
91
+        ],
92
+        titleType: '处方',
93
+        patientTableData: [{}],
94
+        patientInfo: {},
95
+        hisPatientInfo: {},
96
+        case_history: {},
97
+        patient_id:0,
98
+      }
133 99
     },
134
-    methods:{
135
-        choosePatient(){
136
-            this.patientInfo = {
137
-                certno:"440221195903290027",
138
-                psn_no:"0221201972",
139
-                gend:"2",
140
-                brdy:"1960-03-29",
141
-                naty:"01",
142
-                psn_cert_type:"01",
143
-                psn_name:"杨美英",
144
-                age:60.7
100
+    methods: {
101
+      changeTab(val) {
102
+
103
+      },
104
+      searchAction() {
105
+
106
+      },
107
+      change(val) {
108
+        this.getList()
109
+
110
+      },
111
+      getList() {
112
+        let params = {
113
+          'record_date': this.record_date,
114
+          'type': this.radio
115
+        }
116
+        getSchedulePatientList(params).then(response => {
117
+          if (response.data.state == 0) {
118
+            this.$message.error(response.data.msg)
119
+            return false
120
+          } else {
121
+            this.patientTableData = response.data.data.list
122
+            console.log("222",this.patientTableData)
123
+            // this.$refs.tab.setCurrentRow(this.patientTableData[0])
124
+            let cal_one = 0
125
+            let cal_two = 0
126
+            for (let i = 0; i < response.data.data.list.length; i++) {
127
+              if (response.data.data.list[i].prescription == null || response.data.data.list[i].prescription.length == 0) {
128
+                cal_one = cal_one + 1
129
+              }
130
+              if (response.data.data.list[i].prescription != null && response.data.data.list[i].prescription.length > 0) {
131
+                cal_two = cal_two + 1
132
+              }
145 133
             }
134
+
135
+            this.cal_one = cal_one
136
+            this.cal_two = cal_two
137
+          }
138
+        })
139
+      },
140
+      choosePatient(val) {
141
+        let params = {
142
+          'record_date': this.record_date,
143
+          'patient_id': val.patients.id
146 144
         }
145
+        getPatientInfo(params).then(response => {
146
+          if (response.data.state == 0) {
147
+            this.$message.error(response.data.msg)
148
+            return false
149
+          } else {
150
+            this.patientInfo = response.data.data.xt_info
151
+            this.hisPatientInfo = response.data.data.his_info
152
+            this.case_history = response.data.data.case_history
153
+            this.patientInfo.birth = uParseTime(this.patientInfo.birthday, '{y}-{m}-{d}')
154
+            if (this.case_history.temperature <= 0) {
155
+              this.case_history.temperature = ''
156
+            }
157
+            if (this.case_history.blood_sugar <= 0) {
158
+              this.case_history.blood_sugar = ''
159
+            }
160
+            if (this.case_history.pulse <= 0) {
161
+              this.case_history.pulse = ''
162
+            }
163
+            if (this.case_history.sbp <= 0) {
164
+              this.case_history.sbp = ''
165
+            }
166
+            if (this.case_history.dbp <= 0) {
167
+              this.case_history.dbp = ''
168
+            }
169
+            if (this.case_history.height <= 0) {
170
+              this.case_history.height = ''
171
+            }
172
+            if (this.case_history.blood_fat <= 0) {
173
+              this.case_history.blood_fat = ''
174
+            }
175
+            if (this.case_history.sick_type <= 0) {
176
+              this.case_history.sick_type = ''
177
+            }
178
+            this.case_history.sick_date = uParseTime(this.case_history.sick_date, '{y}-{m}-{d}')
179
+            if (this.case_history.is_infect == 1) {
180
+              this.case_history.is_infect = true
181
+            } else {
182
+              this.case_history.is_infect = false
183
+            }
184
+            this.prescriptions = []
185
+            if (response.data.data.prescription.length > 0) {
186
+              for (let i = 0; i < response.data.data.prescription.length; i++) {
187
+                var prescription = response.data.data.prescription[i]
188
+                let index = i + 1
189
+                let obj = {
190
+                  name: "处方" + index,
191
+                  advices: prescription.advices,
192
+                  projects: prescription.project,
193
+                }
194
+                this.prescriptions.push(obj)
195
+              }
196
+            }else{
197
+              let obj = {
198
+                name: "处方" + 1,
199
+                advices: [],
200
+                projects: [],
201
+              }
202
+              this.prescriptions.push(obj)
203
+            }
204
+           
205
+            this.$refs.prescriptions.setData(this.prescriptions)
206
+          }
207
+        })
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
+      },
220
+      // changePatient(val){
221
+      //   console.log("患者val",val)
222
+      //   this.hisPatientInfo = val.hisPatientInfo
223
+      //   console.log("333333",this.hisPatientInfo)
224
+      // }
225
+    }, created() {
226
+      var nowDate = new Date()
227
+      var nowYear = nowDate.getFullYear()
228
+      var nowMonth = nowDate.getMonth() + 1
229
+      var nowDay = nowDate.getDate()
230
+      this.record_date =
231
+        nowYear +
232
+        '-' +
233
+        (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
234
+        '-' +
235
+        (nowDay < 10 ? '0' + nowDay : nowDay)
236
+      this.getList()
237
+
147 238
     }
148
-}
239
+  }
149 240
 </script>
150 241
 
151 242
 <style lang="scss" scoped>
152
-.new-main-contain{
243
+  .new-main-contain {
153 244
     height: 100%;
154 245
     display: flex;
155 246
     flex-direction: column;
156
-}
157
-.app-container{
158
-    height:100%;
159
-}
160
-.mainCell{
161
-    height:36px;
247
+  }
248
+
249
+  .app-container {
250
+    height: 100%;
251
+  }
252
+
253
+  .mainCell {
254
+    height: 36px;
162 255
     display: flex;
163 256
     align-items: center;
164
-}
165
-.mainLeft{
166
-    width:200px;
257
+  }
258
+
259
+  .mainLeft {
260
+    width: 200px;
167 261
     height: 100%;
168 262
     display: flex;
169 263
     flex-direction: column;
170
-    .el-radio{
171
-        margin-right:5px;
172
-    }
173
-    
174
-}
175
-.mainRight{
176
-    margin-left:20px;
177
-    flex:1;
264
+
265
+  .el-radio {
266
+    margin-right: 5px;
267
+  }
268
+
269
+  }
270
+  .mainRight {
271
+    margin-left: 20px;
272
+    flex: 1;
178 273
     height: 100%;
179 274
     display: flex;
180 275
     flex-direction: column;
181 276
     overflow-y: auto;
182
-    .cellSpan{
183
-        min-width: 80px;
184
-        display: inline-block;
185
-        margin-right: 10px;
186
-    }
187
-}
188
-.mainCenter{
277
+
278
+  .cellSpan {
279
+    min-width: 80px;
280
+    display: inline-block;
281
+    margin-right: 10px;
282
+  }
283
+
284
+  }
285
+  .mainCenter {
189 286
     display: flex;
190
-    flex:1;
191
-}
192
-.centerLeft{
287
+    flex: 1;
288
+  }
289
+
290
+  .centerLeft {
193 291
     flex: 1;
194 292
     display: flex;
195 293
     flex-direction: column;
196 294
     position: relative;
197
-    .el-form-item{
198
-        width:32%;
199
-        margin-right: 1%;
200
-        float: left;
201
-    }
202
-    .el-form-item__label{
203
-        text-align: left;
204
-    }
205
-}
206
-.backColor{
295
+
296
+  .el-form-item {
297
+    width: 32%;
298
+    margin-right: 1%;
299
+    float: left;
300
+  }
301
+
302
+  .el-form-item__label {
303
+    text-align: left;
304
+  }
305
+
306
+  }
307
+  .backColor {
207 308
     background: #f6f8f9;
208 309
     height: 5px;
209 310
     margin-bottom: 5px;
210
-}
211
-.tabsBox{
311
+  }
312
+
313
+  .tabsBox {
212 314
     position: relative;
213 315
     height: 76%;
214 316
     overflow-y: auto;
215 317
     margin-bottom: 60px;
216
-    .el-tabs__item{
217
-        padding: 0 10px;
218
-    }
219
-}
220
-.preTabs{
221
-    height:100%;
222
-}
223
-.costBox{
224
-    width:100%;
225
-    height:60px;
226
-    background:#fff;
318
+
319
+  .el-tabs__item {
320
+    padding: 0 10px;
321
+  }
322
+
323
+  }
324
+  .preTabs {
325
+    height: 100%;
326
+  }
327
+
328
+  .costBox {
329
+    width: 100%;
330
+    height: 60px;
331
+    background: #fff;
227 332
     position: absolute;
228
-    bottom:0;
333
+    bottom: 0;
229 334
     display: flex;
230 335
     align-items: center;
231
-}
232
-.addTab{
336
+  }
337
+
338
+  .addTab {
233 339
     position: absolute;
234 340
     right: 0;
235 341
     top: 14px;
236 342
     z-index: 20;
237
-}
238
-.centerRight{
343
+  }
344
+
345
+  .centerRight {
239 346
     width: 300px;
240 347
     margin-left: 5px;
241 348
     display: flex;
242 349
     flex-direction: column;
243 350
     position: relative;
244
-}
245
-.rightTab{
351
+  }
352
+
353
+  .rightTab {
246 354
     height: 40px;
247 355
     width: 100%;
248 356
     border: 1px solid #d2d2d2;
249 357
     box-sizing: border-box;
250
-    
251
-    p{
252
-        width: 50%;
253
-        height: 40px;
254
-        line-height: 40px;
255
-        text-align: center;
256
-        background: #eee;
257
-        float: left;
258
-    }
259
-    >p:last-child{
260
-      border-left: 1px solid #d2d2d2;  
261
-      float: right;
262
-    }
263
-    .activeP{
264
-        background: #409EFF;
265
-        color:#fff;
266
-    }
267
-}
268
-.comfirmBox{
269
-    width:100%;
270
-    height:60px;
271
-    background:#fff;
358
+
359
+  p {
360
+    width: 50%;
361
+    height: 40px;
362
+    line-height: 40px;
363
+    text-align: center;
364
+    background: #eee;
365
+    float: left;
366
+  }
367
+
368
+  > p:last-child {
369
+    border-left: 1px solid #d2d2d2;
370
+    float: right;
371
+  }
372
+
373
+  .activeP {
374
+    background: #409EFF;
375
+    color: #fff;
376
+  }
377
+
378
+  }
379
+  .comfirmBox {
380
+    width: 100%;
381
+    height: 60px;
382
+    background: #fff;
272 383
     position: absolute;
273
-    bottom:0;
384
+    bottom: 0;
274 385
     display: flex;
275 386
     align-items: center;
276 387
     justify-content: space-between;
277
-}
388
+  }
278 389
 </style>
279 390
 
280 391
 <style lang="scss">
281
-.centerLeft{
282
-    .el-form-item__label{
283
-        text-align: left;
284
-    }
285
-}
286
-.tabsBox{
287
-    .el-tabs__item{
288
-        padding: 0 10px;
289
-    }
290
-    .el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){
291
-        padding: 0 10px;
292
-    }
293
-    .el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{
294
-        padding: 0 10px;
295
-    }
296
-    .el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{
297
-        padding: 0 10px;
298
-    }
299
-}
300
-.centerRight{
301
-    .el-tabs__nav-scroll{
302
-        display: flex;
303
-    }
304
-    .el-tabs__nav{
305
-        margin: 0 auto;
306
-    }
307
-    .el-table th .cell, .el-table td .cell{
308
-        padding: 0 2px;
309
-    }
310
-}
311
-.preTabs{
312
-    // .el-tabs__content{
313
-    //     height:69%;
314
-    //     overflow-y: auto;
315
-    // }
316
-}
317
-.rightTabs{
392
+  .centerLeft {
393
+
394
+  .el-form-item__label {
395
+    text-align: left;
396
+  }
397
+
398
+  }
399
+  .tabsBox {
400
+
401
+  .el-tabs__item {
402
+    padding: 0 10px;
403
+  }
404
+
405
+  .el-tabs--bottom .el-tabs--left > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom .el-tabs--right > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--border-card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--left > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--right > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--border-card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--card > .el-tabs__header .el-tabs__item:nth-child(2) {
406
+    padding: 0 10px;
407
+  }
408
+
409
+  .el-tabs--bottom .el-tabs--left > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom .el-tabs--right > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--border-card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--left > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--right > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--border-card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--card > .el-tabs__header .el-tabs__item:last-child {
410
+    padding: 0 10px;
411
+  }
412
+
413
+  .el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable {
414
+    padding: 0 10px;
415
+  }
416
+
417
+  }
418
+  .centerRight {
419
+
420
+  .el-tabs__nav-scroll {
421
+    display: flex;
422
+  }
423
+
424
+  .el-tabs__nav {
425
+    margin: 0 auto;
426
+  }
427
+
428
+  .el-table th .cell, .el-table td .cell {
429
+    padding: 0 2px;
430
+  }
431
+
432
+  }
433
+  .preTabs {
434
+
435
+  .el-tabs__content {
436
+
437
+  }
438
+
439
+  }
440
+  .rightTabs {
318 441
     height: 100%;
319
-    // .el-tabs__content{
320
-    //     height:72%;
321
-    //     overflow-y: auto;
322
-    // }
323
-}
442
+
443
+
444
+  .el-tabs__content {
445
+
446
+  }
447
+
448
+  }
324 449
 </style>

+ 124 - 42
src/xt_pages/outpatientRegistration/index.vue View File

@@ -6,8 +6,8 @@
6 6
         <div class="app-container">
7 7
             <div class="nameTitle">患者基本信息:</div>
8 8
             <div class="formMain">
9
-                <el-form class="basicForm" ref="form" :model="form" label-width="80px">
10
-                    <el-form-item label="结算类型">
9
+                <el-form class="basicForm"  :rules="rules" ref="form" :model="form" label-width="100px">
10
+                    <el-form-item label="结算类型">
11 11
                         <el-select v-model="form.settlementValue" placeholder="请选择">
12 12
                             <el-option
13 13
                             v-for="item in settlement"
@@ -17,14 +17,14 @@
17 17
                             </el-option>
18 18
                         </el-select>
19 19
                     </el-form-item>
20
-                    <el-form-item class="specialFormItem" label="医保卡号">
20
+                    <el-form-item class="specialFormItem" label="医保卡号">
21 21
                         <el-input v-model="form.medicalInsuranceCard"></el-input>
22 22
                         <el-button type="primary" @click="reading">读卡</el-button>
23 23
                     </el-form-item>
24
-                    <el-form-item label="患者姓名">
24
+                    <el-form-item label="患者姓名">
25 25
                         <el-input v-model="form.name"></el-input>
26 26
                     </el-form-item>
27
-                    <el-form-item label="性别">
27
+                    <el-form-item label="性别">
28 28
                         <el-select v-model="form.sex" placeholder="请选择">
29 29
                             <el-option
30 30
                             v-for="item in sex"
@@ -34,7 +34,7 @@
34 34
                             </el-option>
35 35
                         </el-select>
36 36
                     </el-form-item>
37
-                    <el-form-item label="证件类型">
37
+                    <el-form-item label="证件类型">
38 38
                         <el-select v-model="form.certificates" placeholder="请选择">
39 39
                             <el-option
40 40
                             v-for="item in certificates"
@@ -44,7 +44,7 @@
44 44
                             </el-option>
45 45
                         </el-select>
46 46
                     </el-form-item>
47
-                    <el-form-item label="医疗类别">
47
+                    <el-form-item label="医疗类别">
48 48
                         <el-select v-model="form.medicalCare" placeholder="请选择">
49 49
                             <el-option
50 50
                             v-for="item in medicalCare"
@@ -54,22 +54,22 @@
54 54
                             </el-option>
55 55
                         </el-select>
56 56
                     </el-form-item>
57
-                    <el-form-item label="出生日期">
57
+                    <el-form-item label="出生日期">
58 58
                         <el-date-picker v-model="form.birthday" type="date" @change="getBirthday" placeholder="选择日期"></el-date-picker>
59 59
                     </el-form-item>
60
-                    <el-form-item label="年龄">
61
-                        <el-input v-model="form.age" readonly=""></el-input>
60
+                    <el-form-item label="年龄">
61
+                        <el-input v-model="form.age"></el-input>
62 62
                     </el-form-item>
63
-                    <el-form-item label="证件号码">
63
+                    <el-form-item label="证件号码:" required prop="idCard">
64 64
                         <el-input v-model="form.idCard"></el-input>
65 65
                     </el-form-item>
66 66
                 </el-form>
67 67
             </div>
68 68
             <div class="nameTitle">患者挂号信息:</div>
69 69
             <div class="formMain">
70
-                <el-form class="basicForm" ref="form" :model="form" label-width="80px">
71
-                    <el-form-item label="挂号类型">
72
-                        <el-select v-model="form.register" placeholder="请选择">
70
+                <el-form class="basicForm" ref="form" :model="form" :rules="rules" label-width="100px">
71
+                    <el-form-item label="挂号类型:" required prop="register">
72
+                        <el-select v-model="form.register"  placeholder="请选择">
73 73
                             <el-option
74 74
                             v-for="item in register"
75 75
                             :key="item.value"
@@ -78,46 +78,46 @@
78 78
                             </el-option>
79 79
                         </el-select>
80 80
                     </el-form-item>
81
-                    <el-form-item label="医生">
81
+                    <el-form-item label="医生" required prop="doctor" >
82 82
                         <el-select v-model="form.doctor" placeholder="请选择">
83 83
                             <el-option
84
-                            v-for="item in doctor"
85
-                            :key="item.value"
86
-                            :label="item.label"
87
-                            :value="item.value">
84
+                            v-for="item in doctorList"
85
+                            :key="item.admin_user_id"
86
+                            :label="item.user_name"
87
+                            :value="item.admin_user_id">
88 88
                             </el-option>
89 89
                         </el-select>
90 90
                     </el-form-item>
91
-                    <el-form-item label="科室">
92
-                        <el-select v-model="form.department" placeholder="请选择">
91
+                    <el-form-item label="科室:" required prop="department">
92
+                        <el-select v-model="form.department"  placeholder="请选择">
93 93
                             <el-option
94
-                            v-for="item in department"
95
-                            :key="item.value"
96
-                            :label="item.label"
97
-                            :value="item.value">
94
+                            v-for="item in departmentList"
95
+                            :key="item.id"
96
+                            :label="item.name"
97
+                            :value="item.id">
98 98
                             </el-option>
99 99
                         </el-select>
100 100
                     </el-form-item>
101 101
                     <el-form-item>
102 102
                         <el-checkbox v-model="form.costChecked">是否需要工本费</el-checkbox>
103 103
                     </el-form-item>
104
-                    <el-form-item label="挂号费">
104
+                    <el-form-item label="挂号费">
105 105
                         <el-input v-model.number="form.registrationFee"></el-input>
106 106
                     </el-form-item>
107
-                    <el-form-item label="诊疗费">
107
+                    <el-form-item label="诊疗费">
108 108
                         <el-input v-model.number="form.medicalExpenses"></el-input>
109 109
                     </el-form-item>
110
-                    <el-form-item label="工本费">
110
+                    <el-form-item label="工本费">
111 111
                         <el-input v-model.number="form.cost" :readonly="!form.costChecked"></el-input>
112 112
                     </el-form-item>
113
-                    <el-form-item label="合计">
113
+                    <el-form-item label="合计">
114 114
                         <el-input v-model.number="total" readonly></el-input>
115 115
                     </el-form-item>
116 116
                     <el-form-item>
117 117
                         <!-- <el-input v-model="form.name"></el-input> -->
118 118
                     </el-form-item>
119 119
                 </el-form>
120
-                <el-button style="float:right" @click="getForm" type="primary">挂号</el-button>
120
+                <el-button style="float:right" @click="saveHisPatient('form')" type="primary">挂号</el-button>
121 121
             </div>
122 122
             
123 123
         </div>
@@ -127,6 +127,7 @@
127 127
 <script>
128 128
 import BreadCrumb from '@/xt_pages/components/bread-crumb'
129 129
 import { basename } from 'path'
130
+import { getAllDoctorList,saveHisPatient } from "@/api/project/project"
130 131
 const moment = require('moment')
131 132
 export default {
132 133
     components:{
@@ -155,9 +156,7 @@ export default {
155 156
                 registrationFee:'',
156 157
                 medicalExpenses:'',
157 158
                 cost:'',
158
-                total: ''
159
-
160
-            
159
+                total: '' 
161 160
             },
162 161
             settlement: [{
163 162
                 value: 1,
@@ -193,26 +192,26 @@ export default {
193 192
                 label: "港澳地区身份证"
194 193
             }],
195 194
             medicalCare: [{
196
-                value: 310,
195
+                value: 1,
197 196
                 label: '职工基本医疗保险'
198 197
                 }, {
199
-                value: 320,
198
+                value: 2,
200 199
                 label: "公务员医疗补助"
201 200
                 },{
202
-                value: 330,
201
+                value: 3,
203 202
                 label: "大额医疗费用补助"
204 203
                 },{
205
-                value: 340,
204
+                value: 4,
206 205
                 label: "离休人员医疗"
207 206
                 },{
208
-                value: 390,
207
+                value: 5,
209 208
                 label: "城乡居民基本医疗保险"
210 209
                 },{
211
-                value: 392,
210
+                value: 6,
212 211
                 label: "城乡居民大病医疗保险"
213 212
                 },
214 213
                 {
215
-                value: 510,
214
+                value: 7,
216 215
                 label: "生育保险"
217 216
             }],
218 217
             register: [{
@@ -241,6 +240,16 @@ export default {
241 240
                 psn_name:"杨美英",
242 241
                 age:60.7
243 242
             },
243
+
244
+            rules: {
245
+              idCard: [{ required: true, message: '请填写证件号码', trigger: 'blur'  }],
246
+              register: [{ required: true, message: '请选择挂号类型' , trigger: 'blur' }],
247
+              doctor: [{ required: true, message: '请选择医生' , trigger: 'blur' }],
248
+              department: [{ required: true, message: '请填写科室', trigger: 'blur' }],
249
+           },
250
+           doctorList:[],
251
+           departmentList:[],
252
+           check:0
244 253
         }
245 254
     },
246 255
     computed:{
@@ -263,6 +272,8 @@ export default {
263 272
         getBirthday(date){
264 273
             console.log(date)
265 274
             let curTime = moment(new Date(date)).format('YYYY-MM-DD')
275
+            console.log("curTime22222",curTime)
276
+           
266 277
             console.log(this.jsGetAge(curTime))
267 278
 
268 279
             this.form.age = this.jsGetAge(curTime)
@@ -306,8 +317,6 @@ export default {
306 317
         },
307 318
         getForm(){
308 319
             this.form.total = this.total
309
-            // console.log(new Date(new Date().toLocaleDateString()).getTime() / 1000)
310
-            // console.log(JSON.parse(localStorage.getItem("temp")))
311 320
             if(localStorage.getItem("temp")){
312 321
                 let a = JSON.parse(localStorage.getItem("temp"))
313 322
                 // let arr = []
@@ -333,6 +342,79 @@ export default {
333 342
             }
334 343
         },
335 344
         
345
+        getAllDoctorList(){
346
+           getAllDoctorList().then(response=>{
347
+             if(response.data.state == 1){
348
+               var doctor =  response.data.data.doctor
349
+               this.doctorList = doctor
350
+               var department = response.data.data.department
351
+               console.log("department",department)
352
+               this.departmentList = department
353
+             }
354
+           })   
355
+        },
356
+        saveHisPatient(formName){
357
+           
358
+            if(this.form.costChecked == true){
359
+               this.check = 1
360
+            }
361
+            if(this.form.costChecked == false){
362
+               this.check = 2
363
+            } 
364
+            var params = {
365
+              settlementValue:this.form.settlementValue,
366
+              medicalInsuranceCard:this.form.medicalInsuranceCard,
367
+              name:this.form.name,
368
+              sex:this.form.sex,
369
+              certificates:this.form.certificates, 
370
+              medicalCare:this.form.medicalCare,
371
+              birthDay:moment(new Date(this.form.birthday)).format('YYYY-MM-DD'),
372
+              age:parseInt(this.form.age),
373
+              idCard:this.form.idCard,
374
+              register:this.form.register,
375
+              doctor:this.form.doctor,
376
+              department:this.form.department,
377
+              costChecked:this.check,
378
+              registrationFee:this.form.registrationFee,
379
+              medicalExpenses:this.form.medicalExpenses,
380
+              cost:this.form.cost,
381
+              total:this.total
382
+            }
383
+            console.log("params",params)
384
+ 
385
+          this.$refs[formName].validate((valid)=>{
386
+             if(valid){
387
+                saveHisPatient(params).then(response=>{
388
+                   if(response.data.state == 1){
389
+                     var patient =  response.data.data.patient
390
+                     console.log("patient",patient)
391
+                     this.$message.success("保存成功")
392
+                     this.form.settlementValue = "",
393
+                     this.form.medicalInsuranceCard = "",
394
+                     this.form.name = "",
395
+                     this.form.sex="",
396
+                     this.form.certificates="",
397
+                     this.form.medicalCare = "",
398
+                     this.form.birthday ="",
399
+                     this.form.age ="",
400
+                     this.form.idCard = "",
401
+                     this.form.register = "",
402
+                     this.form.doctor = "",
403
+                     this.form.department = "",
404
+                     this.form.costChecked = false,
405
+                     this.form.registrationFee = "",
406
+                     this.form.medicalExpenses = "",
407
+                     this.form.cost="",
408
+                     this.form.total= "" 
409
+                   } 
410
+                })
411
+             } 
412
+          })
413
+        }
414
+    },
415
+    created(){
416
+      //获取当前机构有人员信息
417
+      this.getAllDoctorList()   
336 418
     }
337 419
 }
338 420
 </script>

+ 207 - 64
src/xt_pages/outpatientRegistration/registrationHistory.vue View File

@@ -5,9 +5,9 @@
5 5
         </div>
6 6
         <div class="app-container">
7 7
             <div class="cell clearfix">
8
-                <el-input style="width: 180px;" @keyup.enter.native='searchAction' v-model.trim="search_input" class="filter-item"/>
8
+                <el-input style="width: 180px;" v-model.trim="search_input" class="filter-item"/>
9 9
                 <el-button style="margin-right:10px;" class="filter-item" type="primary" icon="el-icon-search" @click="searchAction">搜索</el-button>
10
-                <el-date-picker
10
+                <!-- <el-date-picker
11 11
                 v-model="value1"
12 12
                 @change="changeTime"
13 13
                 style="margin-right:10px;"
@@ -15,71 +15,87 @@
15 15
                 range-separator="-"
16 16
                 start-placeholder="开始日期"
17 17
                 end-placeholder="结束日期">
18
+                </el-date-picker> -->
19
+                <el-date-picker type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
20
+                    placeholder="选择时间" v-model="start_time" style="width:200px"
21
+                    @change="changeStart"
22
+                 >
23
+                </el-date-picker> -
24
+                <el-date-picker type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
25
+                    placeholder="选择时间" v-model="end_time" style="width:200px"
26
+                    @change="changeEnd"
27
+                 >
18 28
                 </el-date-picker>
19
-                <!-- <label class="title"><span class="name">挂号类型</span> : </label>
20
-                <el-select v-model="value" placeholder="请选择" style="width:150px;">
29
+                <label class="title"><span class="name">挂号类型</span> : </label>
30
+                <el-select v-model="register_type" placeholder="请选择" style="width:150px;" @change="changeRegister">
21 31
                     <el-option
22
-                    v-for="item in options"
32
+                    v-for="item in register"
23 33
                     :key="item.value"
24 34
                     :label="item.label"
25 35
                     :value="item.value">
26 36
                     </el-option>
27
-                </el-select> -->
37
+                </el-select>
28 38
             </div>
29 39
             <el-table :data="tableData" border style="width: 100%;" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
30 40
                 <el-table-column align="center" type="index" label="序号" width="60">
41
+                    <template slot-scope="scope">
42
+                        {{scope.$index+1}}
43
+                    </template>
31 44
                 </el-table-column>
32 45
                 <el-table-column align="center" prop="name" label="时间" width="100">
33
-                    <template slot-scope="scope">{{ scope.row.create_time }}</template>
46
+                    <template slot-scope="scope">{{getTime(scope.row.record_date,"{y}-{m}-{d}")}}</template>
34 47
                 </el-table-column>
35 48
                 <el-table-column align="center" prop="dialysis_no" label="姓名" width="80">
36 49
                     <template slot-scope="scope">{{scope.row.name }}</template>
37 50
                 </el-table-column>
38 51
                 <el-table-column align="center" prop="name" label="科室" width="80">
39
-                    <template slot-scope="scope">{{ scope.row.department }}</template>
52
+                    <template slot-scope="scope">{{getDepartMent(scope.row.departments)}}</template>
40 53
                 </el-table-column>
41 54
                 <el-table-column align="center" prop="name" label="挂号类型" width="90">
42 55
                     <template slot-scope="scope">
43
-                        <span v-if="scope.row.register == 1">普通</span>
44
-                        <span v-if="scope.row.register == 2">主治</span>
45
-                        <span v-if="scope.row.register == 3">主任</span>
46
-                        <span v-if="scope.row.register == 4">免收诊金</span>
47
-                        <span v-if="scope.row.register == 5">专家</span>
56
+                        <span v-if="scope.row.register_type == 1">普通</span>
57
+                        <span v-if="scope.row.register_type == 2">主治</span>
58
+                        <span v-if="scope.row.register_type == 3">主任</span>
59
+                        <span v-if="scope.row.register_type == 4">免收诊金</span>
60
+                        <span v-if="scope.row.register_type == 5">专家</span>
48 61
                     </template>
49 62
                 </el-table-column>
50 63
                 <el-table-column align="center" prop="name" label="就诊号" width="80">
51
-                    <template slot-scope="scope"></template>
64
+                    <template slot-scope="scope">
65
+                        {{scope.row.number}}
66
+                    </template>
52 67
                 </el-table-column>
53 68
                 <el-table-column align="center" prop="name" label="证件号">
54
-                    <template slot-scope="scope">{{ scope.row.idCard }}</template>
69
+                    <template slot-scope="scope">{{ scope.row.id_card_no }}</template>
55 70
                 </el-table-column>
56 71
                 <el-table-column align="center" label="患者保险类型" width="80">
57
-                    <!-- <template slot-scope="scope">{{ scope.row.name }}</template> -->
72
+                    <template slot-scope="scope">{{getMedicalTreatment(scope.row.medical_treatment_type)}}</template>
58 73
                 </el-table-column>
59 74
                 <el-table-column align="center" prop="name" label="医生" width="80">
60
-                    <template slot-scope="scope">{{ scope.row.doctor }}</template>
75
+                    <template slot-scope="scope">{{getDoctor(scope.row.doctor) }}</template>
61 76
                 </el-table-column>
62 77
                 <el-table-column align="center" prop="name" label="挂号费" width="70">
63
-                    <template slot-scope="scope">{{ scope.row.registrationFee }}</template>
78
+                    <template slot-scope="scope">{{ scope.row.register_cost }}</template>
64 79
                 </el-table-column>
65 80
                 <el-table-column align="center" prop="name" label="诊疗费" width="70">
66
-                    <template slot-scope="scope">{{ scope.row.medicalExpenses }}</template>
81
+                    <template slot-scope="scope">{{ scope.row.treatment_cost }}</template>
67 82
                 </el-table-column>
68 83
                 <el-table-column align="center" prop="name" label="工本费" width="70">
69
-                    <template slot-scope="scope">{{ scope.row.cost }}</template>
84
+                    <template slot-scope="scope">{{ scope.row.cost_of_production }}</template>
70 85
                 </el-table-column>
71 86
                 <el-table-column align="center" prop="name" label="操作人" width="70">
72
-                    <template slot-scope="scope">{{ $store.getters.xt_user.org.org_name }}</template>
87
+                    <template slot-scope="scope">{{getDoctor(scope.row.admin_user_id) }}</template>
73 88
                 </el-table-column>
74 89
                 <el-table-column align="center" prop="name" label="操作" width="80">
75 90
                     <template slot-scope="scope">
76
-                        <!-- <el-button size="mini" type="primary">编辑</el-button> -->
77
-                        <span>已就诊</span>
91
+                        <el-button size="mini" type="primary" v-if="scope.row.is_return == 1" @click ="toReturnPatient(scope.row.id)" >退号</el-button> 
92
+                        <el-button size="mini" type="primary" v-if="scope.row.is_return == 2" :disabled="true">已退号</el-button>
93
+                        <el-button size="mini" type="primary" v-if="scope.row.is_return == 3" :disabled="true">已就诊</el-button>  
78 94
                     </template>
79 95
                 </el-table-column>
80 96
             </el-table>
81 97
 
82
-            <!-- <el-pagination
98
+            <el-pagination
83 99
                 @size-change="handleSizeChange"
84 100
                 @current-change="handleCurrentChange"
85 101
                 :page-sizes="[10, 50, 100]"
@@ -89,7 +105,7 @@
89 105
                 layout="total, sizes, prev, pager, next, jumper"
90 106
                 :total="total"
91 107
             >
92
-            </el-pagination> -->
108
+            </el-pagination>
93 109
         </div>
94 110
     </div>
95 111
 </template>
@@ -97,6 +113,8 @@
97 113
 <script>
98 114
 const moment = require('moment')
99 115
 import BreadCrumb from '@/xt_pages/components/bread-crumb'
116
+import { getHisPatientHistory,changePatient } from "@/api/project/project"
117
+import { uParseTime } from "@/utils/tools";
100 118
 export default {
101 119
     components:{
102 120
         BreadCrumb
@@ -107,56 +125,181 @@ export default {
107 125
                 { path: false, name: '门诊挂号' },
108 126
                 { path: false, name: '挂号历史' }
109 127
             ],
128
+            register_type:0,
110 129
             search_input:'',
111 130
             value1:'',
112
-            tableData: []
131
+            tableData: [],
132
+            register: [
133
+                {value: 0,label:"全部"},
134
+                {value: 1,label: '普通'},
135
+                {value: 2,label: "主治"},
136
+                {value: 3,label: "主任"},
137
+                {value: 4,label: "免收诊金"},
138
+                {value: 5,label: "专家"}
139
+            ],
140
+            start_time:"",
141
+            end_time:"",
142
+            limit:20,
143
+            page:1,
144
+            total:0,
145
+            departMent:[],
146
+            doctorList:[],
147
+            medicalCare: [{
148
+                id: 1,
149
+                name: '职工基本医疗保险'
150
+                }, {
151
+                id: 2,
152
+                name: "公务员医疗补助"
153
+                },{
154
+                id: 3,
155
+                name: "大额医疗费用补助"
156
+                },{
157
+                id: 4,
158
+                name: "离休人员医疗"
159
+                },{
160
+                id: 5,
161
+                name: "城乡居民基本医疗保险"
162
+                },{
163
+                id: 6,
164
+                name: "城乡居民大病医疗保险"
165
+                },
166
+                {
167
+                id: 7,
168
+                name: "生育保险"
169
+            }],
113 170
         }
114 171
     },
115 172
     created(){
116
-        let a = JSON.parse(localStorage.getItem("temp"))
117
-        let arr = []
118
-        a.map(item => {
119
-            if(item.org_id == this.$store.getters.xt_user.org_id){
120
-                item.create_time = moment(item.create_time * 1000).format('YYYY-MM-DD')
121
-                arr.push(item)
122
-            }
173
+        // let a = JSON.parse(localStorage.getItem("temp"))
174
+        // let arr = []
175
+        // a.map(item => {
176
+        //     if(item.org_id == this.$store.getters.xt_user.org_id){
177
+        //         item.create_time = moment(item.create_time * 1000).format('YYYY-MM-DD')
178
+        //         arr.push(item)
179
+        //     }
123 180
             
124
-        })
125
-        console.log('aaaaaaaaaaaaaa',a)
126
-        this.tableData = arr
181
+        // })
182
+        // this.tableData = arr
183
+     
184
+       this.getlist()
127 185
     },
128 186
     methods:{
129 187
         searchAction(){
130
-            let arr = this.tableData
131
-            let a = []
132
-            arr.map(item => {
133
-                if(item.name.indexOf(this.search_input) > -1 && item.org_id == this.$store.getters.xt_user.org_id){
134
-                    a.push(item)
135
-                }
136
-            })
137
-            this.tableData = a
188
+           this.getlist()
138 189
         },
139
-        changeTime(val){
140
-            let arr = JSON.parse(localStorage.getItem("temp"))
141
-            arr.map(item => {
142
-                item.create_time = moment(item.create_time * 1000).format('YYYY-MM-DD')
143
-            })
144
-            this.tableData = arr
145
-            console.log(new Date(val[0]).getTime() / 1000)
146
-            console.log(new Date(val[1]).getTime() / 1000)
147
-            let arr1 = this.tableData
148
-            let a = []
149
-            arr1.map(item => {
150
-                // if(new Date(val[0]).getTime() / 1000){
151
-                //     a.push(item)
152
-                // }
153
-                if(new Date(item.create_time).getTime() / 1000 > new Date(val[0]).getTime() / 1000 && new Date(item.create_time).getTime() / 1000 < new Date(val[1]).getTime() / 1000 && item.org_id == this.$store.getters.xt_user.org_id){
154
-                    a.push(item)
155
-                }
156
-            })
157
-            this.tableData = a
158
-        }
190
+        // changeTime(val){
191
+        //     let arr = JSON.parse(localStorage.getItem("temp"))
192
+        //     arr.map(item => {
193
+        //         item.create_time = moment(item.create_time * 1000).format('YYYY-MM-DD')
194
+        //     })
195
+        //     this.tableData = arr
196
+        //     console.log(new Date(val[0]).getTime() / 1000)
197
+        //     console.log(new Date(val[1]).getTime() / 1000)
198
+        //     let arr1 = this.tableData
199
+        //     let a = []
200
+        //     arr1.map(item => {
201
+        //      if(new Date(item.create_time).getTime() / 1000 > new Date(val[0]).getTime() / 1000 && new Date(item.create_time).getTime() / 1000 < new Date(val[1]).getTime() / 1000 && item.org_id == this.$store.getters.xt_user.org_id){
202
+        //         a.push(item)
203
+        //       }
204
+        //     })
205
+        //     this.tableData = a
206
+        // },
207
+        changeStart(val){
208
+          this.start_time = val
209
+        },
210
+        changeEnd(val){
211
+           this.end_time = val
212
+        },
213
+        changeRegister(val){
159 214
 
215
+        },
216
+       handleSizeChange(val) {
217
+          this.limit = val
218
+          this.getList()
219
+       },
220
+        handleCurrentChange(val) {
221
+        this.page = val
222
+        this.getList()
223
+        },
224
+        getlist(){
225
+          var params = {
226
+               keyword:this.search_input,
227
+               start_time:this.start_time,
228
+               end_time:this.end_time,
229
+               register_type:this.register_type,
230
+               limit:this.limit,
231
+               page:this.page,
232
+            }
233
+           console.log("params",params)
234
+          getHisPatientHistory(params).then(response=>{
235
+             if(response.data.state == 1){
236
+                var history = response.data.data.history
237
+                console.log("history",history)
238
+                this.tableData = history
239
+                var total =  response.data.data.total
240
+                console.log("total",total)
241
+                this.total = total
242
+                var department =  response.data.data.department
243
+                console.log("department",department)
244
+                this.departMent = department
245
+                var doctor = response.data.data.doctor
246
+                console.log("doctor",doctor)
247
+                this.doctorList = doctor
248
+             }
249
+          })
250
+ 
251
+        },
252
+        getDepartMent(id){
253
+          var name = ""
254
+          for(let i=0;i<this.departMent.length;i++){
255
+            if(id == this.departMent[i].id){
256
+                name = this.departMent[i].name
257
+            }
258
+          }
259
+          return name
260
+        },
261
+        getDoctor(id){
262
+          var user_name = ""
263
+          for(let i=0;i<this.doctorList.length;i++){
264
+            if(id == this.doctorList[i].admin_user_id){
265
+               user_name = this.doctorList[i].user_name 
266
+            }
267
+          }
268
+          return user_name
269
+        },
270
+        getMedicalTreatment(id){
271
+          var name = ""
272
+          for(let i=0;i<this.medicalCare.length;i++){
273
+             if(this.medicalCare[i].id == id){
274
+               name = this.medicalCare[i].name
275
+             }
276
+          }
277
+          return name
278
+        },
279
+        getTime(value, temp) {
280
+         if (value != undefined) {
281
+                return uParseTime(value, temp);
282
+            }
283
+            return "";
284
+        },
285
+        toReturnPatient(id){
286
+          this.$confirm("确认退号吗?", "退号", {
287
+          confirmButtonText: "确 定",
288
+          cancelButtonText: "取 消",
289
+          type: "warning"
290
+        }).then(() => {
291
+          changePatient(id).then(response => {
292
+            if (response.data.state == 1) {
293
+              var msg = response.data.data.msg
294
+              this.$message.success("退号成功");
295
+              this.getlist()
296
+            } else {
297
+               this.$message.error("患者已就诊,退号失败")
298
+            }
299
+          });
300
+        })
301
+        .catch(() => {});
302
+        }
160 303
     }
161 304
 }
162 305
 </script>

+ 21 - 11
src/xt_pages/user/components/EditGroupAdvice.vue View File

@@ -396,7 +396,7 @@
396 396
                 @select="handleSelect"
397 397
                 @input="changeDrugName"
398 398
               ></el-autocomplete>
399
-              
399
+
400 400
             </el-form-item>
401 401
           </el-col>
402 402
           <el-col :span="14">
@@ -696,6 +696,16 @@ export default {
696 696
       default: function() {
697 697
         return [];
698 698
       }
699
+    },executionFrequencyOptions:{
700
+      type: Array,
701
+      default: function() {
702
+        return [];
703
+      }
704
+    },deliveryWayOptions:{
705
+      type: Array,
706
+      default: function() {
707
+        return [];
708
+      }
699 709
     },
700 710
 
701 711
     unitsOption: {
@@ -921,13 +931,13 @@ export default {
921 931
                 frequency_type: 0,
922 932
                 day_count: "0",
923 933
                 week_days: "",
924
-              
934
+
925 935
               };
926 936
             }
927 937
             let mode = "";
928 938
 
929 939
             if (_this.groupForm.advice_type == 1) {
930
-            
940
+
931 941
               mode = "1-3";
932 942
               if (
933 943
                 _this.groupForm.doctor != _this.$store.getters.xt_user.user.id
@@ -1081,7 +1091,7 @@ export default {
1081 1091
                 remark: _this.groupForm.remark,
1082 1092
                 parent_id: _this.groupSelectRow.id,
1083 1093
                 groupno: _this.groupForm.groupno,
1084
-               
1094
+
1085 1095
               };
1086 1096
 
1087 1097
               let mode = "";
@@ -2396,11 +2406,11 @@ export default {
2396 2406
                 obj.custom_id = this.rand(10000000, 99999999)
2397 2407
                 obj.drug_specs = base_drug_list[i].drug_specs
2398 2408
                 this.all_drug.push(obj)
2399
-                
2409
+
2400 2410
               }
2401
-            }   
2411
+            }
2402 2412
         })
2403
-       
2413
+
2404 2414
     },
2405 2415
     changeDrugName(name){
2406 2416
        this.current_drug_name = name
@@ -2438,7 +2448,7 @@ export default {
2438 2448
         }
2439 2449
       },
2440 2450
       handleSelect1(){
2441
-        
2451
+
2442 2452
       },
2443 2453
       handleSelect(){
2444 2454
 
@@ -2452,7 +2462,7 @@ export default {
2452 2462
         })
2453 2463
         var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
2454 2464
         // 调用 callback 返回建议列表的数据
2455
-       
2465
+
2456 2466
         cb(results);
2457 2467
      },
2458 2468
 
@@ -2463,7 +2473,7 @@ export default {
2463 2473
      },
2464 2474
 
2465 2475
      querySearch1(queryString, cb) {
2466
-      
2476
+
2467 2477
         var restaurants = this.drugSpec;
2468 2478
          console.log(restaurants)
2469 2479
         restaurants.map(item => {
@@ -2471,7 +2481,7 @@ export default {
2471 2481
         })
2472 2482
         var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
2473 2483
         // 调用 callback 返回建议列表的数据
2474
-       
2484
+
2475 2485
         cb(results);
2476 2486
       },
2477 2487
   },