seimin hai 1 ano
pai
achega
05eae7070a
Modificáronse 33 ficheiros con 2410 adicións e 156 borrados
  1. 1 0
      App.vue
  2. 42 10
      components/bigScreen/bigScreen.vue
  3. 1 1
      components/handViewBlood/handViewBlood.vue
  4. 1 1
      components/handViewSpecimen/handViewSpecimen.vue
  5. 42 14
      components/selectAccount/selectAccount.vue
  6. 8 9
      components/smallScreen/smallScreen.vue
  7. 5 1
      main.js
  8. 24 0
      pages.json
  9. 8 9
      pages/checkAfterBigScreen/checkAfterBigScreen.vue
  10. 581 0
      pages/endOrderSignBlood/endOrderSignBlood.vue
  11. 8 9
      pages/otherCompleteOrder/otherCompleteOrder.vue
  12. 1 2
      pages/pharmacyDetails/pharmacyDetails.vue
  13. 8 9
      pages/receipt_infopage/receipt_infopage.vue
  14. 8 9
      pages/receiptpage/receiptpage.vue
  15. 8 9
      pages/scanning_B/scanning_B.vue
  16. 1 1
      pages/scanning_Result/scanning_Result.vue
  17. 89 46
      pages/scanning_all/scanning_all.vue
  18. 1 1
      pages/scanning_code/scanning_code.vue
  19. 3 3
      pages/scanning_djEnd/scanning_djEnd.vue
  20. 2 2
      pages/scanning_djInfo/scanning_djInfo.vue
  21. 9 10
      pages/scanning_drug/scanning_drug.vue
  22. 1 1
      pages/scanning_result_seimin/scanning_result_seimin.vue
  23. 8 9
      pages/specimenCheckingDetail/specimenCheckingDetail.vue
  24. 356 0
      pages/startOrderSignBlood/startOrderSignBlood.vue
  25. 340 0
      pages/startOrderSignBloodDetail/startOrderSignBloodDetail.vue
  26. 539 0
      static/newIcon/demo.css
  27. 257 0
      static/newIcon/demo_index.html
  28. 27 0
      static/newIcon/iconfont.css
  29. 1 0
      static/newIcon/iconfont.js
  30. 30 0
      static/newIcon/iconfont.json
  31. BIN=BIN
      static/newIcon/iconfont.ttf
  32. BIN=BIN
      static/newIcon/iconfont.woff
  33. BIN=BIN
      static/newIcon/iconfont.woff2

+ 1 - 0
App.vue

@@ -83,6 +83,7 @@
83 83
 
84 84
 <style>
85 85
   @import url("./static/font/iconfont.css");
86
+  @import url("@/static/newIcon/iconfont.css");
86 87
   @import url("/node_modules/spinkit/spinkit.css");
87 88
 
88 89
   /*每个页面公共css */

+ 42 - 10
components/bigScreen/bigScreen.vue

@@ -2,8 +2,8 @@
2 2
   <view class="toolbar" @click="Scanning()" hover-class="seimin-btn-hover">
3 3
     <text class="toolbar-icon icon_transport transport-saoma"></text>
4 4
     <text class="toolbar-sao">扫一扫</text>
5
-    <!-- 填写交接人号弹窗 -->
6
-    <selectAccount @click.stop.native v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
5
+    <!-- 填写交接人号弹窗 -->
6
+    <selectAccount @click.stop.native v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
7 7
       @cancel="hosCancel">
8 8
     </selectAccount>
9 9
   </view>
