瀏覽代碼

添加打印模版和PC端自动扣减

csx 5 年之前
父節點
當前提交
5f5185a6b9
共有 49 個文件被更改,包括 7594 次插入2355 次删除
  1. 55 35
      package-lock.json
  2. 3 1
      package.json
  3. 2 2
      src/api/advice.js
  4. 36 3
      src/api/config.js
  5. 3 2
      src/api/dialysis_record.js
  6. 5 5
      src/api/inspection.js
  7. 13 2
      src/api/patient.js
  8. 21 0
      src/api/schedule.js
  9. 二進制
      src/assets/home/wechat_qrcode.png
  10. 6 1
      src/lang/zh.js
  11. 5 1
      src/main.js
  12. 3 0
      src/router/index.js
  13. 46 0
      src/router/modules/data_upload.js
  14. 12 1
      src/router/modules/workforce.js
  15. 927 896
      src/xt_pages/data/druguseTemplate.vue
  16. 39 24
      src/xt_pages/dialysis/details/dialog/computer_dialog.vue
  17. 118 118
      src/xt_pages/dialysis/details/dialog/dialysisPrescriptionDialog.vue
  18. 4 2
      src/xt_pages/dialysis/details/index.vue
  19. 106 3
      src/xt_pages/home/index.vue
  20. 1 1
      src/xt_pages/stock/config/automaticReduce.vue
  21. 54 0
      src/xt_pages/upload/config.vue
  22. 245 0
      src/xt_pages/upload/config/City.vue
  23. 140 0
      src/xt_pages/upload/config/Country.vue
  24. 223 0
      src/xt_pages/upload/config/Province.vue
  25. 154 0
      src/xt_pages/upload/data/DataCity.vue
  26. 153 0
      src/xt_pages/upload/data/DataCountry.vue
  27. 153 0
      src/xt_pages/upload/data/DataProvince.vue
  28. 55 0
      src/xt_pages/upload/data_upload.vue
  29. 54 0
      src/xt_pages/upload/export.vue
  30. 80 0
      src/xt_pages/upload/export/ExportCity.vue
  31. 80 0
      src/xt_pages/upload/export/ExportCountry.vue
  32. 80 0
      src/xt_pages/upload/export/ExportProvince.vue
  33. 153 0
      src/xt_pages/upload/fast/FastCity.vue
  34. 63 0
      src/xt_pages/upload/fast/FastCountry.vue
  35. 54 0
      src/xt_pages/upload/fast/FastInspectionDetail.vue
  36. 160 0
      src/xt_pages/upload/fast/FastInspectionSidebar.vue
  37. 54 0
      src/xt_pages/upload/fast/FastPatientsDetail.vue
  38. 196 0
      src/xt_pages/upload/fast/FastPatientsSidebar.vue
  39. 113 0
      src/xt_pages/upload/fast/FastProvince.vue
  40. 975 0
      src/xt_pages/upload/fast/FastUploadDetail.vue
  41. 596 0
      src/xt_pages/upload/fast/FastUploadInspectitonDetail.vue
  42. 54 0
      src/xt_pages/upload/fast_upload.vue
  43. 139 9
      src/xt_pages/user/components/PatientDetail.vue
  44. 299 37
      src/xt_pages/user/components/PatientForm.vue
  45. 31 4
      src/xt_pages/user/inspection.vue
  46. 1382 1093
      src/xt_pages/workforce/components/tableData.vue
  47. 219 111
      src/xt_pages/workforce/components/tableWeeks.vue
  48. 6 4
      src/xt_pages/workforce/remind.vue
  49. 224 0
      src/xt_pages/workforce/remind_print.vue

+ 55 - 35
package-lock.json 查看文件

@@ -2201,7 +2201,7 @@
2201 2201
     },