@@ -17,7 +17,7 @@
17 17
   export default {
18 18
     data() {
19 19
       return {
20
-        // 填写交接人号弹窗model
20
+        // 填写交接人号弹窗model
21 21
         hosModels: {
22 22
           disjunctor: false,
23 23
         },
@@ -34,7 +34,7 @@
34 34
       }
35 35
     },
36 36
     methods: {
37
-      // 填写交接人号-确认
37
+      // 填写交接人号-确认
38 38
       hosOk(data) {
39 39
         console.log(data);
40 40
         const {
@@ -46,7 +46,7 @@
46 46
           //没有填写交接人
47 47
           uni.showModal({
48 48
             title: "提示",
49
-            content: "请填写交接人号!",
49
+            content: "请填写交接人号!",
50 50
             showCancel: false,
51 51
             success: function(res) {
52 52
               if (res.confirm) {
@@ -61,7 +61,7 @@
61 61
           //没有填写交接人
62 62
           uni.showModal({
63 63
             title: "提示",
64
-            content: "请填写正确的交接人号!",
64
+            content: "请填写正确的交接人号!",
65 65
             showCancel: false,
66 66
             success: function(res) {
67 67
               if (res.confirm) {
@@ -76,15 +76,14 @@
76 76
         this.hosModels.disjunctor = false;
77 77
         this.orderDeptHandler(false, data);
78 78
       },
79
-      // 填写交接人号-取消
79
+      // 填写交接人号-取消
80 80
       hosCancel() {
81 81
         this.hosModels.disjunctor = false;
82 82
         this.flag = true;
83 83
       },
84
-      // 填写交接人号弹窗
84
+      // 填写交接人号弹窗
85 85
       showSelectAccount() {
86 86
         this.hosModels = {
87
-          title: "填写交接人账号",
88 87
           disjunctor: true,
89 88
         };
90 89
       },
@@ -269,7 +268,7 @@
269 268
                           uni.navigateTo({
270 269
                             url: `../scanning_all/scanning_all?infoDATA=${encodeURIComponent(
271 270
                             JSON.stringify(infoDATA)
272
-                          )}&code=${data.code}&deptName=${res.deptName}`,
271
+                          )}&code=${data.code}&deptName=${res.deptName}&deptId=${res.deptId}`,
273 272
                           });
274 273
                         }
275 274
                       } else if (res.type == 'drugsBag') {
@@ -335,6 +334,39 @@
335 334
                             }
336 335
                           },
337 336
                         });
337
+                      } else if (res.type == 'bloodTake') {
338
+                        if(res.data){
339
+                          //新血制品-扫科室
340
+                          uni.navigateTo({
341
+                            url: `/pages/startOrderSignBlood/startOrderSignBlood?deptId=${res.deptId}&deptName=${res.deptName}&taskTypeId=${res.taskTypeId}`,
342
+                          });
343
+                        }else{
344
+                          // 走type是dept的流程
345
+                          // 扫描科室码
346
+                          // code: data.code //二维码
347
+                          let infoDATA = res.data;
348
+                          console.log(infoDATA)
349
+                          // 判断是否是标本配送,并且仅仅只有这一种业务类型,默认全选,并跳转到下一步;
350
+                          // 判断是否是标本轮巡 ,并且仅仅只有这一种业务类型,并且只有一个工单,默认选中,并跳转到下一步;
351
+                          if(Object.keys(infoDATA).length === 1 && (infoDATA.specimen || (infoDATA.specimenPlan && infoDATA.specimenPlan.length === 1))){
352
+                            this.infoDATA = infoDATA;
353
+                            this.workData = infoDATA.specimen || infoDATA.specimenPlan;
354
+                            this.tabType = infoDATA.specimen ? 'specimen' : 'specimenPlan';
355
+                            this.code = data.code;
356
+                            this.selectArr = [];
357
+                            for (var i = 0; i < this.workData.length; i++) {
358
+                              this.selectArr.push(this.workData[i].id);
359
+                            }
360
+                            this.userId.ids = this.selectArr;
361
+                            this.orderDeptHandler(true);
362
+                          }else{
363
+                            uni.navigateTo({
364
+                              url: `../scanning_all/scanning_all?infoDATA=${encodeURIComponent(
365
+                              JSON.stringify(infoDATA)
366
+                            )}&code=${data.code}&deptName=${res.deptName}&deptId=${res.deptId}`,
367
+                            });
368
+                          }
369
+                        }
338 370
                       }
339 371
                     } else {
340 372
                       uni.navigateTo({

+ 1 - 1
components/handViewBlood/handViewBlood.vue

@@ -106,7 +106,7 @@
106 106
         hosId: null,
107 107
         timer: null,
108 108
         spe: {}, //标本对象
109
-        account: '', //交接人
109
+        account: '', //交接人
110 110
         accountName: '', //交接人姓名
111 111
         accountId: '' //交接人ID
112 112
       };

+ 1 - 1
components/handViewSpecimen/handViewSpecimen.vue

@@ -106,7 +106,7 @@
106 106
         hosId: null,
107 107
         timer: null,
108 108
         spe: {}, //标本对象
109
-        account: '', //交接人
109
+        account: '', //交接人
110 110
         accountName: '', //交接人姓名
111 111
         accountId: '' //交接人ID
112 112
       };

+ 42 - 14
components/selectAccount/selectAccount.vue

@@ -1,22 +1,47 @@
1 1
 <template>
2 2
   <view class="changeHospital" v-show="disjunctor">
3 3
     <view class="changeHospital__wrap">
4
-      <view class="changeHospital__header" v-if="title">
5
-        {{ title }}
4
+      <view class="changeHospital__header">
5
+        提示
6 6
       </view>
7 7
       <view class="changeHospital__article">
8
+        <view class="uni-list-cell content" v-show="content">
9
+          {{content}}
10
+        </view>
8 11
         <view class="uni-list-cell">
9 12
           <view class="uni-list-cell-left">
10
-            {{name}}账号:
13
+            输入工号:
11 14
           </view>
12 15
           <view class="uni-list-cell-db">
13
-            <input class="uni-input" auto-focus="true" :placeholder="'请填写'+name+'账号'" v-model="account"
16
+            <input class="uni-input" auto-focus="true" placeholder="请输入工号" v-model="account"
14 17
               @input="bindPickerChange($event)" />
15 18
           </view>
16 19
         </view>
17 20
         <view class="uni-list-cell">
18 21
           <view class="uni-list-cell-left">
19
-            {{name}}姓名:
22
+            人员工号:
23
+          </view>
24
+          <view class="uni-list-cell-db-text">
25
+            <text v-show="!loading">{{ accountName ? account : "无" }}</text>
26
+            <view class="sk-circle" v-show="loading">
27
+              <view class="sk-circle-dot"></view>
28
+              <view class="sk-circle-dot"></view>
29
+              <view class="sk-circle-dot"></view>
30
+              <view class="sk-circle-dot"></view>
31
+              <view class="sk-circle-dot"></view>
32
+              <view class="sk-circle-dot"></view>
33
+              <view class="sk-circle-dot"></view>
34
+              <view class="sk-circle-dot"></view>
35
+              <view class="sk-circle-dot"></view>
36
+              <view class="sk-circle-dot"></view>
37
+              <view class="sk-circle-dot"></view>
38
+              <view class="sk-circle-dot"></view>
39
+            </view>
40
+          </view>
41
+        </view>
42
+        <view class="uni-list-cell">
43
+          <view class="uni-list-cell-left">
44
+            人员姓名:
20 45
           </view>
21 46
           <view class="uni-list-cell-db-text">
22 47
             <text v-show="!loading">{{ accountName || "无" }}</text>
@@ -61,7 +86,7 @@
61 86
         userData: null,
62 87
         hosId: null,
63 88
         timer: null,
64
-        account: '', //交接人
89
+        account: '', //交接人
65 90
         accountName: '', //交接人姓名
66 91
         accountId: '' //交接人ID
67 92
       };
@@ -86,25 +111,21 @@
86 111
         type: Boolean,
87 112
         default: false,
88 113
       },
89
-      // 标题
90
-      title: {
114
+      // 提示内容
115
+      content: {
91 116
         type: String,
92
-        default: "提示",
117
+        default: "",
93 118
       },
94 119
       // 操作按钮文字
95 120
       operate: {
96 121
         type: Object,
97 122
         default: () => {
98 123
           return {
99
-            ok: "确",
124
+            ok: "确",
100 125
             cancel: "取消",
101 126
           };
102 127
         },
103 128
       },
104
-      name: {
105
-        type: String,
106
-        default: '交接人'
107
-      }
108 129
     },
109 130
     methods: {
110 131
       //修改picker的值
@@ -180,6 +201,13 @@
180 201
       align-items: center;
181 202
       text-align: center;
182 203
       margin-top: 32rpx;
204
+      
205
+      &.content{
206
+        justify-content: center;
207
+        color: #000;
208
+        margin-top: 0;
209
+        font-weight: bold;
210
+      }
183 211
 
184 212
       .uni-list-cell-left {
185 213
         flex: 3;

+ 8 - 9
components/smallScreen/smallScreen.vue

@@ -3,8 +3,8 @@
3 3
     <view class="smallScreen_scan" @click="getInspectAndPatientTransform(sData,sType)">
4 4
       <slot></slot>
5 5
     </view>
6
-    <!-- 填写交接人号弹窗 -->
7
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
6
+    <!-- 填写交接人号弹窗 -->
7
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
8 8
       @cancel="hosCancel">
9 9
     </selectAccount>
10 10
     <!-- 弹窗 -->
@@ -32,7 +32,7 @@
32 32
         hosId: uni.getStorageSync("userData").user.currentHospital.id,
33 33
         currentCode: '', //当前小扫描的科室二维码
34 34
         currentData: {}, //当前小扫描的工单对象
35
-        // 填写交接人号弹窗model
35
+        // 填写交接人号弹窗model
36 36
         hosModels: {
37 37
           disjunctor: false,
38 38
         },
@@ -388,7 +388,7 @@
388 388
           this.SMFlag = true;
389 389
         });
390 390
       },
391
-      // 填写交接人号-确认
391
+      // 填写交接人号-确认
392 392
       hosOk(data) {
393 393
         console.log(data);
394 394
         const {
@@ -400,7 +400,7 @@
400 400
           //没有填写交接人
401 401
           uni.showModal({
402 402
             title: '提示',
403
-            content: "请填写交接人号!",
403
+            content: "请填写交接人号!",
404 404
             showCancel: false,
405 405
             success: function(res) {
406 406
               if (res.confirm) {
@@ -415,7 +415,7 @@
415 415
           //没有填写交接人
416 416
           uni.showModal({
417 417
             title: '提示',
418
-            content: "请填写正确的交接人号!",
418
+            content: "请填写正确的交接人号!",
419 419
             showCancel: false,
420 420
             success: function(res) {
421 421
               if (res.confirm) {
@@ -446,14 +446,13 @@
446 446
           this.isOpenTransportationProcessRemarks(this.currentData, data, 'nextDeptOrder_ss');
447 447
         }
448 448
       },
449
-      // 填写交接人号-取消
449
+      // 填写交接人号-取消
450 450
       hosCancel() {
451 451
         this.hosModels.disjunctor = false;
452 452
       },
453
-      // 填写交接人号弹窗
453
+      // 填写交接人号弹窗
454 454
       showSelectAccount() {
455 455
         this.hosModels = {
456
-          title: '填写交接人账号',
457 456
           disjunctor: true,
458 457
         }
459 458
       },

+ 5 - 1
main.js

@@ -44,7 +44,11 @@ Date.prototype.Format = function (fmt) {
44 44
 // 日期过滤器
45 45
 Vue.filter('formatDate', function(timestamp, format){
46 46
   console.log(timestamp, format);
47
-  return new Date(timestamp).Format(format);
47
+  if(timestamp){
48
+    return new Date(timestamp).Format(format);
49
+  }else{
50
+    return '';
51
+  }
48 52
 })
49 53
 App.mpType = 'app'
50 54
 

+ 24 - 0
pages.json

@@ -444,6 +444,30 @@
444 444
         }
445 445
       }
446 446
 
447
+    }, {
448
+      "path": "pages/startOrderSignBlood/startOrderSignBlood",
449
+      "style": {
450
+        "h5": {
451
+          "titleNView": false
452
+        }
453
+      }
454
+    },
455
+    {
456
+      "path": "pages/startOrderSignBloodDetail/startOrderSignBloodDetail",
457
+      "style": {
458
+        "h5": {
459
+          "titleNView": false
460
+        }
461
+      }
462
+
463
+    }, {
464
+      "path": "pages/endOrderSignBlood/endOrderSignBlood",
465
+      "style": {
466
+        "h5": {
467
+          "titleNView": false
468
+        }
469
+      }
470
+
447 471
     }
448 472
   ],
449 473
   "globalStyle": {

+ 8 - 9
pages/checkAfterBigScreen/checkAfterBigScreen.vue

@@ -29,8 +29,8 @@
29 29
       <view class="btn1" @click="allStart()">核对完成</view>
30 30
       <view class="btn3" @click="goBack">取消</view>
31 31
     </view>
32
-    <!-- 填写交接人号弹窗 -->
33
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
32
+    <!-- 填写交接人号弹窗 -->
33
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
34 34
       @cancel="hosCancel">
35 35
     </selectAccount>
36 36
   </view>
@@ -45,7 +45,7 @@
45 45
   export default {
46 46
     data() {
47 47
       return {
48
-        // 填写交接人号弹窗model
48
+        // 填写交接人号弹窗model
49 49
         hosModels: {
50 50
           disjunctor: false,
51 51
         },
@@ -54,7 +54,7 @@
54 54
       };
55 55
     },
56 56
     methods: {
57
-      // 填写交接人号-确认
57
+      // 填写交接人号-确认
58 58
       hosOk(data) {
59 59
         console.log(data);
60 60
         const {
@@ -66,7 +66,7 @@
66 66
           //没有填写交接人
67 67
           uni.showModal({
68 68
             title: "提示",
69
-            content: "请填写交接人号!",
69
+            content: "请填写交接人号!",
70 70
             showCancel: false,
71 71
             success: function(res) {
72 72
               if (res.confirm) {
@@ -81,7 +81,7 @@
81 81
           //没有填写交接人
82 82
           uni.showModal({
83 83
             title: "提示",
84
-            content: "请填写正确的交接人号!",
84
+            content: "请填写正确的交接人号!",
85 85
             showCancel: false,
86 86
             success: function(res) {
87 87
               if (res.confirm) {
@@ -96,14 +96,13 @@
96 96
         this.hosModels.disjunctor = false;
97 97
         this.orderDeptHandler(false, data);
98 98
       },
99
-      // 填写交接人号-取消
99
+      // 填写交接人号-取消
100 100
       hosCancel() {
101 101
         this.hosModels.disjunctor = false;
102 102
       },
103
-      // 填写交接人号弹窗
103
+      // 填写交接人号弹窗
104 104
       showSelectAccount() {
105 105
         this.hosModels = {
106
-          title: "填写交接人账号",
107 106
           disjunctor: true,
108 107
         };
109 108
       },

+ 581 - 0
pages/endOrderSignBlood/endOrderSignBlood.vue

@@ -0,0 +1,581 @@
1
+<template>
2
+  <view class="Scanning_Result">
3
+    <view class="Scanning_top_top">
4
+      <view class="Scanning_top_icon">
5
+        <text class="cubeic-ok icon_transport transport-duigou"></text>
6
+      </view>
7
+      <view class="Scanning_top_text">
8
+        <view class="text1"> 签到成功 </view>
9
+      </view>
10
+    </view>
11
+    
12
+    <view class="Scanning_cont_cont">
13
+       <view>您已到达{{queryObj.deptName}},您需要交接血制品数量为 <text class="red fz58">{{dataList.bloodTotalCount}}</text></view>
14
+    </view>
15
+    
16
+    <view class="Scanning_top">
17
+      <view class="title1">{{queryObj.deptName}}</view>
18
+      <view>{{dataList.patientTotalCount}}人</view>
19
+      <view>{{dataList.bloodTotalCount}}袋</view>
20
+    </view>
21
+
22
+    <view class="Scanning_cont">
23
+      <view class="list" v-for="(v2, i2) of dataList.children" :key="i2">
24
+        <view class="list_top">
25
+          <text class="newicon newicon-a-ziyuan7"></text>
26
+          <view class="title1 ellipsis">
27
+            <text>{{v2.patientName}}</text><text>{{v2.hosNum}}</text>
28
+          </view>
29
+          <view>
30
+            <text>{{v2.count}}袋</text>
31
+          </view>
32
+        </view>
33
+        <view class="list_bottom_wrap" v-for="(v3, i3) of v2.children" :key="i3" @click="v3.checked = !v3.checked">
34
+          <view class="list_bottom">
35
+            <view class="title1 ellipsis">
36
+              <text class="ellipsis flex1">{{v3.bloodCode}}</text>
37
+              <text>{{v3.volume}}{{v3.unit}}</text>
38
+            </view>
39
+            <view class="title2">
40
+              <text>{{v3.count}}袋</text>
41
+              <text class="newicon newicon-a-ziyuan3" :class="{active: v3.checked}"></text>
42
+            </view>
43
+          </view>
44
+          
45
+          <view class="list_detail" v-if="v3.checked">
46
+            <view class="list_detail_item" v-for="(v4, i4) of v3.children" :key="i4">
47
+              <view class="list_detail_item_title">
48
+                <text>{{v4.bloodCode}}{{v4.productCode ? '+' + v4.productCode : ''}}</text>
49
+                <text class="blue serialNumber">{{i4 + 1}}</text>
50
+              </view>
51
+              <view class="list_detail_item_content">
52
+                <view>
53
+                  <text>血型:{{v4.aboType}}</text>
54
+                  <text class="ml16">RH(D):{{v4.rhType}}</text>
55
+                </view>
56
+                <view>
57
+                  <text>{{v4.overDate | formatDate('yyyy-MM-dd hh:mm')}}</text>
58
+                  <!-- <text class="zhi">至</text> -->
59
+                  <!-- <text></text> -->
60
+                </view>
61
+                <view class="list_detail_item_content_status">
62
+                  <text class="blue">{{v4.state ? v4.state.name : ''}}</text>
63
+                </view>
64
+              </view>
65
+            </view>
66
+          </view>
67
+        </view>
68
+      </view>
69
+    </view>
70
+    <view class="foot_btn_spe">
71
+      <view class="btn1" @click="complete()" v-if="dataList.bloodTotalCount">核对完成</view>
72
+      <view class="btn3" @click="goBack()">取消</view>
73
+    </view>
74
+    <!-- 填写交接人工号弹窗 -->
75
+    <selectAccount @click.stop.native v-if="hosModels.disjunctor" :content="hosModels.content" :disjunctor="hosModels.disjunctor" @ok="hosOk"
76
+      @cancel="hosCancel">
77
+    </selectAccount>
78
+  </view>
79
+</template>
80
+<script>
81
+  import {
82
+    get,
83
+    post,
84
+    SM,
85
+    webHandle
86
+  } from "../../http/http.js";
87
+  export default {
88
+    data() {
89
+      return {
90
+        hosId: uni.getStorageSync('userData').user.currentHospital.id,
91
+        // 填写交接人工号弹窗model
92
+        hosModels: {
93
+          disjunctor: false,
94
+        },
95
+        dataList: {},
96
+        queryObj: {}, //路由传递过来的数据
97
+      };
98
+    },
99
+    methods: {
100
+      // 核对完成
101
+      complete(){
102
+        uni.showLoading({
103
+          title: "加载中",
104
+          mask: true,
105
+        });
106
+        post('/simple/data/fetchDataList/taskTypeConfig', {
107
+          idx: 0,
108
+          sum: 1,
109
+          taskTypeConfig: {
110
+            "taskTypeDTO": {
111
+                "hosId": {
112
+                    "id": this.hosId
113
+                },
114
+                "ordinaryField": {
115
+                    "key": "ordinary_field",
116
+                    "value": "blood"
117
+                }
118
+            }
119
+          },
120
+        }).then(res => {
121
+          uni.hideLoading();
122
+          if(res.status == 200){
123
+           let list = res.list || [];
124
+           if(list.length > 0){
125
+             let signTypeList = list[0].signTypeList || [];
126
+             let signType = signTypeList.find( v => v.value == 6 );
127
+             if(signType){
128
+               this.showSelectAccount();
129
+             }else{
130
+               this.checkComplete();
131
+             }
132
+           }else{
133
+            uni.showToast({
134
+              icon: "none",
135
+              title: "请配置血制品任务类型!",
136
+            }); 
137
+           }
138
+          }else{
139
+            uni.showToast({
140
+              icon: "none",
141
+              title: res.msg || "接口获取数据失败!",
142
+            });
143
+          }
144
+        })
145
+      },
146
+      // 填写交接人工号-确认
147
+      hosOk(data) {
148
+        console.log(data);
149
+        const {
150
+          accountName,
151
+          account,
152
+          accountId
153
+        } = data;
154
+        if (!accountName && !account) {
155
+          //没有填写交接人
156
+          uni.showModal({
157
+            title: "提示",
158
+            content: "请填写交接人工号!",
159
+            showCancel: false,
160
+            success: function(res) {
161
+              if (res.confirm) {
162
+                console.log("用户点击确定");
163
+              } else if (res.cancel) {
164
+                console.log("用户点击取消");
165
+              }
166
+            },
167
+          });
168
+          return;
169
+        } else if ((!accountName && account) || (accountName && !account)) {
170
+          //没有填写交接人
171
+          uni.showModal({
172
+            title: "提示",
173
+            content: "请填写正确的交接人工号!",
174
+            showCancel: false,
175
+            success: function(res) {
176
+              if (res.confirm) {
177
+                console.log("用户点击确定");
178
+              } else if (res.cancel) {
179
+                console.log("用户点击取消");
180
+              }
181
+            },
182
+          });
183
+          return;
184
+        }
185
+        this.hosModels.disjunctor = false;
186
+        this.checkComplete(data);
187
+      },
188
+      // 填写交接人工号-取消
189
+      hosCancel() {
190
+        this.hosModels.disjunctor = false;
191
+        this.flag = true;
192
+      },
193
+      // 填写交接人工号弹窗
194
+      showSelectAccount() {
195
+        this.hosModels = {
196
+          content: "确定核对完成,请输入交接人员工号",
197
+          disjunctor: true,
198
+        };
199
+      },
200
+      checkComplete(accountObj){
201
+        uni.showLoading({
202
+          title: "加载中",
203
+          mask: true,
204
+        });
205
+        let postData = {
206
+          "type": "blood",
207
+          "orderId": 0,
208
+          "orderIds": this.queryObj.orderIds || undefined,
209
+        };
210
+        if (accountObj) {
211
+          postData.handoverUser = accountObj.accountId;
212
+        }
213
+        post('/transflow/checkComplete', postData).then(res => {
214
+          uni.hideLoading();
215
+          if(res.state == 200){
216
+             uni.navigateTo({
217
+               url: `../receiptpage/receiptpage`,
218
+             });
219
+          }else{
220
+            uni.showToast({
221
+              icon: "none",
222
+              title: res.msg || "接口获取数据失败!",
223
+            });
224
+          }
225
+        })
226
+      },
227
+      // 返回
228
+      goBack() {
229
+        uni.navigateBack();
230
+      },
231
+      //获取页面信息
232
+      getInfo(){
233
+        uni.showLoading({
234
+          title: "加载中",
235
+          mask: true,
236
+        });
237
+        post('/transflow/scanInfo', {
238
+          "code": "nb",
239
+          "id": 0,
240
+          "type": "blood",
241
+          "deptOrderDetails": true,
242
+          "orderIds": this.queryObj.orderIds,
243
+          "deptId": this.queryObj.deptId,
244
+        }).then(res => {
245
+          uni.hideLoading();
246
+          if(res.state == 200){
247
+            let dataList = res.data.data || {};
248
+            // 第一层
249
+            let dataNewList = {
250
+              bloodTotalCount: 0,
251
+              patientTotalCount: 0,
252
+              children: [],
253
+            };
254
+            
255
+            for (let key2 in dataList) {
256
+              let value2 = dataList[key2];
257
+              console.log(value2);
258
+              // 第三层,第四层
259
+              let array3 = [];
260
+              for (let key3 in value2) {
261
+                let value3 = value2[key3];
262
+                console.log(dataNewList);
263
+                array3.push({
264
+                  checked: false,
265
+                  bloodCode: key3.split('|')[0],
266
+                  volume: key3.split('|')[1],
267
+                  unit: key3.split('|')[2],
268
+                  count: value3.length,
269
+                  children: value3,
270
+                });
271
+              }
272
+              // 第二层
273
+              dataNewList.children.push({
274
+                patientName: key2.split('|')[0],
275
+                hosNum: key2.split('|')[1],
276
+                count: array3.reduce((pre, current) => pre + current.count, 0),
277
+                children: array3,
278
+              });
279
+            }
280
+            // 计算第一层血袋数量
281
+            dataNewList.bloodTotalCount = dataNewList.children.reduce((pre, current) => pre + current.count, 0);
282
+            // 计算第一层患者数量
283
+            dataNewList.patientTotalCount = Object.keys(dataList).length;
284
+            console.log(dataNewList)
285
+            // 赋值
286
+            this.dataList = dataNewList;
287
+          }else{
288
+            uni.showToast({
289
+              icon: "none",
290
+              title: res.msg || "接口获取数据失败!",
291
+            });
292
+          }
293
+        })
294
+      },
295
+
296
+    },
297
+    onLoad(options) {
298
+      console.log(options, "result");
299
+      this.queryObj = options;
300
+      this.getInfo();
301
+      // #ifdef APP-PLUS
302
+      webHandle("no", "app");
303
+      // #endif
304
+      // #ifdef H5
305
+      webHandle("no", "wx");
306
+      // #endif
307
+    },
308
+  };
309
+</script>
310
+<style lang="less" scoped>
311
+  .Scanning_Result {
312
+    padding: 16rpx;
313
+    display: flex;
314
+    flex-direction: column;
315
+    height: 100vh;
316
+    background-color: #f5f7fb;
317
+    
318
+    .ml16{
319
+      margin-left: 16rpx;
320
+    }
321
+    
322
+    .blue{
323
+      color: #49b856!important;
324
+    }
325
+    
326
+    .ellipsis{
327
+      white-space: nowrap;
328
+      overflow: hidden;
329
+      text-overflow: ellipsis;
330
+    }
331
+    
332
+    .flex1{
333
+      flex: 1;
334
+    }
335
+    
336
+    .Scanning_top_top {
337
+      .Scanning_top_icon {
338
+        width: 140rpx;
339
+        height: 140rpx;
340
+        margin: 50rpx auto 40rpx;
341
+        border-radius: 50%;
342
+        
343
+        .speNum{
344
+          text-align: center;
345
+          font-size: 140rpx;
346
+        }
347
+    
348
+        .cubeic-ok {
349
+          font-size: 140rpx;
350
+          color: #35b34a;
351
+        }
352
+    
353
+        .cubeic-close {
354
+          font-size: 140rpx;
355
+          color: #ff3b53;
356
+        }
357
+      }
358
+    
359
+      .Scanning_top_text {
360
+        .text1 {
361
+          font-size: 48rpx;
362
+          text-align: center;
363
+        }
364
+    
365
+        .success_tips {
366
+          color: red;
367
+          font-size: 30rpx;
368
+        }
369
+      }
370
+    }
371
+    
372
+    .Scanning_cont_cont {
373
+      padding-bottom: 50rpx;
374
+      text-align: center;
375
+      display: flex;
376
+      flex-direction: column;
377
+      
378
+      .fz58{
379
+        font-size: 58rpx;
380
+      }
381
+      
382
+      .table_bodys{
383
+        overflow-y: auto;
384
+        flex: 1;
385
+      }
386
+      
387
+      .table_head{
388
+        display: flex;
389
+        margin-top: 50rpx;
390
+        .ml16{
391
+          margin-left: 16rpx;
392
+        }
393
+        
394
+        view {
395
+          height: 110rpx;
396
+          line-height: 1;
397
+          flex: 1;
398
+          font-weight: bold;
399
+          color: #000;
400
+          font-size: 38rpx;
401
+          display: flex;
402
+          justify-content: center;
403
+          align-items: center;
404
+        }
405
+      }
406
+      
407
+      .table_body{
408
+        background: #F3FAF7;
409
+        border-radius: 8px;
410
+        border: 1px solid #E9E9E9;
411
+        display: flex;
412
+        margin-bottom: 20rpx;
413
+        padding: 30rpx 20rpx;
414
+        view {
415
+          line-height: 1;
416
+          flex: 1;
417
+          color: #555;
418
+          font-size: 38rpx;
419
+          display: flex;
420
+          justify-content: center;
421
+          align-items: center;
422
+          word-break: break-all;
423
+        }
424
+      }
425
+    }
426
+    
427
+
428
+    .Scanning_top {
429
+      margin-top: 16rpx;
430
+      background-color: #fff;
431
+      color: #49b856;
432
+      font-weight: bold;
433
+      font-size: 30rpx;
434
+      display: flex;
435
+      align-items: center;
436
+      line-height: 1.1;
437
+      
438
+      view{
439
+        padding: 16rpx 20rpx;
440
+        flex: 1;
441
+        &.title1{
442
+          flex: 4;
443
+          word-break: break-all;
444
+        }
445
+      }
446
+    }
447
+
448
+    .Scanning_cont {
449
+      flex: 1;
450
+      display: flex;
451
+      flex-direction: column;
452
+      overflow-y: auto;
453
+      
454
+      .list{
455
+        background-color: #fff;
456
+        margin-top: 16rpx;
457
+        line-height: 1;        
458
+        .list_top{
459
+          display: flex;
460
+          font-weight: bold;
461
+          color: #000;
462
+          font-size: 30rpx;
463
+          position: relative;
464
+          padding-bottom: 16rpx;
465
+          
466
+          .newicon-a-ziyuan7{
467
+            position: absolute;
468
+            left: 12rpx;
469
+            top: 14rpx;
470
+            font-size: 32rpx;
471
+            color: #49b856;
472
+          }
473
+          view{
474
+            padding: 16rpx 20rpx 0 0;
475
+            flex: 1;
476
+            &.title1{
477
+              padding: 16rpx 20rpx 0 54rpx;
478
+              flex: 5;
479
+              text:first-of-type{
480
+                margin-right: 16rpx;
481
+              }
482
+            }
483
+          }
484
+        }
485
+        .list_bottom{
486
+          display: flex;
487
+          font-size: 25rpx;
488
+          color: #767676;
489
+          view{
490
+            padding: 0 20rpx 16rpx 5rpx;
491
+            flex: 1;
492
+            &.title1{
493
+              padding: 0 20rpx 16rpx 54rpx;
494
+              flex: 5;
495
+              display: flex;
496
+            }
497
+            &.title2{
498
+              display: flex;
499
+              align-items: center;
500
+            }
501
+            .newicon-a-ziyuan3{
502
+              color: #cdcdcd;
503
+              font-size: 12rpx;
504
+              margin-left: 20rpx;
505
+              transform: rotate(180deg);
506
+              transition: all 0.5s;
507
+              &.active{
508
+                transform: rotate(0deg);
509
+              }
510
+            }
511
+          }
512
+        }
513
+        
514
+        .list_detail{
515
+          border: 2rpx solid #C6C6C6;
516
+          padding: 22rpx 30rpx 0;
517
+          font-size: 26rpx;
518
+          .list_detail_item{
519
+            margin-bottom: 22rpx;
520
+            padding: 10rpx 0;
521
+            background-color: #F3FAF7;
522
+            .list_detail_item_title{
523
+              padding: 0 17rpx 6rpx;
524
+              border-bottom: 2rpx solid #C3C3C3;
525
+              display: flex;
526
+              align-items: center;
527
+              justify-content: space-between;
528
+              
529
+              .serialNumber{
530
+                font-size: 38rpx;
531
+              }
532
+            }
533
+            .list_detail_item_content{
534
+              padding: 0 17rpx;
535
+              
536
+              view{
537
+                line-height: 35rpx;
538
+                margin-top: 17rpx;
539
+                &:first-of-type{
540
+                  margin-top: 9rpx;
541
+                }
542
+              }
543
+              
544
+              .zhi{
545
+                margin-left: 60rpx;
546
+                margin-right: 60rpx;
547
+              }
548
+              
549
+              .list_detail_item_content_status{
550
+                display: flex;
551
+                justify-content: flex-end;
552
+                text{
553
+                  font-weight: bold;
554
+                }
555
+              }
556
+            }
557
+          }
558
+        }
559
+      }
560
+    }
561
+
562
+    .foot_btn_spe {
563
+      line-height: 64rpx;
564
+      height: 64rpx;
565
+      margin-bottom: 40rpx;
566
+      text-align: center;
567
+      display: flex;
568
+      justify-content: space-between;
569
+    
570
+      view {
571
+        height: 64rpx;
572
+        flex: 1;
573
+        margin: 0 1%;
574
+        background-image: linear-gradient(to right, #72c172, #3bb197);
575
+        color: #fff;
576
+        border-radius: 8rpx;
577
+        font-size: 26rpx;
578
+      }
579
+    }
580
+  }
581
+</style>

+ 8 - 9
pages/otherCompleteOrder/otherCompleteOrder.vue

@@ -36,8 +36,8 @@
36 36
       <view class="btn1" @click="photographToOther(order)">{{tips}}</view>
37 37
       <view class="btn3" @click="goBack">返回</view>
38 38
     </view>
39
-    <!-- 填写交接人号弹窗 -->
40
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
39
+    <!-- 填写交接人号弹窗 -->
40
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
41 41
       @cancel="hosCancel">
42 42
     </selectAccount>
43 43
   </view>
@@ -62,7 +62,7 @@
62 62
       return {
63 63
         tips: '',
64 64
         currentIndex: undefined,
65
-        // 填写交接人号弹窗model
65
+        // 填写交接人号弹窗model
66 66
         hosModels: {
67 67
           disjunctor: false,
68 68
         },
@@ -97,7 +97,7 @@
97 97
           commonFun[funName](this, data, accountObj);
98 98
         }
99 99
       },
100
-      // 填写交接人号-确认
100
+      // 填写交接人号-确认
101 101
       hosOk(data) {
102 102
         console.log(data);
103 103
         const {
@@ -109,7 +109,7 @@
109 109
           //没有填写交接人
110 110
           uni.showModal({
111 111
             title: '提示',
112
-            content: "请填写交接人号!",
112
+            content: "请填写交接人号!",
113 113
             showCancel: false,
114 114
             success: function(res) {
115 115
               if (res.confirm) {
@@ -124,7 +124,7 @@
124 124
           //没有填写交接人
125 125
           uni.showModal({
126 126
             title: '提示',
127
-            content: "请填写正确的交接人号!",
127
+            content: "请填写正确的交接人号!",
128 128
             showCancel: false,
129 129
             success: function(res) {
130 130
               if (res.confirm) {
@@ -149,14 +149,13 @@
149 149
           this.isOpenTransportationProcessRemarks(this.currentData, data, 'uploadToOther');
150 150
         }
151 151
       },
152
-      // 填写交接人号-取消
152
+      // 填写交接人号-取消
153 153
       hosCancel() {
154 154
         this.hosModels.disjunctor = false;
155 155
       },
156
-      // 填写交接人号弹窗
156
+      // 填写交接人号弹窗
157 157
       showSelectAccount() {
158 158
         this.hosModels = {
159
-          title: '填写交接人账号',
160 159
           disjunctor: true,
161 160
         }
162 161
       },

+ 1 - 2
pages/pharmacyDetails/pharmacyDetails.vue

@@ -86,7 +86,7 @@
86 86
       </button>
87 87
     </view>
88 88
     <!-- 护士自取账号弹窗 -->
89
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
89
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
90 90
       @cancel="hosCancel">
91 91
     </selectAccount>
92 92
   </view>
@@ -231,7 +231,6 @@
231 231
       // 护士自取
232 232
       nursetake() {
233 233
         this.hosModels = {
234
-          title: '填写账号',
235 234
           disjunctor: true,
236 235
         }
237 236
       },

+ 8 - 9
pages/receipt_infopage/receipt_infopage.vue

@@ -421,8 +421,8 @@
421 421
     <inspectRemoveModel :title="models1.title" :icon="models1.icon" :disjunctor="models1.disjunctor"
422 422
       :content="models1.content" @know="know1" :operate="models1.operate" @ok="ok1" @cancel="cancel1" :remove="true">
423 423
     </inspectRemoveModel>
424
-    <!-- 填写交接人号弹窗 -->
425
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
424
+    <!-- 填写交接人号弹窗 -->
425
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
426 426
       @cancel="hosCancel">
427 427
     </selectAccount>
428 428
     <!-- 手动查询弹窗 -->
@@ -459,7 +459,7 @@
459 459
           disjunctor: false,
460 460
         },
461 461
         taskTypeConfig: {},
462
-        // 填写交接人号弹窗model
462
+        // 填写交接人号弹窗model
463 463
         hosModels: {
464 464
           disjunctor: false,
465 465
         },
@@ -684,7 +684,7 @@
684 684
           });
685 685
         }
686 686
       },
687
-      // 填写交接人号-确认
687
+      // 填写交接人号-确认
688 688
       hosOk(data) {
689 689
         console.log(data);
690 690
         const {
@@ -696,7 +696,7 @@
696 696
           //没有填写交接人
697 697
           uni.showModal({
698 698
             title: '提示',
699
-            content: "请填写交接人号!",
699
+            content: "请填写交接人号!",
700 700
             showCancel: false,
701 701
             success: function(res) {
702 702
               if (res.confirm) {
@@ -711,7 +711,7 @@
711 711
           //没有填写交接人
712 712
           uni.showModal({
713 713
             title: '提示',
714
-            content: "请填写正确的交接人号!",
714
+            content: "请填写正确的交接人号!",
715 715
             showCancel: false,
716 716
             success: function(res) {
717 717
               if (res.confirm) {
@@ -728,14 +728,13 @@
728 728
         console.log(associationTypeValue)
729 729
         this.uploadToOther(this.currentData, data, 'start');
730 730
       },
731
-      // 填写交接人号-取消
731
+      // 填写交接人号-取消
732 732
       hosCancel() {
733 733
         this.hosModels.disjunctor = false;
734 734
       },
735
-      // 填写交接人号弹窗
735
+      // 填写交接人号弹窗
736 736
       showSelectAccount() {
737 737
         this.hosModels = {
738
-          title: '填写交接人账号',
739 738
           disjunctor: true,
740 739
         }
741 740
       },

+ 8 - 9
pages/receiptpage/receiptpage.vue

@@ -314,8 +314,8 @@
314 314
     <handViewDrugsBag v-if="drugbagModels.disjunctor" :title="drugbagModels.title"
315 315
       :disjunctor="drugbagModels.disjunctor" @ok="drugbagOk" @cancel="drugbagCancel">
316 316
     </handViewDrugsBag>
317
-    <!-- 填写交接人号弹窗 -->
318
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
317
+    <!-- 填写交接人号弹窗 -->
318
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
319 319
       @cancel="hosCancel">
320 320
     </selectAccount>
321 321
     <!-- 手动查询弹窗 -->
@@ -395,7 +395,7 @@
395 395
         checkboxModels: {
396 396
           disjunctor: false,
397 397
         },
398
-        // 填写交接人号弹窗model
398
+        // 填写交接人号弹窗model
399 399
         hosModels: {
400 400
           disjunctor: false,
401 401
         },
@@ -1041,7 +1041,7 @@
1041 1041
         }
1042 1042
       },
1043 1043
 
1044
-      // 填写交接人号-确认
1044
+      // 填写交接人号-确认
1045 1045
       hosOk(data) {
1046 1046
         console.log(data);
1047 1047
         const {
@@ -1053,7 +1053,7 @@
1053 1053
           //没有填写交接人
1054 1054
           uni.showModal({
1055 1055
             title: '提示',
1056
-            content: "请填写交接人号!",
1056
+            content: "请填写交接人号!",
1057 1057
             showCancel: false,
1058 1058
             success: function(res) {
1059 1059
               if (res.confirm) {
@@ -1068,7 +1068,7 @@
1068 1068
           //没有填写交接人
1069 1069
           uni.showModal({
1070 1070
             title: '提示',
1071
-            content: "请填写正确的交接人号!",
1071
+            content: "请填写正确的交接人号!",
1072 1072
             showCancel: false,
1073 1073
             success: function(res) {
1074 1074
               if (res.confirm) {
@@ -1085,14 +1085,13 @@
1085 1085
         console.log(associationTypeValue)
1086 1086
         this.uploadToOther(this.currentData, data, 'start');
1087 1087
       },
1088
-      // 填写交接人号-取消
1088
+      // 填写交接人号-取消
1089 1089
       hosCancel() {
1090 1090
         this.hosModels.disjunctor = false;
1091 1091
       },
1092
-      // 填写交接人号弹窗
1092
+      // 填写交接人号弹窗
1093 1093
       showSelectAccount() {
1094 1094
         this.hosModels = {
1095
-          title: '填写交接人账号',
1096 1095
           disjunctor: true,
1097 1096
         }
1098 1097
       },

+ 8 - 9
pages/scanning_B/scanning_B.vue

@@ -44,8 +44,8 @@
44 44
         v-if="res.data.speState&&(res.data.speState.value == 2||res.data.speState.value == 3||res.data.speState.value == 4||res.data.speState.value == 5)">
45 45
         退回</view>
46 46
     </view>
47
-    <!-- 填写交接人号弹窗 -->
48
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
47
+    <!-- 填写交接人号弹窗 -->
48
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
49 49
       @cancel="hosCancel">
50 50
     </selectAccount>
51 51
     <!-- 退回弹窗 -->
@@ -75,7 +75,7 @@
75 75
         backStatus: '',
76 76
         infoDATA: {},
77 77
         res: {},
78
-        // 填写交接人号弹窗model
78
+        // 填写交接人号弹窗model
79 79
         hosModels: {
80 80
           disjunctor: false,
81 81
         },
@@ -305,7 +305,7 @@
305 305
           }
306 306
         })
307 307
       },
308
-      // 填写交接人号-确认
308
+      // 填写交接人号-确认
309 309
       hosOk(data) {
310 310
         console.log(data);
311 311
         const {
@@ -317,7 +317,7 @@
317 317
           //没有填写交接人
318 318
           uni.showModal({
319 319
             title: "提示",
320
-            content: "请填写交接人号!",
320
+            content: "请填写交接人号!",
321 321
             showCancel: false,
322 322
             success: function(res) {
323 323
               if (res.confirm) {
@@ -332,7 +332,7 @@
332 332
           //没有填写交接人
333 333
           uni.showModal({
334 334
             title: "提示",
335
-            content: "请填写正确的交接人号!",
335
+            content: "请填写正确的交接人号!",
336 336
             showCancel: false,
337 337
             success: function(res) {
338 338
               if (res.confirm) {
@@ -356,14 +356,13 @@
356 356
           this.nextDeptOrder_s(this.res.workOrder, data);
357 357
         }
358 358
       },
359
-      // 填写交接人号-取消
359
+      // 填写交接人号-取消
360 360
       hosCancel() {
361 361
         this.hosModels.disjunctor = false;
362 362
       },
363
-      // 填写交接人号弹窗
363
+      // 填写交接人号弹窗
364 364
       showSelectAccount() {
365 365
         this.hosModels = {
366
-          title: "填写交接人账号",
367 366
           disjunctor: true,
368 367
         };
369 368
       },

+ 1 - 1
pages/scanning_Result/scanning_Result.vue

@@ -85,7 +85,7 @@
85 85
       <view v-if="type == 'drugsBag'"> 药包编码 : #{{ infoDATA.packid }} </view>
86 86
       <view
87 87
         v-if="type == 'drugsBag' && accountObj && (queryObj.type1 === 'drug-ddd-2' || queryObj.type1 === 'drug-dsd-2')">
88
-        交接人号 : {{ accountObj.account }} </view>
88
+        交接人号 : {{ accountObj.account }} </view>
89 89
       <view
90 90
         v-if="type == 'drugsBag' && accountObj && (queryObj.type1 === 'drug-ddd-2' || queryObj.type1 === 'drug-dsd-2')">
91 91
         交接人姓名 : {{ accountObj.accountName }} </view>

+ 89 - 46
pages/scanning_all/scanning_all.vue

@@ -168,8 +168,8 @@
168 168
     <!-- 弹窗 -->
169 169
     <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content"
170 170
       @know="know" :operate="models.operate"></showModel>
171
-    <!-- 填写交接人号弹窗 -->
172
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
171
+    <!-- 填写交接人号弹窗 -->
172
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
173 173
       @cancel="hosCancel">
174 174
     </selectAccount>
175 175
   </view>
@@ -187,7 +187,7 @@
187 187
         hosId: null,
188 188
         currentCode: '', //当前小扫描的科室二维码
189 189
         SMFlag: true,
190
-        // 填写交接人号弹窗model
190
+        // 填写交接人号弹窗model
191 191
         hosModels: {
192 192
           disjunctor: false,
193 193
         },
@@ -204,6 +204,7 @@
204 204
         typeData: [],
205 205
         types: false,
206 206
         code: "",
207
+        deptId: '',
207 208
         deptName: '',
208 209
         flag: true, //一键操作,禁止多次
209 210
         flagTimer: null,
@@ -212,7 +213,7 @@
212 213
       };
213 214
     },
214 215
     methods: {
215
-      // 填写交接人号-确认
216
+      // 填写交接人号-确认
216 217
       hosOk(data) {
217 218
         console.log(data);
218 219
         const {
@@ -224,7 +225,7 @@
224 225
           //没有填写交接人
225 226
           uni.showModal({
226 227
             title: "提示",
227
-            content: "请填写交接人号!",
228
+            content: "请填写交接人号!",
228 229
             showCancel: false,
229 230
             success: function(res) {
230 231
               if (res.confirm) {
@@ -239,7 +240,7 @@
239 240
           //没有填写交接人
240 241
           uni.showModal({
241 242
             title: "提示",
242
-            content: "请填写正确的交接人号!",
243
+            content: "请填写正确的交接人号!",
243 244
             showCancel: false,
244 245
             success: function(res) {
245 246
               if (res.confirm) {
@@ -254,15 +255,14 @@
254 255
         this.hosModels.disjunctor = false;
255 256
         this.orderDeptHandler(false, data);
256 257
       },
257
-      // 填写交接人号-取消
258
+      // 填写交接人号-取消
258 259
       hosCancel() {
259 260
         this.hosModels.disjunctor = false;
260 261
         this.flag = true;
261 262
       },
262
-      // 填写交接人号弹窗
263
+      // 填写交接人号弹窗
263 264
       showSelectAccount() {
264 265
         this.hosModels = {
265
-          title: "填写交接人账号",
266 266
           disjunctor: true,
267 267
         };
268 268
       },
@@ -391,51 +391,93 @@
391 391
           console.log(this.userId)
392 392
           if (this.userId.ids.length > 0) {
393 393
             if (this.tabType == "blood") {
394
-              // 万能交接服务的血制品
395
-              let postData = {
396
-                  "idx": 0,
397
-                  "sum": 1,
398
-                  "taskTypeConfig": {
399
-                      "taskTypeDTO": {
400
-                          "hosId": {
401
-                              "id": this.hosId
402
-                          },
403
-                          "ordinaryField": {
404
-                              "key": "ordinary_field",
405
-                              "value": "blood"
406
-                          }
407
-                      }
408
-                  }
409
-              };
410 394
               uni.showLoading({
411 395
                 title: "加载中",
412 396
                 mask: true,
413 397
               });
414
-              post("/simple/data/fetchDataList/taskTypeConfig", postData).then((result) => {
415
-                uni.hideLoading();
416
-                if(result.status == 200){
417
-                  if(result.list && result.list[0] && result.list[0].checkType){
418
-                    if(result.list[0].checkType.value == 1){
419
-                      // 起点终点科室按照血制品类型进行核对
420
-                      uni.navigateTo({
421
-                        url: `../signIn_blood/signIn_blood?deptName=${this.deptName}&orderId=${this.userId.ids[0]}`,
422
-                      });
423
-                    }else if(result.list[0].checkType.value == 2){
424
-                      // 终点科室无需扫码进行核对
425
-                      uni.navigateTo({
426
-                        url: `../check_blood/check_blood?orderId=${this.userId.ids[0]}`,
427
-                      });
428
-                    }
429
-                  }else{
430
-                    uni.showToast({
431
-                      icon: "none",
432
-                      title: "请前往血制品配置页面配置核对方式!",
433
-                    });
398
+              // 判断是否签到批量核对
399
+              post('/simple/data/fetchDataList/taskTypeConfig', {
400
+                idx: 0,
401
+                sum: 1,
402
+                taskTypeConfig: {
403
+                  "taskTypeDTO": {
404
+                      "hosId": {
405
+                          "id": this.hosId
406
+                      },
407
+                      "ordinaryField": {
408
+                          "key": "ordinary_field",
409
+                          "value": "blood"
410
+                      }
434 411
                   }
412
+                },
413
+              }).then(res => {
414
+                if(res.status == 200){
415
+                 let list = res.list || [];
416
+                 if(list.length > 0){
417
+                   let signTypeList = list[0].signTypeList || [];
418
+                   let signType = signTypeList.find( v => v.value == 4 );
419
+                   if(signType){
420
+                     uni.hideLoading();
421
+                     uni.navigateTo({
422
+                       url: `../endOrderSignBlood/endOrderSignBlood?orderIds=${this.userId.ids.toString()}&deptName=${this.deptName}&deptId=${this.deptId}`,
423
+                     });
424
+                   }else{
425
+                     // 万能交接服务的血制品
426
+                     let postData = {
427
+                         "idx": 0,
428
+                         "sum": 1,
429
+                         "taskTypeConfig": {
430
+                             "taskTypeDTO": {
431
+                                 "hosId": {
432
+                                     "id": this.hosId
433
+                                 },
434
+                                 "ordinaryField": {
435
+                                     "key": "ordinary_field",
436
+                                     "value": "blood"
437
+                                 }
438
+                             }
439
+                         }
440
+                     };
441
+                     post("/simple/data/fetchDataList/taskTypeConfig", postData).then((result) => {
442
+                       uni.hideLoading();
443
+                       if(result.status == 200){
444
+                         if(result.list && result.list[0] && result.list[0].checkType){
445
+                           if(result.list[0].checkType.value == 1){
446
+                             // 起点终点科室按照血制品类型进行核对
447
+                             uni.navigateTo({
448
+                               url: `../signIn_blood/signIn_blood?deptName=${this.deptName}&orderId=${this.userId.ids[0]}`,
449
+                             });
450
+                           }else if(result.list[0].checkType.value == 2){
451
+                             // 终点科室无需扫码进行核对
452
+                             uni.navigateTo({
453
+                               url: `../check_blood/check_blood?orderId=${this.userId.ids[0]}`,
454
+                             });
455
+                           }
456
+                         }else{
457
+                           uni.showToast({
458
+                             icon: "none",
459
+                             title: "请前往血制品配置页面配置核对方式!",
460
+                           });
461
+                         }
462
+                       }else{
463
+                         uni.showToast({
464
+                           icon: "none",
465
+                           title: result.msg || "接口获取数据失败!",
466
+                         });
467
+                       }
468
+                     })
469
+                   }
470
+                 }else{
471
+                  uni.showToast({
472
+                    icon: "none",
473
+                    title: "请配置血制品任务类型!",
474
+                  }); 
475
+                 }
435 476
                 }else{
477
+                  uni.hideLoading();
436 478
                   uni.showToast({
437 479
                     icon: "none",
438
-                    title: result.msg || "接口获取数据失败!",
480
+                    title: res.msg || "接口获取数据失败!",
439 481
                   });
440 482
                 }
441 483
               })
@@ -695,6 +737,7 @@
695 737
       console.log(this.infoDATA);
696 738
       this.code = options.code; //扫描科室码返回的二维码信息
697 739
       this.deptName = options.deptName; //扫描科室码返回的科室名称
740
+      this.deptId = options.deptId; //扫描科室码返回的科室ID
698 741
       let arr = [];
699 742
       for (let key in this.infoDATA) {
700 743
         if(key === 'ordinary'){

+ 1 - 1
pages/scanning_code/scanning_code.vue

@@ -122,7 +122,7 @@
122 122
       </view>
123 123
       <view class="page_item_foot">
124 124
         <view class="page_item_foot_text" v-if="accountObj && (infoType === 'drug-ddd-1' || infoType === 'drug-dsd-1')">
125
-          <text class="text1">交接人号</text>
125
+          <text class="text1">交接人号</text>
126 126
           <text class="text2">{{ accountObj.account }}</text>
127 127
         </view>
128 128
         <view class="page_item_foot_text" v-if="accountObj && (infoType === 'drug-ddd-1' || infoType === 'drug-dsd-1')">

+ 3 - 3
pages/scanning_djEnd/scanning_djEnd.vue

@@ -50,7 +50,7 @@
50 50
           type == 'jPBag' &&
51 51
           (type1 == 'jp-ddd-1' || type1 == 'jp-dsd-1'))
52 52
       ">
53
-      <view v-if="accountObj"> 交接人号 : {{ accountObj.account }} </view>
53
+      <view v-if="accountObj"> 交接人号 : {{ accountObj.account }} </view>
54 54
       <view v-if="accountObj"> 交接人姓名 : {{ accountObj.accountName }} </view>
55 55
       <view>已到达目标科室,请取药包或静配包后送达目标科室.</view>
56 56
     </view>
@@ -84,7 +84,7 @@
84 84
           type == 'specimen' &&
85 85
           infoDATA.type == 'spe-ddd-1')
86 86
       ">
87
-      <view v-if="accountObj"> 交接人号 : {{ accountObj.account }} </view>
87
+      <view v-if="accountObj"> 交接人号 : {{ accountObj.account }} </view>
88 88
       <view v-if="accountObj"> 交接人姓名 : {{ accountObj.accountName }} </view>
89 89
       <view>已到达目标科室,请取标本后送达目标科室.</view>
90 90
     </view>
@@ -97,7 +97,7 @@
97 97
           type == 'specimen' &&
98 98
           infoDATA.type == 'spe-dsd-1')
99 99
       ">
100
-      <view v-if="accountObj"> 交接人号 : {{ accountObj.account }} </view>
100
+      <view v-if="accountObj"> 交接人号 : {{ accountObj.account }} </view>
101 101
       <view v-if="accountObj"> 交接人姓名 : {{ accountObj.accountName }} </view>
102 102
       <view>已到达目标科室,请放置标本完成该工单.</view>
103 103
     </view>

+ 2 - 2
pages/scanning_djInfo/scanning_djInfo.vue

@@ -55,7 +55,7 @@
55 55
       <view v-if="
56 56
           accountObj && infoType !== 'spe-ddd-1' && infoType !== 'spe-dsd-1'&& infoType !== 'plan-spe-ddd-1' && infoType !== 'plan-spe-dsd-1'
57 57
         ">
58
-        交接人号 : {{ accountObj.account }}
58
+        交接人号 : {{ accountObj.account }}
59 59
       </view>
60 60
       <view v-if="
61 61
           accountObj && infoType !== 'spe-ddd-1' && infoType !== 'spe-dsd-1'&& infoType !== 'plan-spe-ddd-1' && infoType !== 'plan-spe-dsd-1'
@@ -93,7 +93,7 @@
93 93
       <view v-if="
94 94
           accountObj && (infoType === 'drug-ddd-2' || infoType === 'drug-dsd-2')
95 95
         ">
96
-        交接人号 : {{ accountObj.account }}
96
+        交接人号 : {{ accountObj.account }}
97 97
       </view>
98 98
       <view v-if="
99 99
           accountObj && (infoType === 'drug-ddd-2' || infoType === 'drug-dsd-2')

+ 9 - 10
pages/scanning_drug/scanning_drug.vue

@@ -89,8 +89,8 @@
89 89
     <!-- 弹窗 -->
90 90
     <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content"
91 91
       @ok="ok" @cancel="cancel" :operate="models.operate"></showModel>
92
-    <!-- 填写交接人号弹窗 -->
93
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
92
+    <!-- 填写交接人号弹窗 -->
93
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
94 94
       @cancel="hosCancel">
95 95
     </selectAccount>
96 96
   </view>
@@ -117,7 +117,7 @@
117 117
         workOrder: {}, //药包关联的工单信息
118 118
         currentCode: "", //当前小扫描的科室二维码
119 119
         currentData: {}, //当前小扫描的工单对象
120
-        // 填写交接人号弹窗model
120
+        // 填写交接人号弹窗model
121 121
         hosModels: {
122 122
           disjunctor: false,
123 123
         },
@@ -233,7 +233,7 @@
233 233
           }
234 234
         });
235 235
       },
236
-      // 填写交接人号-确认
236
+      // 填写交接人号-确认
237 237
       hosOk(data) {
238 238
         console.log(data);
239 239
         const {
@@ -245,7 +245,7 @@
245 245
           //没有填写交接人
246 246
           uni.showModal({
247 247
             title: "提示",
248
-            content: "请填写交接人号!",
248
+            content: "请填写交接人号!",
249 249
             showCancel: false,
250 250
             success: function(res) {
251 251
               if (res.confirm) {
@@ -260,7 +260,7 @@
260 260
           //没有填写交接人
261 261
           uni.showModal({
262 262
             title: "提示",
263
-            content: "请填写正确的交接人号!",
263
+            content: "请填写正确的交接人号!",
264 264
             showCancel: false,
265 265
             success: function(res) {
266 266
               if (res.confirm) {
@@ -275,15 +275,14 @@
275 275
         this.hosModels.disjunctor = false;
276 276
         this.commonBuild(data);
277 277
       },
278
-      // 填写交接人号-取消
278
+      // 填写交接人号-取消
279 279
       hosCancel() {
280 280
         this.hosModels.disjunctor = false;
281 281
         this.gotoFlag = true;
282 282
       },
283
-      // 填写交接人号弹窗
283
+      // 填写交接人号弹窗
284 284
       showSelectAccount() {
285 285
         this.hosModels = {
286
-          title: "填写交接人账号",
287 286
           disjunctor: true,
288 287
         };
289 288
       },
@@ -316,7 +315,7 @@
316 315
             if (data) {
317 316
               //有交接人
318 317
               info.accountName = data.accountName; //交接人姓名
319
-              info.account = data.account; //交接人
318
+              info.account = data.account; //交接人
320 319
             }
321 320
             uni.navigateTo({
322 321
               url: `../scanning_result_seimin/scanning_result_seimin?info=${encodeURIComponent(

+ 1 - 1
pages/scanning_result_seimin/scanning_result_seimin.vue

@@ -20,7 +20,7 @@
20 20
 
21 21
     <view class="Scanning_cont" v-if="queryObj.status == 200">
22 22
       <view class="Scanning_cont_block"> 药包编码 : #{{ queryObj.packid }} </view>
23
-      <view class="Scanning_cont_block" v-if="queryObj.account"> 交接人号 : {{ queryObj.account }} </view>
23
+      <view class="Scanning_cont_block" v-if="queryObj.account"> 交接人号 : {{ queryObj.account }} </view>
24 24
       <view class="Scanning_cont_block" v-if="queryObj.accountName">
25 25
         交接人姓名 : {{ queryObj.accountName }}
26 26
       </view>

+ 8 - 9
pages/specimenCheckingDetail/specimenCheckingDetail.vue

@@ -74,8 +74,8 @@
74 74
     <!-- 退回弹窗 -->
75 75
     <backModel v-if="backModels.disjunctor" :title="backModels.title" :disjunctor="backModels.disjunctor" @ok="backOk"
76 76
       @cancel="backCancel"></backModel>
77
-    <!-- 填写交接人号弹窗 -->
78
-    <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
77
+    <!-- 填写交接人号弹窗 -->
78
+    <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk"
79 79
       @cancel="hosCancel">
80 80
     </selectAccount>
81 81
     <!-- 弹窗 -->
@@ -114,7 +114,7 @@
114 114
         backModels: {
115 115
           disjunctor: false,
116 116
         },
117
-        // 填写交接人号弹窗model
117
+        // 填写交接人号弹窗model
118 118
         hosModels: {
119 119
           disjunctor: false,
120 120
         },
@@ -184,7 +184,7 @@
184 184
           }
185 185
         });
186 186
       },
187
-      // 填写交接人号-确认
187
+      // 填写交接人号-确认
188 188
       hosOk(data) {
189 189
         console.log(data);
190 190
         const {
@@ -196,7 +196,7 @@
196 196
           //没有填写交接人
197 197
           uni.showModal({
198 198
             title: "提示",
199
-            content: "请填写交接人号!",
199
+            content: "请填写交接人号!",
200 200
             showCancel: false,
201 201
             success: function(res) {
202 202
               if (res.confirm) {
@@ -211,7 +211,7 @@
211 211
           //没有填写交接人
212 212
           uni.showModal({
213 213
             title: "提示",
214
-            content: "请填写正确的交接人号!",
214
+            content: "请填写正确的交接人号!",
215 215
             showCancel: false,
216 216
             success: function(res) {
217 217
               if (res.confirm) {
@@ -234,14 +234,13 @@
234 234
           this.backHandler(this.backSpecimen, this.msg.uuid, data);
235 235
         }
236 236
       },
237
-      // 填写交接人号-取消
237
+      // 填写交接人号-取消
238 238
       hosCancel() {
239 239
         this.hosModels.disjunctor = false;
240 240
       },
241
-      // 填写交接人号弹窗
241
+      // 填写交接人号弹窗
242 242
       showSelectAccount() {
243 243
         this.hosModels = {
244
-          title: "填写交接人账号",
245 244
           disjunctor: true,
246 245
         };
247 246
       },

+ 356 - 0
pages/startOrderSignBlood/startOrderSignBlood.vue

@@ -0,0 +1,356 @@
1
+<template>
2
+  <view class="Scanning_Result">
3
+    <view class="Scanning_top">
4
+      <view class="Scanning_top_icon">
5
+        <text class="cubeic-ok icon_transport transport-duigou"></text>
6
+      </view>
7
+      <view class="Scanning_top_text">
8
+        <view class="text1"> 签到成功 </view>
9
+      </view>
10
+    </view>
11
+
12
+    <view class="Scanning_cont">
13
+      <view>您已到达{{queryObj.deptName}},请核对以下数量</view>
14
+      <view class="table_head">
15
+        <view>科室<text class="red ml16">{{deptTotalCount}}</text></view>
16
+        <view>患者<text class="red ml16">{{patientTotalCount}}</text></view>
17
+        <view>血制品<text class="red ml16">{{bloodTotalCount}}</text></view>
18
+      </view>
19
+      <view class="table_bodys">
20
+        <view class="table_body" v-for="(item, index) in dataList" :key="index" @click="toDetail(item)">
21
+          <view>{{item.dept}}</view>
22
+          <view>{{item.patientCount}}</view>
23
+          <view>{{item.bloodCount}}</view>
24
+        </view>
25
+      </view>
26
+    </view>
27
+
28
+    <view class="foot_btn_spe">
29
+      <view class="btn1" @click="complete()" v-if="orderIds">核对完成</view>
30
+      <view class="btn3" @click="goBack()">取消</view>
31
+    </view>
32
+    <!-- 填写交接人工号弹窗 -->
33
+    <selectAccount @click.stop.native v-if="hosModels.disjunctor" :content="hosModels.content" :disjunctor="hosModels.disjunctor" @ok="hosOk"
34
+      @cancel="hosCancel">
35
+    </selectAccount>
36
+  </view>
37
+</template>
38
+<script>
39
+  import {
40
+    get,
41
+    post,
42
+    SM,
43
+    webHandle
44
+  } from "../../http/http.js";
45
+  export default {
46
+    data() {
47
+      return {
48
+        orderIds: '',
49
+        hosId: uni.getStorageSync('userData').user.currentHospital.id,
50
+        // 填写交接人工号弹窗model
51
+        hosModels: {
52
+          disjunctor: false,
53
+        },
54
+        deptTotalCount: 0,
55
+        patientTotalCount: 0,
56
+        bloodTotalCount: 0,
57
+        dataList: [],
58
+        queryObj: {}, //路由传递过来的数据
59
+      };
60
+    },
61
+    methods: {
62
+      // 核对完成
63
+      complete(){
64
+        uni.showLoading({
65
+          title: "加载中",
66
+          mask: true,
67
+        });
68
+        post('/simple/data/fetchDataList/taskTypeConfig', {
69
+          idx: 0,
70
+          sum: 1,
71
+          taskTypeConfig: {
72
+            "taskTypeDTO": {
73
+                "hosId": {
74
+                    "id": this.hosId
75
+                },
76
+                "ordinaryField": {
77
+                    "key": "ordinary_field",
78
+                    "value": "blood"
79
+                }
80
+            }
81
+          },
82
+        }).then(res => {
83
+          uni.hideLoading();
84
+          if(res.status == 200){
85
+           let list = res.list || [];
86
+           if(list.length > 0){
87
+             let signTypeList = list[0].signTypeList || [];
88
+             let signType = signTypeList.find( v => v.value == 5 );
89
+             if(signType){
90
+               this.showSelectAccount();
91
+             }else{
92
+               this.checkComplete();
93
+             }
94
+           }else{
95
+            uni.showToast({
96
+              icon: "none",
97
+              title: "请配置血制品任务类型!",
98
+            }); 
99
+           }
100
+          }else{
101
+            uni.showToast({
102
+              icon: "none",
103
+              title: res.msg || "接口获取数据失败!",
104
+            });
105
+          }
106
+        })
107
+      },
108
+      // 填写交接人工号-确认
109
+      hosOk(data) {
110
+        console.log(data);
111
+        const {
112
+          accountName,
113
+          account,
114
+          accountId
115
+        } = data;
116
+        if (!accountName && !account) {
117
+          //没有填写交接人
118
+          uni.showModal({
119
+            title: "提示",
120
+            content: "请填写交接人工号!",
121
+            showCancel: false,
122
+            success: function(res) {
123
+              if (res.confirm) {
124
+                console.log("用户点击确定");
125
+              } else if (res.cancel) {
126
+                console.log("用户点击取消");
127
+              }
128
+            },
129
+          });
130
+          return;
131
+        } else if ((!accountName && account) || (accountName && !account)) {
132
+          //没有填写交接人
133
+          uni.showModal({
134
+            title: "提示",
135
+            content: "请填写正确的交接人工号!",
136
+            showCancel: false,
137
+            success: function(res) {
138
+              if (res.confirm) {
139
+                console.log("用户点击确定");
140
+              } else if (res.cancel) {
141
+                console.log("用户点击取消");
142
+              }
143
+            },
144
+          });
145
+          return;
146
+        }
147
+        this.hosModels.disjunctor = false;
148
+        this.checkComplete(data);
149
+      },
150
+      // 填写交接人工号-取消
151
+      hosCancel() {
152
+        this.hosModels.disjunctor = false;
153
+        this.flag = true;
154
+      },
155
+      // 填写交接人工号弹窗
156
+      showSelectAccount() {
157
+        this.hosModels = {
158
+          content: "确定核对完成,请输入交接人员工号",
159
+          disjunctor: true,
160
+        };
161
+      },
162
+      checkComplete(accountObj){
163
+        uni.showLoading({
164
+          title: "加载中",
165
+          mask: true,
166
+        });
167
+        let postData = {
168
+          "type": "blood",
169
+          "orderId": 0,
170
+          "orderIds": this.orderIds || undefined,
171
+        };
172
+        if (accountObj) {
173
+          postData.handoverUser = accountObj.accountId;
174
+        }
175
+        post('/transflow/checkComplete', postData).then(res => {
176
+          uni.hideLoading();
177
+          if(res.state == 200){
178
+             uni.navigateTo({
179
+               url: `../receiptpage/receiptpage`,
180
+             });
181
+          }else{
182
+            uni.showToast({
183
+              icon: "none",
184
+              title: res.msg || "接口获取数据失败!",
185
+            });
186
+          }
187
+        })
188
+      },
189
+      // 返回
190
+      goBack() {
191
+        uni.navigateBack();
192
+      },
193
+      // 跳转血制品列表
194
+      toDetail(data){
195
+        uni.navigateTo({
196
+          url: `../startOrderSignBloodDetail/startOrderSignBloodDetail?bloodIds=${data.bloodIds}&deptName=${data.dept}`,
197
+        });
198
+      },
199
+      //获取页面信息
200
+      getInfo(){
201
+        uni.showLoading({
202
+          title: "加载中",
203
+          mask: true,
204
+        });
205
+        post('/transflow/scanInfo', {
206
+          "code": "nb",
207
+          "id": 0,
208
+          "type": "blood",
209
+          "deptOrder": true,
210
+          "deptId": this.queryObj.deptId,
211
+          "taskTypeId": this.queryObj.taskTypeId,
212
+        }).then(res => {
213
+          uni.hideLoading();
214
+          if(res.state == 200){
215
+            this.orderIds = res.data.orderIds;
216
+            this.dataList = res.data.data || [];
217
+            this.deptTotalCount = this.dataList.length;
218
+            this.patientTotalCount = this.dataList.reduce((pre, current) => pre + current.patientCount, 0);
219
+            this.bloodTotalCount = this.dataList.reduce((pre, current) => pre + current.bloodCount, 0);
220
+          }else{
221
+            uni.showToast({
222
+              icon: "none",
223
+              title: res.msg || "接口获取数据失败!",
224
+            });
225
+          }
226
+        })
227
+      },
228
+
229
+    },
230
+    onLoad(options) {
231
+      console.log(options, "result");
232
+      this.queryObj = options;
233
+      this.getInfo();
234
+      // #ifdef APP-PLUS
235
+      webHandle("no", "app");
236
+      // #endif
237
+      // #ifdef H5
238
+      webHandle("no", "wx");
239
+      // #endif
240
+    },
241
+  };
242
+</script>
243
+<style lang="less" scoped>
244
+  .Scanning_Result {
245
+    padding: 0 20rpx;
246
+    display: flex;
247
+    flex-direction: column;
248
+    height: 100vh;
249
+
250
+    .Scanning_top {
251
+      .Scanning_top_icon {
252
+        width: 140rpx;
253
+        height: 140rpx;
254
+        margin: 50rpx auto 40rpx;
255
+        border-radius: 50%;
256
+        
257
+        .speNum{
258
+          text-align: center;
259
+          font-size: 140rpx;
260
+        }
261
+
262
+        .cubeic-ok {
263
+          font-size: 140rpx;
264
+          color: #35b34a;
265
+        }
266
+
267
+        .cubeic-close {
268
+          font-size: 140rpx;
269
+          color: #ff3b53;
270
+        }
271
+      }
272
+
273
+      .Scanning_top_text {
274
+        .text1 {
275
+          font-size: 48rpx;
276
+          text-align: center;
277
+        }
278
+
279
+        .success_tips {
280
+          color: red;
281
+          font-size: 30rpx;
282
+        }
283
+      }
284
+    }
285
+
286
+    .Scanning_cont {
287
+      flex: 1;
288
+      text-align: center;
289
+      display: flex;
290
+      flex-direction: column;
291
+      
292
+      .table_bodys{
293
+        overflow-y: auto;
294
+        flex: 1;
295
+      }
296
+      
297
+      .table_head{
298
+        display: flex;
299
+        margin-top: 50rpx;
300
+        .ml16{
301
+          margin-left: 16rpx;
302
+        }
303
+        
304
+        view {
305
+          height: 110rpx;
306
+          line-height: 1;
307
+          flex: 1;
308
+          font-weight: bold;
309
+          color: #000;
310
+          font-size: 38rpx;
311
+          display: flex;
312
+          justify-content: center;
313
+          align-items: center;
314
+        }
315
+      }
316
+      
317
+      .table_body{
318
+        background: #F3FAF7;
319
+        border-radius: 8px;
320
+        border: 1px solid #E9E9E9;
321
+        display: flex;
322
+        margin-bottom: 20rpx;
323
+        padding: 30rpx 20rpx;
324
+        view {
325
+          line-height: 1;
326
+          flex: 1;
327
+          color: #555;
328
+          font-size: 38rpx;
329
+          display: flex;
330
+          justify-content: center;
331
+          align-items: center;
332
+          word-break: break-all;
333
+        }
334
+      }
335
+    }
336
+
337
+    .foot_btn_spe {
338
+      line-height: 64rpx;
339
+      height: 64rpx;
340
+      margin-bottom: 40rpx;
341
+      text-align: center;
342
+      display: flex;
343
+      justify-content: space-between;
344
+    
345
+      view {
346
+        height: 64rpx;
347
+        flex: 1;
348
+        margin: 0 1%;
349
+        background-image: linear-gradient(to right, #72c172, #3bb197);
350
+        color: #fff;
351
+        border-radius: 8rpx;
352
+        font-size: 26rpx;
353
+      }
354
+    }
355
+  }
356
+</style>

+ 340 - 0
pages/startOrderSignBloodDetail/startOrderSignBloodDetail.vue

@@ -0,0 +1,340 @@
1
+<template>
2
+  <view class="Scanning_Result">
3
+    <view class="Scanning_top">
4
+      <view class="title1">{{queryObj.deptName}}</view>
5
+      <view>{{dataList.patientTotalCount}}人</view>
6
+      <view>{{dataList.bloodTotalCount}}袋</view>
7
+    </view>
8
+
9
+    <view class="Scanning_cont">
10
+      <view class="list" v-for="(v2, i2) of dataList.children" :key="i2">
11
+        <view class="list_top">
12
+          <text class="newicon newicon-a-ziyuan7"></text>
13
+          <view class="title1 ellipsis">
14
+            <text>{{v2.patientName}}</text><text>{{v2.hosNum}}</text>
15
+          </view>
16
+          <view>
17
+            <text>{{v2.count}}袋</text>
18
+          </view>
19
+        </view>
20
+        <view class="list_bottom_wrap" v-for="(v3, i3) of v2.children" :key="i3" @click="v3.checked = !v3.checked">
21
+          <view class="list_bottom">
22
+            <view class="title1 ellipsis">
23
+              <text class="ellipsis flex1">{{v3.bloodCode}}</text>
24
+              <text>{{v3.volume}}{{v3.unit}}</text>
25
+            </view>
26
+            <view class="title2">
27
+              <text>{{v3.count}}袋</text>
28
+              <text class="newicon newicon-a-ziyuan3" :class="{active: v3.checked}"></text>
29
+            </view>
30
+          </view>
31
+          
32
+          <view class="list_detail" v-if="v3.checked">
33
+            <view class="list_detail_item" v-for="(v4, i4) of v3.children" :key="i4">
34
+              <view class="list_detail_item_title">
35
+                <text>{{v4.bloodCode}}{{v4.productCode ? '+' + v4.productCode : ''}}</text>
36
+                <text class="blue serialNumber">{{i4 + 1}}</text>
37
+              </view>
38
+              <view class="list_detail_item_content">
39
+                <view>
40
+                  <text>血型:{{v4.aboType}}</text>
41
+                  <text class="ml16">RH(D):{{v4.rhType}}</text>
42
+                </view>
43
+                <view>
44
+                  <text>{{v4.overDate | formatDate('yyyy-MM-dd hh:mm')}}</text>
45
+                  <!-- <text class="zhi">至</text> -->
46
+                  <!-- <text></text> -->
47
+                </view>
48
+                <view class="list_detail_item_content_status">
49
+                  <text class="blue">{{v4.state ? v4.state.name : ''}}</text>
50
+                </view>
51
+              </view>
52
+            </view>
53
+          </view>
54
+        </view>
55
+      </view>
56
+
57
+    </view>
58
+
59
+    <view class="foot_btn_spe">
60
+      <view class="btn3" @click="goBack()">返回</view>
61
+    </view>
62
+  </view>
63
+</template>
64
+<script>
65
+  import {
66
+    get,
67
+    post,
68
+    SM,
69
+    webHandle
70
+  } from "../../http/http.js";
71
+  export default {
72
+    data() {
73
+      return {
74
+        dataList: {},
75
+        queryObj: {}, //路由传递过来的数据
76
+      };
77
+    },
78
+    methods: {
79
+      // 返回
80
+      goBack() {
81
+        uni.navigateBack();
82
+      },
83
+      //获取页面信息
84
+      getInfo(){
85
+        uni.showLoading({
86
+          title: "加载中",
87
+          mask: true,
88
+        });
89
+        post('/transflow/scanInfo', {
90
+          "code": "nb",
91
+          "id": 0,
92
+          "type": "blood",
93
+          "deptOrderDetails": true,
94
+          "bloodIds": this.queryObj.bloodIds,
95
+        }).then(res => {
96
+          uni.hideLoading();
97
+          if(res.state == 200){
98
+            let dataList = res.data.data || {};
99
+            // 第一层
100
+            let dataNewList = {
101
+              bloodTotalCount: 0,
102
+              patientTotalCount: 0,
103
+              children: [],
104
+            };
105
+            
106
+            for (let key2 in dataList) {
107
+              let value2 = dataList[key2];
108
+              console.log(value2);
109
+              // 第三层,第四层
110
+              let array3 = [];
111
+              for (let key3 in value2) {
112
+                let value3 = value2[key3];
113
+                console.log(dataNewList);
114
+                array3.push({
115
+                  checked: false,
116
+                  bloodCode: key3.split('|')[0],
117
+                  volume: key3.split('|')[1],
118
+                  unit: key3.split('|')[2],
119
+                  count: value3.length,
120
+                  children: value3,
121
+                });
122
+              }
123
+              // 第二层
124
+              dataNewList.children.push({
125
+                patientName: key2.split('|')[0],
126
+                hosNum: key2.split('|')[1],
127
+                count: array3.reduce((pre, current) => pre + current.count, 0),
128
+                children: array3,
129
+              });
130
+            }
131
+            // 计算第一层血袋数量
132
+            dataNewList.bloodTotalCount = dataNewList.children.reduce((pre, current) => pre + current.count, 0);
133
+            // 计算第一层患者数量
134
+            dataNewList.patientTotalCount = Object.keys(dataList).length;
135
+            console.log(dataNewList)
136
+            // 赋值
137
+            this.dataList = dataNewList;
138
+          }else{
139
+            uni.showToast({
140
+              icon: "none",
141
+              title: res.msg || "接口获取数据失败!",
142
+            });
143
+          }
144
+        })
145
+      },
146
+
147
+    },
148
+    onLoad(options) {
149
+      console.log(options, "result");
150
+      this.queryObj = options;
151
+      this.getInfo();
152
+      // #ifdef APP-PLUS
153
+      webHandle("no", "app");
154
+      // #endif
155
+      // #ifdef H5
156
+      webHandle("no", "wx");
157
+      // #endif
158
+    },
159
+  };
160
+</script>
161
+<style lang="less" scoped>
162
+  .Scanning_Result {
163
+    padding: 16rpx;
164
+    display: flex;
165
+    flex-direction: column;
166
+    height: 100vh;
167
+    background-color: #f5f7fb;
168
+    
169
+    .ml16{
170
+      margin-left: 16rpx;
171
+    }
172
+    
173
+    .blue{
174
+      color: #49b856!important;
175
+    }
176
+    
177
+    .ellipsis{
178
+      white-space: nowrap;
179
+      overflow: hidden;
180
+      text-overflow: ellipsis;
181
+    }
182
+    
183
+    .flex1{
184
+      flex: 1;
185
+    }
186
+
187
+    .Scanning_top {
188
+      margin-top: 16rpx;
189
+      background-color: #fff;
190
+      color: #49b856;
191
+      font-weight: bold;
192
+      font-size: 30rpx;
193
+      display: flex;
194
+      align-items: center;
195
+      line-height: 1.1;
196
+      
197
+      view{
198
+        padding: 16rpx 20rpx;
199
+        flex: 1;
200
+        &.title1{
201
+          flex: 4;
202
+          word-break: break-all;
203
+        }
204
+      }
205
+    }
206
+
207
+    .Scanning_cont {
208
+      flex: 1;
209
+      display: flex;
210
+      flex-direction: column;
211
+      overflow-y: auto;
212
+      
213
+      .list{
214
+        background-color: #fff;
215
+        margin-top: 16rpx;
216
+        line-height: 1;        
217
+        .list_top{
218
+          display: flex;
219
+          font-weight: bold;
220
+          color: #000;
221
+          font-size: 30rpx;
222
+          position: relative;
223
+          padding-bottom: 16rpx;
224
+          
225
+          .newicon-a-ziyuan7{
226
+            position: absolute;
227
+            left: 12rpx;
228
+            top: 14rpx;
229
+            font-size: 32rpx;
230
+            color: #49b856;
231
+          }
232
+          view{
233
+            padding: 16rpx 20rpx 0 0;
234
+            flex: 1;
235
+            &.title1{
236
+              padding: 16rpx 20rpx 0 54rpx;
237
+              flex: 5;
238
+              text:first-of-type{
239
+                margin-right: 16rpx;
240
+              }
241
+            }
242
+          }
243
+        }
244
+        .list_bottom{
245
+          display: flex;
246
+          font-size: 25rpx;
247
+          color: #767676;
248
+          view{
249
+            padding: 0 20rpx 16rpx 5rpx;
250
+            flex: 1;
251
+            &.title1{
252
+              padding: 0 20rpx 16rpx 54rpx;
253
+              flex: 5;
254
+              display: flex;
255
+            }
256
+            &.title2{
257
+              display: flex;
258
+              align-items: center;
259
+            }
260
+            .newicon-a-ziyuan3{
261
+              color: #cdcdcd;
262
+              font-size: 12rpx;
263
+              margin-left: 20rpx;
264
+              transform: rotate(180deg);
265
+              transition: all 0.5s;
266
+              &.active{
267
+                transform: rotate(0deg);
268
+              }
269
+            }
270
+          }
271
+        }
272
+        
273
+        .list_detail{
274
+          border: 2rpx solid #C6C6C6;
275
+          padding: 22rpx 30rpx 0;
276
+          font-size: 26rpx;
277
+          .list_detail_item{
278
+            margin-bottom: 22rpx;
279
+            padding: 10rpx 0;
280
+            background-color: #F3FAF7;
281
+            .list_detail_item_title{
282
+              padding: 0 17rpx 6rpx;
283
+              border-bottom: 2rpx solid #C3C3C3;
284
+              display: flex;
285
+              align-items: center;
286
+              justify-content: space-between;
287
+              
288
+              .serialNumber{
289
+                font-size: 38rpx;
290
+              }
291
+            }
292
+            .list_detail_item_content{
293
+              padding: 0 17rpx;
294
+              
295
+              view{
296
+                line-height: 35rpx;
297
+                margin-top: 17rpx;
298
+                &:first-of-type{
299
+                  margin-top: 9rpx;
300
+                }
301
+              }
302
+              
303
+              .zhi{
304
+                margin-left: 60rpx;
305
+                margin-right: 60rpx;
306
+              }
307
+              
308
+              .list_detail_item_content_status{
309
+                display: flex;
310
+                justify-content: flex-end;
311
+                text{
312
+                  font-weight: bold;
313
+                }
314
+              }
315
+            }
316
+          }
317
+        }
318
+      }
319
+    }
320
+
321
+    .foot_btn_spe {
322
+      line-height: 64rpx;
323
+      height: 64rpx;
324
+      margin-bottom: 40rpx;
325
+      text-align: center;
326
+      display: flex;
327
+      justify-content: space-between;
328
+    
329
+      view {
330
+        height: 64rpx;
331
+        flex: 1;
332
+        margin: 0 1%;
333
+        background-image: linear-gradient(to right, #72c172, #3bb197);
334
+        color: #fff;
335
+        border-radius: 8rpx;
336
+        font-size: 26rpx;
337
+      }
338
+    }
339
+  }
340
+</style>

+ 539 - 0
static/newIcon/demo.css

@@ -0,0 +1,539 @@
1
+/* Logo 字体 */
2
+@font-face {
3
+  font-family: "iconfont logo";
4
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
5
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
6
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
7
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
8
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
9
+}
10
+
11
+.logo {
12
+  font-family: "iconfont logo";
13
+  font-size: 160px;
14
+  font-style: normal;
15
+  -webkit-font-smoothing: antialiased;
16
+  -moz-osx-font-smoothing: grayscale;
17
+}
18
+
19
+/* tabs */
20
+.nav-tabs {
21
+  position: relative;
22
+}
23
+
24
+.nav-tabs .nav-more {
25
+  position: absolute;
26
+  right: 0;
27
+  bottom: 0;
28
+  height: 42px;
29
+  line-height: 42px;
30
+  color: #666;
31
+}
32
+
33
+#tabs {
34
+  border-bottom: 1px solid #eee;
35
+}
36
+
37
+#tabs li {
38
+  cursor: pointer;
39
+  width: 100px;
40
+  height: 40px;
41
+  line-height: 40px;
42
+  text-align: center;
43
+  font-size: 16px;
44
+  border-bottom: 2px solid transparent;
45
+  position: relative;
46
+  z-index: 1;
47
+  margin-bottom: -1px;
48
+  color: #666;
49
+}
50
+
51
+
52
+#tabs .active {
53
+  border-bottom-color: #f00;
54
+  color: #222;
55
+}
56
+
57
+.tab-container .content {
58
+  display: none;
59
+}
60
+
61
+/* 页面布局 */
62
+.main {
63
+  padding: 30px 100px;
64
+  width: 960px;
65
+  margin: 0 auto;
66
+}
67
+
68
+.main .logo {
69
+  color: #333;
70
+  text-align: left;
71
+  margin-bottom: 30px;
72
+  line-height: 1;
73
+  height: 110px;
74
+  margin-top: -50px;
75
+  overflow: hidden;
76
+  *zoom: 1;
77
+}
78
+
79
+.main .logo a {
80
+  font-size: 160px;
81
+  color: #333;
82
+}
83
+
84
+.helps {
85
+  margin-top: 40px;
86
+}
87
+
88
+.helps pre {
89
+  padding: 20px;
90
+  margin: 10px 0;
91
+  border: solid 1px #e7e1cd;
92
+  background-color: #fffdef;
93
+  overflow: auto;
94
+}
95
+
96
+.icon_lists {
97
+  width: 100% !important;
98
+  overflow: hidden;
99
+  *zoom: 1;
100
+}
101
+
102
+.icon_lists li {
103
+  width: 100px;
104
+  margin-bottom: 10px;
105
+  margin-right: 20px;
106
+  text-align: center;
107
+  list-style: none !important;
108
+  cursor: default;
109
+}
110
+
111
+.icon_lists li .code-name {
112
+  line-height: 1.2;
113
+}
114
+
115
+.icon_lists .icon {
116
+  display: block;
117
+  height: 100px;
118
+  line-height: 100px;
119
+  font-size: 42px;
120
+  margin: 10px auto;
121
+  color: #333;
122
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
123
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
124
+  transition: font-size 0.25s linear, width 0.25s linear;
125
+}
126
+
127
+.icon_lists .icon:hover {
128
+  font-size: 100px;
129
+}
130
+
131
+.icon_lists .svg-icon {
132
+  /* 通过设置 font-size 来改变图标大小 */
133
+  width: 1em;
134
+  /* 图标和文字相邻时,垂直对齐 */
135
+  vertical-align: -0.15em;
136
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
137
+  fill: currentColor;
138
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
139
+      normalize.css 中也包含这行 */
140
+  overflow: hidden;
141
+}
142
+
143
+.icon_lists li .name,
144
+.icon_lists li .code-name {
145
+  color: #666;
146
+}
147
+
148
+/* markdown 样式 */
149
+.markdown {
150
+  color: #666;
151
+  font-size: 14px;
152
+  line-height: 1.8;
153
+}
154
+
155
+.highlight {
156
+  line-height: 1.5;
157
+}
158
+
159
+.markdown img {
160
+  vertical-align: middle;
161
+  max-width: 100%;
162
+}
163
+
164
+.markdown h1 {
165
+  color: #404040;
166
+  font-weight: 500;
167
+  line-height: 40px;
168
+  margin-bottom: 24px;
169
+}
170
+
171
+.markdown h2,
172
+.markdown h3,
173
+.markdown h4,
174
+.markdown h5,
175
+.markdown h6 {
176
+  color: #404040;
177
+  margin: 1.6em 0 0.6em 0;
178
+  font-weight: 500;
179
+  clear: both;
180
+}
181
+
182
+.markdown h1 {
183
+  font-size: 28px;
184
+}
185
+
186
+.markdown h2 {
187
+  font-size: 22px;
188
+}
189
+
190
+.markdown h3 {
191
+  font-size: 16px;
192
+}
193
+
194
+.markdown h4 {
195
+  font-size: 14px;
196
+}
197
+
198
+.markdown h5 {
199
+  font-size: 12px;
200
+}
201
+
202
+.markdown h6 {
203
+  font-size: 12px;
204
+}
205
+
206
+.markdown hr {
207
+  height: 1px;
208
+  border: 0;
209
+  background: #e9e9e9;
210
+  margin: 16px 0;
211
+  clear: both;
212
+}
213
+
214
+.markdown p {
215
+  margin: 1em 0;
216
+}
217
+
218
+.markdown>p,
219
+.markdown>blockquote,
220
+.markdown>.highlight,
221
+.markdown>ol,
222
+.markdown>ul {
223
+  width: 80%;
224
+}
225
+
226
+.markdown ul>li {
227
+  list-style: circle;
228
+}
229
+
230
+.markdown>ul li,
231
+.markdown blockquote ul>li {
232
+  margin-left: 20px;
233
+  padding-left: 4px;
234
+}
235
+
236
+.markdown>ul li p,
237
+.markdown>ol li p {
238
+  margin: 0.6em 0;
239
+}
240
+
241
+.markdown ol>li {
242
+  list-style: decimal;
243
+}
244
+
245
+.markdown>ol li,
246
+.markdown blockquote ol>li {
247
+  margin-left: 20px;
248
+  padding-left: 4px;
249
+}
250
+
251
+.markdown code {
252
+  margin: 0 3px;
253
+  padding: 0 5px;
254
+  background: #eee;
255
+  border-radius: 3px;
256
+}
257
+
258
+.markdown strong,
259
+.markdown b {
260
+  font-weight: 600;
261
+}
262
+
263
+.markdown>table {
264
+  border-collapse: collapse;
265
+  border-spacing: 0px;
266
+  empty-cells: show;
267
+  border: 1px solid #e9e9e9;
268
+  width: 95%;
269
+  margin-bottom: 24px;
270
+}
271
+
272
+.markdown>table th {
273
+  white-space: nowrap;
274
+  color: #333;
275
+  font-weight: 600;
276
+}
277
+
278
+.markdown>table th,
279
+.markdown>table td {
280
+  border: 1px solid #e9e9e9;
281
+  padding: 8px 16px;
282
+  text-align: left;
283
+}
284
+
285
+.markdown>table th {
286
+  background: #F7F7F7;
287
+}
288
+
289
+.markdown blockquote {
290
+  font-size: 90%;
291
+  color: #999;
292
+  border-left: 4px solid #e9e9e9;
293
+  padding-left: 0.8em;
294
+  margin: 1em 0;
295
+}
296
+
297
+.markdown blockquote p {
298
+  margin: 0;
299
+}
300
+
301
+.markdown .anchor {
302
+  opacity: 0;
303
+  transition: opacity 0.3s ease;
304
+  margin-left: 8px;
305
+}
306
+
307
+.markdown .waiting {
308
+  color: #ccc;
309
+}
310
+
311
+.markdown h1:hover .anchor,
312
+.markdown h2:hover .anchor,
313
+.markdown h3:hover .anchor,
314
+.markdown h4:hover .anchor,
315
+.markdown h5:hover .anchor,
316
+.markdown h6:hover .anchor {
317
+  opacity: 1;
318
+  display: inline-block;
319
+}
320
+
321
+.markdown>br,
322
+.markdown>p>br {
323
+  clear: both;
324
+}
325
+
326
+
327
+.hljs {
328
+  display: block;
329
+  background: white;
330
+  padding: 0.5em;
331
+  color: #333333;
332
+  overflow-x: auto;
333
+}
334
+
335
+.hljs-comment,
336
+.hljs-meta {
337
+  color: #969896;
338
+}
339
+
340
+.hljs-string,
341
+.hljs-variable,
342
+.hljs-template-variable,
343
+.hljs-strong,
344
+.hljs-emphasis,
345
+.hljs-quote {
346
+  color: #df5000;
347
+}
348
+
349
+.hljs-keyword,
350
+.hljs-selector-tag,
351
+.hljs-type {
352
+  color: #a71d5d;
353
+}
354
+
355
+.hljs-literal,
356
+.hljs-symbol,
357
+.hljs-bullet,
358
+.hljs-attribute {
359
+  color: #0086b3;
360
+}
361
+
362
+.hljs-section,
363
+.hljs-name {
364
+  color: #63a35c;
365
+}
366
+
367
+.hljs-tag {
368
+  color: #333333;
369
+}
370
+
371
+.hljs-title,
372
+.hljs-attr,
373
+.hljs-selector-id,
374
+.hljs-selector-class,
375
+.hljs-selector-attr,
376
+.hljs-selector-pseudo {
377
+  color: #795da3;
378
+}
379
+
380
+.hljs-addition {
381
+  color: #55a532;
382
+  background-color: #eaffea;
383
+}
384
+
385
+.hljs-deletion {
386
+  color: #bd2c00;
387
+  background-color: #ffecec;
388
+}
389
+
390
+.hljs-link {
391
+  text-decoration: underline;
392
+}
393
+
394
+/* 代码高亮 */
395
+/* PrismJS 1.15.0
396
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
397
+/**
398
+ * prism.js default theme for JavaScript, CSS and HTML
399
+ * Based on dabblet (http://dabblet.com)
400
+ * @author Lea Verou
401
+ */
402
+code[class*="language-"],
403
+pre[class*="language-"] {
404
+  color: black;
405
+  background: none;
406
+  text-shadow: 0 1px white;
407
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
408
+  text-align: left;
409
+  white-space: pre;
410
+  word-spacing: normal;
411
+  word-break: normal;
412
+  word-wrap: normal;
413
+  line-height: 1.5;
414
+
415
+  -moz-tab-size: 4;
416
+  -o-tab-size: 4;
417
+  tab-size: 4;
418
+
419
+  -webkit-hyphens: none;
420
+  -moz-hyphens: none;
421
+  -ms-hyphens: none;
422
+  hyphens: none;
423
+}
424
+
425
+pre[class*="language-"]::-moz-selection,
426
+pre[class*="language-"] ::-moz-selection,
427
+code[class*="language-"]::-moz-selection,
428
+code[class*="language-"] ::-moz-selection {
429
+  text-shadow: none;
430
+  background: #b3d4fc;
431
+}
432
+
433
+pre[class*="language-"]::selection,
434
+pre[class*="language-"] ::selection,
435
+code[class*="language-"]::selection,
436
+code[class*="language-"] ::selection {
437
+  text-shadow: none;
438
+  background: #b3d4fc;
439
+}
440
+
441
+@media print {
442
+
443
+  code[class*="language-"],
444
+  pre[class*="language-"] {
445
+    text-shadow: none;
446
+  }
447
+}
448
+
449
+/* Code blocks */
450
+pre[class*="language-"] {
451
+  padding: 1em;
452
+  margin: .5em 0;
453
+  overflow: auto;
454
+}
455
+
456
+:not(pre)>code[class*="language-"],
457
+pre[class*="language-"] {
458
+  background: #f5f2f0;
459
+}
460
+
461
+/* Inline code */
462
+:not(pre)>code[class*="language-"] {
463
+  padding: .1em;
464
+  border-radius: .3em;
465
+  white-space: normal;
466
+}
467
+
468
+.token.comment,
469
+.token.prolog,
470
+.token.doctype,
471
+.token.cdata {
472
+  color: slategray;
473
+}
474
+
475
+.token.punctuation {
476
+  color: #999;
477
+}
478
+
479
+.namespace {
480
+  opacity: .7;
481
+}
482
+
483
+.token.property,
484
+.token.tag,
485
+.token.boolean,
486
+.token.number,
487
+.token.constant,
488
+.token.symbol,
489
+.token.deleted {
490
+  color: #905;
491
+}
492
+
493
+.token.selector,
494
+.token.attr-name,
495
+.token.string,
496
+.token.char,
497
+.token.builtin,
498
+.token.inserted {
499
+  color: #690;
500
+}
501
+
502
+.token.operator,
503
+.token.entity,
504
+.token.url,
505
+.language-css .token.string,
506
+.style .token.string {
507
+  color: #9a6e3a;
508
+  background: hsla(0, 0%, 100%, .5);
509
+}
510
+
511
+.token.atrule,
512
+.token.attr-value,
513
+.token.keyword {
514
+  color: #07a;
515
+}
516
+
517
+.token.function,
518
+.token.class-name {
519
+  color: #DD4A68;
520
+}
521
+
522
+.token.regex,
523
+.token.important,
524
+.token.variable {
525
+  color: #e90;
526
+}
527
+
528
+.token.important,
529
+.token.bold {
530
+  font-weight: bold;
531
+}
532
+
533
+.token.italic {
534
+  font-style: italic;
535
+}
536
+
537
+.token.entity {
538
+  cursor: help;
539
+}

+ 257 - 0
static/newIcon/demo_index.html

@@ -0,0 +1,257 @@
1
+<!DOCTYPE html>
2
+<html>
3
+<head>
4
+  <meta charset="utf-8"/>
5
+  <title>iconfont Demo</title>
6
+  <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>
7
+  <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>
8
+  <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
9
+  <link rel="stylesheet" href="demo.css">
10
+  <link rel="stylesheet" href="iconfont.css">
11
+  <script src="iconfont.js"></script>
12
+  <!-- jQuery -->
13
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
14
+  <!-- 代码高亮 -->
15
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
16
+  <style>
17
+    .main .logo {
18
+      margin-top: 0;
19
+      height: auto;
20
+    }
21
+
22
+    .main .logo a {
23
+      display: flex;
24
+      align-items: center;
25
+    }
26
+
27
+    .main .logo .sub-title {
28
+      margin-left: 0.5em;
29
+      font-size: 22px;
30
+      color: #fff;
31
+      background: linear-gradient(-45deg, #3967FF, #B500FE);
32
+      -webkit-background-clip: text;
33
+      -webkit-text-fill-color: transparent;
34
+    }
35
+  </style>
36
+</head>
37
+<body>
38
+  <div class="main">
39
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
40
+      <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
41
+      
42
+    </a></h1>
43
+    <div class="nav-tabs">
44
+      <ul id="tabs" class="dib-box">
45
+        <li class="dib active"><span>Unicode</span></li>
46
+        <li class="dib"><span>Font class</span></li>
47
+        <li class="dib"><span>Symbol</span></li>
48
+      </ul>
49
+      
50
+      <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4304849" target="_blank" class="nav-more">查看项目</a>
51
+      
52
+    </div>
53
+    <div class="tab-container">
54
+      <div class="content unicode" style="display: block;">
55
+          <ul class="icon_lists dib-box">
56
+          
57
+            <li class="dib">
58
+              <span class="icon newicon">&#xe605;</span>
59
+                <div class="name">资源 7</div>
60
+                <div class="code-name">&amp;#xe605;</div>
61
+              </li>
62
+          
63
+            <li class="dib">
64
+              <span class="icon newicon">&#xe604;</span>
65
+                <div class="name">头像</div>
66
+                <div class="code-name">&amp;#xe604;</div>
67
+              </li>
68
+          
69
+            <li class="dib">
70
+              <span class="icon newicon">&#xe601;</span>
71
+                <div class="name">箭头上</div>
72
+                <div class="code-name">&amp;#xe601;</div>
73
+              </li>
74
+          
75
+          </ul>
76
+          <div class="article markdown">
77
+          <h2 id="unicode-">Unicode 引用</h2>
78
+          <hr>
79
+
80
+          <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
81
+          <ul>
82
+            <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
83
+            <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
84
+          </ul>
85
+          <blockquote>
86
+            <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
87
+          </blockquote>
88
+          <p>Unicode 使用步骤如下:</p>
89
+          <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
90
+<pre><code class="language-css"
91
+>@font-face {
92
+  font-family: 'newicon';
93
+  src: url('iconfont.woff2?t=1698546579618') format('woff2'),
94
+       url('iconfont.woff?t=1698546579618') format('woff'),
95
+       url('iconfont.ttf?t=1698546579618') format('truetype');
96
+}
97
+</code></pre>
98
+          <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
99
+<pre><code class="language-css"
100
+>.newicon {
101
+  font-family: "newicon" !important;
102
+  font-size: 16px;
103
+  font-style: normal;
104
+  -webkit-font-smoothing: antialiased;
105
+  -moz-osx-font-smoothing: grayscale;
106
+}
107
+</code></pre>
108
+          <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
109
+<pre>
110
+<code class="language-html"
111
+>&lt;span class="newicon"&gt;&amp;#x33;&lt;/span&gt;
112
+</code></pre>
113
+          <blockquote>
114
+            <p>"newicon" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
115
+          </blockquote>
116
+          </div>
117
+      </div>
118
+      <div class="content font-class">
119
+        <ul class="icon_lists dib-box">
120
+          
121
+          <li class="dib">
122
+            <span class="icon newicon newicon-a-ziyuan71"></span>
123
+            <div class="name">
124
+              资源 7
125
+            </div>
126
+            <div class="code-name">.newicon-a-ziyuan71
127
+            </div>
128
+          </li>
129
+          
130
+          <li class="dib">
131
+            <span class="icon newicon newicon-a-ziyuan7"></span>
132
+            <div class="name">
133
+              头像
134
+            </div>
135
+            <div class="code-name">.newicon-a-ziyuan7
136
+            </div>
137
+          </li>
138
+          
139
+          <li class="dib">
140
+            <span class="icon newicon newicon-a-ziyuan3"></span>
141
+            <div class="name">
142
+              箭头上
143
+            </div>
144
+            <div class="code-name">.newicon-a-ziyuan3
145
+            </div>
146
+          </li>
147
+          
148
+        </ul>
149
+        <div class="article markdown">
150
+        <h2 id="font-class-">font-class 引用</h2>
151
+        <hr>
152
+
153
+        <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
154
+        <p>与 Unicode 使用方式相比,具有如下特点:</p>
155
+        <ul>
156
+          <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
157
+          <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
158
+        </ul>
159
+        <p>使用步骤如下:</p>
160
+        <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
161
+<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
162
+</code></pre>
163
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
164
+<pre><code class="language-html">&lt;span class="newicon newicon-xxx"&gt;&lt;/span&gt;
165
+</code></pre>
166
+        <blockquote>
167
+          <p>"
168
+            newicon" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
169
+        </blockquote>
170
+      </div>
171
+      </div>
172
+      <div class="content symbol">
173
+          <ul class="icon_lists dib-box">
174
+          
175
+            <li class="dib">
176
+                <svg class="icon svg-icon" aria-hidden="true">
177
+                  <use xlink:href="#newicon-a-ziyuan71"></use>
178
+                </svg>
179
+                <div class="name">资源 7</div>
180
+                <div class="code-name">#newicon-a-ziyuan71</div>
181
+            </li>
182
+          
183
+            <li class="dib">
184
+                <svg class="icon svg-icon" aria-hidden="true">
185
+                  <use xlink:href="#newicon-a-ziyuan7"></use>
186
+                </svg>
187
+                <div class="name">头像</div>
188
+                <div class="code-name">#newicon-a-ziyuan7</div>
189
+            </li>
190
+          
191
+            <li class="dib">
192
+                <svg class="icon svg-icon" aria-hidden="true">
193
+                  <use xlink:href="#newicon-a-ziyuan3"></use>
194
+                </svg>
195
+                <div class="name">箭头上</div>
196
+                <div class="code-name">#newicon-a-ziyuan3</div>
197
+            </li>
198
+          
199
+          </ul>
200
+          <div class="article markdown">
201
+          <h2 id="symbol-">Symbol 引用</h2>
202
+          <hr>
203
+
204
+          <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
205
+            这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
206
+          <ul>
207
+            <li>支持多色图标了,不再受单色限制。</li>
208
+            <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
209
+            <li>兼容性较差,支持 IE9+,及现代浏览器。</li>
210
+            <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
211
+          </ul>
212
+          <p>使用步骤如下:</p>
213
+          <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
214
+<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
215
+</code></pre>
216
+          <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
217
+<pre><code class="language-html">&lt;style&gt;
218
+.icon {
219
+  width: 1em;
220
+  height: 1em;
221
+  vertical-align: -0.15em;
222
+  fill: currentColor;
223
+  overflow: hidden;
224
+}
225
+&lt;/style&gt;
226
+</code></pre>
227
+          <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
228
+<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
229
+  &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
230
+&lt;/svg&gt;
231
+</code></pre>
232
+          </div>
233
+      </div>
234
+
235
+    </div>
236
+  </div>
237
+  <script>
238
+  $(document).ready(function () {
239
+      $('.tab-container .content:first').show()
240
+
241
+      $('#tabs li').click(function (e) {
242
+        var tabContent = $('.tab-container .content')
243
+        var index = $(this).index()
244
+
245
+        if ($(this).hasClass('active')) {
246
+          return
247
+        } else {
248
+          $('#tabs li').removeClass('active')
249
+          $(this).addClass('active')
250
+
251
+          tabContent.hide().eq(index).fadeIn()
252
+        }
253
+      })
254
+    })
255
+  </script>
256
+</body>
257
+</html>

+ 27 - 0
static/newIcon/iconfont.css

@@ -0,0 +1,27 @@
1
+@font-face {
2
+  font-family: "newicon"; /* Project id 4304849 */
3
+  src: url('~@/static/newIcon/iconfont.woff2?t=1698546579618') format('woff2'),
4
+       url('~@/static/newIcon/iconfont.woff?t=1698546579618') format('woff'),
5
+       url('~@/static/newIcon/iconfont.ttf?t=1698546579618') format('truetype');
6
+}
7
+
8
+.newicon {
9
+  font-family: "newicon" !important;
10
+  font-size: 16px;
11
+  font-style: normal;
12
+  -webkit-font-smoothing: antialiased;
13
+  -moz-osx-font-smoothing: grayscale;
14
+}
15
+
16
+.newicon-a-ziyuan71:before {
17
+  content: "\e605";
18
+}
19
+
20
+.newicon-a-ziyuan7:before {
21
+  content: "\e604";
22
+}
23
+
24
+.newicon-a-ziyuan3:before {
25
+  content: "\e601";
26
+}
27
+

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
static/newIcon/iconfont.js


+ 30 - 0
static/newIcon/iconfont.json

@@ -0,0 +1,30 @@
1
+{
2
+  "id": "4304849",
3
+  "name": "新转运图标",
4
+  "font_family": "newicon",
5
+  "css_prefix_text": "newicon-",
6
+  "description": "",
7
+  "glyphs": [
8
+    {
9
+      "icon_id": "37864835",
10
+      "name": "资源 7",
11
+      "font_class": "a-ziyuan71",
12
+      "unicode": "e605",
13
+      "unicode_decimal": 58885
14
+    },
15
+    {
16
+      "icon_id": "37864731",
17
+      "name": "头像",
18
+      "font_class": "a-ziyuan7",
19
+      "unicode": "e604",
20
+      "unicode_decimal": 58884
21
+    },
22
+    {
23
+      "icon_id": "37861550",
24
+      "name": "箭头上",
25
+      "font_class": "a-ziyuan3",
26
+      "unicode": "e601",
27
+      "unicode_decimal": 58881
28
+    }
29
+  ]
30
+}

BIN=BIN
static/newIcon/iconfont.ttf


BIN=BIN
static/newIcon/iconfont.woff


BIN=BIN
static/newIcon/iconfont.woff2