2202 2202
     "clipboard": {
2203 2203
       "version": "1.7.1",
2204
-      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz",
2204
+      "resolved": "https://registry.npm.taobao.org/clipboard/download/clipboard-1.7.1.tgz",
2205 2205
       "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=",
2206 2206
       "requires": {
2207 2207
         "good-listener": "^1.2.2",
@@ -3283,8 +3283,8 @@
3283 3283
     },
3284 3284
     "delegate": {
3285 3285
       "version": "3.2.0",
3286
-      "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
3287
-      "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
3286
+      "resolved": "https://registry.npm.taobao.org/delegate/download/delegate-3.2.0.tgz",
3287
+      "integrity": "sha1-tmtxwxWFIuirV0T3INjKDCr1kWY="
3288 3288
     },
3289 3289
     "delegates": {
3290 3290
       "version": "1.0.0",
@@ -4732,8 +4732,7 @@
4732 4732
         "ansi-regex": {
4733 4733
           "version": "2.1.1",
4734 4734
           "bundled": true,
4735
-          "dev": true,
4736
-          "optional": true
4735
+          "dev": true
4737 4736
         },
4738 4737
         "aproba": {
4739 4738
           "version": "1.2.0",
@@ -4756,15 +4755,13 @@
4756 4755
         "balanced-match": {
4757 4756
           "version": "1.0.0",
4758 4757
           "bundled": true,
4759
-          "dev": true,
4760
-          "optional": true
4758
+          "dev": true
4761 4759
         },
4762 4760
         "brace-expansion": {
4763 4761
           "version": "1.1.11",
4764 4762
           "resolved": false,
4765 4763
           "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
4766 4764
           "dev": true,
4767
-          "optional": true,
4768 4765
           "requires": {
4769 4766
             "balanced-match": "^1.0.0",
4770 4767
             "concat-map": "0.0.1"
@@ -4780,22 +4777,19 @@
4780 4777
         "code-point-at": {
4781 4778
           "version": "1.1.0",
4782 4779
           "bundled": true,
4783
-          "dev": true,
4784
-          "optional": true
4780
+          "dev": true
4785 4781
         },
4786 4782
         "concat-map": {
4787 4783
           "version": "0.0.1",
4788 4784
           "resolved": false,
4789 4785
           "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
4790
-          "dev": true,
4791
-          "optional": true
4786
+          "dev": true
4792 4787
         },
4793 4788
         "console-control-strings": {
4794 4789
           "version": "1.1.0",
4795 4790
           "resolved": false,
4796 4791
           "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
4797
-          "dev": true,
4798
-          "optional": true
4792
+          "dev": true
4799 4793
         },
4800 4794
         "core-util-is": {
4801 4795
           "version": "1.0.2",
@@ -4925,8 +4919,7 @@
4925 4919
         "inherits": {
4926 4920
           "version": "2.0.3",
4927 4921
           "bundled": true,
4928
-          "dev": true,
4929
-          "optional": true
4922
+          "dev": true
4930 4923
         },
4931 4924
         "ini": {
4932 4925
           "version": "1.3.5",
@@ -4940,7 +4933,6 @@
4940 4933
           "resolved": false,
4941 4934
           "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
4942 4935
           "dev": true,
4943
-          "optional": true,
4944 4936
           "requires": {
4945 4937
             "number-is-nan": "^1.0.0"
4946 4938
           }
@@ -4957,7 +4949,6 @@
4957 4949
           "resolved": false,
4958 4950
           "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
4959 4951
           "dev": true,
4960
-          "optional": true,
4961 4952
           "requires": {
4962 4953
             "brace-expansion": "^1.1.7"
4963 4954
           }
@@ -4965,15 +4956,13 @@
4965 4956
         "minimist": {
4966 4957
           "version": "0.0.8",
4967 4958
           "bundled": true,
4968
-          "dev": true,
4969
-          "optional": true
4959
+          "dev": true
4970 4960
         },
4971 4961
         "minipass": {
4972 4962
           "version": "2.3.5",
4973 4963
           "resolved": false,
4974 4964
           "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
4975 4965
           "dev": true,
4976
-          "optional": true,
4977 4966
           "requires": {
4978 4967
             "safe-buffer": "^5.1.2",
4979 4968
             "yallist": "^3.0.0"
@@ -4994,7 +4983,6 @@
4994 4983
           "resolved": false,
4995 4984
           "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
4996 4985
           "dev": true,
4997
-          "optional": true,
4998 4986
           "requires": {
4999 4987
             "minimist": "0.0.8"
5000 4988
           }
@@ -5082,8 +5070,7 @@
5082 5070
         "number-is-nan": {
5083 5071
           "version": "1.0.1",
5084 5072
           "bundled": true,
5085
-          "dev": true,
5086
-          "optional": true
5073
+          "dev": true
5087 5074
         },
5088 5075
         "object-assign": {
5089 5076
           "version": "4.1.1",
@@ -5097,7 +5084,6 @@
5097 5084
           "resolved": false,
5098 5085
           "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
5099 5086
           "dev": true,
5100
-          "optional": true,
5101 5087
           "requires": {
5102 5088
             "wrappy": "1"
5103 5089
           }
@@ -5192,8 +5178,7 @@
5192 5178
         "safe-buffer": {
5193 5179
           "version": "5.1.2",
5194 5180
           "bundled": true,
5195
-          "dev": true,
5196
-          "optional": true
5181
+          "dev": true
5197 5182
         },
5198 5183
         "safer-buffer": {
5199 5184
           "version": "2.1.2",
@@ -5235,7 +5220,6 @@
5235 5220
           "resolved": false,
5236 5221
           "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
5237 5222
           "dev": true,
5238
-          "optional": true,
5239 5223
           "requires": {
5240 5224
             "code-point-at": "^1.0.0",
5241 5225
             "is-fullwidth-code-point": "^1.0.0",
@@ -5257,7 +5241,6 @@
5257 5241
           "resolved": false,
5258 5242
           "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
5259 5243
           "dev": true,
5260
-          "optional": true,
5261 5244
           "requires": {
5262 5245
             "ansi-regex": "^2.0.0"
5263 5246
           }
@@ -5305,15 +5288,13 @@
5305 5288
         "wrappy": {
5306 5289
           "version": "1.0.2",
5307 5290
           "bundled": true,
5308
-          "dev": true,
5309
-          "optional": true
5291
+          "dev": true
5310 5292
         },
5311 5293
         "yallist": {
5312 5294
           "version": "3.0.3",
5313 5295
           "resolved": false,
5314 5296
           "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
5315
-          "dev": true,
5316
-          "optional": true
5297
+          "dev": true
5317 5298
         }
5318 5299
       }
5319 5300
     },
@@ -5706,6 +5687,11 @@
5706 5687
       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
5707 5688
       "dev": true
5708 5689
     },
5690
+    "highlightjs": {
5691
+      "version": "8.7.0",
5692
+      "resolved": "https://registry.npm.taobao.org/highlightjs/download/highlightjs-8.7.0.tgz",
5693
+      "integrity": "sha1-Ezl82N2K19TP53rf+4CIoQ7jtwg="
5694
+    },
5709 5695
     "hmac-drbg": {
5710 5696
       "version": "1.0.1",
5711 5697
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -11244,6 +11230,11 @@
11244 11230
         }
11245 11231
       }
11246 11232
     },
11233
+    "primer-css": {
11234
+      "version": "3.0.1",
11235
+      "resolved": "https://registry.npm.taobao.org/primer-css/download/primer-css-3.0.1.tgz",
11236
+      "integrity": "sha1-JN9nlEGJuXDyA1yhek4sCbWxVTI="
11237
+    },
11247 11238
     "print-js": {
11248 11239
       "version": "1.0.55",
11249 11240
       "resolved": "https://registry.npmjs.org/print-js/-/print-js-1.0.55.tgz",
@@ -13621,8 +13612,8 @@
13621 13612
     },
13622 13613
     "tiny-emitter": {
13623 13614
       "version": "2.1.0",
13624
-      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
13625
-      "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
13615
+      "resolved": "https://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz",
13616
+      "integrity": "sha1-HRpW7fxRxD6GPLtTgqcjMONVVCM="
13626 13617
     },
13627 13618
     "tmp": {
13628 13619
       "version": "0.0.33",
@@ -14157,6 +14148,35 @@
14157 14148
       "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.16.tgz",
14158 14149
       "integrity": "sha512-/ffmsiVuPC8PsWcFkZngdpas19ABm5mh2wA7iDqcltyCTwlgZjHGeJYOXkBMo422iPwIcviOtrTCUpSfXmToLQ=="
14159 14150
     },
14151
+    "vue-clipboard": {
14152
+      "version": "0.0.1",
14153
+      "resolved": "https://registry.npm.taobao.org/vue-clipboard/download/vue-clipboard-0.0.1.tgz",
14154
+      "integrity": "sha1-cDfsj+Ay9mItRtVoYSSr/5Lu2Hg=",
14155
+      "requires": {
14156
+        "highlightjs": "^8.7.0",
14157
+        "primer-css": "^3.0.1"
14158
+      }
14159
+    },
14160
+    "vue-clipboard2": {
14161
+      "version": "0.3.1",
14162
+      "resolved": "https://registry.npm.taobao.org/vue-clipboard2/download/vue-clipboard2-0.3.1.tgz",
14163
+      "integrity": "sha1-blUft704SImyiw2jsSKJ7WvKSJQ=",
14164
+      "requires": {
14165
+        "clipboard": "^2.0.0"
14166
+      },
14167
+      "dependencies": {
14168
+        "clipboard": {
14169
+          "version": "2.0.4",
14170
+          "resolved": "https://registry.npm.taobao.org/clipboard/download/clipboard-2.0.4.tgz",
14171
+          "integrity": "sha1-g22v1mzw/qXXHOXVsL9ulYAJES0=",
14172
+          "requires": {
14173
+            "good-listener": "^1.2.2",
14174
+            "select": "^1.1.2",
14175
+            "tiny-emitter": "^2.0.0"
14176
+          }
14177
+        }
14178
+      }
14179
+    },
14160 14180
     "vue-count-to": {
14161 14181
       "version": "1.0.13",
14162 14182
       "resolved": "https://registry.npmjs.org/vue-count-to/-/vue-count-to-1.0.13.tgz",

+ 3 - 1
package.json 查看文件

@@ -39,7 +39,7 @@
39 39
   "dependencies": {
40 40
     "ajv": "^6.5.3",
41 41
     "axios": "0.17.1",
42
-    "clipboard": "1.7.1",
42
+    "clipboard": "^1.7.1",
43 43
     "codemirror": "5.32.0",
44 44
     "connect": "3.6.6",
45 45
     "driver.js": "0.5.2",
@@ -62,6 +62,8 @@
62 62
     "simplemde": "1.11.2",
63 63
     "sortablejs": "1.7.0",
64 64
     "vue": "2.5.16",
65
+    "vue-clipboard": "0.0.1",
66
+    "vue-clipboard2": "^0.3.1",
65 67
     "vue-count-to": "1.0.13",
66 68
     "vue-i18n": "7.3.2",
67 69
     "vue-multiselect": "2.0.8",

+ 2 - 2
src/api/advice.js 查看文件

@@ -188,9 +188,9 @@ export function DeleteAdviceTemplate(id,template_id,parent_id){
188 188
 }
189 189
 
190 190
 
191
-export function postAdviceTemplate(params,name){
191
+export function postAdviceTemplate(params,name,advice_type){
192 192
   return request({
193
-    url:'/api/advicetemplate/create?template_name='+name,
193
+    url:'/api/advicetemplate/create?template_name='+name+"&advice_type="+advice_type,
194 194
     method:'post',
195 195
     data:params
196 196
   })

+ 36 - 3
src/api/config.js 查看文件

@@ -2,16 +2,49 @@ import request from '@/utils/request'
2 2
 
3 3
 export function createStockAutomaticReduceConfig(params) {
4 4
   return request({
5
-    url: '/api/stock/automaticreduce/isopen?is_open='+params,
6
-    method: 'post',
5
+    url: '/api/stock/automaticreduce/isopen?is_open=' + params,
6
+    method: 'post'
7 7
   })
8 8
 }
9 9
 
10
-
11 10
 export function getAutomaticReduceConfig() {
12 11
   return request({
13 12
     url: '/api/automaticreduce/get',
13
+    method: 'get'
14
+  })
15
+}
16
+
17
+export function postConfig(params) {
18
+  return request({
19
+    url: '/api/dataupload/config/commit',
20
+    method: 'post',
21
+    params: params
22
+  })
23
+}
24
+
25
+export function postModifyConfig(params) {
26
+  return request({
27
+    url: '/api/dataupload/config/modify',
28
+    method: 'post',
29
+    params: params
30
+
31
+  })
32
+}
33
+
34
+export function getConfig(params) {
35
+  return request({
36
+    url: '/api/dataupload/config/get',
14 37
     method: 'get',
38
+    params:params
39
+  })
40
+}
41
+
42
+export function getIsDocking(params) {
43
+  return request({
44
+    url: '/api/dataupload/is_docking/get',
45
+    method: 'get',
46
+    params:params
47
+
15 48
   })
16 49
 }
17 50
 

+ 3 - 2
src/api/dialysis_record.js 查看文件

@@ -43,13 +43,14 @@ export function editMonitor(patient_id, schedule_date, data) {
43 43
   })
44 44
 }
45 45
 
46
-export function startDialysis(patient_id, schedule_date, nurse_id, bed_id, puncture_nurse_id) {
46
+export function startDialysis(patient_id, schedule_date, nurse_id, bed_id, puncture_nurse_id,start_time) {
47 47
   var params = {
48 48
     patient_id: patient_id,
49 49
     date: schedule_date,
50 50
     nurse: nurse_id,
51 51
     bed: bed_id,
52
-    puncture_nurse: puncture_nurse_id
52
+    puncture_nurse: puncture_nurse_id,
53
+    start_time:start_time,
53 54
   }
54 55
   return request({
55 56
     url: '/api/dialysis/start_record',

+ 5 - 5
src/api/inspection.js 查看文件

@@ -7,17 +7,17 @@ export function fetchInspectionReference(id){
7 7
     })
8 8
 }
9 9
 
10
-export function CreatePatientInspection(id, data){
10
+export function CreatePatientInspection(id, data,remind_cycle){
11 11
     return request({
12
-        url:'/api/patient/inspection/create?patient='+id,
12
+        url:'/api/patient/inspection/create?patient='+id+"&remind_cycle="+remind_cycle,
13 13
         method:'post',
14 14
         data:data,
15 15
     })
16 16
 }
17 17
 
18
-export function EditPatientInspection(id, data){
18
+export function EditPatientInspection(id, data,remind_cycle){
19 19
     return request({
20
-        url:'/api/patient/inspection/edit?patient='+id,
20
+        url:'/api/patient/inspection/edit?patient='+id+"&remind_cycle="+remind_cycle,
21 21
         method:'put',
22 22
         data:data,
23 23
     })
@@ -37,4 +37,4 @@ export function fetchPatientInspections(params){
37 37
         method:'get',
38 38
         params:params,
39 39
     })
40
-}
40
+}

+ 13 - 2
src/api/patient.js 查看文件

@@ -30,14 +30,14 @@ export function generateDialysisNo() {
30 30
 
31 31
 export function createPatient(patient) {
32 32
   return request({
33
-    url: '/api/patients/create',
33
+    url: '/api/patients/create?record_date='+patient.record_date+"&is_infectious="+patient.is_infectious+"&remind_cycle="+patient.remind_cycle,
34 34
     method: 'post',
35 35
     data: patient
36 36
   })
37 37
 }
38 38
 export function editPatient(id, patient) {
39 39
   return request({
40
-    url: '/api/patients/edit?id=' + id,
40
+    url: '/api/patients/edit?id=' + id+"&record_date="+patient.record_date+"&is_infectious="+patient.is_infectious+"&remind_cycle="+patient.remind_cycle,
41 41
     method: 'put',
42 42
     data: patient
43 43
   })
@@ -277,5 +277,16 @@ export function GetCoursePrintData(id) {
277 277
 }
278 278
 
279 279
 
280
+export function GetRemind(params) {
281
+  return request({
282
+    url: '/api/infectious/remind',
283
+    method: 'Get',
284
+    params:params,
285
+  })
286
+}
287
+
288
+
289
+
290
+
280 291
 
281 292
 

+ 21 - 0
src/api/schedule.js 查看文件

@@ -68,3 +68,24 @@ export function getUrgentScheduleInitData(params) {
68 68
     params: params
69 69
   })
70 70
 }
71
+
72
+
73
+
74
+export function getSearchResult(params) {
75
+  return request({
76
+    url: '/api/schedule/search',
77
+    method: 'Get',
78
+    params: params
79
+  })
80
+}
81
+
82
+
83
+
84
+
85
+export function getScheduleWeekDay(params) {
86
+  return request({
87
+    url: '/api/schedule/week',
88
+    method: 'Get',
89
+    params: params
90
+  })
91
+}

二進制
src/assets/home/wechat_qrcode.png 查看文件


+ 6 - 1
src/lang/zh.js 查看文件

@@ -158,7 +158,12 @@ export default {
158 158
     user_detail:'使用明细',
159 159
     systemManage:'系统管理',
160 160
     printTemplate:'打印模版',
161
-
161
+    data_upload:'一键上报',
162
+    fast_upload:'快捷上报',
163
+    export:"一键导出",
164
+    upload_config:"质控上报配置",
165
+    quality_control:"质控上报",
166
+    remind_print:"排版提醒打印",
162 167
 
163 168
   },
164 169
   navbar: {

+ 5 - 1
src/main.js 查看文件

@@ -20,13 +20,17 @@ import './errorLog'// error log
20 20
 // import './permission' // permission control
21 21
 import './xt_permission'
22 22
 // import './mock' // simulation data
23
+import VueClipboard from 'vue-clipboard2'
24
+
23 25
 
24 26
 import * as filters from './filters' // global filters
25 27
 
26 28
 Vue.use(Element, {
27 29
   size: 'medium', // set element-ui default size
28
-  i18n: (key, value) => i18n.t(key, value)
30
+  i18n: (key, value) => i18n.t(key, value),
31
+
29 32
 })
33
+Vue.use(VueClipboard)
30 34
 
31 35
 // register global utility filters.
32 36
 Object.keys(filters).forEach(key => {

+ 3 - 0
src/router/index.js 查看文件

@@ -15,6 +15,8 @@ import workforce from './modules/workforce'
15 15
 import service from './modules/service'
16 16
 import org from './modules/org'
17 17
 import systems from './modules/systems'
18
+import data_upload from './modules/data_upload'
19
+
18 20
 
19 21
 
20 22
 
@@ -100,6 +102,7 @@ var _asy_router_map = [
100 102
   // role,
101 103
   org,
102 104
   systems,
105
+  data_upload,
103 106
 ]
104 107
 
105 108
 var is_asy_router = process.env.NODE_ENV === 'production' // true; 设置为 true 强制进行路由验证

+ 46 - 0
src/router/modules/data_upload.js 查看文件

@@ -0,0 +1,46 @@
1
+import Layout from '@/views/layout/Layout'
2
+
3
+export default {
4
+  path: '/upload/',
5
+  component: Layout,
6
+  redirect: 'noredirect',
7
+  name: 'quality_control',
8
+  alwaysShow: true,
9
+  meta: {
10
+    title: 'quality_control',
11
+    icon: 'excel'
12
+  },
13
+  children: [
14
+    {
15
+      path: '/upload/fast',
16
+      component: () => import('@/xt_pages/upload/fast_upload'),
17
+      name: 'fast_upload',
18
+      meta: {
19
+        title: 'fast_upload'
20
+      }
21
+    },
22
+    {
23
+      path: '/upload/data',
24
+      component: () => import('@/xt_pages/upload/data_upload'),
25
+      name: 'data_upload',
26
+      meta: {
27
+        title: 'data_upload'
28
+      }
29
+    },
30
+    {
31
+      path: '/upload/export',
32
+      component: () => import('@/xt_pages/upload/export'),
33
+      name: 'export',
34
+      meta: {
35
+        title: 'export'
36
+      }
37
+    }, {
38
+      path: '/upload/config',
39
+      component: () => import('@/xt_pages/upload/config'),
40
+      name: 'upload_config',
41
+      meta: {
42
+        title: 'upload_config'
43
+      }
44
+    },
45
+  ]
46
+}

+ 12 - 1
src/router/modules/workforce.js 查看文件

@@ -59,6 +59,17 @@ export default {
59 59
       title: 'schedule_print',
60 60
       noCache: true
61 61
     }
62
-  }
62
+  },
63
+    {
64
+      path: '/schedule/remind/print',
65
+      component: () => import('@/xt_pages/workforce/remind_print'),
66
+      name: 'remind_print',
67
+      hidden: true,
68
+      is_menu: false,
69
+      meta: {
70
+        title: 'remind_print',
71
+        noCache: true
72
+      }
73
+    }
63 74
   ]
64 75
 }

文件差異過大導致無法顯示
+ 927 - 896
src/xt_pages/data/druguseTemplate.vue


+ 39 - 24
src/xt_pages/dialysis/details/dialog/computer_dialog.vue 查看文件

@@ -21,8 +21,8 @@
21 21
           <el-date-picker
22 22
             :disabled="dialysis_order.id != 0"
23 23
             type="datetime"
24
-            format="yyyy-MM-dd HH:mm:ss"
25
-            value-format="yyyy-MM-dd HH:mm:ss"
24
+            format="yyyy-MM-dd HH:mm"
25
+            value-format="yyyy-MM-dd HH:mm"
26 26
             placeholder="选择时间"
27 27
             v-model="form.start_time"
28 28
             style="width:100%;"
@@ -32,11 +32,10 @@
32 32
           <el-button v-if="dialysis_order.id == 0" @click="submit" type="primary" :loading="loading">执行上机</el-button>
33 33
           <el-button v-else type="info" :disabled="true">已上机</el-button>
34 34
         </el-form-item>
35
-
36
-
37 35
       </el-form>
38 36
     </el-dialog>
39 37
   </div>
38
+
40 39
 </template>
41 40
 
42 41
 <script>
@@ -76,7 +75,7 @@
76 75
       }
77 76
     },
78 77
     created() {
79
-      console.log(this.dialysis_order)
78
+
80 79
 
81 80
       this.patient_id = this.$route.query.patient_id
82 81
       this.schedule_date = this.$route.query.date
@@ -90,24 +89,8 @@
90 89
       }
91 90
 
92 91
 
93
-      var nowDate = new Date()
94
-      var nowYear = nowDate.getFullYear()
95
-      var nowMonth = nowDate.getMonth() + 1
96
-      var nowDay = nowDate.getDate()
97
-      var nowHours = nowDate.getHours()
98
-      var nowMinutes = nowDate.getMinutes()
99
-      var nowSeconds = nowDate.getSeconds()
100
-      if (this.dialysis_order.id != 0) {
101
-        this.start_time = this.getTime(this.dialysis_order.start_time, 'yyyy-MM-dd HH:mm:ss')
102 92
 
103
-      } else {
104
-        this.start_time =
105
-          nowYear +
106
-          '-' +
107
-          (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
108
-          '-' +
109
-          (nowDay < 10 ? '0' + nowDay : nowDay) + ' ' + (nowHours < 10 ? '0' + nowHours : nowHours) + ':' + (nowMinutes < 10 ? '0' + nowMinutes : nowMinutes) + ':' + (nowSeconds < 10 ? '0' + nowSeconds : nowSeconds)
110
-      }
93
+
111 94
 
112 95
     },
113 96
     watch: {
@@ -120,7 +103,20 @@
120 103
         this.form.nurse_id = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.start_nurse
121 104
         this.form.puncture_nurse_id = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.puncture_nurse
122 105
 
123
-        this.form.start_time = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.start_time
106
+        var nowDate = new Date()
107
+        var nowYear = nowDate.getFullYear()
108
+        var nowMonth = nowDate.getMonth() + 1
109
+        var nowDay = nowDate.getDate()
110
+        var nowHours = nowDate.getHours()
111
+        var nowMinutes = nowDate.getMinutes()
112
+        var nowSeconds = nowDate.getSeconds()
113
+        var time =
114
+          nowYear +
115
+          '-' +
116
+          (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
117
+          '-' +
118
+          (nowDay < 10 ? '0' + nowDay : nowDay) + ' ' + (nowHours < 10 ? '0' + nowHours : nowHours) + ':' + (nowMinutes < 10 ? '0' + nowMinutes : nowMinutes)
119
+        this.form.start_time = this.dialysis_order.id == 0 ? time : this.getTime(this.dialysis_order.start_time, '{y}-{m}-{d} {h}:{i}')
124 120
 
125 121
       }
126 122
     },
@@ -145,13 +141,32 @@
145 141
       },
146 142
       show: function() {
147 143
         this.visible = true
144
+
145
+        var nowDate = new Date()
146
+        var nowYear = nowDate.getFullYear()
147
+        var nowMonth = nowDate.getMonth() + 1
148
+        var nowDay = nowDate.getDate()
149
+        var nowHours = nowDate.getHours()
150
+        var nowMinutes = nowDate.getMinutes()
151
+        var nowSeconds = nowDate.getSeconds()
152
+
153
+        if (this.dialysis_order.id != 0) {
154
+          this.form.start_time = this.getTime(this.dialysis_order.start_time, '{y}-{m}-{d} {h}:{i}')
155
+        } else {
156
+          this.form.start_time =
157
+            nowYear +
158
+            '-' +
159
+            (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
160
+            '-' +
161
+            (nowDay < 10 ? '0' + nowDay : nowDay) + ' ' + (nowHours < 10 ? '0' + nowHours : nowHours) + ':' + (nowMinutes < 10 ? '0' + nowMinutes : nowMinutes)
162
+        }
148 163
       },
149 164
       hide: function() {
150 165
         this.visible = false
151 166
       },
152 167
       submit: function() {
153 168
         this.loading = true
154
-        startDialysis(this.patient_id, parseTime(this.schedule_date, '{y}-{m}-{d}'), this.form.nurse_id, this.form.bed_id, this.form.puncture_nurse_id).then(rs => {
169
+        startDialysis(this.patient_id, parseTime(this.schedule_date, '{y}-{m}-{d}'), this.form.nurse_id, this.form.bed_id, this.form.puncture_nurse_id,this.form.start_time).then(rs => {
155 170
           this.loading = false
156 171
           var resp = rs.data
157 172
           if (resp.state == 1) {

+ 118 - 118
src/xt_pages/dialysis/details/dialog/dialysisPrescriptionDialog.vue 查看文件

@@ -272,163 +272,163 @@
272 272
         </el-col>
273 273
 
274 274
 
275
-        <!--&lt;!&ndash;透析耗材&ndash;&gt;-->
276
-        <!--<el-col :span="8" v-if="isShows('血液透析干粉')&&config.is_open == 1">-->
277
-          <!--<el-form-item label="血液透析干粉:">-->
278
-            <!--<el-select v-model="dialysisPrescription.niprocart" placeholder="请选择">-->
279
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
280
-              <!--<el-option v-for="(option, index) in niprocart_info" :key="index"-->
281
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
282
-            <!--</el-select>-->
283
-          <!--</el-form-item>-->
284
-        <!--</el-col>-->
275
+        <!--透析耗材-->
276
+        <el-col :span="8" v-if="isShows('血液透析干粉')&&config.is_open == 1">
277
+          <el-form-item label="血液透析干粉:">
278
+            <el-select v-model="dialysisPrescription.niprocart" placeholder="请选择">
279
+              <el-option :key="0" label="请选择" :value="0"></el-option>
280
+              <el-option v-for="(option, index) in niprocart_info" :key="index"
281
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
282
+            </el-select>
283
+          </el-form-item>
284
+        </el-col>
285 285
 
286 286
 
287
-        <!--<el-col :span="8" v-if="isShows('一次性使用动静脉穿刺针')&&config.is_open == 1">-->
288
-          <!--<el-form-item label="一次性使用动静脉穿刺针:">-->
289
-            <!--<el-select v-model="dialysisPrescription.jms" placeholder="请选择">-->
290
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
287
+        <el-col :span="8" v-if="isShows('一次性使用动静脉穿刺针')&&config.is_open == 1">
288
+          <el-form-item label="一次性使用动静脉穿刺针:">
289
+            <el-select v-model="dialysisPrescription.jms" placeholder="请选择">
290
+              <el-option :key="0" label="请选择" :value="0"></el-option>
291 291
 
292
-              <!--<el-option v-for="(option, index) in jms_info" :key="index"-->
293
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
294
-            <!--</el-select>-->
295
-          <!--</el-form-item>-->
296
-        <!--</el-col>-->
292
+              <el-option v-for="(option, index) in jms_info" :key="index"
293
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
294
+            </el-select>
295
+          </el-form-item>
296
+        </el-col>
297 297
 
298 298
 
299
-        <!--<el-col :span="8" v-if="isShows('内瘘管翼状针')&&config.is_open == 1">-->
300
-          <!--<el-form-item label="内瘘管翼状针:">-->
301
-            <!--<el-select v-model="dialysisPrescription.fistula_needle_set" placeholder="请选择">-->
302
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
299
+        <el-col :span="8" v-if="isShows('内瘘管翼状针')&&config.is_open == 1">
300
+          <el-form-item label="内瘘管翼状针:">
301
+            <el-select v-model="dialysisPrescription.fistula_needle_set" placeholder="请选择">
302
+              <el-option :key="0" label="请选择" :value="0"></el-option>
303 303
 
304
-              <!--<el-option v-for="(option, index) in fistula_needle_set_info" :key="index"-->
305
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
306
-            <!--</el-select>-->
307
-          <!--</el-form-item>-->
308
-        <!--</el-col>-->
304
+              <el-option v-for="(option, index) in fistula_needle_set_info" :key="index"
305
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
306
+            </el-select>
307
+          </el-form-item>
308
+        </el-col>
309 309
 
310 310
 
311
-        <!--<el-col :span="8" v-if="isShows('内瘘管翼状针16G')&&config.is_open == 1">-->
312
-          <!--<el-form-item label="内瘘管翼状针16G:">-->
313
-            <!--<el-select v-model="dialysisPrescription.fistula_needle_set_16" placeholder="请选择">-->
314
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
311
+        <el-col :span="8" v-if="isShows('内瘘管翼状针16G')&&config.is_open == 1">
312
+          <el-form-item label="内瘘管翼状针16G:">
313
+            <el-select v-model="dialysisPrescription.fistula_needle_set_16" placeholder="请选择">
314
+              <el-option :key="0" label="请选择" :value="0"></el-option>
315 315
 
316
-              <!--<el-option v-for="(option, index) in fistula_needle_set_16_info" :key="index"-->
317
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
318
-            <!--</el-select>-->
319
-          <!--</el-form-item>-->
320
-        <!--</el-col>-->
316
+              <el-option v-for="(option, index) in fistula_needle_set_16_info" :key="index"
317
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
318
+            </el-select>
319
+          </el-form-item>
320
+        </el-col>
321 321
 
322 322
 
323
-        <!--<el-col :span="8" v-if="isShows('一次性使用血液灌流器')&&config.is_open == 1">-->
324
-          <!--<el-form-item label="一次性使用血液灌流器:">-->
325
-            <!--<el-select v-model="dialysisPrescription.hemoperfusion" placeholder="请选择">-->
326
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
323
+        <el-col :span="8" v-if="isShows('一次性使用血液灌流器')&&config.is_open == 1">
324
+          <el-form-item label="一次性使用血液灌流器:">
325
+            <el-select v-model="dialysisPrescription.hemoperfusion" placeholder="请选择">
326
+              <el-option :key="0" label="请选择" :value="0"></el-option>
327 327
 
328
-              <!--<el-option v-for="(option, index) in hemoperfusion_info" :key="index"-->
329
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
330
-            <!--</el-select>-->
331
-          <!--</el-form-item>-->
332
-        <!--</el-col>-->
328
+              <el-option v-for="(option, index) in hemoperfusion_info" :key="index"
329
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
330
+            </el-select>
331
+          </el-form-item>
332
+        </el-col>
333 333
 
334 334
 
335
-        <!--<el-col :span="8" v-if="isShows('空心纤维血液透析器')&&config.is_open == 1">-->
336
-          <!--<el-form-item label="空心纤维血液透析器:">-->
337
-            <!--<el-select v-model="dialysisPrescription.dialyser_sterilised" placeholder="请选择">-->
338
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
335
+        <el-col :span="8" v-if="isShows('空心纤维血液透析器')&&config.is_open == 1">
336
+          <el-form-item label="空心纤维血液透析器:">
337
+            <el-select v-model="dialysisPrescription.dialyser_sterilised" placeholder="请选择">
338
+              <el-option :key="0" label="请选择" :value="0"></el-option>
339 339
 
340
-              <!--<el-option v-for="(option, index) in dialyser_sterilised_info" :key="index"-->
341
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
342
-            <!--</el-select>-->
343
-          <!--</el-form-item>-->
344
-        <!--</el-col>-->
340
+              <el-option v-for="(option, index) in dialyser_sterilised_info" :key="index"
341
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
342
+            </el-select>
343
+          </el-form-item>
344
+        </el-col>
345 345
 
346 346
 
347
-        <!--<el-col :span="8" v-if="isShows('中空纤维透析器')&&config.is_open == 1">-->
348
-          <!--<el-form-item label="中空纤维透析器:">-->
349
-            <!--<el-select v-model="dialysisPrescription.filtryzer" placeholder="请选择">-->
350
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
347
+        <el-col :span="8" v-if="isShows('中空纤维透析器')&&config.is_open == 1">
348
+          <el-form-item label="中空纤维透析器:">
349
+            <el-select v-model="dialysisPrescription.filtryzer" placeholder="请选择">
350
+              <el-option :key="0" label="请选择" :value="0"></el-option>
351 351
 
352
-              <!--<el-option v-for="(option, index) in filtryzer_info" :key="index"-->
353
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
354
-            <!--</el-select>-->
355
-          <!--</el-form-item>-->
356
-        <!--</el-col>-->
352
+              <el-option v-for="(option, index) in filtryzer_info" :key="index"
353
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
354
+            </el-select>
355
+          </el-form-item>
356
+        </el-col>
357 357
 
358 358
 
359
-        <!--<el-col :span="8" v-if="isShows('透析器')&&config.is_open == 1">-->
360
-          <!--<el-form-item label="透析器:">-->
361
-            <!--<el-select v-model="dialysisPrescription.dialyzers" placeholder="请选择">-->
362
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
359
+        <el-col :span="8" v-if="isShows('透析器')&&config.is_open == 1">
360
+          <el-form-item label="透析器:">
361
+            <el-select v-model="dialysisPrescription.dialyzers" placeholder="请选择">
362
+              <el-option :key="0" label="请选择" :value="0"></el-option>
363 363
 
364
-              <!--<el-option v-for="(option, index) in dialyzers_info" :key="index"-->
365
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
366
-            <!--</el-select>-->
367
-          <!--</el-form-item>-->
368
-        <!--</el-col>-->
364
+              <el-option v-for="(option, index) in dialyzers_info" :key="index"
365
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
366
+            </el-select>
367
+          </el-form-item>
368
+        </el-col>
369 369
 
370 370
 
371 371
 
372
-        <!--<el-col :span="8" v-if="isShows('注射器')&&config.is_open == 1">-->
373
-          <!--<el-form-item label="注射器:">-->
374
-            <!--<el-select v-model="dialysisPrescription.injector" placeholder="请选择">-->
375
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
372
+        <el-col :span="8" v-if="isShows('注射器')&&config.is_open == 1">
373
+          <el-form-item label="注射器:">
374
+            <el-select v-model="dialysisPrescription.injector" placeholder="请选择">
375
+              <el-option :key="0" label="请选择" :value="0"></el-option>
376 376
 
377
-              <!--<el-option v-for="(option, index) in injector_info" :key="index"-->
378
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
379
-            <!--</el-select>-->
380
-          <!--</el-form-item>-->
381
-        <!--</el-col>-->
377
+              <el-option v-for="(option, index) in injector_info" :key="index"
378
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
379
+            </el-select>
380
+          </el-form-item>
381
+        </el-col>
382 382
 
383 383
 
384 384
 
385
-        <!--<el-col :span="8" v-if="isShows('体外循环血路管')&&config.is_open == 1">-->
386
-          <!--<el-form-item label="体外循环血路管:">-->
387
-            <!--<el-select v-model="dialysisPrescription.bloodlines" placeholder="请选择">-->
388
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
385
+        <el-col :span="8" v-if="isShows('体外循环血路管')&&config.is_open == 1">
386
+          <el-form-item label="体外循环血路管:">
387
+            <el-select v-model="dialysisPrescription.bloodlines" placeholder="请选择">
388
+              <el-option :key="0" label="请选择" :value="0"></el-option>
389 389
 
390
-              <!--<el-option v-for="(option, index) in bloodlines_info" :key="index"-->
391
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
392
-            <!--</el-select>-->
393
-          <!--</el-form-item>-->
394
-        <!--</el-col>-->
390
+              <el-option v-for="(option, index) in bloodlines_info" :key="index"
391
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
392
+            </el-select>
393
+          </el-form-item>
394
+        </el-col>
395 395
 
396 396
 
397 397
 
398
-        <!--<el-col :span="8" v-if="isShows('血液净化补液管路(置换管)')&&config.is_open == 1">-->
399
-          <!--<el-form-item label="血液净化补液管路(置换管):">-->
400
-            <!--<el-select v-model="dialysisPrescription.tubing_hemodialysis" placeholder="请选择">-->
401
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
398
+        <el-col :span="8" v-if="isShows('血液净化补液管路(置换管)')&&config.is_open == 1">
399
+          <el-form-item label="血液净化补液管路(置换管):">
400
+            <el-select v-model="dialysisPrescription.tubing_hemodialysis" placeholder="请选择">
401
+              <el-option :key="0" label="请选择" :value="0"></el-option>
402 402
 
403
-              <!--<el-option v-for="(option, index) in tubingHemodialysis_info" :key="index"-->
404
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
405
-            <!--</el-select>-->
406
-          <!--</el-form-item>-->
407
-        <!--</el-col>-->
403
+              <el-option v-for="(option, index) in tubingHemodialysis_info" :key="index"
404
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
405
+            </el-select>
406
+          </el-form-item>
407
+        </el-col>
408 408
 
409 409
 
410
-        <!--<el-col :span="8" v-if="isShows('护理包')&&config.is_open == 1">-->
411
-          <!--<el-form-item label="护理包:">-->
412
-            <!--<el-select v-model="dialysisPrescription.package" placeholder="请选择">-->
413
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
410
+        <el-col :span="8" v-if="isShows('护理包')&&config.is_open == 1">
411
+          <el-form-item label="护理包:">
412
+            <el-select v-model="dialysisPrescription.package" placeholder="请选择">
413
+              <el-option :key="0" label="请选择" :value="0"></el-option>
414 414
 
415
-              <!--<el-option v-for="(option, index) in safe_package_info" :key="index"-->
416
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
417
-            <!--</el-select>-->
418
-          <!--</el-form-item>-->
419
-        <!--</el-col>-->
415
+              <el-option v-for="(option, index) in safe_package_info" :key="index"
416
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
417
+            </el-select>
418
+          </el-form-item>
419
+        </el-col>
420 420
 
421 421
 
422
-        <!--<el-col :span="8" v-if="isShows('A液')&&config.is_open == 1">-->
423
-          <!--<el-form-item label="A液:">-->
424
-            <!--<el-select v-model="dialysisPrescription.a_liquid" placeholder="请选择">-->
425
-              <!--<el-option :key="0" label="请选择" :value="0"></el-option>-->
422
+        <el-col :span="8" v-if="isShows('A液')&&config.is_open == 1">
423
+          <el-form-item label="A液:">
424
+            <el-select v-model="dialysisPrescription.a_liquid" placeholder="请选择">
425
+              <el-option :key="0" label="请选择" :value="0"></el-option>
426 426
 
427
-              <!--<el-option v-for="(option, index) in aliquid_info" :key="index"-->
428
-                         <!--:label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>-->
429
-            <!--</el-select>-->
430
-          <!--</el-form-item>-->
431
-        <!--</el-col>-->
427
+              <el-option v-for="(option, index) in aliquid_info" :key="index"
428
+                         :label="option.GoodInfo.specification_name" :value="option.GoodInfo.id"></el-option>
429
+            </el-select>
430
+          </el-form-item>
431
+        </el-col>
432 432
 
433 433
 
434 434
 

+ 4 - 2
src/xt_pages/dialysis/details/index.vue 查看文件

@@ -347,11 +347,11 @@
347 347
         steps[1].finish = this.receiver_treatment_access.id > 0
348 348
         steps[2].finish = this.predialysis_evaluation.id > 0
349 349
         steps[3].finish = this.doctor_advices.length > 0
350
-        steps[4].finish = this.dialysis_order.id > 0
350
+        steps[5].finish = this.dialysis_order.id > 0
351 351
         steps[7].finish =
352 352
           this.dialysis_order.id > 0 && this.dialysis_order.stage == 2
353 353
 
354
-        steps[5].finish = this.double_check.id > 0 && this.double_check.creater > 0 && this.double_check.modifier > 0
354
+        steps[4].finish = this.double_check.id > 0 && this.double_check.creater > 0 && this.double_check.modifier > 0
355 355
         steps[6].finish = this.monitor_records.length > 0
356 356
         steps[8].finish = this.assessment_after_dislysis.id > 0
357 357
         steps[9].finish = this.treatment_summary.id > 0
@@ -446,6 +446,8 @@
446 446
             this.monitor_records = monitor_records == null ? [] : monitor_records
447 447
             this.dialysis_order =
448 448
               dialysis_order == null ? { id: 0 } : dialysis_order
449
+
450
+
449 451
             // this.$refs.stat_order.setAdvices(this.doctor_advices)
450 452
             // this.$refs.monitoring.setRecords(this.monitor_records)
451 453
 

+ 106 - 3
src/xt_pages/home/index.vue 查看文件

@@ -59,14 +59,69 @@
59 59
             </li> -->
60 60
           </ul>
61 61
         </div>
62
+
63
+        <div class="res-widget" v-if="patientData.length > 0">
64
+
65
+          <ul>
66
+            <li class="taocan-title clearfix">
67
+              <div class="bar"></div>
68
+              <div class="taocan-h1 ">传染病检查提醒通知</div>
69
+            </li>
70
+
71
+          </ul>
72
+          <el-table
73
+            :data="patientData"
74
+            style="width: 100%"
75
+            highlight-current-row
76
+            :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
77
+          >
78
+
79
+            <el-table-column label="姓名" align="center">
80
+              <template slot-scope="scope">
81
+                {{scope.row.name}}
82
+              </template>
83
+            </el-table-column>
84
+
85
+
86
+            <el-table-column label="检查日期" align="center">
87
+              <template slot-scope="scope">
88
+               <span v-if="dateCompare(scope.row.infectious_next_record_time) == 1">{{ scope.row.infectious_next_record_time | parseTime('{y}-{m}-{d}')}}</span>
89
+                <span v-if="dateCompare(scope.row.infectious_next_record_time) == 2" style="color: red">{{ scope.row.infectious_next_record_time | parseTime('{y}-{m}-{d}')}}</span>
90
+
91
+              </template>
92
+            </el-table-column>
93
+
94
+            <el-table-column label="操作" align="center">
95
+              <template slot-scope="scope">
96
+                  <el-button
97
+                    size="mini"
98
+                    type="primary"
99
+                    @click="jump(scope.row.id)"
100
+                  >查看
101
+                  </el-button>
102
+              </template>
103
+            </el-table-column>
104
+          </el-table>
105
+          <el-pagination
106
+            @size-change="handleSizeChange"
107
+            @current-change="handleCurrentChange"
108
+            :page-size="5"
109
+            background
110
+            style="margin-top:20px;float: right"
111
+            :total="total">
112
+          </el-pagination>
113
+        </div>
114
+
62 115
      </div>
63
-   </section>
116
+
117
+
118
+  </section>
64 119
   </div>
65 120
 
66 121
 </template>
67 122
 <script>
68 123
 import { GetServerTime } from '@/api/public'
69
-import { GetPatientTotal } from '@/api/patient'
124
+import { GetPatientTotal,GetRemind } from '@/api/patient'
70 125
 import BreadCrumb from '@/xt_pages/components/bread-crumb'
71 126
 export default {
72 127
   name: 'Home',
@@ -77,6 +132,7 @@ export default {
77 132
     return {
78 133
       searchKey: '',
79 134
       patientTotal: 0,
135
+      patientData:[],
80 136
       steps: [
81 137
         { title: '透析处方' },
82 138
         { title: '接诊评估' },
@@ -128,10 +184,50 @@ export default {
128 184
         pay_status: false
129 185
       },
130 186
       serverTime: 0,
131
-      leftTime: false
187
+      leftTime: false,
188
+      total:0,
189
+      page: 0,
190
+      limit:5,
132 191
     }
133 192
   },
134 193
   methods: {
194
+    dateCompare(date){
195
+      var date1 =  Date.parse(new Date())/1000;
196
+      console.log(date)
197
+      console.log(date1)
198
+     if (date > date1){
199
+       return 1
200
+     }else{
201
+       return 2
202
+
203
+     }
204
+
205
+
206
+    },
207
+    jump(id){
208
+      this.$router.push({ path: "patients/inspection?id="+id});
209
+    },
210
+    handleSizeChange(val) {
211
+
212
+    }, handleCurrentChange(val) {
213
+      this.page = val
214
+      let params = {
215
+        page : this.page,
216
+        limit: 5,
217
+      }
218
+      this.GetRemindPatientList(params)
219
+    },
220
+    GetRemindPatientList(params){
221
+      GetRemind(params).then(response => {
222
+        if (response.data.state == 1) {
223
+          this.patientData = response.data.data.patients
224
+          this.total = response.data.data.total
225
+        } else {
226
+          this.$message.error(response.data.msg)
227
+        }
228
+      }).catch(e => {
229
+      })
230
+    },
135 231
     GetPatientTotal() {
136 232
       GetPatientTotal().then(response => {
137 233
         if (response.data.state == 1) {
@@ -283,6 +379,11 @@ export default {
283 379
     this.subscibe = this.$store.getters.xt_user.subscibe
284 380
     this.GetPatientTotal()
285 381
     this.GetServerTime()
382
+    let params = {
383
+      page : this.page+1,
384
+      limit: this.limit,
385
+    }
386
+    this.GetRemindPatientList(params)
286 387
   },
287 388
   watch: {
288 389
     serverTime: function() {
@@ -480,6 +581,7 @@ export default {
480 581
     min-width: 290px;
481 582
     margin: 0 0 0 10px;
482 583
     .res-widget {
584
+
483 585
       min-height: 80px;
484 586
       background: #fff;
485 587
       padding: 10px 20px;
@@ -651,6 +753,7 @@ export default {
651 753
     }
652 754
   }
653 755
 }
756
+
654 757
 @media (min-width: 768px) {
655 758
   .main-r {
656 759
     width: 16.66666667%;

+ 1 - 1
src/xt_pages/stock/config/automaticReduce.vue 查看文件

@@ -3,7 +3,7 @@
3 3
     <div style="text-align: center;margin-top: 150px">
4 4
       <el-button type="primary"   v-if="!is_open" @click="changeOpen(1)">启用自动扣减</el-button>
5 5
       <el-button type="danger"   v-if="is_open"  @click="changeOpen(2)">关闭自动扣减</el-button>
6
-      <div style="margin-top: 40px;" ><p style="color:#909399;text-align: center;">开启后,系统设定的固定商品类型,在pad端中透析记录-透析处方-透析耗材中设置好(pc端暂不支持),患者执行上机之后,将会自动产生出库单;<br/>系统设定之外的商品类型则需要手动新增出库单。</p></div>
6
+      <div style="margin-top: 40px;" ><p style="color:#909399;text-align: center;">开启后,系统设定的固定商品类型,在透析记录-透析处方-透析耗材中设置好,患者执行上机之后,将会自动产生出库单;<br/>系统设定之外的商品类型则需要手动新增出库单。</p></div>
7 7
     </div>
8 8
   </div>
9 9
 </template>

+ 54 - 0
src/xt_pages/upload/config.vue 查看文件

@@ -0,0 +1,54 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs='crumbs'></bread-crumb>
5
+    </div>
6
+    <!--<el-checkbox style="float: right;margin-right: 35px;padding-top: 20px;height: 15px" v-model="is_open" @change="changeOpen">是否启用自动扣减功能</el-checkbox>-->
7
+    <div class="app-container">
8
+      <div class="service-box">
9
+        <el-tabs v-model="activeName">
10
+          <el-tab-pane label="国家质控平台" name="first">
11
+            <country></country>
12
+          </el-tab-pane>
13
+          <el-tab-pane label="省级质控平台">
14
+            <province></province>
15
+          </el-tab-pane>
16
+          <el-tab-pane label="市级质控平台">
17
+            <city></city>
18
+          </el-tab-pane>
19
+        </el-tabs>
20
+      </div>
21
+    </div>
22
+  </div>
23
+</template>
24
+
25
+
26
+<script>
27
+  import BreadCrumb from '@/xt_pages/components/bread-crumb'
28
+  import Country from './config/Country'
29
+  import Province from './config/Province'
30
+  import City from './config/City'
31
+
32
+  export default {
33
+    name: 'config',
34
+    components: {
35
+      City,
36
+      Province,
37
+      Country,
38
+      BreadCrumb
39
+    },
40
+    data(){
41
+      return{
42
+        crumbs: [
43
+          { path: false, name: '质控上报' },
44
+          { path: '/upload/config', name: '质控上报配置' }
45
+        ],
46
+        activeName: 'first',
47
+      }
48
+    }
49
+  }
50
+</script>
51
+
52
+<style scoped>
53
+
54
+</style>

+ 245 - 0
src/xt_pages/upload/config/City.vue 查看文件

@@ -0,0 +1,245 @@
1
+<template>
2
+  <div class="main-contain">
3
+
4
+    <div class="cell clearfix">
5
+      <el-row :gutter="20">
6
+        <el-col :span="24" :offset="6">
7
+          <!--<div>质控平台的上报对接,是为了解决手工录入的效率和易出错的问题,对接涉及各种技术,请勿随意配置,联系酷医云客服协助处理。</div>-->
8
+          <div>质控平台的上报对接,是为了解决手工录入的效率和易出错的问题,对接涉及各种技术,请勿随意配置,联系酷医云客服协助处理。<br/>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;微信:11111 电话:13535547901</div>
9
+
10
+        </el-col>
11
+      </el-row>
12
+    </div>
13
+    <div class="cell clearfix">
14
+      <el-row :gutter="20">
15
+        <el-col :span="24" :offset="20">
16
+          <el-form :model="form" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm" style="text-align: center">
17
+            <el-form-item label="省" prop="province">
18
+              <el-select v-model="form.province" clearable filterable placeholder="请选择" @change="changeProvince">
19
+                <el-option
20
+                  v-for="item in provinces"
21
+                  :key="item.id"
22
+                  :label="item.name"
23
+                  :value="item.id">
24
+                </el-option>
25
+              </el-select>
26
+            </el-form-item>
27
+
28
+            <el-form-item label="市" prop="city">
29
+              <el-select v-model="form.city" clearable filterable placeholder="请选择" @change="changeCity">
30
+                <el-option
31
+                  v-for="item in citys"
32
+                  :key="item.id"
33
+                  :label="item.name"
34
+                  :value="item.id">
35
+                </el-option>
36
+              </el-select>
37
+            </el-form-item>
38
+
39
+            <el-form-item label="网关地址" prop="gateway_address" >
40
+              <el-input v-model="form.gateway_address"></el-input>
41
+            </el-form-item>
42
+
43
+            <el-form-item label="AppID" prop="app_id">
44
+              <el-input v-model="form.app_id"></el-input>
45
+            </el-form-item>
46
+
47
+            <el-form-item label="密钥" prop="key">
48
+              <el-input v-model="form.key"></el-input>
49
+            </el-form-item>
50
+
51
+            <el-form-item label="自动上传周期" prop="time_type">
52
+              <el-radio-group v-model="form.time_type">
53
+                <el-radio label="1">一周</el-radio>
54
+                <el-radio label="2">二周</el-radio>
55
+                <el-radio label="3">一个月</el-radio>
56
+                <el-radio label="4">三个月</el-radio>
57
+              </el-radio-group>
58
+            </el-form-item>
59
+
60
+            <el-form-item>
61
+              <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
62
+            </el-form-item>
63
+          </el-form>
64
+        </el-col>
65
+      </el-row>
66
+    </div>
67
+
68
+
69
+
70
+  </div>
71
+
72
+</template>
73
+
74
+<script>
75
+  import {GetDistrictsByUpid} from '@/api/district';
76
+  import {getConfig,postConfig,postModifyConfig,getIsDocking} from '@/api/config';
77
+
78
+  export default {
79
+    name: 'City',
80
+    data() {
81
+      return {
82
+        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
83
+        provinces:[],
84
+        citys:[],
85
+        form: {
86
+          id:0,
87
+          province:'',
88
+          city:'',
89
+          gateway_address: '',
90
+          app_id: '',
91
+          key: '',
92
+          time_type: '',
93
+          config_type: 3,
94
+        },rules: {
95
+          gateway_address: [
96
+            { required: true, message: '请输入网关地址', trigger: 'blur' },
97
+          ],
98
+          province: [
99
+            { required: true, message: '请选择省份', trigger: 'change' }
100
+          ],
101
+          city: [
102
+            { required: true, message: '请选择城市', trigger: 'change' }
103
+          ],
104
+          app_id: [
105
+            { required: true, message: '请输入AppID', trigger: 'blur' },
106
+          ],
107
+          key: [
108
+            { required: true, message: '请输入密钥', trigger: 'blur' },
109
+          ],
110
+          time_type: [
111
+            { required: true, message: '请选择自动上传周期', trigger: 'change' }
112
+          ],
113
+        },
114
+      }
115
+    },created(){
116
+      this.getDistricts()
117
+      this.getConfig()
118
+
119
+
120
+    },methods:{
121
+      submitForm: function(formName) {
122
+        this.$refs[formName].validate((valid) => {
123
+          if (valid) {
124
+            if (this.form.id == 0){
125
+              postConfig(this.form).then(response=>{
126
+                var res = response.data;
127
+                console.log(res)
128
+                if(res.state==1) {
129
+                  this.config = res.data.config
130
+                  this.form.id = this.config.id
131
+                  this.form.gateway_address = this.config.gateway_address
132
+                  this.form.app_id = this.config.app_id
133
+                  this.form.key = this.config.key
134
+                  this.form.province = this.config.province_id
135
+                  this.form.time_type = this.config.time_quantum
136
+                  this.$message.success('提交成功')
137
+                }else{
138
+                  this.$message.error(res.msg)
139
+
140
+                }
141
+              }).catch(e=>{
142
+              })
143
+            }else{
144
+              postModifyConfig(this.form).then(response=>{
145
+                var res = response.data;
146
+                if(res.state==1) {
147
+                  this.config = res.data.config
148
+                  this.form.id = this.config.id
149
+                  this.form.gateway_address = this.config.gateway_address
150
+                  this.form.app_id = this.config.app_id
151
+                  this.form.key = this.config.key
152
+                  this.form.province = this.config.province_id
153
+                  this.form.time_type = this.config.time_quantum
154
+                  this.$message.success('修改成功')
155
+                }else{
156
+                  this.$message.error(res.msg)
157
+                }
158
+              }).catch(e=>{
159
+              })
160
+            }
161
+          } else {
162
+            return false;
163
+          }
164
+        });
165
+
166
+
167
+      },
168
+      getDistricts:function() {
169
+        GetDistrictsByUpid({id:0}).then(response=>{
170
+          var res = response.data;
171
+          if(res.state===1) {
172
+            this.provinces = res.data.citys
173
+          }
174
+        }).catch(e=>{
175
+
176
+        })
177
+
178
+      },getConfig:function() {
179
+        getConfig({config_type: 3}).then(response=>{
180
+          var res = response.data;
181
+          if(res.state===1) {
182
+            this.config = res.data.config
183
+            this.form.id = this.config.id
184
+            this.form.gateway_address = this.config.gateway_address
185
+            this.form.app_id = this.config.app_id
186
+            this.form.key = this.config.key
187
+            this.form.time = this.config.time_quantum
188
+            this.form.province = this.config.province_id
189
+            this.form.city = this.config.city_id
190
+          }
191
+        }).catch(e=>{
192
+
193
+        })
194
+
195
+
196
+      },changeProvince(id) {
197
+        this.citys = [];
198
+        this.form.district = id;
199
+        var upid = parseInt(id);
200
+        if (isNaN(upid) || upid<=0) {
201
+          return false;
202
+        }
203
+        GetDistrictsByUpid({id:upid}).then(response=>{
204
+          var res = response.data;
205
+          if(res.state===1) {
206
+            this.citys = res.data.citys
207
+          }else{
208
+            this.$message.error(res.msg)
209
+
210
+
211
+          }
212
+        }).catch(e=>{
213
+
214
+        })
215
+      },
216
+      changeCity(id) {
217
+        getIsDocking({config_type: 2 , province: this.form.province, city:id}).then(response=>{
218
+          var res = response.data;
219
+          if(res.state==1) {
220
+            if (res.data.is_docking == 2){
221
+              this.$message.error('该地区尚未对接,请联系客服')
222
+              this.form.province = '';
223
+              this.form.city = '';
224
+
225
+            }else{
226
+              this.form.city = id;
227
+
228
+            }
229
+          }else{
230
+            this.$message.error(res.msg)
231
+
232
+          }
233
+        }).catch(e=>{
234
+
235
+        })
236
+
237
+      }
238
+    }
239
+
240
+  }
241
+</script>
242
+
243
+<style scoped>
244
+
245
+</style>

+ 140 - 0
src/xt_pages/upload/config/Country.vue 查看文件

@@ -0,0 +1,140 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="cell clearfix">
4
+      <el-row :gutter="20">
5
+        <el-col :span="24" :offset="6">
6
+          <div>质控平台的上报对接,是为了解决手工录入的效率和易出错的问题,对接涉及各种技术,请勿随意配置,联系酷医云客服协助处理。<br/>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;微信:11111 电话:13535547901</div>
7
+        </el-col>
8
+      </el-row>
9
+    </div>
10
+    <div class="cell clearfix">
11
+
12
+      <el-row :gutter="20">
13
+
14
+        <el-col :span="24" :offset="24">
15
+          <el-form :model="form" ref="ruleForm" :rules="rules"  label-width="120px" class="demo-ruleForm" style="text-align: center">
16
+            <el-form-item label="网关地址"  prop="gateway_address">
17
+              <el-input v-model="form.gateway_address"></el-input>
18
+            </el-form-item>
19
+
20
+            <el-form-item label="AppID" prop="app_id">
21
+              <el-input v-model="form.app_id"></el-input>
22
+            </el-form-item>
23
+
24
+            <el-form-item label="密钥" prop="key">
25
+              <el-input v-model="form.key"></el-input>
26
+            </el-form-item>
27
+
28
+            <el-form-item label="自动上传周期" prop="time_type">
29
+              <el-radio-group v-model="form.time_type">
30
+                <el-radio label="1">一周</el-radio>
31
+                <el-radio label="2">二周</el-radio>
32
+                <el-radio label="3">一个月</el-radio>
33
+                <el-radio label="4">三个月</el-radio>
34
+              </el-radio-group>
35
+            </el-form-item>
36
+
37
+            <el-form-item>
38
+              <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
39
+            </el-form-item>
40
+          </el-form>
41
+        </el-col>
42
+      </el-row>
43
+    </div>
44
+  </div>
45
+
46
+
47
+</template>
48
+
49
+<script>
50
+  import {getConfig,postConfig,postModifyConfig} from '@/api/config';
51
+
52
+  export default {
53
+    name: 'Country',
54
+    data() {
55
+      return {
56
+        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
57
+        form: {
58
+          id: 0,
59
+          gateway_address: '',
60
+          app_id: '',
61
+          key: '',
62
+          time_type: '',
63
+          config_type: 1,
64
+          province: 0,
65
+          city:0,
66
+        },
67
+        rules: {
68
+          gateway_address: [
69
+            { required: true, message: '请输入网关地址', trigger: 'blur' },
70
+          ],
71
+          app_id: [
72
+            { required: true, message: '请输入AppID', trigger: 'blur' },
73
+          ],
74
+          key: [
75
+            { required: true, message: '请输入密钥', trigger: 'blur' },
76
+          ],
77
+          time_type: [
78
+            { required: true, message: '请选择自动上传周期', trigger: 'change' }
79
+          ],
80
+        }
81
+      }
82
+    },
83
+    methods: {
84
+      submitForm: function(formName) {
85
+        this.$refs[formName].validate((valid) => {
86
+          if (valid) {
87
+            if (this.form.id == 0){
88
+              postConfig(this.form).then(response=>{
89
+                var res = response.data;
90
+                if(res.state===1) {
91
+                  this.config = res.data.config
92
+                  this.form.id = this.config.id
93
+                  this.form.gateway_address = this.config.gateway_address
94
+                  this.form.app_id = this.config.app_id
95
+                  this.form.key = this.config.key
96
+                  this.form.time_type = this.config.time_quantum.toString()
97
+                  this.$message.success('提交成功')
98
+                }
99
+              }).catch(e=>{
100
+              })
101
+            }else{
102
+              postModifyConfig(this.form).then(response=>{
103
+                var res = response.data;
104
+                if(res.state===1) {
105
+                  this.$message.success('修改成功')
106
+
107
+                }
108
+              }).catch(e=>{
109
+              })
110
+            }
111
+          } else {
112
+            return false;
113
+          }
114
+        });
115
+      },getConfig:function() {
116
+        getConfig({config_type: 1}).then(response=>{
117
+          var res = response.data;
118
+          if(res.state===1) {
119
+            this.config = res.data.config
120
+            this.form.id = this.config.id
121
+            this.form.gateway_address = this.config.gateway_address
122
+            this.form.app_id = this.config.app_id
123
+            this.form.key = this.config.key
124
+            this.form.time_type = this.config.time_quantum.toString()
125
+          }
126
+        }).catch(e=>{
127
+        })
128
+      }
129
+    },
130
+    created() {
131
+      this.getConfig()
132
+
133
+    }
134
+
135
+  }
136
+</script>
137
+
138
+<style scoped>
139
+
140
+</style>

+ 223 - 0
src/xt_pages/upload/config/Province.vue 查看文件

@@ -0,0 +1,223 @@
1
+<template>
2
+  <div class="main-contain">
3
+
4
+
5
+    <div class="cell clearfix">
6
+      <el-row :gutter="20">
7
+        <el-col :span="24" :offset="6">
8
+          <!--<div>质控平台的上报对接,是为了解决手工录入的效率和易出错的问题,对接涉及各种技术,请勿随意配置,联系酷医云客服协助处理。</div>-->
9
+          <div>质控平台的上报对接,是为了解决手工录入的效率和易出错的问题,对接涉及各种技术,请勿随意配置,联系酷医云客服协助处理。<br/>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;微信:11111 电话:13535547901</div>
10
+
11
+        </el-col>
12
+      </el-row>
13
+    </div>
14
+    <div class="cell clearfix">
15
+      <el-row :gutter="20">
16
+        <el-col :span="24" :offset="20">
17
+          <el-form :model="form"  :rules="rules"  ref="ruleForm" label-width="120px" class="demo-ruleForm" style="text-align: center">
18
+            <el-form-item label="省份" prop="province">
19
+              <el-select v-model="form.province" clearable filterable placeholder="请选择" @change="changeProvince">
20
+                <el-option
21
+                  v-for="item in provinces"
22
+                  :key="item.id"
23
+                  :label="item.name"
24
+                  :value="item.id">
25
+                </el-option>
26
+              </el-select>
27
+              <el-select v-model="form.city" clearable filterable disabled placeholder="请选择" @change="changeCity">
28
+                <el-option
29
+                  v-for="item in citys"
30
+                  :key="item.id"
31
+                  :label="item.name"
32
+                  :value="item.id">
33
+                </el-option>
34
+              </el-select>
35
+            </el-form-item>
36
+
37
+            <el-form-item label="网关地址" prop="gateway_address" >
38
+              <el-input v-model="form.gateway_address"></el-input>
39
+            </el-form-item>
40
+
41
+            <el-form-item label="AppID" prop="app_id">
42
+              <el-input v-model="form.app_id"></el-input>
43
+            </el-form-item>
44
+
45
+            <el-form-item label="密钥" prop="key">
46
+              <el-input v-model="form.key"></el-input>
47
+            </el-form-item>
48
+
49
+            <el-form-item label="自动上传周期" prop="time_type">
50
+              <el-radio-group v-model="form.time_type">
51
+                <el-radio label="1">一周</el-radio>
52
+                <el-radio label="2">二周</el-radio>
53
+                <el-radio label="3">一个月</el-radio>
54
+                <el-radio label="4">三个月</el-radio>
55
+              </el-radio-group>
56
+            </el-form-item>
57
+
58
+            <el-form-item>
59
+              <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
60
+            </el-form-item>
61
+          </el-form>
62
+        </el-col>
63
+      </el-row>
64
+    </div>
65
+
66
+  </div>
67
+
68
+</template>
69
+
70
+<script>
71
+  import {GetDistrictsByUpid} from '@/api/district';
72
+  import {getConfig,postConfig,postModifyConfig,getIsDocking} from '@/api/config';
73
+
74
+  export default {
75
+    name: 'province',
76
+    data() {
77
+      return {
78
+        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
79
+        form: {
80
+          id:0,
81
+          province:'',
82
+          city:'',
83
+          gateway_address: '',
84
+          app_id: '',
85
+          key: '',
86
+          time_type: '',
87
+          config_type: 2,
88
+          visibility:false,
89
+
90
+        },
91
+        rules: {
92
+          gateway_address: [
93
+            { required: true, message: '请输入网关地址', trigger: 'blur' },
94
+          ],
95
+          province: [
96
+            { required: true, message: '请选择省份', trigger: 'change' }
97
+          ],
98
+          app_id: [
99
+            { required: true, message: '请输入AppID', trigger: 'blur' },
100
+          ],
101
+          key: [
102
+            { required: true, message: '请输入密钥', trigger: 'blur' },
103
+          ],
104
+          time_type: [
105
+            { required: true, message: '请选择自动上传周期', trigger: 'change' }
106
+          ],
107
+        },
108
+
109
+        provinces:[],
110
+        citys:[],
111
+
112
+      }
113
+    },created(){
114
+      this.getDistricts()
115
+      this.getConfig()
116
+
117
+
118
+    },methods:{
119
+      submitForm: function(formName) {
120
+        this.$refs[formName].validate((valid) => {
121
+          if (valid) {
122
+            if (this.form.id == 0){
123
+              postConfig(this.form).then(response=>{
124
+                var res = response.data;
125
+                if(res.state===1) {
126
+                  this.config = res.data.config
127
+                  this.form.id = this.config.id
128
+                  this.form.gateway_address = this.config.gateway_address
129
+                  this.form.app_id = this.config.app_id
130
+                  this.form.key = this.config.key
131
+                  this.form.province = this.config.province_id
132
+                  this.form.time_type = this.config.time_quantum.toString()
133
+                  this.$message.success('提交成功')
134
+
135
+                }else{
136
+                  this.$message.error(res.msg)
137
+
138
+
139
+                }
140
+              }).catch(e=>{
141
+              })
142
+            }else{
143
+              postModifyConfig(this.form).then(response=>{
144
+                var res = response.data;
145
+                if(res.state===1) {
146
+                  this.config = res.data.config
147
+                  this.form.id = this.config.id
148
+                  this.form.gateway_address = this.config.gateway_address
149
+                  this.form.app_id = this.config.app_id
150
+                  this.form.key = this.config.key
151
+                  this.form.province = this.config.province_id
152
+                  this.form.time_type = this.config.time_quantum.toString()
153
+                  this.$message.success('修改成功')
154
+
155
+                }else{
156
+                  this.$message.error(res.msg)
157
+
158
+
159
+                }
160
+              }).catch(e=>{
161
+              })
162
+            }
163
+          } else {
164
+            return false;
165
+          }
166
+        });
167
+
168
+
169
+      },
170
+      getDistricts:function() {
171
+        GetDistrictsByUpid({id:0}).then(response=>{
172
+          var res = response.data;
173
+          if(res.state===1) {
174
+            this.provinces = res.data.citys
175
+          }
176
+        }).catch(e=>{
177
+
178
+        })
179
+
180
+      },getConfig:function() {
181
+        getConfig({config_type: 2}).then(response=>{
182
+          var res = response.data;
183
+          if(res.state===1) {
184
+            this.config = res.data.config
185
+            this.form.id = this.config.id
186
+            this.form.gateway_address = this.config.gateway_address
187
+            this.form.app_id = this.config.app_id
188
+            this.form.key = this.config.key
189
+            this.form.time = this.config.time_quantum
190
+            this.form.province = this.config.province_id
191
+          }
192
+        }).catch(e=>{
193
+
194
+        })
195
+      },changeProvince(id) {
196
+        getIsDocking({config_type: 2 , province: id, city:0}).then(response=>{
197
+          var res = response.data;
198
+          if(res.state==1) {
199
+            if (res.data.is_docking == 2){
200
+              this.$message.error('该地区尚未对接,请联系客服')
201
+              this.form.province = '';
202
+
203
+            }else{
204
+              this.form.province = id;
205
+
206
+
207
+            }
208
+          }else{
209
+            this.$message.error(res.msg)
210
+
211
+          }
212
+        }).catch(e=>{
213
+
214
+        })
215
+      },
216
+    }
217
+
218
+  }
219
+</script>
220
+
221
+<style scoped>
222
+
223
+</style>

+ 154 - 0
src/xt_pages/upload/data/DataCity.vue 查看文件

@@ -0,0 +1,154 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div v-if="isShow">
4
+      <div class="cell clearfix">
5
+        <div class="block">
6
+          <span class="demonstration">年月</span>
7
+          <el-date-picker
8
+            v-model="value"
9
+            type="month"
10
+            placeholder="选择年月">
11
+          </el-date-picker>
12
+        </div>
13
+
14
+      </div>
15
+      <div class="cell clearfix">
16
+        <el-radio-group v-model="radio">
17
+          <el-radio label="自动上报"></el-radio>
18
+          <el-radio label="离线上报"></el-radio>
19
+        </el-radio-group>
20
+      </div>
21
+      <div class="cell clearfix">
22
+
23
+        <el-button type="primary">一键上报</el-button>
24
+      </div>
25
+
26
+      <div>
27
+        <el-row :gutter="12" style="margin-top: 10px">
28
+          <el-table
29
+            :data="list"
30
+            border
31
+            highlight-current-row
32
+            :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
33
+          >
34
+
35
+            <el-table-column label="日期" align="center">
36
+              <template slot-scope="scope">
37
+              </template>
38
+            </el-table-column>
39
+
40
+            <el-table-column label="上传项目" align="center">
41
+              <template slot-scope="scope">
42
+              </template>
43
+            </el-table-column>
44
+
45
+            <el-table-column label="上传状态" align="center">
46
+              <template slot-scope="scope">
47
+              </template>
48
+            </el-table-column>
49
+
50
+            <el-table-column label="回报详情" align="center">
51
+              <template slot-scope="scope">
52
+              </template>
53
+            </el-table-column>
54
+
55
+          </el-table>
56
+
57
+          <!--<el-pagination-->
58
+          <!--@size-change="handleSizeChange"-->
59
+          <!--@current-change="handleCurrentChange"-->
60
+          <!--:page-sizes="[7, 10, 50, 100]"-->
61
+          <!--:page-size="7"-->
62
+          <!--background-->
63
+          <!--style="margin-top:20px;float: right"-->
64
+          <!--layout="total, sizes, prev, pager, next, jumper"-->
65
+          <!--:total="total">-->
66
+          <!--</el-pagination>-->
67
+
68
+        </el-row>
69
+      </div>
70
+    </div>
71
+    <div v-else>
72
+      <div class="cell clearfix">
73
+        <el-row :gutter="20">
74
+          <el-col :span="24" :offset="6">
75
+            <div>质控平台上报配置未完成!请在"质控上报>质控上报配置"中完成集成配置内容,再重新打开此功能。</div>
76
+          </el-col>
77
+        </el-row>
78
+      </div>
79
+    </div>
80
+
81
+  </div>
82
+</template>
83
+
84
+<script>
85
+  import { getConfig } from '@/api/config'
86
+
87
+  export default {
88
+    name: 'DataCity',
89
+    created() {
90
+      this.getConfig()
91
+    },
92
+    data() {
93
+      return {
94
+        value: '',
95
+        list: [],
96
+        radio: '',
97
+        isShow: true
98
+
99
+      }
100
+    },
101
+    methods: {
102
+      getConfig: function() {
103
+        getConfig({ config_type: 3 }).then(response => {
104
+          var res = response.data
105
+          if (res.state === 1) {
106
+            this.isShow = true
107
+          } else {
108
+            this.isShow = false
109
+
110
+          }
111
+        }).catch(e => {
112
+        })
113
+      }
114
+
115
+    }
116
+  }
117
+</script>
118
+
119
+<style rel="stylesheet/css" lang="scss" scoped>
120
+  .information {
121
+    border: 1px #dcdfe6 solid;
122
+    padding: 30px 20px 30px 20px;
123
+
124
+  .border {
125
+    border-bottom: 1px #dcdfe6 solid;
126
+    margin: 0px 0 20px 0;
127
+  }
128
+
129
+  }
130
+
131
+
132
+  .edit_separater {
133
+    border-top: 1px solid rgb(233, 233, 233);
134
+    margin-top: 15px;
135
+    margin-bottom: 15px;
136
+  }
137
+
138
+</style>
139
+
140
+<style>
141
+  .sign-and-weigh-box .sign-and-weigh-box-patients .cell {
142
+    font-size: 12px;
143
+  }
144
+
145
+  .sign-and-weigh-box .sign-and-weigh-box-patients .current-row > td {
146
+    background: #6fb5fa;
147
+  }
148
+
149
+  .count {
150
+    color: #bd2c00;
151
+
152
+  }
153
+
154
+</style>

+ 153 - 0
src/xt_pages/upload/data/DataCountry.vue 查看文件

@@ -0,0 +1,153 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div v-if="isShow">
4
+      <div class="cell clearfix">
5
+        <div class="block">
6
+          <span class="demonstration">年月</span>
7
+          <el-date-picker
8
+            v-model="value"
9
+            type="month"
10
+            placeholder="选择年月">
11
+          </el-date-picker>
12
+        </div>
13
+
14
+      </div>
15
+      <div class="cell clearfix">
16
+        <el-radio-group v-model="radio">
17
+          <el-radio label="自动上报"></el-radio>
18
+          <el-radio label="离线上报"></el-radio>
19
+        </el-radio-group>
20
+      </div>
21
+      <div class="cell clearfix">
22
+
23
+        <el-button type="primary">一键上报</el-button>
24
+      </div>
25
+
26
+      <div>
27
+        <el-row :gutter="12" style="margin-top: 10px">
28
+          <el-table
29
+            :data="list"
30
+            border
31
+            highlight-current-row
32
+            :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
33
+          >
34
+
35
+            <el-table-column label="日期" align="center">
36
+              <template slot-scope="scope">
37
+              </template>
38
+            </el-table-column>
39
+
40
+            <el-table-column label="上传项目" align="center">
41
+              <template slot-scope="scope">
42
+              </template>
43
+            </el-table-column>
44
+
45
+            <el-table-column label="上传状态" align="center">
46
+              <template slot-scope="scope">
47
+              </template>
48
+            </el-table-column>
49
+
50
+            <el-table-column label="回报详情" align="center">
51
+              <template slot-scope="scope">
52
+              </template>
53
+            </el-table-column>
54
+
55
+          </el-table>
56
+
57
+          <!--<el-pagination-->
58
+          <!--@size-change="handleSizeChange"-->
59
+          <!--@current-change="handleCurrentChange"-->
60
+          <!--:page-sizes="[7, 10, 50, 100]"-->
61
+          <!--:page-size="7"-->
62
+          <!--background-->
63
+          <!--style="margin-top:20px;float: right"-->
64
+          <!--layout="total, sizes, prev, pager, next, jumper"-->
65
+          <!--:total="total">-->
66
+          <!--</el-pagination>-->
67
+
68
+        </el-row>
69
+      </div>
70
+    </div>
71
+    <div v-else>
72
+      <div class="cell clearfix">
73
+        <el-row :gutter="20">
74
+          <el-col :span="24" :offset="6">
75
+            <div>质控平台上报配置未完成!请在"质控上报>质控上报配置"中完成集成配置内容,再重新打开此功能。</div>
76
+          </el-col>
77
+        </el-row>
78
+      </div>
79
+    </div>
80
+  </div>
81
+</template>
82
+
83
+<script>
84
+  import { getConfig } from '@/api/config'
85
+
86
+  export default {
87
+    name: 'DataCountry',
88
+    created() {
89
+      this.getConfig()
90
+    },
91
+    data() {
92
+      return {
93
+        value: '',
94
+        list: [],
95
+        radio: '',
96
+        isShow: true
97
+
98
+      }
99
+    },
100
+    methods: {
101
+      getConfig: function() {
102
+        getConfig({ config_type: 1 }).then(response => {
103
+          var res = response.data
104
+          if (res.state === 1) {
105
+            this.isShow = true
106
+          } else {
107
+            this.isShow = false
108
+
109
+          }
110
+        }).catch(e => {
111
+        })
112
+      }
113
+
114
+    }
115
+  }
116
+</script>
117
+
118
+<style rel="stylesheet/css" lang="scss" scoped>
119
+  .information {
120
+    border: 1px #dcdfe6 solid;
121
+    padding: 30px 20px 30px 20px;
122
+
123
+  .border {
124
+    border-bottom: 1px #dcdfe6 solid;
125
+    margin: 0px 0 20px 0;
126
+  }
127
+
128
+  }
129
+
130
+
131
+  .edit_separater {
132
+    border-top: 1px solid rgb(233, 233, 233);
133
+    margin-top: 15px;
134
+    margin-bottom: 15px;
135
+  }
136
+
137
+</style>
138
+
139
+<style>
140
+  .sign-and-weigh-box .sign-and-weigh-box-patients .cell {
141
+    font-size: 12px;
142
+  }
143
+
144
+  .sign-and-weigh-box .sign-and-weigh-box-patients .current-row > td {
145
+    background: #6fb5fa;
146
+  }
147
+
148
+  .count {
149
+    color: #bd2c00;
150
+
151
+  }
152
+
153
+</style>

+ 153 - 0
src/xt_pages/upload/data/DataProvince.vue 查看文件

@@ -0,0 +1,153 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div v-if="isShow">
4
+      <div class="cell clearfix">
5
+        <div class="block">
6
+          <span class="demonstration">年月</span>
7
+          <el-date-picker
8
+            v-model="value"
9
+            type="month"
10
+            placeholder="选择年月">
11
+          </el-date-picker>
12
+        </div>
13
+
14
+      </div>
15
+      <div class="cell clearfix">
16
+        <el-radio-group v-model="radio">
17
+          <el-radio label="自动上报"></el-radio>
18
+          <el-radio label="离线上报"></el-radio>
19
+        </el-radio-group>
20
+      </div>
21
+      <div class="cell clearfix">
22
+
23
+        <el-button type="primary">一键上报</el-button>
24
+      </div>
25
+
26
+      <div>
27
+        <el-row :gutter="12" style="margin-top: 10px">
28
+          <el-table
29
+            :data="list"
30
+            border
31
+            highlight-current-row
32
+            :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
33
+          >
34
+
35
+            <el-table-column label="日期" align="center">
36
+              <template slot-scope="scope">
37
+              </template>
38
+            </el-table-column>
39
+
40
+            <el-table-column label="上传项目" align="center">
41
+              <template slot-scope="scope">
42
+              </template>
43
+            </el-table-column>
44
+
45
+            <el-table-column label="上传状态" align="center">
46
+              <template slot-scope="scope">
47
+              </template>
48
+            </el-table-column>
49
+
50
+            <el-table-column label="回报详情" align="center">
51
+              <template slot-scope="scope">
52
+              </template>
53
+            </el-table-column>
54
+
55
+          </el-table>
56
+
57
+          <!--<el-pagination-->
58
+          <!--@size-change="handleSizeChange"-->
59
+          <!--@current-change="handleCurrentChange"-->
60
+          <!--:page-sizes="[7, 10, 50, 100]"-->
61
+          <!--:page-size="7"-->
62
+          <!--background-->
63
+          <!--style="margin-top:20px;float: right"-->
64
+          <!--layout="total, sizes, prev, pager, next, jumper"-->
65
+          <!--:total="total">-->
66
+          <!--</el-pagination>-->
67
+
68
+        </el-row>
69
+      </div>
70
+    </div>
71
+    <div v-else>
72
+      <div class="cell clearfix">
73
+        <el-row :gutter="20">
74
+          <el-col :span="24" :offset="6">
75
+            <div>质控平台上报配置未完成!请在"质控上报>质控上报配置"中完成集成配置内容,再重新打开此功能。</div>
76
+          </el-col>
77
+        </el-row>
78
+      </div>
79
+    </div>
80
+  </div>
81
+</template>
82
+
83
+<script>
84
+  import { getConfig } from '@/api/config'
85
+
86
+  export default {
87
+    name: 'DataProvince',
88
+    created() {
89
+      this.getConfig()
90
+    },
91
+    data() {
92
+      return {
93
+        value: '',
94
+        list: [],
95
+        radio: '',
96
+        isShow: true
97
+
98
+      }
99
+    },
100
+    methods: {
101
+      getConfig: function() {
102
+        getConfig({ config_type: 2 }).then(response => {
103
+          var res = response.data
104
+          if (res.state === 1) {
105
+            this.isShow = true
106
+          } else {
107
+            this.isShow = false
108
+
109
+          }
110
+        }).catch(e => {
111
+        })
112
+      }
113
+
114
+    }
115
+  }
116
+</script>
117
+
118
+<style rel="stylesheet/css" lang="scss" scoped>
119
+  .information {
120
+    border: 1px #dcdfe6 solid;
121
+    padding: 30px 20px 30px 20px;
122
+
123
+  .border {
124
+    border-bottom: 1px #dcdfe6 solid;
125
+    margin: 0px 0 20px 0;
126
+  }
127
+
128
+  }
129
+
130
+
131
+  .edit_separater {
132
+    border-top: 1px solid rgb(233, 233, 233);
133
+    margin-top: 15px;
134
+    margin-bottom: 15px;
135
+  }
136
+
137
+</style>
138
+
139
+<style>
140
+  .sign-and-weigh-box .sign-and-weigh-box-patients .cell {
141
+    font-size: 12px;
142
+  }
143
+
144
+  .sign-and-weigh-box .sign-and-weigh-box-patients .current-row > td {
145
+    background: #6fb5fa;
146
+  }
147
+
148
+  .count {
149
+    color: #bd2c00;
150
+
151
+  }
152
+
153
+</style>

+ 55 - 0
src/xt_pages/upload/data_upload.vue 查看文件

@@ -0,0 +1,55 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs='crumbs'></bread-crumb>
5
+    </div>
6
+    <div class="app-container">
7
+      <div class="service-box">
8
+        <el-tabs v-model="activeName">
9
+          <el-tab-pane label="国家质控平台" name="first">
10
+            <data-country></data-country>
11
+          </el-tab-pane>
12
+          <el-tab-pane label="省级质控平台">
13
+            <data-province></data-province>
14
+          </el-tab-pane>
15
+          <el-tab-pane label="市级质控平台">
16
+            <data-city></data-city>
17
+          </el-tab-pane>
18
+        </el-tabs>
19
+      </div>
20
+    </div>
21
+  </div>
22
+</template>
23
+
24
+
25
+<script>
26
+  import BreadCrumb from '@/xt_pages/components/bread-crumb'
27
+  import DataCountry from './data/DataCountry'
28
+  import DataProvince from './data/DataProvince'
29
+  import DataCity from './data/DataCity'
30
+
31
+
32
+
33
+  export default {
34
+    name: 'data_upload',
35
+    components: {
36
+      DataCity,
37
+      DataProvince,
38
+      DataCountry,
39
+      BreadCrumb
40
+    },
41
+    data(){
42
+      return{
43
+        crumbs: [
44
+          { path: false, name: '质控上报' },
45
+          { path: '/upload/data', name: '一键上报' }
46
+        ],
47
+        activeName: 'first',
48
+      }
49
+    }
50
+  }
51
+</script>
52
+
53
+<style scoped>
54
+
55
+</style>

+ 54 - 0
src/xt_pages/upload/export.vue 查看文件

@@ -0,0 +1,54 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs='crumbs'></bread-crumb>
5
+    </div>
6
+    <div class="app-container">
7
+      <div class="service-box">
8
+        <el-tabs v-model="activeName">
9
+          <el-tab-pane label="国家质控平台" name="first">
10
+            <export-country></export-country>
11
+          </el-tab-pane>
12
+          <el-tab-pane label="省级质控平台">
13
+            <export-province></export-province>
14
+          </el-tab-pane>
15
+          <el-tab-pane label="市级质控平台">
16
+            <export-city></export-city>
17
+          </el-tab-pane>
18
+        </el-tabs>
19
+      </div>
20
+    </div>
21
+  </div>
22
+</template>
23
+
24
+
25
+<script>
26
+  import BreadCrumb from '@/xt_pages/components/bread-crumb'
27
+  import ExportCity from './export/ExportCity'
28
+  import ExportCountry from './export/ExportCountry'
29
+  import ExportProvince from './export/ExportProvince'
30
+
31
+
32
+  export default {
33
+    name: 'export',
34
+    components: {
35
+      ExportProvince,
36
+      ExportCountry,
37
+      ExportCity,
38
+      BreadCrumb
39
+    },
40
+    data(){
41
+      return{
42
+        crumbs: [
43
+          { path: false, name: '质控上报' },
44
+          { path: '/upload/export', name: '一键导出' }
45
+        ],
46
+        activeName: 'first',
47
+      }
48
+    }
49
+  }
50
+</script>
51
+
52
+<style scoped>
53
+
54
+</style>

+ 80 - 0
src/xt_pages/upload/export/ExportCity.vue 查看文件

@@ -0,0 +1,80 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="cell clearfix">
4
+      <label class="title"><span class="name">导出时间</span> : </label>
5
+      <el-date-picker size="small" v-model="start_time" prefix-icon="el-icon-date" @change="changeTime"
6
+                      :editable="false" style="width: 196px;" type="date" placeholder="选择日期时间" align="right"
7
+                      format="yyyy-MM-dd" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker>
8
+      <span class="cellLine"> - </span>
9
+      <el-date-picker size="small" v-model="end_time" prefix-icon="el-icon-date" @change="changeTime"
10
+                      :editable="false" style="width: 196px;" type="date" placeholder="选择日期时间" align="right"
11
+                      format="yyyy-MM-dd" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker>
12
+    </div>
13
+    <div class="cell clearfix">
14
+      <el-row>
15
+        <el-col :span="4">
16
+          <el-button type="primary">机构信息导出</el-button>
17
+        </el-col>
18
+        <el-col :span="4" style="margin-left: 20px">
19
+          <el-button type="primary">病人信息导出</el-button>
20
+
21
+        </el-col>
22
+        <el-col :span="4" style="margin-left: 20px">
23
+          <el-button type="primary">检验检查导出</el-button>
24
+
25
+        </el-col>
26
+        <el-col :span="4" style="margin-left: 20px">
27
+          <el-button type="primary">设备信息导出</el-button>
28
+        </el-col>
29
+
30
+        <el-col :span="4" style="margin-left: 20px">
31
+          <el-button type="primary">血透信息导出</el-button>
32
+        </el-col>
33
+      </el-row>
34
+    </div>
35
+
36
+    <div class="cell clearfix">
37
+      <el-row>
38
+        <el-col :span="4" >
39
+          <el-button type="primary" >异常信息导出</el-button>
40
+        </el-col>
41
+        <el-col :span="4" style="margin-left: 20px">
42
+          <el-button type="primary" >消毒信息导出</el-button>
43
+
44
+        </el-col>
45
+        <el-col :span="4" style="margin-left: 20px">
46
+          <el-button type="primary" >迁出信息导出</el-button>
47
+
48
+        </el-col>
49
+        <el-col :span="4" style="margin-left: 20px">
50
+          <el-button type="primary" >全部信息导出</el-button>
51
+        </el-col>
52
+
53
+        <el-col :span="4" style="margin-left: 20px">
54
+          <el-button type="primary">一键信息导出</el-button>
55
+        </el-col>
56
+      </el-row>
57
+    </div>
58
+
59
+
60
+  </div>
61
+
62
+</template>
63
+
64
+<script>
65
+  export default {
66
+    name: 'ExportCity',
67
+    data() {
68
+      return {
69
+        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
70
+        start_time: '',
71
+        end_time: ''
72
+
73
+      }
74
+    }
75
+  }
76
+</script>
77
+
78
+<style scoped>
79
+
80
+</style>

+ 80 - 0
src/xt_pages/upload/export/ExportCountry.vue 查看文件

@@ -0,0 +1,80 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="cell clearfix">
4
+      <label class="title"><span class="name">导出时间</span> : </label>
5
+      <el-date-picker size="small" v-model="start_time" prefix-icon="el-icon-date" @change="changeTime"
6
+                      :editable="false" style="width: 196px;" type="date" placeholder="选择日期时间" align="right"
7
+                      format="yyyy-MM-dd" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker>
8
+      <span class="cellLine"> - </span>
9
+      <el-date-picker size="small" v-model="end_time" prefix-icon="el-icon-date" @change="changeTime"
10
+                      :editable="false" style="width: 196px;" type="date" placeholder="选择日期时间" align="right"
11
+                      format="yyyy-MM-dd" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker>
12
+    </div>
13
+    <div class="cell clearfix">
14
+      <el-row>
15
+        <el-col :span="4">
16
+          <el-button type="primary">机构信息导出</el-button>
17
+        </el-col>
18
+        <el-col :span="4" style="margin-left: 20px">
19
+          <el-button type="primary">病人信息导出</el-button>
20
+
21
+        </el-col>
22
+        <el-col :span="4" style="margin-left: 20px">
23
+          <el-button type="primary">检验检查导出</el-button>
24
+
25
+        </el-col>
26
+        <el-col :span="4" style="margin-left: 20px">
27
+          <el-button type="primary">设备信息导出</el-button>
28
+        </el-col>
29
+
30
+        <el-col :span="4" style="margin-left: 20px">
31
+          <el-button type="primary">血透信息导出</el-button>
32
+        </el-col>
33
+      </el-row>
34
+    </div>
35
+
36
+    <div class="cell clearfix">
37
+      <el-row>
38
+        <el-col :span="4" >
39
+          <el-button type="primary" >异常信息导出</el-button>
40
+        </el-col>
41
+        <el-col :span="4" style="margin-left: 20px">
42
+          <el-button type="primary" >消毒信息导出</el-button>
43
+
44
+        </el-col>
45
+        <el-col :span="4" style="margin-left: 20px">
46
+          <el-button type="primary" >迁出信息导出</el-button>
47
+
48
+        </el-col>
49
+        <el-col :span="4" style="margin-left: 20px">
50
+          <el-button type="primary" >全部信息导出</el-button>
51
+        </el-col>
52
+
53
+        <el-col :span="4" style="margin-left: 20px">
54
+          <el-button type="primary">一键信息导出</el-button>
55
+        </el-col>
56
+      </el-row>
57
+    </div>
58
+
59
+
60
+  </div>
61
+
62
+</template>
63
+
64
+<script>
65
+  export default {
66
+    name: 'ExportCountry',
67
+    data() {
68
+      return {
69
+        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
70
+        start_time: '',
71
+        end_time: ''
72
+
73
+      }
74
+    }
75
+  }
76
+</script>
77
+
78
+<style scoped>
79
+
80
+</style>

+ 80 - 0
src/xt_pages/upload/export/ExportProvince.vue 查看文件

@@ -0,0 +1,80 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="cell clearfix">
4
+      <label class="title"><span class="name">导出时间</span> : </label>
5
+      <el-date-picker size="small" v-model="start_time" prefix-icon="el-icon-date" @change="changeTime"
6
+                      :editable="false" style="width: 196px;" type="date" placeholder="选择日期时间" align="right"
7
+                      format="yyyy-MM-dd" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker>
8
+      <span class="cellLine"> - </span>
9
+      <el-date-picker size="small" v-model="end_time" prefix-icon="el-icon-date" @change="changeTime"
10
+                      :editable="false" style="width: 196px;" type="date" placeholder="选择日期时间" align="right"
11
+                      format="yyyy-MM-dd" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker>
12
+    </div>
13
+    <div class="cell clearfix">
14
+      <el-row>
15
+        <el-col :span="4">
16
+          <el-button type="primary">机构信息导出</el-button>
17
+        </el-col>
18
+        <el-col :span="4" style="margin-left: 20px">
19
+          <el-button type="primary">病人信息导出</el-button>
20
+
21
+        </el-col>
22
+        <el-col :span="4" style="margin-left: 20px">
23
+          <el-button type="primary">检验检查导出</el-button>
24
+
25
+        </el-col>
26
+        <el-col :span="4" style="margin-left: 20px">
27
+          <el-button type="primary">设备信息导出</el-button>
28
+        </el-col>
29
+
30
+        <el-col :span="4" style="margin-left: 20px">
31
+          <el-button type="primary">血透信息导出</el-button>
32
+        </el-col>
33
+      </el-row>
34
+    </div>
35
+
36
+    <div class="cell clearfix">
37
+      <el-row>
38
+        <el-col :span="4" >
39
+          <el-button type="primary" >异常信息导出</el-button>
40
+        </el-col>
41
+        <el-col :span="4" style="margin-left: 20px">
42
+          <el-button type="primary" >消毒信息导出</el-button>
43
+
44
+        </el-col>
45
+        <el-col :span="4" style="margin-left: 20px">
46
+          <el-button type="primary" >迁出信息导出</el-button>
47
+
48
+        </el-col>
49
+        <el-col :span="4" style="margin-left: 20px">
50
+          <el-button type="primary" >全部信息导出</el-button>
51
+        </el-col>
52
+
53
+        <el-col :span="4" style="margin-left: 20px">
54
+          <el-button type="primary">一键信息导出</el-button>
55
+        </el-col>
56
+      </el-row>
57
+    </div>
58
+
59
+
60
+  </div>
61
+
62
+</template>
63
+
64
+<script>
65
+  export default {
66
+    name: 'ExportProvince',
67
+    data() {
68
+      return {
69
+        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
70
+        start_time: '',
71
+        end_time: ''
72
+
73
+      }
74
+    }
75
+  }
76
+</script>
77
+
78
+<style scoped>
79
+
80
+</style>

+ 153 - 0
src/xt_pages/upload/fast/FastCity.vue 查看文件

@@ -0,0 +1,153 @@
1
+<template>
2
+  <div class="patient-container">
3
+    <el-dialog
4
+      title="提示"
5
+      :visible.sync="dialogVisible"
6
+      width="40%"
7
+      >
8
+      <div style="text-align: center">
9
+        <p>您选择的区域酷医云暂未对接,请联系酷医云客服,我们将免费为您实现对接</p>
10
+        <img style="width: 150px;height: 150px" src="../../../assets/home/wechat_qrcode.png"/>
11
+        <p>服务热线</p>
12
+        <p style="font-size: 16px">0755-86526342</p>
13
+      </div>
14
+
15
+      <span slot="footer" class="dialog-footer">
16
+    <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
17
+  </span>
18
+    </el-dialog>
19
+    <div class="cell clearfix">
20
+      <el-form :model="form"  ref="ruleForm" label-width="100px" class="demo-ruleForm" style="text-align: center">
21
+        <el-form-item label="地区">
22
+          <el-select v-model="form.province" clearable filterable placeholder="请选择" @change="changeProvince">
23
+            <el-option
24
+              v-for="item in provinces"
25
+              :key="item.id"
26
+              :label="item.name"
27
+              :value="item.id">
28
+            </el-option>
29
+          </el-select>
30
+          <el-select v-model="form.city"  clearable filterable placeholder="请选择" @change="changeCity">
31
+            <el-option
32
+              v-for="item in citys"
33
+              :key="item.id"
34
+              :label="item.name"
35
+              :value="item.id">
36
+            </el-option>
37
+          </el-select>
38
+        </el-form-item>
39
+      </el-form>
40
+
41
+    </div>
42
+
43
+  </div>
44
+
45
+</template>
46
+
47
+
48
+<script>
49
+  import {GetDistrictsByUpid} from '@/api/district';
50
+  import {getIsDocking} from '@/api/config';
51
+
52
+  export default {
53
+    name: 'FastCity',
54
+    data() {
55
+      return {
56
+
57
+        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
58
+        start_time: '',
59
+        end_time: '',
60
+        dialogVisible:false,
61
+        provinces:[],
62
+        citys:[],
63
+        form: {
64
+          province:1,
65
+          city:'',
66
+        }
67
+
68
+      }
69
+    },created(){
70
+      this.getDistricts()
71
+      var province = sessionStorage.getItem('province_two')
72
+      var city = sessionStorage.getItem('city')
73
+      console.log(province)
74
+      console.log(city)
75
+
76
+      if (province == null) {
77
+        this.form.province = ''
78
+      } else {
79
+        this.form.province = parseInt(province)
80
+      }
81
+      if (city == null) {
82
+        this.form.city = ''
83
+      } else {
84
+        this.form.city = parseInt(city)
85
+      }
86
+
87
+    },methods:{
88
+      getDistricts:function() {
89
+        GetDistrictsByUpid({id:0}).then(response=>{
90
+          var res = response.data;
91
+          if(res.state===1) {
92
+            this.provinces = res.data.citys
93
+          }
94
+        }).catch(e=>{
95
+
96
+        })
97
+
98
+      },changeProvince(id) {
99
+        this.citys = [];
100
+        var upid = parseInt(id);
101
+        if (isNaN(upid) || upid<=0) {
102
+          return false;
103
+        }
104
+        sessionStorage.setItem('province_two', id)
105
+
106
+        GetDistrictsByUpid({id:upid}).then(response=>{
107
+          var res = response.data;
108
+          if(res.state===1) {
109
+            this.citys = res.data.citys
110
+          }else{
111
+            this.$message.error(res.msg)
112
+          }
113
+        }).catch(e=>{
114
+
115
+        })
116
+      }, changeCity(id) {
117
+        getIsDocking({config_type: 3, province: this.form.province, city:id}).then(response=>{
118
+          var res = response.data;
119
+          if(res.state==1) {
120
+            if (res.data.is_docking == 2){
121
+              this.$message.error('该地区尚未对接,请联系客服')
122
+              this.form.province = '';
123
+              this.form.city = '';
124
+              this.dialogVisible = true
125
+
126
+            }else{
127
+              sessionStorage.setItem('city', id)
128
+
129
+
130
+              this.form.city = id;
131
+              this.dialogVisible = false
132
+
133
+            }
134
+          }else{
135
+            this.$message.error(res.msg)
136
+
137
+          }
138
+        }).catch(e=>{
139
+
140
+        })
141
+
142
+      }
143
+
144
+
145
+
146
+    }
147
+  }
148
+</script>
149
+
150
+
151
+<style scoped>
152
+
153
+</style>

+ 63 - 0
src/xt_pages/upload/fast/FastCountry.vue 查看文件

@@ -0,0 +1,63 @@
1
+<template>
2
+  <div class="patient-container">
3
+    <fast-patients-sidebar :id="patientID" v-on:patient="patientInfoClick()"  v-on:inspection="inspectionClick()"></fast-patients-sidebar>
4
+    <fast-upload-detail v-if="isShow == 1"  :id="patientID"  :is-edit='true' :class='panelClass'></fast-upload-detail>
5
+    <fast-upload-inspectiton-detail v-if="isShow == 2"  :id="patientID"  :is-edit='true' :class='panelClass'></fast-upload-inspectiton-detail>
6
+  </div>
7
+</template>
8
+
9
+<script>
10
+
11
+  import FastUploadDetail from './FastUploadDetail'
12
+  import { fetchAllList } from "@/api/patient";
13
+  import FastPatientsSidebar from './FastPatientsSidebar'
14
+  import FastUploadInspectitonDetail from './FastUploadInspectitonDetail'
15
+
16
+  export default {
17
+    name: 'FastPatientsDetail',
18
+    components: { FastUploadInspectitonDetail, FastPatientsSidebar,  FastUploadDetail },
19
+    data() {
20
+      return {
21
+        patientID: 1,
22
+        panelClass: 'patient-app-container',
23
+        patientInfo: {
24
+          id: 0
25
+        },
26
+        isShow: 1
27
+      }
28
+    },
29
+    created() {
30
+      const id = this.$route.query && this.$route.query.id
31
+      this.patientID = parseInt(id)
32
+
33
+      if (isNaN(this.patientID) || this.patientID <= 0) {
34
+        this.getList(1)
35
+      }else{
36
+
37
+        this.getList(2)
38
+      }
39
+    },methods:{
40
+      getList(type) {
41
+        fetchAllList().then(response => {
42
+          if (response.data.state == 1) {
43
+            this.patientsList = response.data.data.patients;
44
+            if (type == 1){
45
+              this.patientID =  this.patientsList[0].id
46
+            }else{
47
+              this.patientID = this.$route.query.id
48
+            }
49
+          }
50
+        });
51
+      },patientInfoClick:function() {
52
+        this.isShow = 1
53
+
54
+
55
+      },inspectionClick:function() {
56
+        this.isShow = 2
57
+      }
58
+
59
+    }
60
+
61
+  }
62
+</script>
63
+

+ 54 - 0
src/xt_pages/upload/fast/FastInspectionDetail.vue 查看文件

@@ -0,0 +1,54 @@
1
+<template>
2
+  <div class="patient-container">
3
+    <fast-inspection-sidebar :id="patientID"></fast-inspection-sidebar>
4
+    <fast-upload-inspectiton-detail  :id="patientID"  :class='panelClass'></fast-upload-inspectiton-detail>
5
+  </div>
6
+</template>
7
+
8
+<script>
9
+
10
+  import { fetchAllList } from "@/api/patient";
11
+  import FastInspectionSidebar from './FastInspectionSidebar'
12
+  import FastUploadInspectitonDetail from './FastUploadInspectitonDetail'
13
+
14
+  export default {
15
+    name: 'FastInspectionDetail',
16
+    components: { FastUploadInspectitonDetail, FastInspectionSidebar },
17
+    data() {
18
+      return {
19
+        patientID: 1,
20
+        panelClass: 'patient-app-container',
21
+        patientInfo: {
22
+          id: 0
23
+        }
24
+      }
25
+    },
26
+    created() {
27
+      const id = this.$route.query && this.$route.query.id
28
+      this.patientID = parseInt(id)
29
+
30
+      if (isNaN(this.patientID) || this.patientID <= 0) {
31
+        this.getList(1)
32
+      }else{
33
+
34
+        this.getList(2)
35
+      }
36
+    },methods:{
37
+      getList(type) {
38
+        fetchAllList().then(response => {
39
+          if (response.data.state == 1) {
40
+            this.patientsList = response.data.data.patients;
41
+            if (type == 1){
42
+              this.patientID =  this.patientsList[0].id
43
+            }else{
44
+              this.patientID = this.$route.query.id
45
+            }
46
+          }
47
+        });
48
+      },
49
+
50
+    }
51
+
52
+  }
53
+</script>
54
+

+ 160 - 0
src/xt_pages/upload/fast/FastInspectionSidebar.vue 查看文件

@@ -0,0 +1,160 @@
1
+<template>
2
+  <div>
3
+    <div class="patient-menu">
4
+      <el-autocomplete
5
+        style="margin:16px 5px"
6
+        popper-class="my-autocomplete"
7
+        v-model="value"
8
+        :fetch-suggestions="querySearchAsync"
9
+        :trigger-on-focus="false"
10
+        placeholder="病人名字或者透析号"
11
+        @select="handleSelect"
12
+      >
13
+        <i class="el-icon-search el-input__icon" slot="suffix" > </i>
14
+        <template slot-scope="{ item }">
15
+          <div class="name">{{ item.name }}</div>
16
+        </template>
17
+      </el-autocomplete>
18
+      <el-select v-model="selectID" style="margin:0 5px 0px 5px;text-align: center;" @change="changePatient" placeholder="请选择">
19
+        <el-option
20
+          v-for="item in patientsList"
21
+          :key="item.id"
22
+          :label="item.name"
23
+          :value="item.id">
24
+        </el-option>
25
+      </el-select>
26
+    </div>
27
+
28
+  </div>
29
+
30
+</template>
31
+<script>
32
+  import { fetchAllList,PostSearch } from "@/api/patient";
33
+  import { jsGetAge, uParseTime } from "@/utils/tools";
34
+
35
+  export default {
36
+    name: "FastInspectionSidebar",
37
+    props: {
38
+      id: 0,
39
+      defaultActive: {
40
+        type: String,
41
+        default: "1-1"
42
+      },
43
+    },
44
+    data() {
45
+      return {
46
+        value: "",
47
+        searchArray: [],
48
+        patientsList: null,
49
+        thedefaultActive: 1,
50
+        currentPatient: {},
51
+        selectID: 0,
52
+        keyword: "",
53
+        treeKey: "",
54
+
55
+      };
56
+    },
57
+    methods: {
58
+      getList() {
59
+        fetchAllList().then(response => {
60
+          if (response.data.state == 1) {
61
+            this.patientsList = response.data.data.patients;
62
+            var len = this.patientsList.length;
63
+            if (len > 0) {
64
+              for (let index = 0; index < len; index++) {
65
+                if (this.patientsList[index].id == this.id) {
66
+                  this.currentPatient = this.patientsList[index];
67
+
68
+                  this.selectID = this.patientsList[index].id;
69
+                  this.$emit("tran-patient", this.currentPatient);
70
+                  break;
71
+                }
72
+              }
73
+            }
74
+          }
75
+        });
76
+      },
77
+      changePatient(value) {
78
+        this.$router.push("/upload/fast?id=" + value);
79
+      },
80
+      tranAge(birthday) {
81
+        var birth = uParseTime(birthday, "{y}-{m}-{d}");
82
+        return jsGetAge(birth, "-");
83
+      },
84
+      tranSex(gender) {
85
+        var sex = "未知";
86
+        switch (gender) {
87
+          case 1:
88
+            sex = "男";
89
+            break;
90
+          case 2:
91
+            sex = "女";
92
+            break;
93
+          default:
94
+            break;
95
+        }
96
+        return sex;
97
+      },
98
+      querySearchAsync(keyword, cb) {
99
+        let key = "";
100
+        if (keyword != undefined) {
101
+          key = keyword;
102
+        }
103
+        let searchArray = [];
104
+        PostSearch(key).then(response => {
105
+          if (response.data.state == 1) {
106
+            searchArray = response.data.data.patient;
107
+            cb(searchArray);
108
+          } else {
109
+            this.$message.error(response.data.msg);
110
+            cb([]);
111
+          }
112
+        });
113
+      },
114
+      handleSelect(val) {
115
+        this.$router.push("/upload/fast?id=" + val.id);
116
+      }
117
+    },
118
+    created() {
119
+      this.getList()
120
+    }
121
+  };
122
+</script>
123
+
124
+<style>
125
+  .patient-menu .el-tree-node__content {
126
+    font-size: 14px;
127
+    height: 40px;
128
+    font-weight: 400;
129
+  }
130
+  .patient-menu .el-tree-node__label:hover {
131
+    color:#409eff;
132
+  }
133
+  .patient-menu .el-tree-node:focus > .el-tree-node__content {
134
+    color:#409eff;
135
+  }
136
+  .patient-menu .el-tree-node .el-tree-node.is-current > .el-tree-node__content {
137
+    color:#409eff;
138
+  }
139
+  .patient-menu .el-tree {
140
+    background: #f6f8f9;
141
+  }
142
+  .patient-menu {
143
+    -webkit-transition: width 0.28s;
144
+    transition: width 0.28s;
145
+    width: 180px !important;
146
+    height: 100%;
147
+    position: relative;
148
+    font-size: 0px;
149
+    top: 0;
150
+    float: left;
151
+    bottom: 0;
152
+    left: 0;
153
+    /* z-index: 99; */
154
+    overflow: hidden;
155
+  }
156
+
157
+  .patient-center-menu .el-icon-arrow-down:before {
158
+    content: "";
159
+  }
160
+</style>

+ 54 - 0
src/xt_pages/upload/fast/FastPatientsDetail.vue 查看文件

@@ -0,0 +1,54 @@
1
+<template>
2
+  <div class="patient-container">
3
+    <fast-patients-sidebar :id="patientID"></fast-patients-sidebar>
4
+    <fast-upload-detail  :id="patientID"  :is-edit='true' :class='panelClass'></fast-upload-detail>
5
+  </div>
6
+</template>
7
+
8
+<script>
9
+
10
+  import FastUploadDetail from './FastUploadDetail'
11
+  import { fetchAllList } from "@/api/patient";
12
+  import FastPatientsSidebar from './FastPatientsSidebar'
13
+
14
+  export default {
15
+    name: 'FastPatientsDetail',
16
+    components: { FastPatientsSidebar,  FastUploadDetail },
17
+    data() {
18
+      return {
19
+        patientID: 1,
20
+        panelClass: 'patient-app-container',
21
+        patientInfo: {
22
+          id: 0
23
+        }
24
+      }
25
+    },
26
+    created() {
27
+      const id = this.$route.query && this.$route.query.id
28
+      this.patientID = parseInt(id)
29
+
30
+      if (isNaN(this.patientID) || this.patientID <= 0) {
31
+        this.getList(1)
32
+      }else{
33
+
34
+        this.getList(2)
35
+      }
36
+    },methods:{
37
+      getList(type) {
38
+        fetchAllList().then(response => {
39
+          if (response.data.state == 1) {
40
+            this.patientsList = response.data.data.patients;
41
+            if (type == 1){
42
+              this.patientID =  this.patientsList[0].id
43
+            }else{
44
+              this.patientID = this.$route.query.id
45
+            }
46
+          }
47
+        });
48
+      },
49
+
50
+    }
51
+
52
+  }
53
+</script>
54
+

+ 196 - 0
src/xt_pages/upload/fast/FastPatientsSidebar.vue 查看文件

@@ -0,0 +1,196 @@
1
+<template>
2
+  <div>
3
+    <div class="patient-menu">
4
+      <el-autocomplete
5
+        style="margin:16px 5px"
6
+        popper-class="my-autocomplete"
7
+        v-model="value"
8
+        :fetch-suggestions="querySearchAsync"
9
+        :trigger-on-focus="false"
10
+        placeholder="病人名字或者透析号"
11
+        @select="handleSelect"
12
+      >
13
+        <i class="el-icon-search el-input__icon" slot="suffix" > </i>
14
+        <template slot-scope="{ item }">
15
+          <div class="name">{{ item.name }}</div>
16
+        </template>
17
+      </el-autocomplete>
18
+      <el-select v-model="selectID" style="margin:0 5px 0px 5px;text-align: center;" @change="changePatient" placeholder="请选择">
19
+        <el-option
20
+          v-for="item in patientsList"
21
+          :key="item.id"
22
+          :label="item.name"
23
+          :value="item.id">
24
+        </el-option>
25
+      </el-select>
26
+      <el-tree
27
+        :data="treeData"
28
+        accordion
29
+        node-key="name"
30
+        :key="treeKey"
31
+        :current-node-key="treeKey"
32
+        :default-expanded-keys="[defaultActive]"
33
+        @node-click="handleNodeClick"
34
+      >
35
+      </el-tree>
36
+    </div>
37
+  </div>
38
+
39
+</template>
40
+<script>
41
+  import { fetchAllList,PostSearch } from "@/api/patient";
42
+  import { jsGetAge, uParseTime } from "@/utils/tools";
43
+
44
+  export default {
45
+    name: "FastPatientsSidebar",
46
+    props: {
47
+      id: 0,
48
+      defaultActive: {
49
+        type: String,
50
+        default: "1-1"
51
+      },
52
+    },
53
+    data() {
54
+      return {
55
+        value: "",
56
+        searchArray: [],
57
+        patientsList: null,
58
+        thedefaultActive: 1,
59
+        currentPatient: {},
60
+        selectID: 0,
61
+        keyword: "",
62
+        treeKey: "",
63
+        treeData: [
64
+          {
65
+            name: "1",
66
+            label: "质控数据",
67
+            children: [
68
+              {
69
+                name: "1-1",
70
+                label: "基本信息"
71
+              },
72
+              {
73
+                name: "1-2",
74
+                label: "检验检查"
75
+              },
76
+            ]
77
+          },
78
+
79
+        ]
80
+
81
+      };
82
+    },
83
+    methods: {
84
+      handleNodeClick(data) {
85
+        var name = data.name;
86
+        if (name == "1-1") {
87
+          this.$emit("patient")
88
+        } else if (name == "1-2") {
89
+          this.$emit("inspection")
90
+
91
+        }
92
+      },
93
+
94
+      getList() {
95
+        fetchAllList().then(response => {
96
+          if (response.data.state == 1) {
97
+            this.patientsList = response.data.data.patients;
98
+            var len = this.patientsList.length;
99
+            if (len > 0) {
100
+              for (let index = 0; index < len; index++) {
101
+                if (this.patientsList[index].id == this.id) {
102
+                  this.currentPatient = this.patientsList[index];
103
+
104
+                  this.selectID = this.patientsList[index].id;
105
+                  this.$emit("tran-patient", this.currentPatient);
106
+                  break;
107
+                }
108
+              }
109
+            }
110
+          }
111
+        });
112
+      },
113
+      changePatient(value) {
114
+        this.$router.push("/upload/fast?id=" + value);
115
+      },
116
+      tranAge(birthday) {
117
+        var birth = uParseTime(birthday, "{y}-{m}-{d}");
118
+        return jsGetAge(birth, "-");
119
+      },
120
+      tranSex(gender) {
121
+        var sex = "未知";
122
+        switch (gender) {
123
+          case 1:
124
+            sex = "男";
125
+            break;
126
+          case 2:
127
+            sex = "女";
128
+            break;
129
+          default:
130
+            break;
131
+        }
132
+        return sex;
133
+      },
134
+      querySearchAsync(keyword, cb) {
135
+        let key = "";
136
+        if (keyword != undefined) {
137
+          key = keyword;
138
+        }
139
+        let searchArray = [];
140
+        PostSearch(key).then(response => {
141
+          if (response.data.state == 1) {
142
+            searchArray = response.data.data.patient;
143
+            cb(searchArray);
144
+          } else {
145
+            this.$message.error(response.data.msg);
146
+            cb([]);
147
+          }
148
+        });
149
+      },
150
+      handleSelect(val) {
151
+        this.$router.push("/upload/fast?id=" + val.id);
152
+      }
153
+    },
154
+    created() {
155
+      this.getList()
156
+    }
157
+  };
158
+</script>
159
+
160
+<style>
161
+  .patient-menu .el-tree-node__content {
162
+    font-size: 14px;
163
+    height: 40px;
164
+    font-weight: 400;
165
+  }
166
+  .patient-menu .el-tree-node__label:hover {
167
+    color:#409eff;
168
+  }
169
+  .patient-menu .el-tree-node:focus > .el-tree-node__content {
170
+    color:#409eff;
171
+  }
172
+  .patient-menu .el-tree-node .el-tree-node.is-current > .el-tree-node__content {
173
+    color:#409eff;
174
+  }
175
+  .patient-menu .el-tree {
176
+    background: #f6f8f9;
177
+  }
178
+  .patient-menu {
179
+    -webkit-transition: width 0.28s;
180
+    transition: width 0.28s;
181
+    width: 180px !important;
182
+    height: 100%;
183
+    position: relative;
184
+    font-size: 0px;
185
+    top: 0;
186
+    float: left;
187
+    bottom: 0;
188
+    left: 0;
189
+    /* z-index: 99; */
190
+    overflow: hidden;
191
+  }
192
+
193
+  .patient-center-menu .el-icon-arrow-down:before {
194
+    content: "";
195
+  }
196
+</style>

+ 113 - 0
src/xt_pages/upload/fast/FastProvince.vue 查看文件

@@ -0,0 +1,113 @@
1
+<template>
2
+  <div class="patient-container">
3
+    <el-dialog
4
+      title="提示"
5
+      :visible.sync="dialogVisible"
6
+      width="40%"
7
+    >
8
+      <div style="text-align: center">
9
+        <p>您选择的区域酷医云暂未对接,请联系酷医云客服,我们将免费为您实现对接</p>
10
+        <img style="width: 150px;height: 150px" src="../../../assets/home/wechat_qrcode.png"/>
11
+        <p>服务热线</p>
12
+        <p style="font-size: 16px">0755-86526342</p>
13
+      </div>
14
+
15
+
16
+      <span slot="footer" class="dialog-footer">
17
+    <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
18
+  </span>
19
+    </el-dialog>
20
+
21
+    <div class="cell clearfix">
22
+      <el-form :model="form" ref="ruleForm" label-width="100px" class="demo-ruleForm" style="text-align: center">
23
+        <el-form-item label="地区">
24
+          <el-select v-model="form.province" clearable filterable placeholder="请选择" @change="changeProvince">
25
+            <el-option
26
+              v-for="item in provinces"
27
+              :key="item.id"
28
+              :label="item.name"
29
+              :value="item.id">
30
+            </el-option>
31
+          </el-select>
32
+          <el-select v-model="form.city" disabled filterable placeholder="请选择" @change="changeCity">
33
+            <el-option
34
+              v-for="item in citys"
35
+              :key="item.id"
36
+              :label="item.name"
37
+              :value="item.id">
38
+            </el-option>
39
+          </el-select>
40
+        </el-form-item>
41
+      </el-form>
42
+    </div>
43
+
44
+  </div>
45
+</template>
46
+
47
+<script>
48
+  import { GetDistrictsByUpid } from '@/api/district'
49
+  import { getIsDocking } from '@/api/config'
50
+
51
+  export default {
52
+    name: 'FastProvince',
53
+    data() {
54
+      return {
55
+        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
56
+        start_time: '',
57
+        dialogVisible: false,
58
+        end_time: '',
59
+        provinces: [],
60
+        form: {
61
+          province: '',
62
+          city: ''
63
+        }
64
+
65
+      }
66
+    }, created() {
67
+      this.getDistricts()
68
+      var province = sessionStorage.getItem('province')
69
+      if (province == null) {
70
+        this.form.province = ''
71
+      } else {
72
+        this.form.province = parseInt(province)
73
+      }
74
+
75
+    }, methods: {
76
+      getDistricts: function() {
77
+        GetDistrictsByUpid({ id: 0 }).then(response => {
78
+          var res = response.data
79
+          if (res.state === 1) {
80
+            this.provinces = res.data.citys
81
+          }
82
+        }).catch(e => {
83
+
84
+        })
85
+
86
+      }, changeProvince(id) {
87
+        getIsDocking({ config_type: 2, province: id, city: 0 }).then(response => {
88
+          var res = response.data
89
+          if (res.state == 1) {
90
+            if (res.data.is_docking == 2) {
91
+              this.$message.error('该地区尚未对接,请联系客服')
92
+              this.dialogVisible = true
93
+              this.form.province = ''
94
+
95
+            } else {
96
+              this.form.province = id
97
+              this.dialogVisible = false
98
+              sessionStorage.setItem('province', id)
99
+            }
100
+          } else {
101
+            this.$message.error(res.msg)
102
+          }
103
+        }).catch(e => {
104
+        })
105
+      }
106
+
107
+    }
108
+  }
109
+</script>
110
+
111
+<style scoped>
112
+
113
+</style>

+ 975 - 0
src/xt_pages/upload/fast/FastUploadDetail.vue 查看文件

@@ -0,0 +1,975 @@
1
+<template>
2
+  <div class="app-container ">
3
+    <el-form ref="form"  :model="form" label-width="134px" class="clearfix" id="patient-info" >
4
+
5
+    <div class="dataTitle">基本资料</div>
6
+      <el-row >
7
+        <el-col :span="20" >
8
+          <el-row :gutter="10">
9
+
10
+
11
+            <el-col :span="8">
12
+              <el-form-item label="登记人员 : ">
13
+                <el-input style="width: 120px" v-model="form.registrars" disabled id="registrars"></el-input>
14
+                <el-button type="primary" size="mini" v-clipboard:copy="form.registrars"
15
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
16
+              </el-form-item>
17
+            </el-col>
18
+
19
+            <el-col :span="8">
20
+              <el-form-item label="创建日期 : ">
21
+                <el-date-picker style="width: 120px" v-model="form.created_time" type="date" disabled placeholder="选择日期" :suffix-icon="'el-icon-menu'" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker>
22
+              </el-form-item>
23
+            </el-col>
24
+
25
+            <el-col :span="8">
26
+              <el-form-item label="姓名 : "  class="is-required" >
27
+                <el-input style="width: 100px" v-model="form.name" disabled></el-input>
28
+                <el-button type="primary" size="mini"  v-clipboard:copy="form.name"
29
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
30
+              </el-form-item>
31
+
32
+            </el-col>
33
+            <el-col :span="8" style="height:59px;">
34
+              <el-form-item label="性别 : " class="is-required"  >
35
+                <el-radio-group v-model="form.gender">
36
+                  <el-radio v-for="item in sexOptions" :key="item.value" :label="item.value" :value="item.value" disabled>{{item.label}}</el-radio>
37
+                </el-radio-group>
38
+              </el-form-item>
39
+            </el-col>
40
+
41
+
42
+
43
+            <el-col :span="8">
44
+              <el-form-item label="身份证号 : "  class="is-required"  >
45
+                <el-input style="width: 150px"  v-model="form.idCardNo" disabled></el-input>
46
+                <el-button type="primary" size="mini" v-clipboard:copy="form.idCardNo"
47
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
48
+              </el-form-item>
49
+            </el-col>
50
+
51
+            <el-col :span="8">
52
+              <el-form-item label="民族 : " >
53
+                <el-input style="width: 100px;" v-model="form.nation" maxlength="30" disabled></el-input>
54
+                <el-button type="primary" size="mini" v-clipboard:copy="form.nation"
55
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
56
+
57
+              </el-form-item>
58
+            </el-col>
59
+
60
+            <el-col :span="8">
61
+              <el-form-item label="婚姻状况 : " >
62
+                <el-select v-model="form.maritalStatus"  placeholder="请选择婚姻状况" disabled>
63
+                  <el-option v-for="item in maritalOptions" :key="item.id" :label="item.name" :value="item.id"/>
64
+                </el-select>
65
+              </el-form-item>
66
+            </el-col>
67
+
68
+            <el-col :span="8">
69
+              <el-form-item label="职业 : "  prop="profession">
70
+                <el-select v-model="form.profession" disabled >
71
+                  <el-option v-for="item in professionOptions" :key="item.id" :label="item.name" :value="item.id"/>
72
+                </el-select>
73
+              </el-form-item>
74
+            </el-col>
75
+
76
+
77
+            <el-col :span="8"  style="height:59px;" >
78
+              <el-form-item label="年龄 : " class="is-required" >
79
+                <el-input style="width: 50px" v-model="form.age" disabled ></el-input>
80
+                <el-button type="primary" size="mini" v-clipboard:copy="form.age"
81
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
82
+              </el-form-item>
83
+            </el-col>
84
+
85
+
86
+            <el-col :span="8">
87
+              <el-form-item label="出生日期 : "  class="is-required"  >
88
+                <el-date-picker style="width: 150px" v-model="form.birth" type="date" disabled placeholder="选择日期" :suffix-icon="'el-icon-menu'" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker>
89
+
90
+              </el-form-item>
91
+            </el-col>
92
+
93
+
94
+            <el-col :span="8">
95
+              <el-form-item label="教育程度 : "  >
96
+                <el-select v-model="form.education" disabled >
97
+                  <el-option v-for="item in educationOptions" :key="item.id" :label="item.name" :value="item.id"/>
98
+                </el-select>
99
+              </el-form-item>
100
+            </el-col>
101
+
102
+
103
+            <el-col :span="8">
104
+              <el-form-item label="住院(门诊)号 : ">
105
+                <el-input  style="width: 150px"  v-model="form.admissionNumber" disabled></el-input>
106
+                <el-button type="primary" size="mini" v-clipboard:copy="form.admissionNumber"
107
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
108
+
109
+              </el-form-item>
110
+            </el-col>
111
+
112
+            <el-col :span="8">
113
+              <el-form-item label="透析号 : " class="is-required">
114
+                <el-input disabled v-model="form.dialysisNo" placeholder="填写或自动生成" style="width:110px;float:left;margin-right: 1%;" ></el-input>
115
+                <el-button type="primary" size="mini" v-clipboard:copy="form.dialysisNo"
116
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
117
+
118
+              </el-form-item>
119
+            </el-col>
120
+
121
+
122
+            <el-col :span="8">
123
+              <el-form-item label="籍贯 : " >
124
+                <el-input style="width: 150px" v-model="form.native_place" maxlength="30" disabled></el-input>
125
+                <el-button type="primary" size="mini" v-clipboard:copy="form.native_place"
126
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
127
+
128
+
129
+              </el-form-item>
130
+            </el-col>
131
+            <el-col :span="8">
132
+              <el-form-item label="家庭住址 : ">
133
+                <el-input style="width: 150px" v-model="form.homeAddress" disabled></el-input>
134
+                <el-button type="primary" size="mini"  v-clipboard:copy="form.homeAddress"
135
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
136
+
137
+              </el-form-item>
138
+            </el-col>
139
+
140
+            <el-col :span="8">
141
+              <el-form-item label="本人电话: " class="is-required" >
142
+                <el-input style="width: 150px" v-model="form.phone" maxlength="20" disabled></el-input>
143
+                <el-button type="primary" size="mini" v-clipboard:copy="form.phone"
144
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
145
+
146
+
147
+              </el-form-item>
148
+            </el-col>
149
+            <el-col :span="8">
150
+              <el-form-item label="家属电话: " prop="homeTelephone">
151
+                <el-input style="width: 150px" v-model="form.homeTelephone" maxlength="20" disabled></el-input>
152
+                <el-button type="primary" size="mini" v-clipboard:copy="form.homeTelephone"
153
+                           v-clipboard:success="onCopy" v-clipboard:error="onError">复制</el-button>
154
+
155
+              </el-form-item>
156
+            </el-col>
157
+
158
+            <el-col :span="8">
159
+              <el-form-item label="首次透析日期 : "  prop="firstDialysisDate">
160
+                <el-date-picker style="width: 150px" v-model="form.firstDialysisDate" type="date" disabled format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker>
161
+              </el-form-item>
162
+            </el-col>
163
+
164
+
165
+
166
+          </el-row>
167
+        </el-col>
168
+      </el-row>
169
+
170
+
171
+
172
+    </el-form>
173
+
174
+  </div>
175
+</template>
176
+
177
+<script>
178
+  import { getDataConfig } from '@/utils/data'
179
+  import { getToken } from '@/api/qiniu'
180
+  import { fetchAllList } from "@/api/patient";
181
+
182
+  import {
183
+    getFileExtension,
184
+    isCardNo,
185
+    jsGetAge,
186
+    isPositiveInteger,
187
+    dialysisAge,
188
+    uParseTime
189
+  } from '@/utils/tools'
190
+  import {
191
+    generateDialysisNo,
192
+    createPatient,
193
+    editPatient,
194
+    fetchPatient
195
+  } from '@/api/patient'
196
+  import { fetchAllDoctorAndNurse, fetchAllAdminUsers } from '@/api/doctor'
197
+  import { getZones } from '@/api/device/device'
198
+  import { parse } from 'path'
199
+  const defaultForm = {
200
+    avatar: '',
201
+    patientType: '',
202
+    dialysisNo: '',
203
+    admissionNumber: '',
204
+    source: '',
205
+    lapseto: '',
206
+    partition: '',
207
+    bed: '',
208
+    name: '',
209
+    gender: '',
210
+    nation: '',
211
+    native_place: '',
212
+    maritalStatus: '',
213
+    idCardNo: '',
214
+    birth: '',
215
+    age: '',
216
+    reimbursementWayID: '',
217
+    healthCareNo: '',
218
+    healthCareDueDate: '',
219
+    height: '',
220
+    blood: '',
221
+    rh: '',
222
+    healthCareDueAlertDate: '',
223
+    education: '',
224
+    profession: '',
225
+    phone: '',
226
+    homeTelephone: '',
227
+    homeAddress: '',
228
+    work: '',
229
+    receivingDate: '',
230
+    firstDialysisDate: '',
231
+    dialysisAge: '',
232
+    induction: '',
233
+    initial: '',
234
+    dialysisTotal: '',
235
+    contagions: [],
236
+    doctor: '',
237
+    nurse: '',
238
+    assessment: '',
239
+    diseases: [],
240
+    diagnose: '',
241
+    registrars: '',
242
+
243
+    patient_complains: '',
244
+    present_history: '',
245
+    past_history: '',
246
+    temperature: '',
247
+    pulse: '',
248
+    respiratory: '',
249
+    sbp: '',
250
+    dbp: '',
251
+    created_time:'',
252
+
253
+  }
254
+
255
+  export default {
256
+    name: 'FastUploadDetail',
257
+    components: { },
258
+    props: {
259
+      id: 0,
260
+    },
261
+
262
+    data() {
263
+      return {
264
+        generic_info_fold: true,
265
+        treat_info_fold: true,
266
+
267
+        orgname: '',
268
+        adminusername: '',
269
+        form: Object.assign({}, defaultForm),
270
+        formSubmit: true,
271
+        submitMethod: '',
272
+        uploadData: { token: '', key: '' },
273
+        dialogImageUrl: '',
274
+        qiniuDomain: 'https://images.shengws.com/',
275
+        dialogVisible: false,
276
+        typeOptions: null,
277
+        styleOptions: null,
278
+        sourceOptions: [{ value: 1, label: '门诊' }, { value: 2, label: '住院' }],
279
+        lapsetoOptions: [{ value: 1, label: '留治' }, { value: 2, label: '转出' }],
280
+        partitionOptions: [],
281
+        sexOptions: [{ value: 1, label: '男' }, { value: 2, label: '女' }],
282
+        isHospitalFirstDialysisOptions: [{ value: 1, label: '是' }, { value: 2, label: '否' }],
283
+        predialysisConditionOptions: [{ value: 1, label: '腹膜透析' }, { value: 2, label: '肾移植' }],
284
+        maritalOptions: null,
285
+        wayOptions: null,
286
+        educationOptions: null,
287
+        professionOptions: null,
288
+        inductionOptions: null,
289
+        doctorOptions: null,
290
+        nurseOptions: null,
291
+        adminUserOptions: [],
292
+        rhOptions: null,
293
+        checkDisease: null,
294
+        contagionList: null,
295
+        loading: null,
296
+        patientID: 0,
297
+        patientPrint: {},
298
+        print_time: '',
299
+
300
+      }
301
+    },
302
+    computed: {
303
+      generic_fold_icon: function() {
304
+        return this.generic_info_fold ? 'el-icon-arrow-down' : 'el-icon-arrow-up'
305
+      },
306
+      treat_fold_icon: function() {
307
+        return this.treat_info_fold ? 'el-icon-arrow-down' : 'el-icon-arrow-up'
308
+      }
309
+    },
310
+    created() {
311
+      this.styleOptions = this.$store.getters.patient_types
312
+      this.maritalOptions = getDataConfig('patient', 'marital_options')
313
+      this.wayOptions = getDataConfig('patient', 'reimbursement_ways')
314
+      this.typeOptions = this.$store.getters.blood_types
315
+      this.rhOptions = this.$store.getters.rh
316
+      this.educationOptions = getDataConfig('patient', 'education_types')
317
+      this.professionOptions = getDataConfig('patient', 'profession_options')
318
+      this.inductionOptions = this.$store.getters.induction_options
319
+      this.contagionList = this.$store.getters.contagions
320
+      this.checkDisease = this.$store.getters.disease
321
+
322
+      var xtuser = this.$store.getters.xt_user
323
+      this.orgname = xtuser.org.org_name
324
+      this.adminusername = xtuser.user.user_name
325
+
326
+      this.fetchAllAdminUsers()
327
+
328
+
329
+      const id = this.$route.query && this.$route.query.id
330
+      this.patientID = parseInt(id)
331
+
332
+
333
+      if (isNaN(this.patientID) || this.patientID <= 0) {
334
+        this.getList()
335
+      }
336
+      this.fetchPatient(id)
337
+      this.getZones()
338
+      var ptime = Math.round(new Date().getTime() / 1000)
339
+      // this.print_time = uParseTime(ptime, '{y}-{m}-{d} {h}:{i}');
340
+    },
341
+    methods: {
342
+      onCopy(){
343
+        this.$message.success('复制成功')
344
+
345
+      },onError(){
346
+        this.$message.success('复制失败,请重试')
347
+      },
348
+      getList() {
349
+        fetchAllList().then(response => {
350
+          if (response.data.state == 1) {
351
+            this.patientsList = response.data.data.patients;
352
+            this.fetchPatient(this.patientsList[0].id)
353
+
354
+          }
355
+        });
356
+      },
357
+      copy(val){
358
+
359
+
360
+
361
+      },
362
+      printThisInfo() {
363
+        var ptime = Math.round(new Date().getTime() / 1000)
364
+        this.print_time = uParseTime(ptime, '{y}年{m}月{d}日')
365
+
366
+        const style = '@media print { .print_main_content { background-color: white; width:960px; margin:0 auto; padding: 0 0 20px 0; } .print_main_content .order_title { text-align: center; font-size: 23px; line-height: 50px; font-weight: 500; } .print_main_content table { width: 100%; border: 1px solid; border-collapse: collapse; padding: 2px; } .print_main_content table tbody tr td { border: 1px solid; text-align: center; padding: 10px 8px; } .td_proj_title { font-size: 18px; line-height: 25px; font-weight: 500; } .td_proj_content { font-size: 18px; line-height: 25px; } .td_align_left { text-align: left; } .print_footnote_panel { font-size: 17px; line-height: 40px; } .print_footnote_panel .proj { display: inline-block; width: 49%; } .print_footnote_panel .proj .proj_title { font-weight: 500;} }'
367
+
368
+        setTimeout(() => {
369
+          printJS({
370
+            printable: 'print-info-box',
371
+            type: 'html',
372
+            style: style,
373
+            scanStyles: false
374
+          })
375
+        }, 1)
376
+      },
377
+      getZones() {
378
+        getZones().then(response => {
379
+          if (response.data.state === 1) {
380
+            this.partitionOptions = response.data.data.zones
381
+          }
382
+        })
383
+      },
384
+      fetchPatient(id) {
385
+        fetchPatient(id)
386
+          .then(response => {
387
+            console.log(response.data.data)
388
+            if (response.data.state === 1) {
389
+              this.$emit('tran-patient-info', response.data.data.patient)
390
+              var patietInfo = response.data.data.patient
391
+              this.form.avatar = patietInfo.avatar
392
+              this.form.name = patietInfo.name
393
+              this.form.alias = patietInfo.alias
394
+              this.form.lapseto = patietInfo.lapseto
395
+              this.form.idCardNo = patietInfo.id_card_no
396
+              this.form.dialysisNo = patietInfo.dialysis_no
397
+              this.form.gender = patietInfo.gender
398
+              if (patietInfo.gender === 1 || patietInfo.gender === 2) {
399
+                this.form.gender = patietInfo.gender
400
+              }
401
+              this.form.nation = patietInfo.nation
402
+              this.form.native_place = patietInfo.native_place
403
+              this.form.birth = uParseTime(patietInfo.birthday, '{y}-{m}-{d}')
404
+              this.form.height = patietInfo.height + ''
405
+              // this.form.age = jsGetAge(this.form.birth, "-");
406
+              if (patietInfo.marital_status > 0) {
407
+                this.form.maritalStatus = patietInfo.marital_status
408
+              }
409
+              this.form.children = patietInfo.children
410
+              this.form.admissionNumber = patietInfo.admission_number
411
+              if (patietInfo.reimbursement_way_id > 0) {
412
+                this.form.reimbursementWayID = patietInfo.reimbursement_way_id
413
+              }
414
+              this.form.healthCareNo = patietInfo.health_care_no
415
+              this.form.phone = patietInfo.phone
416
+              this.form.homeTelephone = patietInfo.home_telephone
417
+              this.form.relative_phone = patietInfo.relative_phone
418
+              this.form.relative_relations = patietInfo.relative_relations
419
+              this.form.homeAddress = patietInfo.home_address
420
+              this.form.work = patietInfo.work_unit
421
+              this.form.unit_address = patietInfo.unit_address
422
+              this.form.created_time = patietInfo.created_time
423
+
424
+              if (patietInfo.age == 0){
425
+                this.form.age = jsGetAge(this.form.birth, '-')
426
+              }else{
427
+                this.form.age = patietInfo.age
428
+              }
429
+
430
+              if (patietInfo.profession > 0) {
431
+                this.form.profession = patietInfo.profession
432
+              }
433
+              if (patietInfo.education_level > 0) {
434
+                this.form.education = patietInfo.education_level
435
+              }
436
+              if (patietInfo.source === 1 || patietInfo.source === 2) {
437
+                this.form.source = patietInfo.source
438
+              }
439
+              if (patietInfo.lapseto === 1 || patietInfo.lapseto === 2) {
440
+                this.form.lapseto = patietInfo.lapseto
441
+              }
442
+              if (patietInfo.is_hospital_first_dialysis === 1 || patietInfo.is_hospital_first_dialysis === 2) {
443
+                this.form.is_hospital_first_dialysis = patietInfo.is_hospital_first_dialysis
444
+              }
445
+              if (patietInfo.first_dialysis_date !== 0) {
446
+                this.form.firstDialysisDate = uParseTime(
447
+                  patietInfo.first_dialysis_date,
448
+                  '{y}-{m}-{d}'
449
+                )
450
+              }
451
+              this.form.first_dialysis_hospital = patietInfo.first_dialysis_hospital
452
+              if (patietInfo.predialysis_condition.length > 0) {
453
+                this.form.predialysis_condition = patietInfo.predialysis_condition.split(',')
454
+              }
455
+              this.form.pre_hospital_dialysis_frequency = patietInfo.pre_hospital_dialysis_frequency
456
+              this.form.pre_hospital_dialysis_times = patietInfo.pre_hospital_dialysis_times
457
+              if (patietInfo.hospital_first_dialysis_date !== 0) {
458
+                this.form.hospital_first_dialysis_date = uParseTime(
459
+                  patietInfo.hospital_first_dialysis_date,
460
+                  '{y}-{m}-{d}'
461
+                )
462
+              }
463
+              this.form.contagions = response.data.data.contagions
464
+              this.form.diseases = response.data.data.diseases
465
+              this.form.remark = patietInfo.remark
466
+              this.form.diagnose = patietInfo.diagnose
467
+
468
+              this.form.patient_complains = patietInfo.patient_complains
469
+              this.form.present_history = patietInfo.present_history
470
+              this.form.past_history = patietInfo.past_history
471
+              this.form.temperature = patietInfo.temperature
472
+              this.form.pulse = patietInfo.pulse
473
+              this.form.respiratory = patietInfo.respiratory
474
+              this.form.sbp = patietInfo.sbp
475
+              this.form.dbp = patietInfo.dbp
476
+
477
+              // this.form.initial = patietInfo.initial_dialysis + "";
478
+              // this.form.dialysisTotal = patietInfo.total_dialysis + "";
479
+              // this.form.assessment = patietInfo.evaluate;
480
+              // if (patietInfo.patient_type > 0) {
481
+              //   this.form.patientType = patietInfo.patient_type;
482
+              // }
483
+              // if (patietInfo.partition_id > 0) {
484
+              //   this.form.partition = patietInfo.partition_id;
485
+              // }
486
+              // if (patietInfo.bed_id > 0) {
487
+              //   this.form.bed = patietInfo.bed_id;
488
+              // }
489
+              // this.form.healthCareDueDate = uParseTime(
490
+              //   patietInfo.health_care_due_date,
491
+              //   "{y}-{m}-{d}"
492
+              // );
493
+              // if (patietInfo.blood_type > 0) {
494
+              //   this.form.blood = patietInfo.blood_type;
495
+              // }
496
+              // if (patietInfo.rh > 0) {
497
+              //   this.form.rh = patietInfo.rh;
498
+              // }
499
+              // this.form.healthCareDueAlertDate = uParseTime(
500
+              //   patietInfo.health_care_due_alert_date,
501
+              //   "{y}-{m}-{d}"
502
+              // );
503
+              // this.form.receivingDate = uParseTime(
504
+              //   patietInfo.receiving_date,
505
+              //   "{y}-{m}-{d}"
506
+              // );
507
+              // this.form.dialysisAge = dialysisAge(
508
+              //   this.form.firstDialysisDate,
509
+              //   "-"
510
+              // );
511
+              // if (patietInfo.induction_period > 0) {
512
+              //   this.form.induction = patietInfo.induction_period;
513
+              // }
514
+              // if (patietInfo.attending_doctor_id > 0) {
515
+              //   this.form.doctor = patietInfo.attending_doctor_id;
516
+              // }
517
+              // if (patietInfo.head_nurse_id > 0) {
518
+              //   this.form.nurse = patietInfo.head_nurse_id;
519
+              // }
520
+              // if (patietInfo.registrars_id > 0) {
521
+              //   this.form.registrars = patietInfo.registrars_id;
522
+              // }
523
+
524
+              var contagionsArr = response.data.data.contagions
525
+              var diseasesArr = response.data.data.diseases
526
+              this.patientPrint = patietInfo
527
+
528
+              var sourceLen = this.sourceOptions.length
529
+              for (let index = 0; index < sourceLen; index++) {
530
+                if (this.sourceOptions[index].value === patietInfo.source) {
531
+                  this.patientPrint.source = this.sourceOptions[index].label
532
+                  break
533
+                }
534
+              }
535
+              var styleLen = this.styleOptions.length
536
+              for (let index = 0; index < styleLen; index++) {
537
+                if (this.styleOptions[index].id === patietInfo.patient_type) {
538
+                  this.patientPrint.patient_type = this.styleOptions[index].name
539
+                  break
540
+                }
541
+              }
542
+              var partitionLen = this.partitionOptions.length
543
+              for (let index = 0; index < partitionLen; index++) {
544
+                if (this.partitionOptions[index].id === patietInfo.partition_id) {
545
+                  this.patientPrint.partition_id = this.partitionOptions[index].name
546
+                  break
547
+                }
548
+              }
549
+              this.patientPrint.bed_id = patietInfo.bed_id > 0 ? patietInfo.bed_id : ''
550
+              if (patietInfo.gender === 1) {
551
+                this.patientPrint.gender = '男'
552
+              } else if (patietInfo.gender === 2) {
553
+                this.patientPrint.gender = '女'
554
+              } else {
555
+                this.patientPrint.gender = ''
556
+              }
557
+              var maritalLen = this.maritalOptions.length
558
+              this.patientPrint.marital_status = ''
559
+              for (let index = 0; index < maritalLen; index++) {
560
+                if (this.maritalOptions[index].id === patietInfo.marital_status) {
561
+                  this.patientPrint.marital_status = this.maritalOptions[index].name
562
+                  break
563
+                }
564
+              }
565
+              this.patientPrint.birthday = uParseTime(patietInfo.birthday, '{y}-{m}-{d}')
566
+              this.patientPrint.age = jsGetAge(this.patientPrint.birthday, '-')
567
+
568
+              this.patientPrint.patient_complains = patietInfo.patient_complains.replace(/\n/g, '<br/>')
569
+              this.patientPrint.present_history = patietInfo.present_history.replace(/\n/g, '<br/>')
570
+              this.patientPrint.past_history = patietInfo.past_history.replace(/\n/g, '<br/>')
571
+              this.patientPrint.remark = patietInfo.remark.replace(/\n/g, '<br/>')
572
+              this.patientPrint.diagnose = patietInfo.diagnose.replace(/\n/g, '<br/>')
573
+              if (typeof patietInfo.temperature === 'number') {
574
+                this.patientPrint.temperature = patietInfo.temperature.toFixed(1)
575
+              }
576
+
577
+              if (patietInfo.reimbursement_way_id > 0) {
578
+                var wayLen = this.wayOptions.length
579
+                for (let index = 0; index < wayLen; index++) {
580
+                  if (this.wayOptions[index].id === patietInfo.reimbursement_way_id) {
581
+                    this.patientPrint.reimbursement_way_id = this.wayOptions[index].name
582
+                    break
583
+                  }
584
+                }
585
+              } else {
586
+                this.patientPrint.reimbursement_way_id = ''
587
+              }
588
+              if (patietInfo.health_care_due_date !== 0) {
589
+                this.patientPrint.health_care_due_date = uParseTime(patietInfo.health_care_due_date, '{y}-{m}-{d}')
590
+              } else {
591
+                this.patientPrint.health_care_due_date = ''
592
+              }
593
+              if (patietInfo.blood_type > 0) {
594
+                var typeLen = this.typeOptions.length
595
+                for (let index = 0; index < typeLen; index++) {
596
+                  if (this.typeOptions[index].id === patietInfo.blood_type) {
597
+                    this.patientPrint.blood_type = this.typeOptions[index].name
598
+                    break
599
+                  }
600
+                }
601
+              } else {
602
+                this.patientPrint.blood_type = ''
603
+              }
604
+              if (patietInfo.rh > 0) {
605
+                var rhLen = this.rhOptions.length
606
+                for (let index = 0; index < rhLen; index++) {
607
+                  if (this.rhOptions[index].id === patietInfo.rh) {
608
+                    this.patientPrint.rh = this.rhOptions[index].name
609
+                    break
610
+                  }
611
+                }
612
+              } else {
613
+                this.patientPrint.rh = ''
614
+              }
615
+              if (patietInfo.health_care_due_alert_date !== 0) {
616
+                this.patientPrint.health_care_due_alert_date = uParseTime(patietInfo.health_care_due_alert_date, '{y}-{m}-{d}')
617
+              } else {
618
+                this.patientPrint.health_care_due_alert_date = ''
619
+              }
620
+              if (patietInfo.education_level > 0) {
621
+                var eLen = this.educationOptions.length
622
+                for (let index = 0; index < eLen; index++) {
623
+                  if (this.educationOptions[index].id === patietInfo.education_level) {
624
+                    this.patientPrint.education_level = this.educationOptions[index].name
625
+                    break
626
+                  }
627
+                }
628
+              } else {
629
+                this.patientPrint.education_level = ''
630
+              }
631
+              if (patietInfo.profession > 0) {
632
+                var eLen = this.professionOptions.length
633
+                for (let index = 0; index < eLen; index++) {
634
+                  if (this.professionOptions[index].id === patietInfo.profession) {
635
+                    this.patientPrint.profession = this.professionOptions[index].name
636
+                    break
637
+                  }
638
+                }
639
+              } else {
640
+                this.patientPrint.profession = ''
641
+              }
642
+              if (patietInfo.receiving_date !== 0) {
643
+                this.patientPrint.receiving_date = uParseTime(patietInfo.receiving_date, '{y}-{m}-{d}')
644
+              } else {
645
+                this.patientPrint.receiving_date = ''
646
+              }
647
+              if (patietInfo.first_dialysis_date !== 0) {
648
+                this.patientPrint.first_dialysis_date = uParseTime(patietInfo.first_dialysis_date, '{y}-{m}-{d}')
649
+                this.patientPrint.dialysis_age = dialysisAge(this.patientPrint.first_dialysis_date)
650
+              } else {
651
+                this.patientPrint.first_dialysis_date = ''
652
+                this.patientPrint.dialysis_age = ''
653
+              }
654
+              if (patietInfo.induction_period > 0) {
655
+                var eLen = this.inductionOptions.length
656
+                for (let index = 0; index < eLen; index++) {
657
+                  if (this.inductionOptions[index].id === patietInfo.induction_period) {
658
+                    this.patientPrint.induction_period = this.inductionOptions[index].name
659
+                    break
660
+                  }
661
+                }
662
+              } else {
663
+                this.patientPrint.induction_period = ''
664
+              }
665
+              if (patietInfo.attending_doctor_id > 0) {
666
+                var eLen = this.adminUserOptions.length
667
+                for (let index = 0; index < eLen; index++) {
668
+                  if (this.adminUserOptions[index].id === patietInfo.attending_doctor_id) {
669
+                    this.patientPrint.attending_doctor_id = this.adminUserOptions[index].name
670
+                    break
671
+                  }
672
+                }
673
+              } else {
674
+                this.patientPrint.attending_doctor_id = ''
675
+              }
676
+              if (patietInfo.head_nurse_id > 0) {
677
+                var eLen = this.adminUserOptions.length
678
+                for (let index = 0; index < eLen; index++) {
679
+                  if (this.adminUserOptions[index].id === patietInfo.head_nurse_id) {
680
+                    this.patientPrint.head_nurse_id = this.adminUserOptions[index].name
681
+                    break
682
+                  }
683
+                }
684
+              } else {
685
+                this.patientPrint.head_nurse_id = ''
686
+              }
687
+
688
+              if (contagionsArr.length > 0) {
689
+                var contagionsIdArr = {}
690
+                var alen = contagionsArr.length
691
+                for (let index = 0; index < alen; index++) {
692
+                  contagionsIdArr[contagionsArr[index]] = 1
693
+                }
694
+                var printContagions = []
695
+                var clen = this.contagionList.length
696
+                for (let index = 0; index < clen; index++) {
697
+                  if (this.contagionList[index].id in contagionsIdArr) {
698
+                    printContagions.push(this.contagionList[index].name)
699
+                  }
700
+                }
701
+                this.patientPrint.contagions = printContagions.join('、')
702
+              } else {
703
+                this.patientPrint.contagions = '无'
704
+              }
705
+
706
+              if (diseasesArr.length > 0) {
707
+                var diseasesIdArr = {}
708
+                var alen = diseasesArr.length
709
+                for (let index = 0; index < alen; index++) {
710
+                  diseasesIdArr[diseasesArr[index]] = 1
711
+                }
712
+                var printDisease = []
713
+                var clen = this.checkDisease.length
714
+                for (let index = 0; index < clen; index++) {
715
+                  if (this.checkDisease[index].id in diseasesIdArr) {
716
+                    printDisease.push(this.checkDisease[index].name)
717
+                  }
718
+                }
719
+                this.patientPrint.diseases = printDisease.join('、')
720
+              } else {
721
+                this.patientPrint.diseases = ''
722
+              }
723
+
724
+              if (patietInfo.registrars_id > 0) {
725
+                var eLen = this.adminUserOptions.length
726
+                for (let index = 0; index < eLen; index++) {
727
+                  if (this.adminUserOptions[index].id === patietInfo.registrars_id) {
728
+                    this.patientPrint.registrars = this.adminUserOptions[index].name
729
+                    this.form.registrars = this.adminUserOptions[index].name
730
+                    break
731
+                  }
732
+                }
733
+              } else {
734
+                this.patientPrint.registrars = ''
735
+              }
736
+
737
+              if (patietInfo.hospital_first_dialysis_date !== 0) {
738
+                this.patientPrint.hospital_first_dialysis_date = uParseTime(patietInfo.hospital_first_dialysis_date, '{y}-{m}-{d}')
739
+              } else {
740
+                this.patientPrint.hospital_first_dialysis_date = ''
741
+              }
742
+            } else {
743
+              // console.log('patient get err state')
744
+              // this.$notify.error({
745
+              //   title: '错误',
746
+              //   message: '网络异常'
747
+              // })
748
+              // this.$router.push('/patients/patients')
749
+            }
750
+
751
+            // this.postForm = response.data
752
+            // // Just for test
753
+            // this.postForm.title += `   Article Id:${this.postForm.id}`
754
+            // this.postForm.content_short += `   Article Id:${this.postForm.id}`
755
+          }).catch(err => {
756
+          // console.log('patient get err', err)
757
+          // this.$notify.error({
758
+          //   title: '错误',
759
+          //   message: '网络异常'
760
+          // })
761
+          // this.$router.push('/patients/patients')
762
+        })
763
+      },
764
+      fetchAllDoctorAndNurse() {
765
+        fetchAllDoctorAndNurse().then(response => {
766
+          if (response.data.state === 1) {
767
+            this.doctorOptions = response.data.data.doctors
768
+            this.nurseOptions = response.data.data.nursers
769
+          }
770
+        })
771
+      },
772
+      fetchAllAdminUsers() {
773
+        fetchAllAdminUsers().then(response => {
774
+          if (response.data.state === 1) {
775
+            this.adminUserOptions = response.data.data.users
776
+          }
777
+        })
778
+      },
779
+
780
+      printCard() {
781
+        var ptime = Math.round(new Date().getTime() / 1000)
782
+        this.print_time = uParseTime(ptime, '{y}年{m}月{d}日')
783
+
784
+        const style = '@media print { .print_main_content { background-color: white; width:960px; margin:0 auto; padding: 0 0 20px 0; } .print_main_content .order_title { text-align: center; font-size: 23px; line-height: 50px; font-weight: 500; } .print_main_content table { width: 100%; border: 1px solid; border-collapse: collapse; padding: 2px; } .print_main_content table tbody tr td { border: 1px solid; text-align: center; padding: 10px 8px; } .td_proj_title { font-size: 18px; line-height: 25px; font-weight: 500; } .td_proj_content { font-size: 18px; line-height: 25px; } .td_align_left { text-align: left; } .print_footnote_panel { font-size: 17px; line-height: 40px; } .print_footnote_panel .proj { display: inline-block; width: 49%; } .print_footnote_panel .proj .proj_title { font-weight: 500;} }'
785
+
786
+        setTimeout(() => {
787
+          printJS({
788
+            printable: 'print-card-info',
789
+            type: 'html',
790
+            style: style,
791
+            scanStyles: false
792
+          })
793
+        }, 1)
794
+
795
+        var patientID = this.patientPrint.id
796
+        var name = this.patientPrint.name
797
+        var gender = this.patientPrint.gender
798
+        if (gender === 1) {
799
+          gender = '男'
800
+        }
801
+        if (gender === 2) {
802
+          gender = '女'
803
+        }
804
+        var idCardNo = this.patientPrint.id_card_no
805
+        var dialysisNo = this.patientPrint.dialysis_no
806
+        var phone = this.patientPrint.phone
807
+        var healthCareNo = this.patientPrint.health_care_no
808
+
809
+        // Base64加密
810
+        var epatientID = this.Base64.encode(patientID)
811
+        var ename = this.Base64.encode(name)
812
+        var egender = this.Base64.encode(gender)
813
+        var eidCardNo = this.Base64.encode(idCardNo)
814
+        var edialysisNo = this.Base64.encode(dialysisNo)
815
+        var ephone = this.Base64.encode(phone)
816
+        var eheathCareNo = this.Base64.encode(healthCareNo)
817
+        console.log('id号:' + epatientID, '姓名:' + ename, '性别:' + egender, '身份证:' + eidCardNo, '透析号:' + edialysisNo, '电话:' + ephone, '社保号:' + eheathCareNo)
818
+        //  var params =new Object();
819
+        //    params.id = this.patientPrint.id
820
+        //    params.name =  this.patientPrint.name;
821
+        this.$options.methods.qrcode(epatientID, ename, egender, eidCardNo, edialysisNo, ephone, eheathCareNo)// 调用生成二维码的方法
822
+        // this.$options.methods.qrcode(params)
823
+      },
824
+
825
+      qrcode(patientID, name, gender, idCardNo, dialysisNo, phone, healthCareNo) {
826
+        document.getElementById("qrcode").innerHTML = "";
827
+        new QRCode('qrcode', {
828
+          width: 200,
829
+          height: 200,
830
+          text: 'user_id:' + patientID + ',' + 'name:' + name + ',' + 'dialysis_no:' + dialysisNo + ',' + 'gender:' + gender + ',' + 'idcard_no:' + idCardNo + ',' + 'phone:' + phone + ',' + 'healthcare_no:' + healthCareNo
831
+        })
832
+      }
833
+
834
+    }
835
+  }
836
+</script>
837
+
838
+<style rel="stylesheet/scss" lang="scss" scoped>
839
+  .uploadHead {
840
+    margin-top: 25%;
841
+  }
842
+  .uploadHeadBtn {
843
+    width: 148px;
844
+    margin-top: 10px;
845
+  }
846
+  .el-form {
847
+  .el-col-6,
848
+  .el-col-8 {
849
+    width: 360px;
850
+    height:59px!important;
851
+  }
852
+  .el-form-item {
853
+  // margin-bottom: 17px !important;
854
+  .el-select {
855
+    width: 100%;
856
+  }
857
+  .el-date-editor.el-input {
858
+    width: 100%;
859
+  }
860
+  .textarea {
861
+    width: 100%;
862
+    height: 70px;
863
+    border-color: #dcdfe6;
864
+    padding: 5px;
865
+  }
866
+  }
867
+  }
868
+
869
+  // #print-info-box .info_print {
870
+     //     width: 920px;
871
+     //     margin: 0 auto !important;
872
+     //     position: relative;
873
+     //     top: 0;
874
+     //     left: 0;
875
+     //     padding: 20px 30px;
876
+     // }
877
+  // #print-info-box .box-title {
878
+     //     text-align: center;
879
+     //     font-weight: 600;
880
+     //     font-size: 30px;
881
+     //     line-height: 80px;
882
+     //     margin-bottom: 20px;
883
+     // }
884
+
885
+  // #print-info-box .unit-title {
886
+     //     text-align: center;
887
+     //     line-height: 40px;
888
+     //     font-size: 20px;
889
+     //     font-weight: 400;
890
+     //     padding-top: 10px;
891
+     //     /* border: 1px solid #333; */
892
+     // }
893
+
894
+  // #print-info-box .unit-box {
895
+     //     padding: 15px;
896
+     // }
897
+
898
+  // #print-info-box .unit-box-item {
899
+     //     display: flex;
900
+     //     align-items: center;
901
+     //     justify-content: space-between;
902
+     //     padding: 4px 1em;
903
+     // }
904
+
905
+  // #print-info-box .unit-box-item-col3 {
906
+     //     width: 30%;
907
+     //     display: flex;
908
+     //     padding: 4px 0;
909
+     // }
910
+
911
+  // #print-info-box .unit-box-item-col4 {
912
+     //     width: 23%;
913
+     //     display: flex;
914
+     //     padding: 4px 0;
915
+     // }
916
+
917
+  // #print-info-box .item-value {
918
+     //     flex: 1;
919
+     //     border-bottom: 1px solid #333;
920
+     // }
921
+</style>
922
+
923
+<style scoped>
924
+  /* 打印表格的样式 */
925
+  .print_main_content {
926
+    background-color: white;
927
+    width:960px;
928
+    margin:0 auto;
929
+    padding: 0 0 20px 0;
930
+  }
931
+  .print_main_content .order_title {
932
+    text-align: center;
933
+    font-size: 23px;
934
+    line-height: 50px;
935
+    font-weight: 500;
936
+  }
937
+  .print_main_content table {
938
+    width: 100%;
939
+    border: 1px solid;
940
+    border-collapse: collapse;
941
+    padding: 2px;
942
+  }
943
+  .print_main_content table tbody tr td {
944
+    border: 1px solid;
945
+    text-align: center;
946
+    /* font-size: 17px; */
947
+    padding: 10px 8px;
948
+  }
949
+  .td_proj_title {
950
+    font-size: 18px;
951
+    line-height: 25px;
952
+    font-weight: 500;
953
+  }
954
+  .td_proj_content {
955
+    font-size: 18px;
956
+    line-height: 25px;
957
+  }
958
+  .td_align_left {
959
+    text-align: left;
960
+  }
961
+  .print_footnote_panel {
962
+    font-size: 17px;
963
+    line-height: 40px;
964
+  }
965
+  .print_footnote_panel .proj {
966
+    display: inline-block;
967
+    width: 49%;
968
+  }
969
+  .print_footnote_panel .proj .proj_title {
970
+    font-weight: 500;
971
+  }
972
+  .el-select-dropdown{
973
+    z-index: 998!important;
974
+  }
975
+</style>

+ 596 - 0
src/xt_pages/upload/fast/FastUploadInspectitonDetail.vue 查看文件

@@ -0,0 +1,596 @@
1
+<template>
2
+  <div class="patient-container">
3
+    <div class="app-container" v-loading="pageLoading" element-loading-text="拼命加载中">
4
+      <el-row :gutter="20">
5
+        <el-col :span="7">
6
+          <el-table :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}" :data="projects" border style="width: 100%" highlight-current-row @current-change="handleCurrentChange" ref="singleTable" >
7
+            <el-table-column label="检验检查项目" align="center">
8
+              <el-table-column
9
+                prop="project_name"
10
+                label="检验项目"
11
+                align="center">
12
+              </el-table-column>
13
+              <el-table-column
14
+                prop="count"
15
+                label="次数"
16
+                width="80"
17
+                align="center">
18
+              </el-table-column>
19
+            </el-table-column>
20
+          </el-table>
21
+        </el-col>
22
+        <el-col :span="17" v-loading="itemLoading">
23
+          <div class="filter-container" >
24
+            <el-button class="filter-item" type="text" style="color:#000">{{itemName}} <span v-if="itemDate">(检查日期:{{itemDate}})</span></el-button>
25
+          </div>
26
+          <el-table :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
27
+                    :data="items" border style="width: 100%" id="user-inspection-order"  >
28
+            <el-table-column
29
+              prop="item_name"
30
+              label="检验项目"
31
+              align="center"
32
+              min-width="180">
33
+              <template slot-scope="scope">
34
+                {{scope.row.item_name}} {{scope.row.item_name_addition}}
35
+              </template>
36
+            </el-table-column>
37
+            <el-table-column
38
+              prop="name"
39
+              label="结果"
40
+              align="center"
41
+              min-width="80">
42
+              <template slot-scope="scope">
43
+                <span>{{scope.row.value}}</span>
44
+                <span v-if="scope.row.range_type==1">{{scope.row.value_direction}}</span>
45
+              </template>
46
+            </el-table-column>
47
+            <el-table-column
48
+              prop="address"
49
+              label="参考值"
50
+              align="center"
51
+              min-width="120">
52
+              <template slot-scope="scope">
53
+                <span v-if="scope.row.range_type==1">{{scope.row.range_min}}~{{scope.row.range_max}}</span>
54
+                <span v-else>{{scope.row.range_value}}</span>
55
+              </template>
56
+            </el-table-column>
57
+            <el-table-column
58
+              prop="unit"
59
+              label="单位"
60
+              align="center"
61
+              min-width="80">
62
+            </el-table-column>
63
+
64
+            <el-table-column label="操作" align="center" >
65
+              <template slot-scope="scope">
66
+                  <el-button
67
+                    size="mini"
68
+                    type="primary"
69
+                    icon="el-icon-circle-plus-outline"
70
+                    v-clipboard:copy="scope.row.value"
71
+                    v-clipboard:success="onCopy" v-clipboard:error="onError"
72
+                    >复制
73
+                  </el-button>
74
+              </template>
75
+            </el-table-column>
76
+          </el-table>
77
+          <el-pagination
78
+            align="right"
79
+            @current-change="handleCurrentChangePage"
80
+            :current-page="queryParams.page"
81
+            :page-size="1"
82
+            background
83
+            style="margin-top:20px;"
84
+            layout="total, prev, pager, next, jumper"
85
+            :total="total">
86
+          </el-pagination>
87
+        </el-col>
88
+      </el-row>
89
+    </div>
90
+
91
+    <el-dialog :title="formTitle" :visible.sync="dialogFormVisible" width="900px" id="user-inspection-form" v-loading="formLoading">
92
+      <el-form :model="form"  ref="form" label-position="top">
93
+        <el-row >
94
+          <el-col :span="7" >
95
+            <el-form-item label="检验日期" prop="inspect_date" :rules="[
96
+                  { required: true, message: '请输入检验日期', trigger: 'blur' },
97
+                ]" >
98
+              <el-date-picker style="width:95%"
99
+                              v-model="form.inspect_date"
100
+                              type="date"
101
+                              value-format="yyyy-MM-dd"
102
+                              format="yyyy-MM-dd"
103
+                              placeholder="选择日期"
104
+                              :readonly="form.method=='add'?false:true"
105
+              >
106
+              </el-date-picker>
107
+            </el-form-item>
108
+          </el-col>
109
+          <el-col :span="1">&nbsp;</el-col>
110
+
111
+          <template v-for="(item, index) in form.formItem" >
112
+            <el-col :span="7" :key="index">
113
+              <el-form-item :label="item.item_name" v-if="item.range_type==1"  :key="item.item_id" :prop="'formItem.' + index + '.value'"
114
+              >
115
+                <el-input placeholder="请填入" v-model="item.value" style="width:95%" type="number">
116
+                  <template slot="append">{{item.unit}}</template>
117
+                </el-input>
118
+              </el-form-item>
119
+              <el-form-item :label="item.item_name" v-else :key="item.item_id" :prop="'formItem.' + index + '.value'"
120
+              >
121
+                <el-select  v-model="item.value" placeholder="请选择" style="width:95%">
122
+                  <el-option
123
+                    v-for="(optionItem, oidex) in item.select_options"
124
+                    :key="oidex"
125
+                    :label="optionItem"
126
+                    :value="optionItem">
127
+                  </el-option>
128
+                </el-select>
129
+              </el-form-item>
130
+            </el-col>
131
+            <el-col :span="1" :key="'form-col'+index">&nbsp;</el-col>
132
+          </template>
133
+
134
+        </el-row>
135
+
136
+
137
+      </el-form>
138
+      <div slot="footer" class="dialog-footer">
139
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
140
+        <el-button type="primary" v-if="form.method=='add'" @click="submitNew('form')">保 存</el-button>
141
+        <el-button type="primary" v-else @click="submitEdit('form')">保 存</el-button>
142
+      </div>
143
+    </el-dialog>
144
+  </div>
145
+</template>
146
+
147
+<script>
148
+  import {
149
+    CreatePatientInspection,
150
+    DeletePatientInspection,
151
+    EditPatientInspection,
152
+    fetchInspectionReference,
153
+    fetchPatientInspections
154
+  } from '@/api/inspection'
155
+  import { isPositiveNumber, uParseTime } from '@/utils/tools'
156
+  import FastPatientsSidebar from './FastPatientsSidebar'
157
+
158
+  export default {
159
+    name: "FastUploadInspectitonDetail",
160
+    components: { FastPatientsSidebar },
161
+    props: {
162
+      id: 0,
163
+    },
164
+    data() {
165
+      return {
166
+        total:0,
167
+        pageLoading:true,
168
+        itemLoading:false,
169
+        formLoading:false,
170
+        itemDate:'',
171
+        patientID: 0,
172
+        panelClass: "patient-app-container",
173
+        patientInfo: {
174
+          id: 0
175
+        },
176
+        itemName:'请选择项目',
177
+        formTitle:'',
178
+        dialogFormVisible:false,
179
+        form:{
180
+          method:'add',
181
+          project_id:0,
182
+          inspect_date:'',
183
+          formItem:[
184
+            {id:0, value:''},
185
+          ]
186
+        },
187
+        formItem:[],
188
+        items:[],
189
+        inspections:[],
190
+        inspectionsMap:{},
191
+        projects:[],
192
+        project:null,
193
+        queryParams:{
194
+          patient:0,
195
+          project_id:0,
196
+          page:1
197
+        },
198
+      };
199
+    },
200
+    methods:{
201
+      onCopy(){
202
+        this.$message.success('复制成功')
203
+
204
+      },onError(){
205
+        this.$message.success('复制失败,请重试')
206
+      },
207
+      deleteInspection(){
208
+
209
+        if(this.project == null || this.itemDate == "") {
210
+          this.$message.error("请先选择删除删除的记录");
211
+          return false;
212
+        }
213
+
214
+        this.$confirm('确认删除此记录?', '删除', {
215
+          confirmButtonText: '确定',
216
+          cancelButtonText: '取消',
217
+          type: 'warning'
218
+        }).then(() => {
219
+          var params = {patient: this.patientID, date: this.itemDate, project_id: this.project.project_id};
220
+          DeletePatientInspection(params).then(response=>{
221
+            if(response.data.state==0) {
222
+              this.$message.error(response.data.msg);
223
+              return false;
224
+            }else {
225
+              this.$notify({
226
+                title: "成功",
227
+                message: "删除成功",
228
+                type: "success",
229
+                duration: 2000
230
+              });
231
+
232
+              for( var index in this.projects) {
233
+                if (this.projects[index].project_id == params.project_id) {
234
+                  this.projects[index].count --;
235
+                  break;
236
+                }
237
+              }
238
+              this.total -=1;
239
+              this.itemDate = "";
240
+              this.items = [];
241
+              if(this.total > 0) {
242
+                this.queryParams.page = 1;
243
+                this.fetchPatientInspections(this.queryParams);
244
+              }
245
+            }
246
+          });
247
+        }).catch(() => { });
248
+      },
249
+      openEdit(){
250
+        if(this.project == null) {
251
+          this.$message.error("请先选择项目");
252
+          return false;
253
+        }
254
+
255
+        this.form.method = "edit";
256
+        this.formTitle = "修改" + this.project.project_name;
257
+        this.form.project_id = this.project.project_id;
258
+        this.form.inspect_date = this.itemDate;
259
+
260
+        this.form.formItem = [];
261
+        for(var index in this.project.inspection_reference){
262
+          this.form.formItem.push({
263
+            id:  (this.project.inspection_reference[index].id in this.inspectionsMap)? this.inspectionsMap[this.project.inspection_reference[index].id].id:0,
264
+            project_id: this.project.inspection_reference[index].project_id,
265
+            project_name: this.project.inspection_reference[index].project_name,
266
+            item_id: this.project.inspection_reference[index].id,
267
+            item: this.project.inspection_reference[index].item,
268
+            item_name: this.project.inspection_reference[index].item_name,
269
+            range_type: this.project.inspection_reference[index].range_type,
270
+            value:(this.project.inspection_reference[index].id in this.inspectionsMap)? this.inspectionsMap[this.project.inspection_reference[index].id].inspect_value:"",
271
+            select_options: this.project.inspection_reference[index].range_options.split(","),
272
+            unit: this.project.inspection_reference[index].unit,
273
+          });
274
+        }
275
+
276
+        this.dialogFormVisible = true;
277
+
278
+      },
279
+      openNew(){
280
+        if(this.project == null) {
281
+          this.$message.error("请先选择项目");
282
+          return false;
283
+        }
284
+        this.form.method = "add";
285
+        this.formTitle = "新增" + this.project.project_name;
286
+        this.form.project_id = this.project.project_id;
287
+
288
+        var today = new Date();
289
+        this.form.inspect_date = uParseTime(today, '{y}-{m}-{d}');
290
+        this.form.formItem = [];
291
+        for(var index in this.project.inspection_reference){
292
+          // var formItem = this.project.inspection_reference[index];
293
+          // formItem["value"] = '';
294
+          // if (formItem.range_type==2) {
295
+          //   formItem["select_options"] = formItem.range_options.split(",");
296
+          // }
297
+          this.form.formItem.push({
298
+            id:    0,
299
+            project_id: this.project.inspection_reference[index].project_id,
300
+            project_name: this.project.inspection_reference[index].project_name,
301
+            item_id: this.project.inspection_reference[index].id,
302
+            item: this.project.inspection_reference[index].item,
303
+            item_name: this.project.inspection_reference[index].item_name,
304
+            range_type: this.project.inspection_reference[index].range_type,
305
+            value:'',
306
+            select_options: this.project.inspection_reference[index].range_options.split(","),
307
+            unit: this.project.inspection_reference[index].unit,
308
+          });
309
+        }
310
+
311
+        this.dialogFormVisible = true;
312
+      },
313
+      submitEdit(formName){
314
+        this.$refs[formName].validate((valid) => {
315
+          if (valid) {
316
+            this.formLoading = true;
317
+            if (this.form.formItem.length==0) {
318
+              this.$message.error("未填写项目");
319
+              return false;
320
+            }
321
+            for( var index in this.form.formItem) {
322
+              this.form.formItem[index].value = '' + this.form.formItem[index].value;
323
+            }
324
+            EditPatientInspection(this.patientID, this.form).then(response=>{
325
+              if (response.data.state==1) {
326
+                this.$notify({
327
+                  title: "成功",
328
+                  message: "修改成功",
329
+                  type: "success",
330
+                  duration: 2000
331
+                });
332
+                this.itemDate = this.form.inspect_date;
333
+                this.items=[];
334
+                var inspections = response.data.data.inspections;
335
+                this.inspections = response.data.data.inspections;
336
+                if (inspections==null) {
337
+                  this.inspections = [];
338
+                  return false;
339
+                }
340
+                var inspectionsMap = {};
341
+                this.inspectionsMap = {};
342
+                for (var index in inspections) {
343
+                  inspectionsMap[inspections[index].item_id] = inspections[index];
344
+                  this.inspectionsMap[inspections[index].item_id] = inspections[index];
345
+                }
346
+                var items = this.project.inspection_reference;
347
+                for(var index in items) {
348
+                  if (items[index].id in inspectionsMap) {
349
+                    var item = {};
350
+                    for(var key in items[index]) {
351
+                      item[key] = items[index][key];
352
+                    }
353
+                    item.value = inspectionsMap[items[index].id].inspect_value;
354
+                    item.value_direction = "";
355
+                    if (item.range_type==1) {
356
+                      var value = parseFloat(item.value);
357
+                      var range_min = parseFloat(item.range_min);
358
+                      var range_max = parseFloat(item.range_max);
359
+                      if (value < range_min) {
360
+                        item.value_direction = "↓";
361
+                      }else if (value > range_max) {
362
+                        item.value_direction = "↑";
363
+                      }
364
+                    }
365
+                    this.items.push(item);
366
+                  }
367
+                }
368
+
369
+                this.resetForm(formName);
370
+                this.dialogFormVisible = false;
371
+
372
+              }else {
373
+                this.$message.error(response.data.msg);
374
+                return false;
375
+              }
376
+            }).catch(v=>{
377
+              this.$message.error(v);
378
+              return false;
379
+            });
380
+            this.formLoading = false;
381
+            return false;
382
+          } else {
383
+            return false;
384
+          }
385
+        });
386
+      },
387
+      submitNew(formName){
388
+        this.$refs[formName].validate((valid) => {
389
+          if (valid) {
390
+            this.formLoading = true;
391
+            if (this.form.formItem.length==0) {
392
+              this.$message.error("未填写项目");
393
+              return false;
394
+            }
395
+            for( var index in this.form.formItem) {
396
+              this.form.formItem[index].value = '' + this.form.formItem[index].value;
397
+            }
398
+            CreatePatientInspection(this.patientID, this.form).then(response=>{
399
+              if (response.data.state==1) {
400
+                this.$notify({
401
+                  title: "成功",
402
+                  message: "新增成功",
403
+                  type: "success",
404
+                  duration: 2000
405
+                });
406
+                this.itemDate = this.form.inspect_date;
407
+                this.items=[];
408
+                for( var index in this.projects) {
409
+                  if (this.projects[index].project_id == this.form.project_id) {
410
+                    this.projects[index].count ++;
411
+                    break;
412
+                  }
413
+                }
414
+                this.total +=1;
415
+                var inspections = response.data.data.inspections;
416
+                this.inspections = response.data.data.inspections;
417
+                if (inspections==null) {
418
+                  this.inspections = [];
419
+                  return false;
420
+                }
421
+                var inspectionsMap = {};
422
+                this.inspectionsMap = {};
423
+                for (var index in inspections) {
424
+                  inspectionsMap[inspections[index].item_id] = inspections[index];
425
+                  this.inspectionsMap[inspections[index].item_id] = inspections[index];
426
+                }
427
+                var items = this.project.inspection_reference;
428
+                for(var index in items) {
429
+                  if (items[index].id in inspectionsMap) {
430
+                    var item = {};
431
+                    for(var key in items[index]) {
432
+                      item[key] = items[index][key];
433
+                    }
434
+                    item.value = inspectionsMap[items[index].id].inspect_value;
435
+                    item.value_direction = "";
436
+                    if (item.range_type==1) {
437
+                      var value = parseFloat(item.value);
438
+                      var range_min = parseFloat(item.range_min);
439
+                      var range_max = parseFloat(item.range_max);
440
+                      if (value < range_min) {
441
+                        item.value_direction = "↓";
442
+                      }else if (value > range_max) {
443
+                        item.value_direction = "↑";
444
+                      }
445
+                    }
446
+                    this.items.push(item);
447
+                  }
448
+                }
449
+
450
+                this.resetForm(formName);
451
+                this.dialogFormVisible = false;
452
+
453
+              }else {
454
+                this.$message.error(response.data.msg);
455
+                return false;
456
+              }
457
+            }).catch(v=>{
458
+              this.$message.error(v);
459
+              return false;
460
+            });
461
+            this.formLoading = false;
462
+            return false;
463
+          } else {
464
+            return false;
465
+          }
466
+        });
467
+
468
+      },
469
+      fetchInspectionReference(){
470
+        fetchInspectionReference(this.patientID).then(response=>{
471
+          if(response.data.state==1) {
472
+            var reference = response.data.data.reference;
473
+            this.projects = reference;
474
+            this.pageLoading = false;
475
+          }else {
476
+            this.$message.error(response.data.msg);
477
+            return false;
478
+          }
479
+        }).catch(v=>{
480
+        });
481
+      },
482
+      setCurrent(row) {
483
+        this.$refs.singleTable.setCurrentRow(row);
484
+      },
485
+      resetForm(formName) {
486
+        this.$refs[formName].resetFields();
487
+      },
488
+      handleCurrentChange(row) {
489
+        this.itemDate = '';
490
+        this.form.method = 'add';
491
+        if(typeof(row)=="undefined" || row==null) {
492
+          this.project = null;
493
+          this.items = [];
494
+          this.itemName='请选择项目';
495
+        }else {
496
+          this.itemLoading = true;
497
+          this.project = row;
498
+          this.items = row.inspection_reference;
499
+          this.itemName=row.project_name;
500
+
501
+          this.queryParams.patient = this.patientID;
502
+          this.queryParams.project_id = this.project.project_id;
503
+          this.queryParams.page = 1;
504
+          this.total = 0;
505
+          this.fetchPatientInspections(this.queryParams);
506
+        }
507
+      },
508
+
509
+      handleCurrentChangePage(val) {
510
+        this.itemLoading = true;
511
+        this.queryParams.page = val;
512
+        this.fetchPatientInspections(this.queryParams);
513
+      },
514
+      fetchPatientInspections(params){
515
+        this.items = [];
516
+        fetchPatientInspections(params).then(response=>{
517
+          if(response.data.state==1) {
518
+            var inspections = response.data.data.inspections;
519
+            this.total = response.data.data.total;
520
+            this.itemDate = response.data.data.date;
521
+            this.inspections = response.data.data.inspections;
522
+            if (inspections==null) {
523
+              this.inspections = [];
524
+              return false;
525
+            }
526
+            var inspectionsMap = {};
527
+            this.inspectionsMap = {};
528
+            for (var index in inspections) {
529
+              inspectionsMap[inspections[index].item_id] = inspections[index];
530
+              this.inspectionsMap[inspections[index].item_id] = inspections[index];
531
+            }
532
+            var items = this.project.inspection_reference;
533
+            for(var index in items) {
534
+              if (items[index].id in inspectionsMap) {
535
+                var item = {};
536
+                for(var key in items[index]) {
537
+                  item[key] = items[index][key];
538
+                }
539
+                item.value = inspectionsMap[items[index].id].inspect_value;
540
+                item.value_direction = "";
541
+                if (item.range_type==1) {
542
+                  var value = parseFloat(item.value);
543
+                  var range_min = parseFloat(item.range_min);
544
+                  var range_max = parseFloat(item.range_max);
545
+                  if (value < range_min) {
546
+                    item.value_direction = "↓";
547
+                  }else if (value > range_max) {
548
+                    item.value_direction = "↑";
549
+                  }
550
+                }
551
+                this.items.push(item);
552
+              }
553
+            }
554
+          }
555
+        }).catch(v=>{});
556
+        setTimeout(() => {
557
+          this.itemLoading = false;
558
+        }, 1000);
559
+      },
560
+    },
561
+    created() {
562
+      const id = this.$route.query && this.$route.query.id;
563
+      this.patientID = parseInt(id);
564
+      if (isNaN(this.patientID) || this.patientID <= 0) {
565
+        this.patientID = this.id
566
+        console.log(this.patientID)
567
+        this.fetchInspectionReference();
568
+      }else{
569
+        this.fetchInspectionReference();
570
+
571
+      }
572
+
573
+    }
574
+  };
575
+</script>
576
+
577
+<style>
578
+  #oictable ::-webkit-scrollbar {
579
+    height: 15px;
580
+  }
581
+</style>
582
+
583
+<style >
584
+  #user-inspection-order td {
585
+    border-bottom:0px !important;
586
+    border-right: 0px !important;
587
+  }
588
+  #user-inspection-order th {
589
+    border-right: 0px !important;
590
+  }
591
+  #user-inspection-form .el-form-item__content {
592
+    line-height: 0 !important;
593
+  }
594
+</style>
595
+
596
+

+ 54 - 0
src/xt_pages/upload/fast_upload.vue 查看文件

@@ -0,0 +1,54 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs='crumbs'></bread-crumb>
5
+    </div>
6
+    <div class="app-container">
7
+      <div class="service-box">
8
+        <el-tabs v-model="activeName">
9
+          <el-tab-pane label="国家质控平台" name="first">
10
+           <fast-country></fast-country>
11
+          </el-tab-pane>
12
+          <el-tab-pane label="省级质控平台">
13
+            <fast-province></fast-province>
14
+          </el-tab-pane>
15
+          <el-tab-pane label="市级质控平台">
16
+            <fast-city></fast-city>
17
+          </el-tab-pane>
18
+        </el-tabs>
19
+      </div>
20
+    </div>
21
+  </div>
22
+</template>
23
+
24
+
25
+<script>
26
+  import BreadCrumb from '@/xt_pages/components/bread-crumb'
27
+  import FastCountry from './fast/FastCountry'
28
+  import FastProvince from './fast/FastProvince'
29
+  import FastCity from './fast/FastCity'
30
+
31
+
32
+  export default {
33
+    name: 'export',
34
+    components: {
35
+      FastCity,
36
+      FastProvince,
37
+      FastCountry,
38
+      BreadCrumb
39
+    },
40
+    data(){
41
+      return{
42
+        crumbs: [
43
+          { path: false, name: '质控上报' },
44
+          { path: '/upload/fast', name: '快捷上报' }
45
+        ],
46
+        activeName: 'first',
47
+      }
48
+    }
49
+  }
50
+</script>
51
+
52
+<style scoped>
53
+
54
+</style>

+ 139 - 9
src/xt_pages/user/components/PatientDetail.vue 查看文件

@@ -1,5 +1,42 @@
1 1
 <template>
2 2
   <div class="app-container ">
3
+    <el-dialog title="新增甲肝乙肝丙肝梅毒HIV" :visible.sync="dialogFormVisible" width="1000px" id="user-inspection-form" >
4
+      <el-form :model="form"  ref="form" label-position="top">
5
+        <el-row >
6
+          <el-col :span="1">&nbsp;</el-col>
7
+
8
+          <template v-for="(item, index) in form.formItem" >
9
+            <el-col :span="7" :key="index">
10
+              <el-form-item :label="item.item_name" v-if="item.range_type==1"  :key="item.item_id" :prop="'formItem.' + index + '.value'"
11
+              >
12
+                <el-input placeholder="请填入" v-model="item.value" style="width:95%" type="number" disabled>
13
+                  <template slot="append">{{item.unit}}</template>
14
+                </el-input>
15
+              </el-form-item>
16
+              <el-form-item :label="item.item_name" v-else :key="item.item_id" :prop="'formItem.' + index + '.value'"
17
+              >
18
+                <el-select  v-model="item.value" placeholder="请选择" style="width:95%" disabled>
19
+                  <el-option
20
+                    v-for="(optionItem, oidex) in item.select_options"
21
+                    :key="oidex"
22
+                    :label="optionItem"
23
+                    :value="optionItem">
24
+                  </el-option>
25
+                </el-select>
26
+              </el-form-item>
27
+            </el-col>
28
+            <el-col :span="1" :key="'form-col'+index">&nbsp;</el-col>
29
+          </template>
30
+
31
+        </el-row>
32
+
33
+
34
+      </el-form>
35
+      <div slot="footer" class="dialog-footer">
36
+        <el-button @click="dialogFormVisible = false">关闭</el-button>
37
+      </div>
38
+    </el-dialog>
39
+
3 40
     <el-form ref="form" :rules="rules" :model="form" label-width="134px" class="clearfix" id="patient-info" >
4 41
     <div style="float:right;z-index:8;position: absolute;right: 16px;">
5 42
       <el-button size="small" type="primary" @click="printCard()" style="margin:0 6px 6px 0;z-index:1;">打印签到卡</el-button>
@@ -69,6 +106,78 @@
69 106
                 </el-radio-group>
70 107
               </el-form-item>
71 108
             </el-col>
109
+
110
+
111
+            <el-col :span="24">
112
+              <el-form-item label="传染病 : " prop="contagions">
113
+                <el-radio-group v-model="form.is_infectious" disabled>
114
+                  <el-radio :label="1">无</el-radio>
115
+                  <el-radio :label="2">有</el-radio>
116
+                </el-radio-group>
117
+                <el-checkbox-group v-model="form.contagions" v-if="form.is_infectious == '2'" disabled>
118
+                  <el-checkbox v-for="item in contagionList" v-if="item.type==2" :label="item.id" :key="item.id" name="contagions"
119
+                               :value="item.id">{{item.name}}
120
+                  </el-checkbox>
121
+                </el-checkbox-group>
122
+              </el-form-item>
123
+            </el-col>
124
+
125
+
126
+            <!--<el-col :span="16" >-->
127
+              <!--<el-form-item label="检查结果日期 : "  >-->
128
+                <!--<el-date-picker v-model="form.record_date" type="date" placeholder="选择日期" :suffix-icon="'el-icon-menu'"-->
129
+                                <!--format="yyyy-MM-dd"-->
130
+                                <!--style="width: 200px;"-->
131
+                                <!--value-format="yyyy-MM-dd"></el-date-picker>-->
132
+                <!--&lt;!&ndash;<el-button type="primary" @click="recordCheck()">录入检验检查</el-button>&ndash;&gt;-->
133
+
134
+              <!--</el-form-item>-->
135
+
136
+            <!--</el-col>-->
137
+
138
+            <el-col :span="16" >
139
+              <el-form-item label="检查结果日期 : "  >
140
+                <!--<el-date-picker v-model="form.record_date" type="date" placeholder="选择日期" :suffix-icon="'el-icon-menu'"-->
141
+                <!--format="yyyy-MM-dd"-->
142
+                <!--style="width: 200px;"-->
143
+                <!--disabled-->
144
+                <!--value-format="yyyy-MM-dd" v-if="isEdit"></el-date-picker>-->
145
+
146
+                <el-date-picker v-model="form.record_date" type="date" placeholder="选择日期" :suffix-icon="'el-icon-menu'"
147
+                                format="yyyy-MM-dd"
148
+                                disabled
149
+                                style="width: 200px;"
150
+                                value-format="yyyy-MM-dd" ></el-date-picker>
151
+                <el-button type="primary" @click="showInspectDialog()">查看检验检查</el-button>
152
+
153
+              </el-form-item>
154
+            </el-col>
155
+
156
+            <el-col :span="24">
157
+              <el-form-item label="响应结果 : " >
158
+                <el-input disabled type="textarea" :rows="3" v-model="form.response_result" resize="none" placeholder=""></el-input>
159
+              </el-form-item>
160
+            </el-col>
161
+
162
+            <el-col :span="24">
163
+              <el-form-item label="传染病周期提醒: " >
164
+                <el-radio-group v-model="form.remind_cycle" @change="changeCycle()" disabled>
165
+                  <el-radio :label="1">一月一次</el-radio>
166
+                  <el-radio :label="2">两月一次</el-radio>
167
+                  <el-radio :label="3">三月一次</el-radio>
168
+                  <el-radio :label="4">半年一次</el-radio>
169
+                  <el-radio :label="5">一年一次</el-radio>
170
+                </el-radio-group>
171
+              </el-form-item>
172
+            </el-col>
173
+
174
+            <el-col :span="24">
175
+              <el-form-item label="诊断 : " prop="diagnose">
176
+                <!-- <textarea v-model="form.diagnose" class="textarea" disabled></textarea> -->
177
+                <el-input type="textarea" :rows="3" v-model="form.diagnose" resize="none" placeholder="" readonly></el-input>
178
+              </el-form-item>
179
+            </el-col>
180
+
72 181
             <el-col :span="8">
73 182
               <el-form-item label="民族 : " prop="nation">
74 183
                 <el-input v-model="form.nation" maxlength="30" disabled></el-input>
@@ -243,12 +352,7 @@
243 352
           </el-form-item>
244 353
         </el-col>
245 354
 
246
-        <el-col :span="24">
247
-          <el-form-item label="诊断 : " prop="diagnose">
248
-            <!-- <textarea v-model="form.diagnose" class="textarea" disabled></textarea> -->
249
-            <el-input type="textarea" :rows="3" v-model="form.diagnose" resize="none" placeholder="" readonly></el-input>
250
-          </el-form-item>
251
-        </el-col>
355
+
252 356
       </el-row>
253 357
 
254 358
       <div v-show="!treat_info_fold">
@@ -491,7 +595,6 @@ const defaultForm = {
491 595
   diseases: [],
492 596
   diagnose: '',
493 597
   registrars: '',
494
-
495 598
   patient_complains: '',
496 599
   present_history: '',
497 600
   past_history: '',
@@ -499,7 +602,11 @@ const defaultForm = {
499 602
   pulse: '',
500 603
   respiratory: '',
501 604
   sbp: '',
502
-  dbp: ''
605
+  dbp: '',
606
+  record_date:'',
607
+  response_result:'',
608
+  is_infectious:'',
609
+  formItem:[],
503 610
 }
504 611
 
505 612
 export default {
@@ -510,7 +617,7 @@ export default {
510 617
     return {
511 618
       generic_info_fold: true,
512 619
       treat_info_fold: true,
513
-
620
+      dialogFormVisible:false,
514 621
       orgname: '',
515 622
       adminusername: '',
516 623
       form: Object.assign({}, defaultForm),
@@ -536,6 +643,7 @@ export default {
536 643
       doctorOptions: null,
537 644
       nurseOptions: null,
538 645
       adminUserOptions: [],
646
+      infections:[],
539 647
       rhOptions: null,
540 648
       checkDisease: null,
541 649
       contagionList: null,
@@ -649,6 +757,26 @@ export default {
649 757
             this.form.idCardNo = patietInfo.id_card_no
650 758
             this.form.dialysisNo = patietInfo.dialysis_no
651 759
             this.form.gender = patietInfo.gender
760
+            this.form.is_infectious = patietInfo.is_infectious
761
+            // this.form.record_date = patietInfo.is_infectious
762
+            this.form.response_result = patietInfo.response_result
763
+            this.form.remind_cycle = patietInfo.remind_cycle
764
+            this.infections =  response.data.data.infections
765
+            this.form.formItem =  this.infections
766
+            if (this.infections != null ){
767
+              if(this.infections.length > 0) {
768
+                this.form.record_date = uParseTime(this.infections[0].inspect_date, '{y}-{m}-{d}')
769
+                let select_options = ["阴性", "阳性", "弱阳性"]
770
+                for (let i = 0; i < this.infections.length; i++){
771
+                  this.infections[i]['select_options'] = select_options
772
+                  this.infections[i]['value'] = this.infections[i].inspect_value
773
+
774
+                }
775
+              }
776
+            }
777
+
778
+
779
+
652 780
             if (patietInfo.gender === 1 || patietInfo.gender === 2) {
653 781
               this.form.gender = patietInfo.gender
654 782
             }
@@ -1073,6 +1201,8 @@ export default {
1073 1201
       //    params.name =  this.patientPrint.name;
1074 1202
       this.$options.methods.qrcode(epatientID, ename, egender, eidCardNo, edialysisNo, ephone, eheathCareNo)// 调用生成二维码的方法
1075 1203
       // this.$options.methods.qrcode(params)
1204
+    },showInspectDialog(){
1205
+      this.dialogFormVisible = true
1076 1206
     },
1077 1207
 
1078 1208
     qrcode(patientID, name, gender, idCardNo, dialysisNo, phone, healthCareNo) {

+ 299 - 37
src/xt_pages/user/components/PatientForm.vue 查看文件

@@ -1,5 +1,45 @@
1 1
 <template>
2 2
   <div class="main-contain">
3
+    <el-dialog title="新增甲肝乙肝丙肝梅毒HIV" :visible.sync="dialogFormVisible" width="1000px" id="user-inspection-form" v-loading="formLoading">
4
+      <el-form :model="form"  ref="form" label-position="top">
5
+        <el-row >
6
+          <el-col :span="1">&nbsp;</el-col>
7
+
8
+          <template v-for="(item, index) in form.formItem" >
9
+            <el-col :span="7" :key="index">
10
+              <el-form-item :label="item.item_name" v-if="item.range_type==1"  :key="item.item_id" :prop="'formItem.' + index + '.value'"
11
+              >
12
+                <el-input placeholder="请填入" v-model="item.value" style="width:95%" type="number">
13
+                  <template slot="append">{{item.unit}}</template>
14
+                </el-input>
15
+              </el-form-item>
16
+              <el-form-item :label="item.item_name" v-else :key="item.item_id" :prop="'formItem.' + index + '.value'"
17
+              >
18
+                <el-select  v-model="item.value" placeholder="请选择" style="width:95%">
19
+                  <el-option
20
+                    v-for="(optionItem, oidex) in item.select_options"
21
+                    :key="oidex"
22
+                    :label="optionItem"
23
+                    :value="optionItem">
24
+                  </el-option>
25
+                </el-select>
26
+              </el-form-item>
27
+            </el-col>
28
+            <el-col :span="1" :key="'form-col'+index">&nbsp;</el-col>
29
+          </template>
30
+
31
+        </el-row>
32
+
33
+
34
+      </el-form>
35
+      <div slot="footer" class="dialog-footer">
36
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
37
+        <el-button type="primary"  @click="submitNew('form')">保 存</el-button>
38
+      </div>
39
+    </el-dialog>
40
+
41
+
42
+
3 43
     <div v-if="!isEdit" class="position">
4 44
       <bread-crumb :crumbs='crumbs'></bread-crumb>
5 45
       <div class="" style="float:right;color: white">
@@ -125,6 +165,65 @@
125 165
                   </el-radio-group>
126 166
                 </el-form-item>
127 167
               </el-col>
168
+
169
+              <el-col :span="24">
170
+                <el-form-item label="传染病 : " prop="contagions">
171
+                  <el-radio-group v-model="form.is_infectious">
172
+                    <el-radio :label="1">无</el-radio>
173
+                    <el-radio :label="2">有</el-radio>
174
+                  </el-radio-group>
175
+                  <el-checkbox-group v-model="form.contagions" v-if="form.is_infectious == '2'">
176
+                    <el-checkbox v-for="item in contagionList" v-if="item.type==2" :label="item.id" :key="item.id" name="contagions"
177
+                                 :value="item.id">{{item.name}}
178
+                    </el-checkbox>
179
+                  </el-checkbox-group>
180
+                </el-form-item>
181
+              </el-col>
182
+
183
+
184
+              <el-col :span="16" v-if="!isEdit">
185
+                <el-form-item label="检查结果日期 : "  >
186
+                  <!--<el-date-picker v-model="form.record_date" type="date" placeholder="选择日期" :suffix-icon="'el-icon-menu'"-->
187
+                                  <!--format="yyyy-MM-dd"-->
188
+                                  <!--style="width: 200px;"-->
189
+                                  <!--disabled-->
190
+                                  <!--value-format="yyyy-MM-dd" v-if="isEdit"></el-date-picker>-->
191
+
192
+                  <el-date-picker v-model="form.record_date" type="date" placeholder="选择日期" :suffix-icon="'el-icon-menu'"
193
+                                  format="yyyy-MM-dd"
194
+                                  style="width: 200px;"
195
+                                  value-format="yyyy-MM-dd" v-if="!isEdit"></el-date-picker>
196
+                  <el-button type="primary" @click="recordCheck()" v-if="!isEdit">录入检验检查</el-button>
197
+                  <!--<el-button type="primary"  v-if="isEdit">查看检验检查</el-button>-->
198
+
199
+
200
+                </el-form-item>
201
+
202
+              </el-col>
203
+
204
+              <el-col :span="24">
205
+                <el-form-item label="响应结果 : " >
206
+                  <el-input type="textarea" :rows="3" v-model="form.response_result" resize="none" placeholder=""></el-input>
207
+                </el-form-item>
208
+              </el-col>
209
+
210
+              <el-col :span="24">
211
+                <el-form-item label="传染病周期提醒: " >
212
+                  <el-radio-group v-model="form.remind_cycle" @change="changeCycle()">
213
+                    <el-radio :label="1">一月一次</el-radio>
214
+                    <el-radio :label="2">两月一次</el-radio>
215
+                    <el-radio :label="3">三月一次</el-radio>
216
+                    <el-radio :label="4">半年一次</el-radio>
217
+                    <el-radio :label="5">一年一次</el-radio>
218
+                  </el-radio-group>
219
+                </el-form-item>
220
+              </el-col>
221
+              <el-col :span="24">
222
+                <el-form-item label="诊断 : " prop="diagnose">
223
+                  <el-input type="textarea" :rows="3" v-model="form.diagnose" resize="none" placeholder=""></el-input>
224
+                </el-form-item>
225
+              </el-col>
226
+
128 227
               <el-col :span="8" :style="isEdit?'width:360px':''">
129 228
                 <el-form-item label="民族 : " prop="nation">
130 229
                   <el-input v-model="form.nation" maxlength="30"></el-input>
@@ -321,15 +420,15 @@
321 420
               <el-input type="textarea" :rows="3" v-model="form.remark" resize="none" placeholder=""></el-input>
322 421
             </el-form-item>
323 422
           </el-col>
324
-          <el-col :span="24">
325
-            <el-form-item label="传染病 : " prop="contagions">
326
-              <el-checkbox-group v-model="form.contagions">
327
-                <el-checkbox v-for="item in contagionList" v-if="item.type==2" :label="item.id" :key="item.id"
328
-                             :value="item.id">{{item.name}}
329
-                </el-checkbox>
330
-              </el-checkbox-group>
331
-            </el-form-item>
332
-          </el-col>
423
+          <!--<el-col :span="24">-->
424
+            <!--<el-form-item label="传染病 : " prop="checkContagions">-->
425
+              <!--<el-checkbox-group v-model="form.contagions">-->
426
+                <!--<el-checkbox v-for="item in contagionList" v-if="item.type==2" :label="item.id" :key="item.id"-->
427
+                             <!--:value="item.id">{{item.name}}-->
428
+                <!--</el-checkbox>-->
429
+              <!--</el-checkbox-group>-->
430
+            <!--</el-form-item>-->
431
+          <!--</el-col>-->
333 432
           <el-col :span="24">
334 433
             <el-form-item label="慢性病 : " prop="diseases">
335 434
               <el-checkbox-group v-model="form.diseases">
@@ -340,11 +439,7 @@
340 439
             </el-form-item>
341 440
           </el-col>
342 441
 
343
-          <el-col :span="24">
344
-            <el-form-item label="诊断 : " prop="diagnose">
345
-              <el-input type="textarea" :rows="3" v-model="form.diagnose" resize="none" placeholder=""></el-input>
346
-            </el-form-item>
347
-          </el-col>
442
+
348 443
 
349 444
           <div v-show="!treat_info_fold">
350 445
             <el-col :span="6" :style="isEdit?'width:360px':''">
@@ -473,7 +568,119 @@
473 568
     diseases: [],
474 569
     remark: '',
475 570
     diagnose: '',
571
+    is_infectious:1,
476 572
     age: '',
573
+    response_result:'',
574
+    remind_cycle:0,
575
+    record_date:'',
576
+    formItem:[
577
+      { id: 0,
578
+        item: "",
579
+        item_id: 104,
580
+        item_name: "甲型肝抗体测定(Anti-HAV:各种免疫方法)",
581
+        project_id: 14,
582
+        project_name: "甲肝乙肝丙肝梅毒HIV",
583
+        range_type: 2,
584
+        select_options: ["阴性", "阳性", "弱阳性"],
585
+        unit: "",
586
+        value: ""
587
+      },
588
+      { id: 0,
589
+        item: "",
590
+        item_id: 105,
591
+        item_name: "乙型肝炎表面抗原测定(HBsAg:酶标法)",
592
+        project_id: 14,
593
+        project_name: "甲肝乙肝丙肝梅毒HIV",
594
+        range_type: 2,
595
+        select_options: ["阴性", "阳性", "弱阳性"],
596
+        unit: "",
597
+        value: ""
598
+      },
599
+      { id: 0,
600
+        item: "",
601
+        item_id: 106,
602
+        item_name: "乙型肝炎表面抗体测定(Anti-HBs:酶标法)",
603
+        project_id: 14,
604
+        project_name: "甲肝乙肝丙肝梅毒HIV",
605
+        range_type: 2,
606
+        select_options: ["阴性", "阳性", "弱阳性"],
607
+        unit: "",
608
+        value: ""
609
+      },
610
+      { id: 0,
611
+        item: "",
612
+        item_id: 107,
613
+        item_name: "乙型肝炎e抗原测定(HBeAg:酶标法)",
614
+        project_id: 14,
615
+        project_name: "甲肝乙肝丙肝梅毒HIV",
616
+        range_type: 2,
617
+        select_options: ["阴性", "阳性", "弱阳性"],
618
+        unit: "",
619
+        value: ""
620
+      },{ id: 0,
621
+        item: "",
622
+        item_id: 108,
623
+        item_name: "乙型肝炎e抗体测定(Anti-Hbe:酶标法)",
624
+        project_id: 14,
625
+        project_name: "甲肝乙肝丙肝梅毒HIV",
626
+        range_type: 2,
627
+        select_options: ["阴性", "阳性", "弱阳性"],
628
+        unit: "",
629
+        value: ""
630
+      }, { id: 0,
631
+        item: "",
632
+        item_id: 109,
633
+        item_name: "乙型肝炎核心抗体测定(Anti-HBc)",
634
+        project_id: 14,
635
+        project_name: "甲肝乙肝丙肝梅毒HIV",
636
+        range_type: 2,
637
+        select_options: ["阴性", "阳性", "弱阳性"],
638
+        unit: "",
639
+        value: ""
640
+      },{ id: 0,
641
+        item: "",
642
+        item_id: 110,
643
+        item_name: "丙型肝炎抗体测定(Anti-HCV:定性)",
644
+        project_id: 14,
645
+        project_name: "甲肝乙肝丙肝梅毒HIV",
646
+        range_type: 2,
647
+        select_options: ["阴性", "阳性", "弱阳性"],
648
+        unit: "",
649
+        value: ""
650
+      },{ id: 0,
651
+        item: "",
652
+        item_id: 111,
653
+        item_name: "人类免疫缺陷病毒抗体测定(Anti-HIV)",
654
+        project_id: 14,
655
+        project_name: "甲肝乙肝丙肝梅毒HIV",
656
+        range_type: 2,
657
+        select_options: ["阴性", "阳性", "弱阳性"],
658
+        unit: "",
659
+        value: ""
660
+      },{ id: 0,
661
+        item: "",
662
+        item_id: 112,
663
+        item_name: "梅毒螺旋体特异抗体测定(凝集,印迹法)",
664
+        project_id: 14,
665
+        project_name: "甲肝乙肝丙肝梅毒HIV",
666
+        range_type: 2,
667
+        select_options: ["阴性", "阳性", "弱阳性"],
668
+        unit: "",
669
+        value: ""
670
+      },{ id: 0,
671
+        item: "",
672
+        item_id: 113,
673
+        item_name: "快速血浆反应素试验(RPR)",
674
+        project_id: 14,
675
+        project_name: "甲肝乙肝丙肝梅毒HIV",
676
+        range_type: 2,
677
+        select_options: ["阴性", "阳性", "弱阳性"],
678
+        unit: "",
679
+        value: ""
680
+      },
681
+
682
+    ],
683
+
477 684
 
478 685
     //  patientType: "",
479 686
     //   partition: "",
@@ -512,6 +719,14 @@
512 719
       }
513 720
     },
514 721
     data() {
722
+      var checkContagions = (rule, value, callback) => {
723
+        if(this.form.is_infectious == '2'&& value.length == 0){
724
+
725
+          return callback(new Error('至少选择一项传染病'))
726
+        }
727
+        callback()
728
+      }
729
+
515 730
       var checkPhone = (rule, value, callback) => {
516 731
         if (value.length == 0) {
517 732
           return callback(new Error('本人电话不能为空'))
@@ -571,12 +786,18 @@
571 786
         // rhOptions: null,
572 787
         checkDisease: null,
573 788
         contagionList: null,
789
+        dialogFormVisible:false,
574 790
         loading: null,
575 791
         submitMsg: '',
576 792
         patientID: 0,
793
+        formLoading:false,
794
+
577 795
 
578 796
         subscibe: {},
579 797
         rules: {
798
+          contagions: [
799
+            { type: 'array', required: true, trigger: 'change',validator: checkContagions }
800
+          ],
580 801
           patientType: [{ required: true, message: '请选择患者类型', trigger: 'blur' }],
581 802
           dialysisNo: [{ required: true, message: '请填写透析号', trigger: 'blur' }],
582 803
           phone: [{ validator: checkPhone, trigger: 'blur' }],
@@ -586,7 +807,8 @@
586 807
           gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
587 808
           idCardNo: [{ required: true, message: '请填写身份证号', trigger: 'blur' }],
588 809
           birth: [{ required: true, message: '请填写生日', trigger: 'blur' }],
589
-          age: [{ required: true, message: '请填写年龄', trigger: 'blur' }]
810
+          age: [{ required: true, message: '请填写年龄', trigger: 'blur' }],
811
+
590 812
 
591 813
           // homeTelephone: [{ validator: checkFamilyPhone, trigger: "blur" }],
592 814
           // homeAddress: [{ required: true, message: "请填写住址", trigger: "blur" }],
@@ -644,9 +866,29 @@
644 866
         this.submitMsg = '新增患者成功'
645 867
         this.form = Object.assign({}, defaultForm)
646 868
       }
869
+    },
870
+    watch:{
871
+      "form.record_date":function(val) {
872
+        console.log(val)
873
+        if(val == null || val == ''){
874
+          console.log("111111")
875
+          this.form.remind_cycle = ""
876
+        }
877
+      }
878
+
879
+
647 880
     },
648 881
     methods: {
882
+      recordCheck(){
883
+        if(this.form.record_date == ""){
884
+          this.$message.error('请先选择检验检查日期')
885
+          return
886
+        }else{
887
+          this.dialogFormVisible = true
888
+
889
+        }
649 890
 
891
+      },
650 892
       GetPatientTotal() {
651 893
         GetPatientTotal().then(response => {
652 894
           if (response.data.state == 1) {
@@ -696,6 +938,7 @@
696 938
         if (!this.formSubmit) {
697 939
           return false
698 940
         }
941
+
699 942
         this.$refs[formName].validate(valid => {
700 943
           if (valid) {
701 944
             this.formSubmit = false
@@ -732,27 +975,27 @@
732 975
               this.form.age = parseInt(this.form.age)
733 976
               createPatient(this.form)
734 977
                 .then(response => {
735
-                  if (response.data.state == 0) {
736
-                    this.$message.error(response.data.msg)
737
-                    this.formSubmit = true
738
-                    return false
739
-                  } else {
740
-                    this.formSubmit = true
741
-                    this.$notify({
742
-                      title: '成功',
743
-                      message: this.submitMsg,
744
-                      type: 'success',
745
-                      duration: 2000
746
-                    })
747
-                    this.$refs[formName].resetFields()
748
-                    this.$store.dispatch('SetSubscibePatients')
749
-                    var sub = this.$store.getters.xt_user.subscibe
750
-                    console.log(sub)
751
-                    if (action !== 'renew') {
752
-                      this.$router.back(-1)
753
-                    }
754
-                    return false
755
-                  }
978
+                  // if (response.data.state == 0) {
979
+                  //   this.$message.error(response.data.msg)
980
+                  //   this.formSubmit = true
981
+                  //   return false
982
+                  // } else {
983
+                  //   this.formSubmit = true
984
+                  //   this.$notify({
985
+                  //     title: '成功',
986
+                  //     message: this.submitMsg,
987
+                  //     type: 'success',
988
+                  //     duration: 2000
989
+                  //   })
990
+                  //   this.$refs[formName].resetFields()
991
+                  //   this.$store.dispatch('SetSubscibePatients')
992
+                  //   var sub = this.$store.getters.xt_user.subscibe
993
+                  //   console.log(sub)
994
+                  //   if (action !== 'renew') {
995
+                  //     this.$router.back(-1)
996
+                  //   }
997
+                  //   return false
998
+                  // }
756 999
                 })
757 1000
                 .catch(err => {
758 1001
                   this.$message.error('网络异常')
@@ -961,6 +1204,13 @@
961 1204
               this.form.sbp = patietInfo.sbp
962 1205
               this.form.dbp = patietInfo.dbp
963 1206
 
1207
+              this.form.response_result = patietInfo.response_result
1208
+              this.form.remind_cycle = patietInfo.remind_cycle
1209
+              this.form.is_infectious = patietInfo.is_infectious
1210
+
1211
+
1212
+
1213
+
964 1214
               if (patietInfo.age == 0) {
965 1215
                 this.form.age = jsGetAge(this.form.birth, '-')
966 1216
               } else {
@@ -1033,7 +1283,19 @@
1033 1283
             })
1034 1284
             this.$router.back(-1)
1035 1285
           })
1036
-      }
1286
+      },submitNew(formName){
1287
+        this.dialogFormVisible  = false
1288
+
1289
+      },changeCycle(val){
1290
+        if(!this.isEdit) {
1291
+          if (this.form.record_date == "" || this.form.record_date == null) {
1292
+            this.$message.error('请先选择检查结果日期')
1293
+            this.form.remind_cycle = ''
1294
+            return
1295
+          }
1296
+        }
1297
+      },
1298
+
1037 1299
       // fetchAllDoctorAndNurse() {
1038 1300
       // fetchAllDoctorAndNurse().then(response => {
1039 1301
       //   if (response.data.state == 1) {

+ 31 - 4
src/xt_pages/user/inspection.vue 查看文件

@@ -82,9 +82,23 @@
82 82
       </el-row>
83 83
     </div>
84 84
 
85
-    <el-dialog :title="formTitle" :visible.sync="dialogFormVisible" width="900px" id="user-inspection-form" v-loading="formLoading">
85
+    <el-dialog :title="formTitle" :visible.sync="dialogFormVisible" width="1000px" id="user-inspection-form" v-loading="formLoading">
86
+
86 87
       <el-form :model="form"  ref="form" label-position="top">
87
-        <el-row >
88
+
89
+        <el-row v-if="form.formItem[0].project_id == 14">
90
+          <el-col :span="24">
91
+            <el-form-item label="传染病周期提醒: " >
92
+              <el-radio-group v-model="form.remind_cycle">
93
+                <el-radio :label="1">一月一次</el-radio>
94
+                <el-radio :label="2">两月一次</el-radio>
95
+                <el-radio :label="3">三月一次</el-radio>
96
+                <el-radio :label="4">半年一次</el-radio>
97
+                <el-radio :label="5">一年一次</el-radio>
98
+              </el-radio-group>
99
+            </el-form-item>
100
+          </el-col>
101
+
88 102
           <el-col :span="7" >
89 103
             <el-form-item label="检验日期" prop="inspect_date" :rules="[
90 104
                   { required: true, message: '请输入检验日期', trigger: 'blur' },
@@ -161,7 +175,9 @@ export default {
161 175
       itemName:'请选择项目',
162 176
       formTitle:'',
163 177
       dialogFormVisible:false,
178
+      patient_info:null,
164 179
       form:{
180
+        remind_cycle:'',
165 181
         method:'add',
166 182
         project_id:0,
167 183
         inspect_date:'',
@@ -235,6 +251,8 @@ export default {
235 251
       this.formTitle = "修改" + this.project.project_name;
236 252
       this.form.project_id = this.project.project_id;
237 253
       this.form.inspect_date = this.itemDate;
254
+      this.form.remind_cycle = this.patient_info.remind_cycle
255
+      console.log(this.form.remind_cycle)
238 256
 
239 257
       this.form.formItem = [];
240 258
       for(var index in this.project.inspection_reference){
@@ -263,6 +281,7 @@ export default {
263 281
       this.form.method = "add";
264 282
       this.formTitle = "新增" + this.project.project_name;
265 283
       this.form.project_id = this.project.project_id;
284
+      this.form.remind_cycle = this.patient_info.remind_cycle
266 285
 
267 286
       var today = new Date();
268 287
       this.form.inspect_date = uParseTime(today, '{y}-{m}-{d}');
@@ -300,7 +319,7 @@ export default {
300 319
           for( var index in this.form.formItem) {
301 320
             this.form.formItem[index].value = '' + this.form.formItem[index].value;
302 321
           }
303
-          EditPatientInspection(this.patientID, this.form).then(response=>{
322
+          EditPatientInspection(this.patientID, this.form,this.form.remind_cycle).then(response=>{
304 323
             if (response.data.state==1) {
305 324
               this.$notify({
306 325
                 title: "成功",
@@ -308,6 +327,7 @@ export default {
308 327
                 type: "success",
309 328
                 duration: 2000
310 329
               });
330
+              this.patient_info.remind_cycle = response.data.data.remind_cycle
311 331
               this.itemDate = this.form.inspect_date;
312 332
               this.items=[];
313 333
               var inspections = response.data.data.inspections;
@@ -374,7 +394,7 @@ export default {
374 394
           for( var index in this.form.formItem) {
375 395
             this.form.formItem[index].value = '' + this.form.formItem[index].value;
376 396
           }
377
-          CreatePatientInspection(this.patientID, this.form).then(response=>{
397
+          CreatePatientInspection(this.patientID, this.form, this.form.remind_cycle).then(response=>{
378 398
             if (response.data.state==1) {
379 399
               this.$notify({
380 400
                 title: "成功",
@@ -382,6 +402,10 @@ export default {
382 402
                 type: "success",
383 403
                 duration: 2000
384 404
               });
405
+              // this.form.remind_reycle = response.data.data.remind_reycc
406
+              this.patient_info.remind_cycle = response.data.data.remind_cycle
407
+              console.log( this.patient_info.remind_cycle)
408
+
385 409
               this.itemDate = this.form.inspect_date;
386 410
               this.items=[];
387 411
               for( var index in this.projects) {
@@ -449,8 +473,11 @@ export default {
449 473
       fetchInspectionReference(this.patientID).then(response=>{
450 474
         if(response.data.state==1) {
451 475
           var reference = response.data.data.reference;
476
+          var patient_info = response.data.data.patient_info;
452 477
           this.projects = reference;
478
+          this.patient_info = patient_info;
453 479
           this.pageLoading = false;
480
+          this.form.remind_cycle = this.patient_info.remind_cycle
454 481
         }else {
455 482
           this.$message.error(response.data.msg);
456 483
           return false;

文件差異過大導致無法顯示
+ 1382 - 1093
src/xt_pages/workforce/components/tableData.vue


+ 219 - 111
src/xt_pages/workforce/components/tableWeeks.vue 查看文件

@@ -1,155 +1,263 @@
1 1
 <template>
2 2
   <div>
3
+    <div class="cell clearfix" style="float: right" >
4
+      <el-button style="float: right" size="small" icon="el-icon-printer" @click="printAction()" type="primary">打印
5
+      </el-button>
6
+    </div>
7
+
8
+    <div class="cell clearfix">
9
+      <label class="title">
10
+        <span class="name">时间</span> :
11
+      </label>
12
+      <div class="time">
13
+        <ul class>
14
+          <li
15
+            :class="item.id==week_type?'active':''"
16
+            @click="selectWeekType(item.id)"
17
+            v-for="item in weekArr"
18
+            :key="item.id"
19
+          >{{item.name}}
20
+          </li>
21
+        </ul>
22
+      </div>
23
+    </div>
3 24
     <el-table
4
-        :data="scheduleData"
5
-        border
6
-        :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
7
-        style="width: 100%">
8
-        <el-table-column prop="Monday" :label="'周一 (' + weekTitle[0] +')'" min-width="120" align="center">
9
-          <week-item slot-scope="scope" :schedule-detail="scope.row.Monday"></week-item>
10
-        </el-table-column>
11
-        <el-table-column prop="Tuesday" :label="'周二 (' + weekTitle[1] +')'" min-width="120" align="center">
12
-          <week-item slot-scope="scope" :schedule-detail="scope.row.Tuesday"></week-item>
13
-        </el-table-column>
14
-        <el-table-column prop="Wednesday" :label="'周三 (' + weekTitle[2] +')'" min-width="120" align="center">
15
-          <week-item slot-scope="scope" :schedule-detail="scope.row.Wednesday"></week-item>
16
-        </el-table-column>
17
-        <el-table-column prop="Thursday" :label="'周四 (' + weekTitle[3] +')'" min-width="120" align="center">
18
-          <week-item slot-scope="scope" :schedule-detail="scope.row.Thursday"></week-item>
19
-        </el-table-column>
20
-        <el-table-column prop="Friday" :label="'周五 (' + weekTitle[4] +')'" min-width="120" align="center">
21
-          <week-item slot-scope="scope" :schedule-detail="scope.row.Friday"></week-item>
22
-        </el-table-column>
23
-        <el-table-column prop="Saturday" :label="'周六 (' + weekTitle[5] +')'" min-width="120" align="center">
24
-          <week-item slot-scope="scope" :schedule-detail="scope.row.Saturday"></week-item>
25
-        </el-table-column>
26
-        <el-table-column prop="Sunday" :label="'周日 (' + weekTitle[6] +')'" min-width="120" align="center">
27
-          <week-item slot-scope="scope" :schedule-detail="scope.row.Sunday"></week-item>
28
-        </el-table-column>
25
+      :data="scheduleData"
26
+      border
27
+      :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
28
+      style="width: 100%">
29
+      <el-table-column label="姓名" min-width="120" align="center">
30
+        <template slot-scope="scope">
31
+          {{ scope.row.patient}}
32
+        </template>
33
+      </el-table-column>
34
+      <el-table-column label="分区" min-width="120" align="center">
35
+        <template slot-scope="scope">
36
+          {{scope.row.zone.name}}
37
+        </template>
38
+      </el-table-column>
39
+      <el-table-column label="班次" min-width="120" align="center">
40
+        <template slot-scope="scope">
41
+          {{getSchedulesType(scope.row.schedule_type)}}
42
+        </template>
43
+      </el-table-column>
44
+      <el-table-column label="机号" min-width="120" align="center">
45
+        <template slot-scope="scope">
46
+          {{scope.row.number.number}}
47
+        </template>
48
+      </el-table-column>
49
+      <el-table-column label="透析模式" min-width="120" align="center">
50
+        <template slot-scope="scope">
51
+          {{modeOptions[scope.row.mode_id].name}}
52
+        </template>
53
+      </el-table-column>
54
+      <el-table-column label="透析器" min-width="120" align="center">
55
+        <template slot-scope="scope">
56
+          {{scope.row.prescription.dialyzer_perfusion_apparatus}}
57
+        </template>
58
+      </el-table-column>
59
+      <el-table-column label="抗凝剂" min-width="120" align="center">
60
+        <template slot-scope="scope">
61
+          {{ scope.row.prescription.anticoagulant ? anticoagulants_confit[scope.row.prescription.anticoagulant].name :
62
+          ''}}
63
+        </template>
64
+      </el-table-column>
65
+      <el-table-column label="低分子肝素" min-width="120" align="center">
66
+        <template slot-scope="scope">
67
+          {{scope.row.prescription.anticoagulant_zongliang?scope.row.prescription.anticoagulant_zongliang:''}}
68
+        </template>
69
+      </el-table-column>
70
+      <el-table-column label="长期医嘱" min-width="120" align="center">
71
+        <template slot-scope="scope">
72
+        </template>
73
+      </el-table-column>
29 74
     </el-table>
30 75
   </div>
31 76
 </template>
32 77
 
33 78
 <script>
34
-import {getSchedules} from '@/api/schedule';
35
-import WeekItem from './WeekItem';
79
+  import { getSchedules, getScheduleWeekDay } from '@/api/schedule'
80
+  import WeekItem from './WeekItem'
36 81
 
37
-export default {
38
-    name:'tableWeeks',
82
+  export default {
83
+    name: 'tableWeeks',
39 84
     props: {
40 85
       weekTime: {
41 86
         type: String,
42
-        default: "thisWeek"
43
-      },
87
+        default: 'thisWeek'
88
+      }
44 89
     },
45 90
 
46 91
     data() {
47 92
       return {
48
-        weekTitle:["","","","","","",""],
49
-        weekData:{
50
-          Monday:[],
51
-          Tuesday:[],
52
-          Wednesday:[],
53
-          Thursday:[],
54
-          Friday:[],
55
-          Saturday:[],
56
-          Sunday:[],
93
+        weekArr: [
94
+          { id: 1, name: '周一' },
95
+          { id: 2, name: '周二' },
96
+          { id: 3, name: '周三' },
97
+          { id: 4, name: '周四' },
98
+          { id: 5, name: '周五' },
99
+          { id: 6, name: '周六' },
100
+          { id: 7, name: '周日' }
101
+        ],
102
+        anticoagulants_confit: null,
103
+
104
+        week_type: '1',
105
+        weekTitle: ['', '', '', '', '', '', ''],
106
+        weekData: {
107
+          Monday: [],
108
+          Tuesday: [],
109
+          Wednesday: [],
110
+          Thursday: [],
111
+          Friday: [],
112
+          Saturday: [],
113
+          Sunday: []
57 114
         },
58 115
         scheduleData: [],
59
-        modeOptions:null,
116
+        modeOptions: null
60 117
       }
61 118
     },
62
-    watch:{
63
-      weekTime:function(){
64
-        var theType = this.weekType(this.weekTime);
65
-        this.getSchedules(theType);
66
-      },
119
+    watch: {
120
+      weekTime: function() {
121
+        var theType = this.weekType(this.weekTime)
122
+        this.getSchedules(theType)
123
+      }
67 124
     },
68 125
 
69 126
     methods: {
70
-      getSchedules(weekType){
71
-        getSchedules(weekType).then(response=>{
72
-          this.scheduleData = [];
73
-          if(response.data.state==1){
74
-            this.weekTitle = response.data.data.weekTitle;
75
-            var theSchedules = response.data.data.schdules;
76
-            var that = this;
77
-            theSchedules.forEach(function (schedule){
78
-              schedule['mode_name'] =  typeof(that.modeOptions[schedule.mode_id]) == 'undefined' ? '' : that.modeOptions[schedule.mode_id].name;
79
-              var weekPath = that.weekPath(schedule.schedule_week);
80
-              if (weekPath.length>0) {
81
-                that.weekData[weekPath].push(schedule);
82
-              }
83
-            });
84
-            var rowNum = 0;
85
-            console.log(that.weekData);
86
-            for(var index in that.weekData){
87
-              var thisLen = that.weekData[index].length;
88
-              rowNum = rowNum>=thisLen?rowNum:thisLen;
89
-            }
90
-            console.log(rowNum);
91
-            for (let index = 0; index < rowNum; index++) {
92
-              var dataItem = {};
93
-              for(var weekIndex in that.weekData){
94
-                var weekItem = that.weekData[weekIndex].shift();
95
-                console.log("weekItem", weekItem);
96
-                if (typeof(weekItem) != 'undefined') {
97
-                  dataItem[weekIndex] = weekItem;
98
-                }
99
-              }
100
-              that.scheduleData.push(dataItem)
101
-            }
102
-
103
-            console.log(that.scheduleData);
127
+      printAction(){
128
+        console.log("111111")
129
+        this.$router.push({ path: '/schedule/remind/print?week_type=' + this.week_type })
104 130
 
105
-          }else {
106
-            this.$message.error("网络错误");
107
-            return false;
131
+      },
132
+      getScheduleWeekDay(weekType) {
133
+        getScheduleWeekDay(weekType).then(response => {
134
+          this.scheduleData = []
135
+          if (response.data.state == 1) {
136
+            this.scheduleData = response.data.data.schdules
137
+            console.log(this.scheduleData)
138
+          } else {
139
+            this.$message.error('网络错误')
140
+            return false
108 141
           }
109
-        });
142
+        })
110 143
       },
144
+
145
+      // getSchedules(weekType) {
146
+      //   getSchedules(weekType).then(response => {
147
+      //     this.scheduleData = []
148
+      //     if (response.data.state == 1) {
149
+      //       this.weekTitle = response.data.data.weekTitle
150
+      //       var theSchedules = response.data.data.schdules
151
+      //       var that = this
152
+      //       theSchedules.forEach(function(schedule) {
153
+      //         schedule['mode_name'] = typeof (that.modeOptions[schedule.mode_id]) == 'undefined' ? '' : that.modeOptions[schedule.mode_id].name
154
+      //         var weekPath = that.weekPath(schedule.schedule_week)
155
+      //         if (weekPath.length > 0) {
156
+      //           that.weekData[weekPath].push(schedule)
157
+      //         }
158
+      //       })
159
+      //       var rowNum = 0
160
+      //       console.log(that.weekData)
161
+      //       for (var index in that.weekData) {
162
+      //         var thisLen = that.weekData[index].length
163
+      //         rowNum = rowNum >= thisLen ? rowNum : thisLen
164
+      //       }
165
+      //       console.log(rowNum)
166
+      //       for (let index = 0; index < rowNum; index++) {
167
+      //         var dataItem = {}
168
+      //         for (var weekIndex in that.weekData) {
169
+      //           var weekItem = that.weekData[weekIndex].shift()
170
+      //           console.log('weekItem', weekItem)
171
+      //           if (typeof (weekItem) != 'undefined') {
172
+      //             dataItem[weekIndex] = weekItem
173
+      //           }
174
+      //         }
175
+      //         that.scheduleData.push(dataItem)
176
+      //       }
177
+      //
178
+      //       console.log(that.scheduleData)
179
+      //
180
+      //     } else {
181
+      //       this.$message.error('网络错误')
182
+      //       return false
183
+      //     }
184
+      //   })
185
+      // },
111 186
       weekType(weekTime) {
112
-        var theType = 2;
187
+        var theType = 2
113 188
         switch (weekTime) {
114 189
           case 'lastWeek':
115
-            theType = 1;
116
-            break;
190
+            theType = 1
191
+            break
117 192
           case 'thisWeek':
118
-            theType = 2;
119
-            break;
193
+            theType = 2
194
+            break
120 195
           case 'nextWeek':
121
-            theType = 3;
122
-            break;
196
+            theType = 3
197
+            break
123 198
           case 'nextTwoWeek':
124
-            theType = 4;
125
-            break;
199
+            theType = 4
200
+            break
126 201
           default:
127
-            theType = 2;
128
-            break;
202
+            theType = 2
203
+            break
129 204
         }
130
-        return theType;
131
-      },
132
-      weekPath(week){
133
-        var weekArr = {1:'Monday',2:'Tuesday',3:'Wednesday',4:'Thursday',5:'Friday',6:'Saturday',7:"Sunday"};
134
-        if (typeof(weekArr[week]) == "undefined") {
135
-          return "";
136
-        } 
137
-        return weekArr[week];
205
+        return theType
138 206
       },
207
+      weekPath(week) {
208
+        var weekArr = {
209
+          1: 'Monday',
210
+          2: 'Tuesday',
211
+          3: 'Wednesday',
212
+          4: 'Thursday',
213
+          5: 'Friday',
214
+          6: 'Saturday',
215
+          7: 'Sunday'
216
+        }
217
+        if (typeof (weekArr[week]) == 'undefined') {
218
+          return ''
219
+        }
220
+        return weekArr[week]
221
+      }, selectWeekType(type) {
222
+        this.week_type = type
223
+        let params = {
224
+          week_type: this.week_type
225
+        }
226
+        this.getScheduleWeekDay(params)
227
+      }, getSchedulesType: function(type) {
228
+        let type_name = ''
229
+        switch (type) {
230
+          case 1:
231
+            type_name = '上午'
232
+            break
233
+          case 2:
234
+            type_name = '下午'
235
+            break
236
+          case 3:
237
+            type_name = '晚上'
238
+            break
239
+        }
240
+        return type_name
241
+      }
139 242
     },
140
-    components:{
243
+    components: {
141 244
       WeekItem
142 245
     },
143
-    created(){
144
-      this.modeOptions = this.$store.getters.treatment_mode;
145
-        var theType = this.weekType(this.weekTime);
146
-        this.getSchedules(theType);
147
-    },
148
-}
246
+    created() {
247
+      this.modeOptions = this.$store.getters.treatment_mode
248
+      this.anticoagulants_confit = this.$store.getters.anticoagulants_confit
249
+
250
+      this.week_type = new Date().getDay()
251
+      let params = {
252
+        week_type: this.week_type
253
+      }
254
+      this.getScheduleWeekDay(params)
255
+    }
256
+  }
149 257
 </script>
150 258
 
151 259
 <style rel="stylesheet/css" lang="scss" scoped>
152 260
 
153
-    
261
+
154 262
 </style>
155 263
 

+ 6 - 4
src/xt_pages/workforce/remind.vue 查看文件

@@ -2,15 +2,17 @@
2 2
 <div class="main-contain">
3 3
   <div class="position">
4 4
      <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+
5 6
   </div>
6 7
   <div class="app-container">
8
+
7 9
     <el-tabs v-model="activeName"  ref="elTabs">
8 10
         <el-tab-pane name="thisWeek">
9 11
             <span slot="label"><i class="el-icon-date"></i> 本周({{theWeek.thisWeek}})</span>
10 12
         </el-tab-pane>
11
-        <el-tab-pane name="nextWeek">
12
-            <span slot="label"><i class="el-icon-date"></i> 下周({{theWeek.nextWeek}})</span>
13
-        </el-tab-pane>
13
+        <!--<el-tab-pane name="nextWeek">-->
14
+            <!--<span slot="label"><i class="el-icon-date"></i> 下周({{theWeek.nextWeek}})</span>-->
15
+        <!--</el-tab-pane>-->
14 16
     </el-tabs>
15 17
     <table-push v-if="activeName=='pushTime'"></table-push>
16 18
     <table-weeks v-else :week-time="activeName"> </table-weeks>
@@ -49,7 +51,7 @@ export default {
49 51
           }
50 52
           this.theWeek.thisWeek = response.data.data.theWeek;
51 53
           this.theWeek.nextWeek = this.theWeek.thisWeek+1;
52
-          
54
+
53 55
           let childrenRefs = this.$refs.elTabs.$children
54 56
           this.$nextTick(() => {
55 57
             childrenRefs.forEach(child => child.$forceUpdate())

+ 224 - 0
src/xt_pages/workforce/remind_print.vue 查看文件

@@ -0,0 +1,224 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+      <el-row style="float:right;">
6
+        <el-col :span="24">
7
+          <el-button size="small" icon="el-icon-printer" type="primary" @click="printAction">打印</el-button>
8
+        </el-col>
9
+      </el-row>
10
+    </div>
11
+    <div class="app-container" style="background-color: white;">
12
+
13
+      <div id="print_content">
14
+        <div class="print_main_content">
15
+          <div class="order_title_panl">
16
+            <span class="main_title"></span>
17
+          </div>
18
+          <div class="table_panel">
19
+            <table class="table">
20
+              <thead>
21
+              <tr>
22
+                <td :width="td_1_width">姓名</td>
23
+                <td :width="td_2_width">分区</td>
24
+                <td :width="td_3_width">班次</td>
25
+                <td :width="td_3_width">机号</td>
26
+                <td :width="td_3_width">透析模式</td>
27
+                <td :width="td_3_width">透析器</td>
28
+                <td :width="td_3_width">抗凝剂</td>
29
+                <td :width="td_3_width">低分子肝素</td>
30
+                <td :width="td_3_width">长期医嘱</td>
31
+              </tr>
32
+              </thead>
33
+              <tbody>
34
+              <tr v-for="(main_collection, index) in scheduleData" :key="index">
35
+                <td :width="td_1_width">{{ main_collection.patient}}</td>
36
+                <td :width="td_2_width">{{ main_collection.zone.name }}</td>
37
+                <td :width="td_3_width">
38
+                  {{getSchedulesType(main_collection.schedule_type)}}
39
+                </td>
40
+                <td :width="td_3_width">
41
+                  {{main_collection.number.number}}
42
+
43
+                </td>
44
+                <td :width="td_3_width">
45
+                  {{modeOptions[main_collection.mode_id].name}}
46
+                </td>
47
+                <td :width="td_3_width">
48
+                  {{main_collection.prescription.dialyzer_perfusion_apparatus}}
49
+
50
+
51
+                </td>
52
+                <td :width="td_3_width">
53
+                  {{main_collection.prescription.anticoagulant ? anticoagulants_confit[main_collection.prescription.anticoagulant].name : ''}}
54
+
55
+                </td>
56
+                <td :width="td_3_width">
57
+                  {{main_collection.prescription.anticoagulant_zongliang?main_collection.prescription.anticoagulant_zongliang:''}}
58
+                </td>
59
+                <td :width="td_4_width" >
60
+
61
+                </td>
62
+
63
+              </tr>
64
+              </tbody>
65
+            </table>
66
+          </div>
67
+        </div>
68
+      </div>
69
+    </div>
70
+  </div>
71
+</template>
72
+
73
+<script>
74
+  import { getScheduleWeekDay } from '@/api/schedule'
75
+  import { parseTime } from '@/utils'
76
+  import BreadCrumb from '@/xt_pages/components/bread-crumb'
77
+  import print from 'print-js'
78
+
79
+  export default {
80
+    name: 'SchedulePrint',
81
+    data() {
82
+      return {
83
+        crumbs: [
84
+          { path: false, name: '排班提醒' },
85
+          { path: false, name: '排班提醒打印' }
86
+        ],
87
+        scheduleData:[],
88
+        week_type: 0,
89
+        td_1_width: '10%',
90
+        td_2_width: '10%',
91
+        td_3_width: '25%',
92
+        td_4_width: '35%',
93
+        modeOptions: null,
94
+        anticoagulants_confit:null,
95
+      }
96
+    },
97
+    components: {
98
+      BreadCrumb
99
+    },
100
+    created() {
101
+
102
+      this.modeOptions = this.$store.getters.treatment_mode
103
+      this.anticoagulants_confit = this.$store.getters.anticoagulants_confit
104
+      this.week_type = this.$route.query.week_type
105
+
106
+
107
+
108
+      getScheduleWeekDay({week_type: this.week_type}).then(rs => {
109
+        var resp = rs.data
110
+        if (resp.state == 1) {
111
+          this.scheduleData = resp.data.schdules
112
+        } else {
113
+          this.$message.error(resp.msg)
114
+        }
115
+      }).catch(err => {
116
+        this.$message.error(err)
117
+      })
118
+    },
119
+    methods: {
120
+      printAction: function() {
121
+        const style = '@media print { .print_main_content { background-color: white; width:960px;  margin:0 auto; padding: 0 0 20px 0; } .order_title_panl { text-align: center; } .main_title { font-size: 18px; line-height: 40px; font-weight: 500; } .table_panel { } .table { width: 100%; border: 1px solid; border-collapse: collapse; padding: 2px; } thead tr td { border: 1px solid; text-align: center; font-size: 20px; padding: 15px 5px; } tbody tr td { border: 1px solid; text-align: center; font-size: 18px; padding: 10px 5px; } .proj { padding: 5px 0; text-align: left; } .proj_title { font-size: 16px; font-weight: 500; line-height: 25px; } .proj_item { font-size: 15px; line-height: 20px; } .zone_name { font-weight: 500; } }'
122
+
123
+        printJS({
124
+          printable: 'print_content',
125
+          type: 'html',
126
+          documentTitle: '  ',
127
+          style: style,
128
+          scanStyles: false
129
+        })
130
+      }, getSchedulesType: function(type) {
131
+        let type_name = ''
132
+        switch (type) {
133
+          case 1:
134
+            type_name = '上午'
135
+            break
136
+          case 2:
137
+            type_name = '下午'
138
+            break
139
+          case 3:
140
+            type_name = '晚上'
141
+            break
142
+        }
143
+        return type_name
144
+      }
145
+    }
146
+  }
147
+</script>
148
+
149
+<style rel="stylesheet/scss" lang="scss" scoped>
150
+  .print_main_content {
151
+    background-color: white;
152
+    width: 960px;
153
+    margin: 0 auto;
154
+    padding: 0 0 20px 0;
155
+
156
+  .order_title_panl {
157
+    text-align: center;
158
+
159
+  .main_title {
160
+    font-size: 18px;
161
+    line-height: 40px;
162
+    font-weight: 500;
163
+  }
164
+
165
+  }
166
+  .table_panel {
167
+
168
+  .table {
169
+    width: 100%;
170
+    border: 1px solid;
171
+    border-collapse: collapse;
172
+    padding: 2px;
173
+
174
+  thead {
175
+
176
+  tr {
177
+
178
+  td {
179
+    border: 1px solid;
180
+    text-align: center;
181
+    font-size: 20px;
182
+    padding: 15px 5px;
183
+  }
184
+
185
+  }
186
+  }
187
+  tbody {
188
+
189
+  tr {
190
+
191
+  td {
192
+    border: 1px solid;
193
+    text-align: center;
194
+    font-size: 18px;
195
+    padding: 10px 5px;
196
+
197
+  .proj {
198
+    padding: 5px 0;
199
+    text-align: left;
200
+
201
+  .proj_title {
202
+    font-size: 16px;
203
+    font-weight: 500;
204
+    line-height: 25px;
205
+  }
206
+
207
+  .proj_item {
208
+    font-size: 15px;
209
+    line-height: 20px;
210
+
211
+  .zone_name {
212
+    font-weight: 500;
213
+  }
214
+
215
+  }
216
+  }
217
+  }
218
+  }
219
+  }
220
+  }
221
+  }
222
+  }
223
+</style>
224
+