Browse Source

患者建单

seimin 2 years ago
parent
commit
1358ad181c

+ 25 - 25
App.vue

@@ -1,31 +1,31 @@
1 1
 <script>
2
-	export default {
3
-		onLaunch: function() {
4
-			console.log("App Launch");
5
-		},
6
-		onShow: function() {
7
-			console.log("App Show");
8
-		},
9
-		onHide: function() {
10
-			console.log("App Hide");
11
-		},
12
-		onPageNotFound(res) {
13
-			wx.reLaunch({
14
-				url: '/pages/login/login',
15
-			})
16
-		},
17
-	};
2
+  export default {
3
+    onLaunch: function() {
4
+      console.log("App Launch");
5
+    },
6
+    onShow: function() {
7
+      console.log("App Show");
8
+    },
9
+    onHide: function() {
10
+      console.log("App Hide");
11
+    },
12
+    onPageNotFound(res) {
13
+      wx.reLaunch({
14
+        url: '/pages/login/login',
15
+      })
16
+    },
17
+  };
18 18
 </script>
19 19
 
20 20
 <style lang="scss">
21
-	/*每个页面公共css */
22
-	// @import "@/uni_modules/uni-scss/index.scss";
23
-	// 设置整个项目的样式
24
-	page {
25
-		background-color: #f9fafb;
21
+  /*每个页面公共css */
22
+  // @import "@/uni_modules/uni-scss/index.scss";
23
+  // 设置整个项目的样式
24
+  page {
25
+    background-color: #f9fafb;
26 26
 
27
-		* {
28
-			box-sizing: border-box;
29
-		}
30
-	}
27
+    * {
28
+      box-sizing: border-box;
29
+    }
30
+  }
31 31
 </style>

+ 307 - 0
components/seiminModel/seiminModel.vue

@@ -48,6 +48,29 @@
48 48
           </view>
49 49
         </view>
50 50
       </view>
51
+      <!-- 预约时间 -->
52
+      <view class="seiminModel_content yyDate" v-else-if="opts.skin === 'yyDate'">
53
+        <view class="yyDate_txt" v-html="opts.content"></view>
54
+        <view class="yyDate_date_time">
55
+          <picker mode="multiSelector" @click.native="clickDate" @columnchange="columnchangeDate($event)"
56
+            @change="changeDate($event)" :value="dateIndex" :range="dateOptions">
57
+            <view class="yyDate_date"><text>{{dateVal}}</text><text class="pda pda-icon"></text></view>
58
+          </picker>
59
+          <picker mode="multiSelector" @click.native="clickTime" @columnchange="columnchangeTime($event)"
60
+            @change="changeTime($event)" :value="timeIndex" :range="timeOptions">
61
+            <view class="yyDate_time"><text>{{timeVal}}</text><text class="pda pda-shouye8"></text></view>
62
+          </picker>
63
+        </view>
64
+        <view class="yyDate_tips red" v-if="!dateVal">
65
+          请选择日期
66
+        </view>
67
+        <view class="yyDate_tips red" v-else-if="!timeVal">
68
+          请选择时间
69
+        </view>
70
+        <view class="yyDate_nextDay" @click="nextDay" v-if="dateVal">
71
+          下一日
72
+        </view>
73
+      </view>
51 74
       <!-- 正常弹窗 -->
52 75
       <view class="seiminModel_content" v-else>
53 76
         <!-- 图标 -->
@@ -79,10 +102,38 @@
79 102
   import {
80 103
     reqDeptCodes
81 104
   } from "../../request/api.js";
105
+  import {
106
+    generateArray
107
+  } from '../../utils/index.js';
108
+  import {
109
+    format,
110
+    endOfMonth,
111
+    addDays,
112
+  } from 'date-fns';
82 113
   export default {
83 114
     name: "seiminModel",
115
+    props: {
116
+      // 其他数据
117
+      otherData: {
118
+        type: Object,
119
+        default: () => ({})
120
+      }
121
+    },
84 122
     data() {
85 123
       return {
124
+        dateOptions: [
125
+          [],
126
+          [],
127
+          []
128
+        ],
129
+        dateIndex: [0, 0, 0],
130
+        dateVal: '',
131
+        timeOptions: [
132
+          [],
133
+          []
134
+        ],
135
+        timeIndex: [0, 0],
136
+        timeVal: '',
86 137
         // 配置项
87 138
         opts: {},
88 139
         // 动态二维码定时器
@@ -120,6 +171,193 @@
120 171
       ...mapState("login", ["loginInfo"]),
121 172
     },
122 173
     methods: {
174
+      // 下一日
175
+      nextDay() {
176
+        let arr = this.dateVal.split('-');
177
+        let d_year = Number(arr[0]);
178
+        let d_month = Number(arr[1]) - 1;
179
+        let d_day = Number(arr[2]);
180
+        let date = addDays(new Date(d_year, d_month, d_day, 0, 0, 0), 1);
181
+        let year = format(date, 'yyyy');
182
+        let month = format(date, 'MM');
183
+        let day = format(date, 'dd');
184
+        let year_i = this.dateOptions[0].findIndex(v => v === year);
185
+        let month_i = this.dateOptions[1].findIndex(v => v === month);
186
+        let day_i = this.dateOptions[2].findIndex(v => v === day);
187
+        console.log(year_i, month_i, day_i, this.dateOptions, year, month, day)
188
+        this.dateIndex = [year_i, month_i, day_i];
189
+        this.dateVal = format(date, 'yyyy-MM-dd');
190
+
191
+      },
192
+      // 点击日期
193
+      clickDate() {
194
+        if (!this.dateVal) {
195
+          this.dateIndex = [0, 0, 0];
196
+        }
197
+      },
198
+      // 点击时间
199
+      clickTime() {
200
+        console.log(this.timeVal)
201
+        if (!this.timeVal) {
202
+          this.timeIndex = [0, 0];
203
+        }
204
+        let now = new Date();
205
+        let year = now.getFullYear();
206
+        let month = now.getMonth();
207
+        let day = now.getDate();
208
+        let hour = now.getHours();
209
+        let minute = now.getMinutes();
210
+        let second = now.getSeconds();
211
+        if (this.dateVal) {
212
+          let arr = this.dateVal.split('-');
213
+          let d_year = Number(arr[0]);
214
+          let d_month = Number(arr[1]) - 1;
215
+          let d_day = Number(arr[2]);
216
+          let c_d_day = Number(format(endOfMonth(new Date(d_year, d_month, d_day, 0, 0, 0)), 'dd'));
217
+          if (year != d_year || month != d_month || day != d_day) {
218
+            this.timeOptions = [generateArray(0, 23), ['00', '30']];
219
+          }
220
+          if (this.timeVal) {
221
+            let arr = this.timeVal.split(':');
222
+            let i1 = this.timeOptions[0].findIndex(v => v === arr[0]);
223
+            console.log(i1)
224
+            let i2 = this.timeOptions[1].length > 1 ? 30 : 0;
225
+            if (i1) {
226
+              this.timeOptions[1] = ['00', '30'];
227
+            }
228
+            this.timeIndex = [i1, i2];
229
+          }
230
+        }
231
+      },
232
+      // 滚动日期picker
233
+      columnchangeDate(e) {
234
+        console.log(e.detail);
235
+        console.log(this.dateOptions, this.dateIndex);
236
+        const {
237
+          column, //列数
238
+          value, //索引
239
+        } = e.detail;
240
+        let now = new Date();
241
+        let year = now.getFullYear();
242
+        let month = now.getMonth();
243
+        let day = now.getDate();
244
+        let hour = now.getHours();
245
+        let minute = now.getMinutes();
246
+        let second = now.getSeconds();
247
+        let c_day = Number(format(endOfMonth(new Date(year, month, day, 0, 0, 0)), 'dd'));
248
+        if (column === 0) {
249
+          // 年
250
+          if (year != this.dateOptions[column][value]) {
251
+            this.dateOptions[1] = generateArray(1, 12);
252
+            this.dateOptions[2] = generateArray(1, c_day);
253
+          } else {
254
+            this.dateOptions[1] = generateArray(month + 1, 12);
255
+            this.dateOptions[2] = generateArray(day, c_day);
256
+          }
257
+          this.dateIndex = [value, 0, 0];
258
+        }
259
+        if (column === 1) {
260
+          // 月
261
+          if ((month + 1) != this.dateOptions[column][value]) {
262
+            this.dateOptions[2] = generateArray(1, c_day);
263
+          } else {
264
+            this.dateOptions[2] = generateArray(day, c_day);
265
+          }
266
+          this.dateIndex = [this.dateIndex[0], value, 0];
267
+        }
268
+      },
269
+      // 滚动时间picker
270
+      columnchangeTime(e) {
271
+        console.log(e.detail);
272
+        console.log(this.timeOptions);
273
+        const {
274
+          column, //列数
275
+          value, //索引
276
+        } = e.detail;
277
+        let now = new Date();
278
+        let year = now.getFullYear();
279
+        let month = now.getMonth();
280
+        let day = now.getDate();
281
+        let hour = now.getHours();
282
+        let minute = now.getMinutes();
283
+        let second = now.getSeconds();
284
+        if (column === 0) {
285
+          // 月份
286
+          if (hour != this.timeOptions[column][value]) {
287
+            this.timeOptions[1] = ['00', '30'];
288
+          }
289
+        }
290
+      },
291
+      // 修改日期
292
+      changeDate(e) {
293
+        console.log(e.target.value);
294
+        this.dateIndex = e.target.value;
295
+        this.timeVal = '';
296
+        this.dateVal =
297
+          `${this.dateOptions[0][this.dateIndex[0]]}-${this.dateOptions[1][this.dateIndex[1]]}-${this.dateOptions[2][this.dateIndex[2]]}`;
298
+      },
299
+      // 修改时间
300
+      changeTime(e) {
301
+        console.log(e.target.value);
302
+        this.timeIndex = e.target.value;
303
+        this.timeVal = `${this.timeOptions[0][this.timeIndex[0]]}:${this.timeOptions[1][this.timeIndex[1]]}`;
304
+      },
305
+      // 日期时间的可选范围
306
+      dateTimeScope() {
307
+        let now = new Date();
308
+        let year = Number(format(now, 'yyyy'));
309
+        let month = Number(format(now, 'MM'));
310
+        let day = Number(format(now, 'dd'));
311
+        let hour = Number(format(now, 'HH'));
312
+        let minute = Number(format(now, 'mm'));
313
+        let c_day = Number(format(endOfMonth(now), 'dd'));
314
+        console.log(year, month, day, hour, minute);
315
+        // 判断分钟
316
+        if (minute >= 0 && minute < 30) {
317
+          this.timeOptions = [generateArray(hour, 23), ['30']];
318
+          this.dateOptions = [
319
+            generateArray(year, year + 1),
320
+            generateArray(month, 12),
321
+            generateArray(day, c_day)
322
+          ];
323
+        } else {
324
+          // 跨分钟
325
+          this.timeOptions = [generateArray(hour == 23 ? 0 : hour + 1, 23), ['00', '30']];
326
+          // 跨小时
327
+          if (hour == 23) {
328
+            // 跨日
329
+            if (day == c_day) {
330
+              // 跨月
331
+              if (month == 12) {
332
+                // 跨月
333
+                this.dateOptions = [
334
+                  generateArray(year + 1, year + 1),
335
+                  generateArray(0, 12),
336
+                  generateArray(0, c_day)
337
+                ]
338
+              } else {
339
+                this.dateOptions = [
340
+                  generateArray(year, year + 1),
341
+                  generateArray(month + 1, 12),
342
+                  generateArray(0, c_day)
343
+                ]
344
+              }
345
+            } else {
346
+              this.dateOptions = [
347
+                generateArray(year, year + 1),
348
+                generateArray(month, 12),
349
+                generateArray(day + 1, c_day)
350
+              ]
351
+            }
352
+          } else {
353
+            this.dateOptions = [
354
+              generateArray(year, year + 1),
355
+              generateArray(month, 12),
356
+              generateArray(day, c_day)
357
+            ];
358
+          }
359
+        }
360
+      },
123 361
       // 显示弹窗
124 362
       show(args = {}) {
125 363
         // 默认配置项
@@ -172,6 +410,19 @@
172 410
         } else if (this.opts.skin === 'evaluate') {
173 411
           // 如果是评价弹窗,则默认选中五个笑脸
174 412
           this.stars = ['pda-haoping', 'pda-haoping', 'pda-haoping', 'pda-haoping', 'pda-haoping'];
413
+        } else if (this.opts.skin === 'yyDate') {
414
+          console.log(this.otherData);
415
+          // 回显
416
+          if (this.otherData.date) {
417
+            //回显日期
418
+            this.dateVal = format(this.otherData.timestamp, 'yyyy-MM-dd');
419
+          }
420
+          if (this.otherData.time) {
421
+            //回显日期
422
+            this.timeVal = format(this.otherData.timestamp, 'HH:mm');
423
+          }
424
+          // 日期时间的可选范围
425
+          this.dateTimeScope();
175 426
         }
176 427
       },
177 428
       // 关闭弹窗
@@ -397,6 +648,62 @@
397 648
               }
398 649
             }
399 650
           }
651
+
652
+          // 预约时间
653
+          &.yyDate {
654
+            padding: 56rpx 0 82rpx;
655
+
656
+            .yyDate_txt {
657
+              font-size: 28rpx;
658
+              color: #666;
659
+              padding-bottom: 20rpx;
660
+              @include border(bottom);
661
+            }
662
+
663
+            .yyDate_date_time {
664
+              font-size: 32rpx;
665
+              color: #333;
666
+              @include flex;
667
+
668
+              .pda {
669
+                font-size: 44rpx;
670
+              }
671
+
672
+              .yyDate_date {
673
+                width: 260rpx;
674
+                height: 66rpx;
675
+                margin: 0 14rpx;
676
+                padding: 0 8rpx;
677
+                background-color: #fff;
678
+                @include border(all, #8E9D9E);
679
+                @include flex(space-between, center);
680
+              }
681
+
682
+              .yyDate_time {
683
+                width: 164rpx;
684
+                height: 66rpx;
685
+                margin: 0 14rpx;
686
+                padding: 0 8rpx;
687
+                background-color: #fff;
688
+                @include border(all, #8E9D9E);
689
+                @include flex(space-between, center);
690
+              }
691
+            }
692
+
693
+            .yyDate_nextDay {
694
+              margin-top: 42rpx;
695
+              color: $defaultColor;
696
+              text-align: left;
697
+              padding: 0 14rpx;
698
+              text-decoration: underline;
699
+            }
700
+
701
+            .yyDate_tips {
702
+              padding: 8rpx;
703
+              font-size: 28rpx;
704
+              text-align: left;
705
+            }
706
+          }
400 707
         }
401 708
 
402 709
         .seiminModel_footer {

+ 12 - 1
pages.json

@@ -75,7 +75,8 @@
75 75
           "titleNView": false
76 76
         },
77 77
         "navigationBarTitleText": "患者列表",
78
-        "navigationBarBackgroundColor": "#2C2D31"
78
+        "navigationBarBackgroundColor": "#2C2D31",
79
+        "enablePullDownRefresh": true
79 80
       }
80 81
 
81 82
     }, {
@@ -108,6 +109,16 @@
108 109
         "navigationBarBackgroundColor": "#2C2D31"
109 110
       }
110 111
 
112
+    }, {
113
+      "path": "pages/patientBuildConfirm/patientBuildConfirm",
114
+      "style": {
115
+        "h5": {
116
+          "titleNView": false
117
+        },
118
+        "navigationBarTitleText": "建单",
119
+        "navigationBarBackgroundColor": "#2C2D31"
120
+      }
121
+
111 122
     }
112 123
   ],
113 124
   "globalStyle": {

+ 92 - 16
pages/appointmentInspect/appointmentInspect.vue

@@ -1,11 +1,16 @@
1 1
 <template>
2 2
   <view class="appointmentInspect">
3
-    <view class="qco_msg" v-html="patientMsg"></view>
4
-    <view class="select_block_wrap">
3
+    <view class="qco_msg" id="qco_msg">
4
+      <view class="qco_msg1" v-html="patientMsg"></view>
5
+      <view class="qco_msg2 red" v-if="isMoreDept">您选择的检查包含了多个科室,请您只包含一个科室</view>
6
+    </view>
7
+    <view class="select_block_wrap" :style="{paddingTop:qcoHeight+'px'}">
5 8
       <view class="uni-list">
6 9
         <checkbox-group @change="checkboxChange">
7 10
           <scroll-view scroll-y class="scrollHeight">
8 11
             <label class="inspect_listItem" v-for="inspect in inspects" :key="inspect.value">
12
+              <image class="ji" src="../../static/imgs/icon_ji.png" mode="widthFix" v-if="inspect.priority == 1">
13
+              </image>
9 14
               <view class="inspect_listItem_header">
10 15
                 <view class="inspect_listItem_header_title">
11 16
                   <checkbox color="#09BB07" :value="inspect.value" :checked="inspect.checked" />
@@ -38,7 +43,8 @@
38 43
 <script>
39 44
   import cloneDeep from 'lodash/cloneDeep';
40 45
   import {
41
-    mapState
46
+    mapState,
47
+    mapMutations
42 48
   } from "vuex";
43 49
   import {
44 50
     ASSOCIATION_TYPES
@@ -47,6 +53,9 @@
47 53
     data() {
48 54
       return {
49 55
         ASSOCIATION_TYPES,
56
+        qcoHeight: 0,
57
+        // 关联检查有多个科室,但是开关设置是不允许,是否展示提示文字
58
+        isMoreDept: false,
50 59
         // 检查列表
51 60
         inspects: [],
52 61
         // 是否加急
@@ -64,14 +73,6 @@
64 73
           click: () => {
65 74
             uni.navigateBack();
66 75
           },
67
-        }, {
68
-          name: "下一步",
69
-          type: "primary",
70
-          click: () => {
71
-            uni.navigateTo({
72
-              url: '/pages/patientBuild/patientBuild'
73
-            })
74
-          },
75 76
         }, ],
76 77
       };
77 78
     },
@@ -80,10 +81,63 @@
80 81
       ...mapState('other', [
81 82
         "deptDisplay",
82 83
         'patientBuildTrip',
83
-        'selectedPatient'
84
+        'selectedPatient',
85
+        'patientTaskType',
84 86
       ]),
85 87
     },
86 88
     methods: {
89
+      ...mapMutations('other', ['changePatientBuildData']),
90
+      // qco高度变化
91
+      resizeQcoHeight() {
92
+        // 选中的检查
93
+        let data = this.inspects.filter(v => v.checked);
94
+        // 关联检查有多个科室,但是开关设置是不允许,是否展示提示文字
95
+        if (data.length && this.patientTaskType.isMoreDept === 0) {
96
+          let arr = data.filter((item) => item.execDept).map((item) => item.execDept.id);
97
+          arr = Array.from(new Set(arr));
98
+          this.isMoreDept = arr.length > 1;
99
+        } else {
100
+          this.isMoreDept = false;
101
+        }
102
+        // qoc高度设置
103
+        this.$nextTick(() => {
104
+          uni.createSelectorQuery().in(this).select('#qco_msg').boundingClientRect(data => {
105
+            this.qcoHeight = data.height;
106
+            console.log(data)
107
+          }).exec();
108
+        })
109
+        // 底部按钮展示
110
+        if (data.length && !this.isMoreDept) {
111
+          this.btns = [{
112
+            name: "上一步",
113
+            type: "primary",
114
+            click: () => {
115
+              uni.navigateBack();
116
+            },
117
+          }, {
118
+            name: "下一步",
119
+            type: "primary",
120
+            click: () => {
121
+              // 存储选中的检查
122
+              this.changePatientBuildData({
123
+                key: 'checks',
124
+                value: this.inspects.filter(v => v.checked)
125
+              });
126
+              uni.navigateTo({
127
+                url: '/pages/patientBuild/patientBuild'
128
+              })
129
+            },
130
+          }, ]
131
+        } else {
132
+          this.btns = [{
133
+            name: "上一步",
134
+            type: "primary",
135
+            click: () => {
136
+              uni.navigateBack();
137
+            },
138
+          }, ]
139
+        }
140
+      },
87 141
       // 切换是否加急
88 142
       switchChange(e) {
89 143
         this.isUrgent = e.detail.value;
@@ -102,6 +156,7 @@
102 156
             this.$set(item, 'checked', false)
103 157
           }
104 158
         }
159
+        this.resizeQcoHeight();
105 160
       },
106 161
       // 立即建单
107 162
       buildOrder() {
@@ -120,13 +175,15 @@
120 175
       }
121 176
     },
122 177
     onLoad(queryParams) {
178
+      this.resizeQcoHeight();
123 179
       this.patientMsg = `以下是患者<b class="green">${this.selectedPatient.patientName}</b>当天预约的检查,请选择本次服务的检查项`;
124
-      let inspects = this.patientBuildTrip.data || [];
125
-      inspects.map(v => {
180
+      let inspects = this.patientBuildTrip.data ? cloneDeep(this.patientBuildTrip.data) : [];
181
+      inspects.forEach(v => {
126 182
         v.label = v.inspectName;
127 183
         v.value = v.id.toString();
128 184
       });
129 185
       this.inspects = inspects
186
+      console.log(this.inspects)
130 187
       this.queryParams = queryParams;
131 188
     },
132 189
   };
@@ -158,14 +215,25 @@
158 215
       position: fixed;
159 216
       width: 100%;
160 217
       z-index: 99;
161
-      height: 144rpx;
162
-      padding: 32rpx;
218
+      padding: 32rpx 32rpx 0;
163 219
       color: #999;
164 220
       line-height: 40rpx;
165 221
       font-size: 28rpx;
166 222
       text-align: center;
167 223
     }
168 224
 
225
+    .qco_msg1 {
226
+      padding-bottom: 16rpx;
227
+    }
228
+
229
+    .qco_msg2 {
230
+      padding: 16rpx 0;
231
+      line-height: 40rpx;
232
+      font-size: 28rpx;
233
+      text-align: center;
234
+      @include border(top);
235
+    }
236
+
169 237
     .select_block_wrap {
170 238
       padding: 144rpx 24rpx 0;
171 239
 
@@ -185,6 +253,13 @@
185 253
         @include semicircle(#f9fafb, 82rpx);
186 254
         @include flex(flex-start, stretch, column);
187 255
 
256
+        .ji {
257
+          width: 60rpx;
258
+          position: absolute;
259
+          right: 0;
260
+          top: 0;
261
+        }
262
+
188 263
         .inspect_listItem_header {
189 264
           height: 86rpx;
190 265
           @include border($directive:bottom, $style:dashed);
@@ -232,6 +307,7 @@
232 307
 
233 308
           .inspect_listItem_item_content {
234 309
             flex: 1;
310
+            padding: 14rpx 0;
235 311
             @include flex(space-between, center);
236 312
 
237 313
             .inspect_listItem_item_name {

+ 208 - 52
pages/patientBuild/patientBuild.vue

@@ -18,12 +18,11 @@
18 18
       </view>
19 19
       <view class="remarks_btn">
20 20
         <text class="remarks_btn_name">加急</text>
21
-        <switch class="remarks_btn_value" color="#09BB07" @change="switchChange" />
21
+        <switch class="remarks_btn_value" color="#09BB07" :checked="isUrgent" @change="switchChange" />
22 22
       </view>
23 23
       <textarea v-if="isUrgent" class="remarks_textarea" auto-height :maxlength="100" placeholder-style="color:#999;"
24 24
         placeholder="请填写加急原因" v-model.trim="urgentRemark" />
25
-      <view class="remarks_tips"
26
-        v-if="(patientTaskType.associationType.value === ASSOCIATION_TYPES['患者其他服务业务'] && patientTaskType.appointmentOtherSwitch == 1) ||(patientTaskType.associationType.value === ASSOCIATION_TYPES['患者陪检业务'] && patientTaskType.appointmentSwitch == 1)">
25
+      <view class="remarks_tips" v-if="isYYBuild">
27 26
         <view class="tips">系统支持提前预约送检服务,您是否需要!</view>
28 27
         <view class="tips">我不需要预约,希望送检人员立即上门,点击立即建单;</view>
29 28
         <view class="tips">我需要提前预约送检服务,点击预约建单;</view>
@@ -31,7 +30,7 @@
31 30
     </view>
32 31
     <!-- 底部 -->
33 32
     <seiminFooterBtn :btns="btns"></seiminFooterBtn>
34
-    <seiminModel ref="seiminModel"></seiminModel>
33
+    <seiminModel ref="seiminModel" :otherData="{timestamp,date,time}"></seiminModel>
35 34
   </view>
36 35
 </template>
37 36
 
@@ -39,6 +38,7 @@
39 38
   import cloneDeep from 'lodash/cloneDeep';
40 39
   import {
41 40
     mapState,
41
+    mapMutations,
42 42
   } from "vuex";
43 43
   import {
44 44
     ASSOCIATION_TYPES
@@ -47,6 +47,16 @@
47 47
     data() {
48 48
       return {
49 49
         ASSOCIATION_TYPES,
50
+        // 时间戳
51
+        timestamp: new Date().getTime(),
52
+        // 预约日期
53
+        date: false,
54
+        // 预约时间
55
+        time: false,
56
+        // 预约建单按钮是否显示
57
+        isYYBuild: false,
58
+        // 有预约时间并且是选中的
59
+        hasYYtimeChecks: [],
50 60
         // 是否加急
51 61
         isUrgent: false,
52 62
         // 设备
@@ -65,14 +75,17 @@
65 75
       ...mapState('other', [
66 76
         'patientBuildTrip',
67 77
         'patientTaskType',
68
-        'selectedPatient'
78
+        'selectedPatient',
79
+        'patientBuildData',
69 80
       ]),
70 81
     },
71 82
     methods: {
83
+      ...mapMutations('other', ['changePatientBuildData']),
72 84
       // 切换是否加急
73 85
       switchChange(e) {
74 86
         this.isUrgent = e.detail.value;
75 87
         this.urgentRemark = '';
88
+        this.showBtns(!this.isUrgent);
76 89
       },
77 90
       // 选择设备
78 91
       checkboxChange: function(e) {
@@ -88,8 +101,8 @@
88 101
           }
89 102
         }
90 103
       },
91
-      // 立即建单
92
-      buildOrder() {
104
+      // 立即建单,isYY 是否预约建单
105
+      buildOrder(isYY = false) {
93 106
         console.log(this.urgentRemark)
94 107
         console.log(this.isUrgent)
95 108
         console.log(this.goods)
@@ -102,54 +115,197 @@
102 115
           })
103 116
           return;
104 117
         }
105
-      }
118
+        // 存储建单数据
119
+        // 设备
120
+        this.changePatientBuildData({
121
+          key: 'goods',
122
+          value: this.goods.filter(v => v.checked)
123
+        })
124
+        // 加急
125
+        this.changePatientBuildData({
126
+          key: 'urgent',
127
+          value: {
128
+            isUrgent: this.isUrgent,
129
+            urgentRemark: this.urgentRemark,
130
+          }
131
+        })
132
+        // 预约时间
133
+        this.changePatientBuildData({
134
+          key: 'yyTime',
135
+          value: isYY ? `${this.$refs.seiminModel.dateVal} ${this.$refs.seiminModel.timeVal}:00` : ''
136
+        })
137
+        // 是否预约建单
138
+        this.changePatientBuildData({
139
+          key: 'isYY',
140
+          value: isYY
141
+        })
142
+        // 跳转
143
+        uni.navigateTo({
144
+          url: '/pages/patientBuildConfirm/patientBuildConfirm'
145
+        })
146
+      },
147
+      // 需要预约建单-事件
148
+      yyInspectChange() {
149
+        if (this.patientTaskType.associationType.value === this.ASSOCIATION_TYPES['患者陪检业务']) {
150
+          //陪检
151
+          let obj = this.hasYYtimeChecks.find((item) => {
152
+            return (
153
+              new Date(item.yyTime).getTime() - new Date().getTime() >
154
+              this.patientTaskType.appointmentTime * 60 * 1000
155
+            );
156
+          });
157
+          if (obj) {
158
+            this.showDateTime();
159
+          } else {
160
+            this.date = true;
161
+            this.time = false;
162
+            this.timestamp = new Date().getTime();
163
+          }
164
+        } else {
165
+          //转运
166
+          this.date = true;
167
+          this.time = false;
168
+          this.timestamp = new Date().getTime();
169
+        }
170
+      },
171
+      // 是否加急
172
+      allowUrgentChange(isUrgent) {
173
+        if (this.isYYBuild) {
174
+          this.isYYBuild = !isUrgent;
175
+          if (!this.isYYBuild) {
176
+            this.date = false;
177
+            this.time = false;
178
+            this.timestamp = new Date().getTime();
179
+          }
180
+        } else {
181
+          this.date = false;
182
+          this.time = false;
183
+          this.timestamp = new Date().getTime();
184
+        }
185
+      },
186
+      //回显时间日期
187
+      showDateTime() {
188
+        //当前时间要大于生效时间
189
+        let isYYBuild = this.hasYYtimeChecks.every((item) => {
190
+          return (
191
+            new Date(item.yyTime).getTime() - new Date().getTime() >
192
+            this.patientTaskType.appointmentTime * 60 * 1000
193
+          );
194
+        });
195
+        //如果勾选需要预约检查
196
+        if (isYYBuild) {
197
+          //筛选离当前时间最近的
198
+          let timeList = this.hasYYtimeChecks
199
+            .map((item) => new Date(item.yyTime).getTime())
200
+            .sort();
201
+          this.date = true;
202
+          this.time = true;
203
+          this.timestamp = new Date(timeList[0] - this.patientTaskType.appointmentTime * 60 * 1000);
204
+        } else {
205
+          this.date = false;
206
+          this.time = false;
207
+          this.timestamp = new Date().getTime();
208
+        }
209
+      },
210
+      // 初始化
211
+      init() {
212
+        // 提示文字
213
+        this.patientMsg = `患者<b class="green">${this.selectedPatient.patientName}</b>即将出科,请您选择送检人员需携带哪些设备!`;
214
+        let goods = this.patientBuildTrip.goods ? cloneDeep(this.patientBuildTrip.goods) : []; // 设备
215
+        let checks = this.patientBuildTrip.checks ? cloneDeep(this.patientBuildTrip.checks) : []; // 检查
216
+        this.goods = goods;
217
+        // 患者陪检业务和患者其他服务业务相关处理
218
+        this.hasYYtimeChecks = checks.filter((v) => Boolean(v.yyTime));
219
+        let isPriority = checks.some(v => v.priority == 1);
220
+        // 检查有紧急度,则加急
221
+        if (isPriority) {
222
+          this.isUrgent = true;
223
+          this.urgentRemark = '系统根据检查信息,自动进行加急';
224
+        } else {
225
+          this.isUrgent = false;
226
+          this.urgentRemark = '';
227
+        }
228
+        //判断预约建单按钮
229
+        if (this.hasYYtimeChecks.length && this.patientTaskType.appointmentSwitch == 1) {
230
+          //选中的检查数组都有预约时间并且允许预约建单
231
+          this.isYYBuild = true;
232
+          this.allowUrgentChange(this.isUrgent);
233
+          if (!this.isUrgent) {
234
+            //不加急状态下,回显时间
235
+            this.showDateTime();
236
+          }
237
+          this.yyInspectChange();
238
+        } else {
239
+          //不允许预约建单
240
+          this.isYYBuild = true;
241
+          this.date = false;
242
+          this.time = false;
243
+          this.timestamp = new Date().getTime();
244
+          this.yyInspectChange();
245
+        }
246
+
247
+        // 底部按钮展示
248
+        this.showBtns(this.isYYBuild);
249
+      },
250
+      // 底部按钮展示
251
+      showBtns(flag) {
252
+        if (flag) {
253
+          //患者陪检业务或患者其他服务业务,并且预约建单开关打开的情况下
254
+          this.btns = [{
255
+            name: "上一步",
256
+            type: "primary",
257
+            click: () => {
258
+              uni.navigateBack();
259
+            },
260
+          }, {
261
+            name: "预约建单",
262
+            type: "primary",
263
+            click: () => {
264
+              this.$refs.seiminModel.show({
265
+                skin: 'yyDate',
266
+                title: '',
267
+                content: '请您选择希望陪检人员上门的时间',
268
+                btns: [{
269
+                    name: '取消'
270
+                  },
271
+                  {
272
+                    name: '预约建单',
273
+                    click: () => {
274
+                      if (this.$refs.seiminModel.dateVal && this.$refs.seiminModel.timeVal) {
275
+                        this.buildOrder(true);
276
+                      }
277
+                    }
278
+                  }
279
+                ]
280
+              })
281
+            },
282
+          }, {
283
+            name: "立即建单",
284
+            type: "primary",
285
+            click: () => {
286
+              this.buildOrder();
287
+            },
288
+          }, ];
289
+        } else {
290
+          this.btns = [{
291
+            name: "上一步",
292
+            type: "primary",
293
+            click: () => {
294
+              uni.navigateBack();
295
+            },
296
+          }, {
297
+            name: "立即建单",
298
+            type: "primary",
299
+            click: () => {
300
+              this.buildOrder();
301
+            },
302
+          }, ];
303
+        }
304
+      },
106 305
     },
107 306
     onLoad(queryParams) {
108
-      this.patientMsg = `患者<b class="green">${this.selectedPatient.patientName}</b>即将出科,请您选择送检人员需携带哪些设备!`;
109
-      let goods = this.patientBuildTrip.goods || [];
110
-      this.goods = goods;
111 307
       this.queryParams = queryParams;
112
-      if (
113
-        (this.patientTaskType.associationType.value === ASSOCIATION_TYPES['患者其他服务业务'] && this.patientTaskType
114
-          .appointmentOtherSwitch == 1) ||
115
-        (this.patientTaskType.associationType.value === ASSOCIATION_TYPES['患者陪检业务'] && this.patientTaskType
116
-          .appointmentSwitch == 1)
117
-      ) {
118
-        //患者陪检业务或患者其他服务业务,并且预约建单开关打开的情况下
119
-        this.btns = [{
120
-          name: "上一步",
121
-          type: "primary",
122
-          click: () => {
123
-            uni.navigateBack();
124
-          },
125
-        }, {
126
-          name: "预约建单",
127
-          type: "primary",
128
-          click: () => {
129
-            alert('预约建单');
130
-          },
131
-        }, {
132
-          name: "立即建单",
133
-          type: "primary",
134
-          click: () => {
135
-            this.buildOrder();
136
-          },
137
-        }, ];
138
-      } else {
139
-        this.btns = [{
140
-          name: "上一步",
141
-          type: "primary",
142
-          click: () => {
143
-            uni.navigateBack();
144
-          },
145
-        }, {
146
-          name: "立即建单",
147
-          type: "primary",
148
-          click: () => {
149
-            this.buildOrder();
150
-          },
151
-        }, ];
152
-      }
308
+      this.init();
153 309
     },
154 310
   };
155 311
 </script>

+ 698 - 0
pages/patientBuildConfirm/patientBuildConfirm.vue

@@ -0,0 +1,698 @@
1
+<template>
2
+  <view class="patientBuildConfirm">
3
+    <view class="qco_msg" v-html="patientMsg"></view>
4
+    <view class="orderDetail_info">
5
+      <scroll-view scroll-y class="orderDetail_infoItem">
6
+        <view class="orderDetail_infoItem_header">
7
+          <view class="orderDetail_infoItem_header_title">
8
+            <view class="icon"></view>
9
+            <view class="taskNameAndWorkerName">
10
+              <text class="taskName">服务</text>
11
+            </view>
12
+          </view>
13
+          <text class="orderDetail_infoItem_header_more">{{patientTaskType.taskName||'暂无'}}</text>
14
+        </view>
15
+        <view class="orderDetail_infoItem_item">
16
+          <view class="orderDetail_infoItem_item_content">
17
+            <text class="orderDetail_infoItem_item_name">起点科室</text>
18
+            <text
19
+              class="orderDetail_infoItem_item_value">{{deptDisplay == 2?patientBuildData.dept.startDept.deptalias:patientBuildData.dept.startDept.dept}}</text>
20
+          </view>
21
+          <view class="orderDetail_infoItem_item_content"
22
+            v-if="patientTaskType.associationType.value == ASSOCIATION_TYPES['患者陪检业务']">
23
+            <text class="orderDetail_infoItem_item_name">中间科室</text>
24
+            <text class="orderDetail_infoItem_item_value">{{checkDeptsName}}</text>
25
+          </view>
26
+          <view class="orderDetail_infoItem_item_content">
27
+            <text class="orderDetail_infoItem_item_name">目标科室</text>
28
+            <text
29
+              class="orderDetail_infoItem_item_value">{{deptDisplay == 2?patientBuildData.dept.endDept.deptalias:patientBuildData.dept.endDept.dept}}</text>
30
+          </view>
31
+          <view class="orderDetail_infoItem_item_content">
32
+            <text class="orderDetail_infoItem_item_name">携带设备</text>
33
+            <text class="orderDetail_infoItem_item_value">{{goodsName||'暂无'}}</text>
34
+          </view>
35
+          <view class="orderDetail_infoItem_item_content">
36
+            <text class="orderDetail_infoItem_item_name">预约时间</text>
37
+            <text class="orderDetail_infoItem_item_value">{{patientBuildData.yyTime||'暂无'}}</text>
38
+          </view>
39
+          <view class="orderDetail_infoItem_item_content">
40
+            <text class="orderDetail_infoItem_item_name">是否紧急</text>
41
+            <text class="orderDetail_infoItem_item_value">{{patientBuildData.urgent.isUrgent?'是':'否'}}</text>
42
+          </view>
43
+        </view>
44
+      </scroll-view>
45
+    </view>
46
+    <!-- 底部 -->
47
+    <seiminFooterBtn :btns="btns"></seiminFooterBtn>
48
+    <seiminModel ref="seiminModel"></seiminModel>
49
+  </view>
50
+</template>
51
+
52
+<script>
53
+  import {
54
+    mapState,
55
+  } from "vuex";
56
+  import {
57
+    ASSOCIATION_TYPES
58
+  } from "../../utils/enum.association_types.js";
59
+  import {
60
+    SOURCEID
61
+  } from "../../utils/enum.sourceid.js";
62
+  import {
63
+    uniqBy
64
+  } from 'lodash'
65
+  import {
66
+    reqBuild
67
+  } from '../../request/api.js';
68
+  export default {
69
+    data() {
70
+      return {
71
+        ASSOCIATION_TYPES,
72
+        SOURCEID,
73
+        // 中间科室名称
74
+        checkDeptsName: '',
75
+        // 设备
76
+        goodsName: '',
77
+        // 预约建单按钮是否显示
78
+        isYYBuild: false,
79
+        // 有预约时间并且是选中的
80
+        hasYYtimeChecks: [],
81
+        // 是否加急
82
+        isUrgent: false,
83
+        // 设备
84
+        goods: [],
85
+        //患者建单信息展示
86
+        patientMsg: '请您确认一下建单信息!',
87
+        // 传递过来的参数
88
+        queryParams: {},
89
+        // 加急原因
90
+        urgentRemark: "",
91
+        //底部按钮
92
+        btns: [{
93
+          name: "取消",
94
+          type: "default",
95
+          click: () => {
96
+            uni.navigateBack();
97
+          },
98
+        }, {
99
+          name: "确认建单",
100
+          type: "primary",
101
+          click: () => {
102
+            this.buildOrder();
103
+          },
104
+        }, ],
105
+      };
106
+    },
107
+    computed: {
108
+      ...mapState('login', [
109
+        'loginInfo',
110
+      ]),
111
+      ...mapState('other', [
112
+        'deptDisplay',
113
+        'patientBuildTrip',
114
+        'patientTaskType',
115
+        'selectedPatient',
116
+        'patientBuildData',
117
+      ]),
118
+    },
119
+    methods: {
120
+      // 重复策略
121
+      showReaptModal(msg, postData) {
122
+        this.$refs.seiminModel.show({
123
+          icon: "warn",
124
+          content: msg,
125
+          btns: [{
126
+            name: "否",
127
+            type: "primary",
128
+            click: () => {
129
+              this.$refs.seiminModel.close();
130
+            },
131
+          }, {
132
+            name: "是",
133
+            type: "default",
134
+            click: () => {
135
+              this.$refs.seiminModel.close();
136
+              postData.tipsCreateOder = 1;
137
+              uni.showLoading({
138
+                mask: true,
139
+                title: '加载中'
140
+              })
141
+              reqBuild(this.patientBuildData.isYY ? "appointmentOrder" : "startOrder", postData)
142
+                .then((data) => {
143
+                  uni.hideLoading();
144
+                  if (data.status == 200) {
145
+                    this.$refs.seiminModel.show({
146
+                      skin: "toast",
147
+                      icon: "success",
148
+                      content: "创建成功",
149
+                    });
150
+                    uni.navigateTo({
151
+                      url: '/pages/orderList/orderList'
152
+                    })
153
+                  } else {
154
+                    this.$refs.seiminModel.show({
155
+                      skin: "toast",
156
+                      icon: "error",
157
+                      content: data.msg || "创建失败",
158
+                    });
159
+                  }
160
+                });
161
+            },
162
+          }, ],
163
+        })
164
+      },
165
+      // 是否需要护士医生陪同模态框
166
+      accompany(postData, yuyue, type) {
167
+        this.$refs.seiminModel.show({
168
+          icon: "warn",
169
+          content: "您选择的患者是危重或特级护理或一级护理患者,请问是否需要医护陪同检查?",
170
+          btns: [{
171
+            name: "否",
172
+            type: "primary",
173
+            click: () => {
174
+              this.$refs.seiminModel.close();
175
+              if (type == "patient") {
176
+                //患者列表直接建单
177
+                this.buildCommon(postData, 0, 'accompany3');
178
+              } else if (type == "patient-yy") {
179
+                //患者列表预约建单
180
+                this.buildCommon(postData, 0, 'accompany4');
181
+              }
182
+            },
183
+          }, {
184
+            name: "是",
185
+            type: "default",
186
+            click: () => {
187
+              this.$refs.seiminModel.close();
188
+              if (type == "patient") {
189
+                //患者列表直接建单
190
+                this.buildCommon(postData, 0, 'accompany1');
191
+              } else if (type == "patient-yy") {
192
+                //患者列表预约建单
193
+                this.buildCommon(postData, 0, 'accompany2');
194
+              }
195
+            },
196
+          }, {
197
+            name: "取消",
198
+            type: "default",
199
+            click: () => {
200
+              this.$refs.seiminModel.close();
201
+            },
202
+          }, ]
203
+        });
204
+      },
205
+      // 建单公共方法
206
+      buildCommon(postData, type1, type2) {
207
+        if (type1 === null) {
208
+          if (!this.patientBuildData.isYY) {
209
+            postData.workOrder.platform = 2;
210
+          }
211
+          //是否需要医护陪同检查
212
+          if (this.selectedPatient.careLevel && this.patientTaskType.isAccompany == 1) {
213
+            //特级护理或一级护理
214
+            if (
215
+              this.selectedPatient.careLevel.value === "0" ||
216
+              this.selectedPatient.careLevel.value === "1"
217
+            ) {
218
+              this.accompany(postData, this.patientBuildData.isYY, type2);
219
+              return;
220
+            }
221
+          }
222
+          if (
223
+            this.selectedPatient.illnessState &&
224
+            this.patientTaskType.isAccompany == 1
225
+          ) {
226
+            //病危或病重
227
+            if (
228
+              this.selectedPatient.illnessState.value === "2" ||
229
+              this.selectedPatient.illnessState.value === "3"
230
+            ) {
231
+              this.accompany(postData, this.patientBuildData.isYY, type2);
232
+              return;
233
+            }
234
+
235
+          }
236
+          postData.workOrder.isAccompany = 0; //是否需要医护陪同检查
237
+        } else if (typeof type1 === 'number') {
238
+          postData.workOrder.isAccompany = type1; //是否需要医护陪同检查
239
+        }
240
+        uni.showLoading({
241
+          mask: true,
242
+          title: '加载中'
243
+        })
244
+        reqBuild(this.patientBuildData.isYY ? "appointmentOrder" : "startOrder", postData)
245
+          .then((data) => {
246
+            uni.hideLoading();
247
+            if (data.status == 200) {
248
+              this.$refs.seiminModel.show({
249
+                skin: "toast",
250
+                icon: "success",
251
+                content: "创建成功",
252
+              });
253
+              uni.navigateTo({
254
+                url: '/pages/orderList/orderList'
255
+              })
256
+            } else if (data.status == 1000033) {
257
+              //重复建单那策略
258
+              this.showReaptModal(data.msg, postData);
259
+            } else {
260
+              this.$refs.seiminModel.show({
261
+                skin: "toast",
262
+                icon: "error",
263
+                content: data.msg || "创建失败",
264
+              });
265
+            }
266
+          });
267
+      },
268
+      // 确定建单
269
+      buildOrder() {
270
+        let postData = {
271
+          workOrder: {
272
+            sourceId: this.SOURCEID['护士端'],
273
+            taskType: {
274
+              id: this.patientTaskType.id
275
+            },
276
+            startDept: {
277
+              id: this.patientBuildData.dept.startDept.id
278
+            },
279
+            endDepts: [{
280
+              id: this.patientBuildData.dept.endDept.id
281
+            }],
282
+            createDept: this.loginInfo.user.dept.id,
283
+            patient: {
284
+              patientCode: this.selectedPatient.patientCode,
285
+            },
286
+          },
287
+        };
288
+        // 半程陪检
289
+        if (this.patientTaskType.associationType.value == this.ASSOCIATION_TYPES['患者陪检业务']) {
290
+          postData.workOrder.taskType.isHalfInspect =
291
+            this.patientTaskType.isHalfInspect === 1 ? 1 : 0; //半程陪检
292
+        }
293
+        // 携带设备
294
+        let goodIds = '';
295
+        goodIds = this.patientBuildData.goods ? this.patientBuildData.goods.map(v => v.id).toString() :
296
+          '';
297
+        postData.workOrder["goods"] = goodIds;
298
+        // 加急原因
299
+        if (!this.patientBuildData.isYY && this.patientTaskType.allowUrgent == 1 && this.patientBuildData.urgent
300
+          .isUrgent) {
301
+          postData.workOrder["urgentDetails"] = {
302
+            checkStatus: {
303
+              id: 329
304
+            },
305
+            urgentReason: this.patientBuildData.urgent.urgentRemark,
306
+          };
307
+        }
308
+        // ---------------------
309
+        let yy = false; //检查上是否有预约时间
310
+        if (this.patientBuildData.checks && this.patientBuildData.checks.length) {
311
+          yy = this.patientBuildData.checks.some((e) => e.yyTime);
312
+
313
+        }
314
+        if (
315
+          yy &&
316
+          this.patientBuildTrip.status == 200 &&
317
+          this.patientBuildData.checks &&
318
+          this.patientBuildData.checks.length
319
+        ) {
320
+          // 有预约时间
321
+          postData.workOrder["checkList"] = this.patientBuildData.checks || [];
322
+          this.$refs.seiminModel.show({
323
+            icon: "warn",
324
+            content: "您确认建单吗?",
325
+            btns: [{
326
+              name: "取消",
327
+              type: "default",
328
+              click: () => {
329
+                this.$refs.seiminModel.close();
330
+              },
331
+            }, {
332
+              name: "确认",
333
+              type: "primary",
334
+              click: () => {
335
+                this.$refs.seiminModel.close();
336
+                if (this.patientBuildData.isYY) {
337
+                  postData.workOrder.yyTime = this.patientBuildData.yyTime;
338
+                }
339
+                this.buildCommon(postData, null, 'patient-yy');
340
+              },
341
+            }, ]
342
+          });
343
+        } else {
344
+          if (!yy && this.patientBuildTrip.status == 200) {
345
+            postData.workOrder["checkList"] = this.patientBuildData.checks || [];
346
+            // 添加预约时间
347
+            if (this.patientBuildData.isYY) {
348
+              postData.workOrder.yyTime = this.patientBuildData.yyTime;
349
+            }
350
+          } else {
351
+            // 添加预约时间
352
+            if (this.patientBuildData.isYY) {
353
+              postData.workOrder.yyTime = this.patientBuildData.yyTime;
354
+            }
355
+          }
356
+          if (this.patientBuildTrip.status != 200) {
357
+            //微信端不需要自动送回功能
358
+            postData.workOrder["isRemand"] = 0;
359
+
360
+          }
361
+          this.buildCommon(postData, null, 'patient');
362
+        }
363
+      },
364
+      // 初始化
365
+      init() {
366
+        // 设备
367
+        this.goodsName = this.patientBuildData.goods ? this.patientBuildData.goods.map(v => v.name).toString() :
368
+          '';
369
+        if (this.patientTaskType.associationType.value == this.ASSOCIATION_TYPES['患者陪检业务']) {
370
+          // 患者陪检业务
371
+          let execDeptArr = this.patientBuildData.checks.map(v => v.execDept);
372
+          execDeptArr = uniqBy(execDeptArr, 'id');
373
+          console.log(execDeptArr)
374
+          this.checkDeptsName = execDeptArr.map(v => {
375
+            return this.deptDisplay == 2 ? v.deptalias : v.dept;
376
+          }).toString();
377
+        }
378
+      },
379
+    },
380
+    onLoad(queryParams) {
381
+      this.queryParams = queryParams;
382
+      this.init();
383
+    },
384
+  };
385
+</script>
386
+
387
+<style lang="scss" scoped>
388
+  .patientBuildConfirm {
389
+    margin-bottom: 100rpx;
390
+
391
+    .qco_msg {
392
+      padding: 32rpx;
393
+      color: #999;
394
+      line-height: 40rpx;
395
+      font-size: 28rpx;
396
+      text-align: center;
397
+    }
398
+
399
+    .orderDetail_info {
400
+      padding: 0 24rpx;
401
+
402
+      .orderDetail_infoItem {
403
+        width: 702rpx;
404
+        height: calc(100vh - 240rpx);
405
+        background-color: #fff;
406
+        margin-top: 8rpx;
407
+        border-radius: 8rpx;
408
+        position: relative;
409
+        padding: 0 24rpx;
410
+        font-size: 32rpx;
411
+        @include border;
412
+        @include semicircle(#f9fafb, 82rpx);
413
+        @include flex(flex-start, stretch, column);
414
+
415
+        .ji,
416
+        .jiaji {
417
+          width: 60rpx;
418
+          position: absolute;
419
+          right: 0;
420
+          top: 0;
421
+        }
422
+
423
+        .orderDetail_infoItem_header {
424
+          height: 86rpx;
425
+          @include border($directive:bottom, $style:dashed);
426
+          @include flex(space-between, center);
427
+
428
+          .orderDetail_infoItem_header_title {
429
+            color: #333;
430
+            flex: 1;
431
+            @include flex(flex-start, center);
432
+
433
+            .icon {
434
+              width: 10rpx;
435
+              height: 46rpx;
436
+              border-radius: 2rpx;
437
+              background-color: #F0F6ED;
438
+              @include btn_background;
439
+            }
440
+
441
+            .taskNameAndWorkerName {
442
+              flex: 1;
443
+              @include flex;
444
+
445
+              .taskName {
446
+                max-width: 10em;
447
+                margin-left: 8rpx;
448
+                font-size: 38rpx;
449
+                font-weight: bold;
450
+                @include clamp;
451
+              }
452
+            }
453
+          }
454
+
455
+          .orderDetail_infoItem_header_more {
456
+            color: $defaultColor;
457
+            font-weight: bold;
458
+            font-size: 38rpx;
459
+            @include clamp;
460
+          }
461
+        }
462
+
463
+        .orderDetail_infoItem_item {
464
+          padding-top: 12rpx;
465
+          padding-bottom: 12rpx;
466
+          color: #333;
467
+          font-size: 30rpx;
468
+          flex: 1;
469
+          @include border(bottom);
470
+          @include flex(flex-start, stretch, column);
471
+
472
+          &.process {
473
+            padding-top: 90rpx;
474
+            padding-bottom: 90rpx;
475
+          }
476
+
477
+          &:last-of-type {
478
+            border-bottom: none;
479
+          }
480
+
481
+          // 工单信息
482
+          .orderDetail_infoItem_item_content {
483
+            margin-top: 20rpx;
484
+            @include flex(space-between, stretch);
485
+
486
+            .orderDetail_infoItem_item_name {
487
+              font-size: 34rpx;
488
+              color: #666;
489
+              max-width: 4em;
490
+            }
491
+
492
+            .orderDetail_infoItem_item_value {
493
+              font-size: 38rpx;
494
+              color: #333;
495
+              font-weight: bold;
496
+              max-width: 420rpx;
497
+              text-align: justify;
498
+              word-break: break-all;
499
+            }
500
+          }
501
+
502
+          // 流程信息
503
+          .orderDetail_process_item {
504
+            min-height: 120rpx;
505
+            line-height: 50rpx;
506
+            color: #333;
507
+            @include flex(center);
508
+
509
+            &:last-of-type {
510
+              .step_icon {
511
+                &::after {
512
+                  display: none;
513
+                }
514
+              }
515
+            }
516
+
517
+            .step_infoStart {
518
+              font-size: 28rpx;
519
+              flex: 1;
520
+              @include flex(flex-end);
521
+
522
+              .step_time {
523
+                margin-left: 16rpx;
524
+              }
525
+            }
526
+
527
+            .step_icon {
528
+              font-size: 38rpx;
529
+              margin-left: 30rpx;
530
+              margin-right: 30rpx;
531
+              position: relative;
532
+              color: #E5E9ED;
533
+
534
+              &.active {
535
+                color: #07863C;
536
+              }
537
+
538
+              &::after {
539
+                content: '';
540
+                position: absolute;
541
+                top: 60rpx;
542
+                left: 18rpx;
543
+                width: 1px;
544
+                height: calc(100% - 70rpx);
545
+                background-color: #DDE1E5;
546
+              }
547
+            }
548
+
549
+            .step_infoEnd {
550
+              font-size: 34rpx;
551
+              flex: 1;
552
+              padding-bottom: 16rpx;
553
+            }
554
+          }
555
+
556
+          // 业务信息-检查
557
+          &.business_inspect {
558
+            .inspect_info {
559
+              font-size: 34rpx;
560
+              color: #333;
561
+              padding-top: 20rpx;
562
+              padding-bottom: 20rpx;
563
+              @include border($directive:bottom, $style:dashed);
564
+
565
+              .inspect_info_block {
566
+                height: 60rpx;
567
+                @include flex(space-between, center);
568
+
569
+                .inspect_info_left {
570
+                  @include flex;
571
+
572
+                  .inspect_info_icon {
573
+                    width: 50rpx;
574
+                    height: 50rpx;
575
+                    line-height: 50rpx;
576
+                    border-radius: 50%;
577
+                    font-size: 28rpx;
578
+                    margin-right: 8rpx;
579
+                    @include flex(center, center);
580
+
581
+                    &.green {
582
+                      color: $defaultColor;
583
+                      border: 1px solid $defaultColor;
584
+                      background-color: rgba(73, 184, 86, 0.1);
585
+                    }
586
+
587
+                    &.red {
588
+                      color: #FF3B53;
589
+                      border: 1px solid #FF3B53;
590
+                      background-color: #FFE8EB;
591
+                    }
592
+                  }
593
+
594
+                  .inspect_info_name {
595
+                    font-weight: bold;
596
+                  }
597
+                }
598
+
599
+                .inspect_info_right {
600
+                  font-weight: bold;
601
+                }
602
+              }
603
+            }
604
+
605
+            .inspect_item {
606
+              color: #333;
607
+              font-size: 34rpx;
608
+              line-height: 48rpx;
609
+              padding-top: 26rpx;
610
+              padding-bottom: 26rpx;
611
+              @include border($directive:bottom, $style:dashed);
612
+
613
+              .inspect_item_name {
614
+                font-weight: bold;
615
+              }
616
+
617
+              .inspect_item_yytime {
618
+                font-weight: bold;
619
+              }
620
+
621
+              .inspect_item_info {
622
+                margin-top: 16rpx;
623
+                margin-bottom: 16rpx;
624
+                @include flex(space-between, center);
625
+
626
+                .inspect_item_dept {
627
+                  flex: 1;
628
+                  word-break: break-all;
629
+                  @include clamp;
630
+                }
631
+
632
+                .inspect_item_number {
633
+                  flex: 1;
634
+                  text-align: right;
635
+                  word-break: break-all;
636
+                  @include clamp;
637
+                }
638
+              }
639
+            }
640
+          }
641
+
642
+          // 业务信息-标本
643
+          &.business_specimen {
644
+            font-size: 34rpx;
645
+
646
+            .th {
647
+              background-color: red;
648
+              @include btn_background;
649
+
650
+              th {
651
+                color: #fff;
652
+              }
653
+            }
654
+
655
+            .td {
656
+              position: relative;
657
+
658
+              .urgent {
659
+                width: 60rpx;
660
+                position: absolute !important;
661
+                right: 0;
662
+                top: 0;
663
+              }
664
+            }
665
+
666
+            .table--border {
667
+              border: none;
668
+            }
669
+
670
+            ::v-deep .uni-table {
671
+              min-width: 0;
672
+            }
673
+
674
+            ::v-deep .uni-table-td {
675
+              word-break: break-all;
676
+            }
677
+          }
678
+
679
+          // 业务信息-药品
680
+          &.business_drugsBag {
681
+            .drugsBag_item {
682
+              color: #333;
683
+              font-size: 34rpx;
684
+              margin-top: 20rpx;
685
+              @include flex(space-between, center);
686
+
687
+              .drugsBag_item_name {}
688
+
689
+              .drugsBag_item_value {
690
+                font-weight: bold;
691
+              }
692
+            }
693
+          }
694
+        }
695
+      }
696
+    }
697
+  }
698
+</style>

+ 30 - 2
pages/patientList/patientList.vue

@@ -82,7 +82,7 @@
82 82
       ...mapState('other', ["deptDisplay"]),
83 83
     },
84 84
     methods: {
85
-      ...mapMutations('other', ['changeQucikCreateOrderType']),
85
+      ...mapMutations('other', ['changeQucikCreateOrderType', 'clearPatientBuildData', 'changePatientBuildData']),
86 86
       //关闭
87 87
       closePicker() {
88 88
         this.$refs.sPicker._close();
@@ -94,6 +94,8 @@
94 94
       //确定:接收子组件传来的参数
95 95
       confirmPicker(checkedObj) {
96 96
         console.log(checkedObj);
97
+        // 补充:清除建单数据
98
+        this.clearPatientBuildData();
97 99
         // 2,获取buildTrip信息
98 100
         let postData = {
99 101
           "taskTypeId": checkedObj.value,
@@ -126,6 +128,13 @@
126 128
               } else {
127 129
                 //无需选择科室
128 130
                 this.checkedShowMsg = res.data;
131
+                this.changePatientBuildData({
132
+                  key: 'dept',
133
+                  value: {
134
+                    startDept: res.start.start.list[0],
135
+                    endDept: res.end.end.list[0],
136
+                  }
137
+                });
129 138
                 this.changeQucikCreateOrderType({
130 139
                   type: "patient",
131 140
                   taskTypeId: checkedObj.value,
@@ -149,6 +158,21 @@
149 158
             // 患者陪检业务
150 159
             if (res.status == 200) {
151 160
               this.checkedShowMsg = res.data;
161
+              this.changePatientBuildData({
162
+                key: 'dept',
163
+                value: {
164
+                  startDept: {
165
+                    id: 9,
166
+                    dept: 'xxx',
167
+                    deptalias: 'xxxxxx'
168
+                  }, //待改
169
+                  endDept: {
170
+                    id: 9,
171
+                    dept: 'xxx',
172
+                    deptalias: 'xxxxxx'
173
+                  }, //待改
174
+                }
175
+              });
152 176
               this.changeQucikCreateOrderType({
153 177
                 type: "patient",
154 178
                 taskTypeId: checkedObj.value,
@@ -230,6 +254,7 @@
230 254
         });
231 255
         reqFetchDataList("nurse", "patient", postData).then((res) => {
232 256
           uni.hideLoading();
257
+          uni.stopPullDownRefresh();
233 258
           if (res.status == 200) {
234 259
             res.list = res.list || [];
235 260
             if (idxPlus) {
@@ -265,6 +290,9 @@
265 290
     onReachBottom() {
266 291
       this.reachBottom();
267 292
     },
293
+    onPullDownRefresh() {
294
+      this.inputChange(this.keyword)
295
+    },
268 296
     created() {
269 297
       this.debounceInp = debounce(this.inputChange, 500);
270 298
     },
@@ -272,7 +300,7 @@
272 300
       this.debounceInp.cancel()
273 301
     },
274 302
     onLoad() {
275
-      this.inputChange('');
303
+      this.inputChange();
276 304
     },
277 305
   };
278 306
 </script>

+ 22 - 12
pages/quickCreateOrder/quickCreateOrder.vue

@@ -6,8 +6,8 @@
6 6
     <block
7 7
       v-if="(qucikCreateOrderType === 'other' || qucikCreateOrderType === 'patient') && (dataObj.start || dataObj.end)">
8 8
       <view class="select_block" @click="selectDept('start')"
9
-        v-if="qucikCreateOrderType !== 'patient'||(qucikCreateOrderType === 'patient'&&!(dataObj.start.start.departmentStrategy == DEPARTMENT_STRATEGY['默认发起科室'] || dataObj.start.start.departmentStrategy == DEPARTMENT_STRATEGY['固定科室']))">
10
-        <!-- 默认科室和固定科室 -->
9
+        v-if="qucikCreateOrderType !== 'patient'||(qucikCreateOrderType === 'patient'&&!(dataObj.start.start.departmentStrategy == DEPARTMENT_STRATEGY['默认发起科室'] || dataObj.start.start.departmentStrategy == DEPARTMENT_STRATEGY['固定科室']|| dataObj.start.start.departmentStrategy == DEPARTMENT_STRATEGY['默认患者所在科室']))">
10
+        <!-- 默认科室和固定科室和默认患者所在科室 -->
11 11
         <text class="select_label"
12 12
           :class="{disableColor:dataObj.start.start.departmentStrategy == DEPARTMENT_STRATEGY['默认发起科室'] || dataObj.start.start.departmentStrategy == DEPARTMENT_STRATEGY['固定科室']}">起点科室</text>
13 13
         <view class="select_placeholder"
@@ -21,8 +21,8 @@
21 21
         </view>
22 22
       </view>
23 23
       <view class="select_block" @click="selectDept('end')"
24
-        v-if="qucikCreateOrderType !== 'patient'||(qucikCreateOrderType === 'patient'&&!(dataObj.end.end.departmentStrategy == DEPARTMENT_STRATEGY['默认发起科室'] || dataObj.end.end.departmentStrategy == DEPARTMENT_STRATEGY['固定科室']))">
25
-        <!-- 默认科室和固定科室 -->
24
+        v-if="qucikCreateOrderType !== 'patient'||(qucikCreateOrderType === 'patient'&&!(dataObj.end.end.departmentStrategy == DEPARTMENT_STRATEGY['默认发起科室'] || dataObj.end.end.departmentStrategy == DEPARTMENT_STRATEGY['固定科室']|| dataObj.end.end.departmentStrategy == DEPARTMENT_STRATEGY['默认患者所在科室']))">
25
+        <!-- 默认科室和固定科室和默认患者所在科室 -->
26 26
         <text class="select_label"
27 27
           :class="{disableColor:dataObj.end.end.departmentStrategy == DEPARTMENT_STRATEGY['默认发起科室'] || dataObj.end.end.departmentStrategy == DEPARTMENT_STRATEGY['固定科室']}">终点科室</text>
28 28
         <view class="select_placeholder"
@@ -149,7 +149,7 @@
149 149
               type: "default",
150 150
               click: () => {
151 151
                 uni.navigateTo({
152
-                  url:'/pages/patientList/patientList'
152
+                  url: '/pages/patientList/patientList'
153 153
                 })
154 154
               },
155 155
             },
@@ -157,6 +157,13 @@
157 157
               name: "下一步",
158 158
               type: "primary",
159 159
               click: () => {
160
+                this.changePatientBuildData({
161
+                  key: 'dept',
162
+                  value: {
163
+                    startDept: newVal.startDept,
164
+                    endDept: newVal.endDept,
165
+                  }
166
+                })
160 167
                 uni.navigateTo({
161 168
                   url: "/pages/patientBuild/patientBuild",
162 169
                 });
@@ -169,7 +176,7 @@
169 176
             type: "default",
170 177
             click: () => {
171 178
               uni.navigateTo({
172
-                url:'/pages/patientList/patientList'
179
+                url: '/pages/patientList/patientList'
173 180
               })
174 181
             },
175 182
           }, ];
@@ -177,7 +184,7 @@
177 184
       }
178 185
     },
179 186
     methods: {
180
-      ...mapMutations('other', ['changeSearchDeptParams', 'changeSearchDeptResultList']),
187
+      ...mapMutations('other', ['changeSearchDeptParams', 'changeSearchDeptResultList', 'changePatientBuildData']),
181 188
       // 添加备注
182 189
       addRemarks(customRemark) {
183 190
         this.remarksFocus = false;
@@ -244,8 +251,9 @@
244 251
             res.msg = res.msg.replace(/<\/b>/g, "</text>");
245 252
           }
246 253
           if (res.start) {
247
-            //其他服务建单
254
+            //其他服务或患者其他服务业务
248 255
             if (
256
+              res.start.start.departmentStrategy == this.DEPARTMENT_STRATEGY['默认患者所在科室'] ||
249 257
               res.start.start.departmentStrategy == this.DEPARTMENT_STRATEGY['默认发起科室'] ||
250 258
               res.start.start.departmentStrategy == this.DEPARTMENT_STRATEGY['固定科室']) {
251 259
               this.startDept = res.start.start.list[0];
@@ -264,8 +272,9 @@
264 272
             }
265 273
           }
266 274
           if (res.end) {
267
-            //其他服务建单
275
+            //其他服务或患者其他服务业务
268 276
             if (
277
+              res.end.end.departmentStrategy == this.DEPARTMENT_STRATEGY['默认患者所在科室'] ||
269 278
               res.end.end.departmentStrategy == this.DEPARTMENT_STRATEGY['默认发起科室'] ||
270 279
               res.end.end.departmentStrategy == this.DEPARTMENT_STRATEGY['固定科室']) {
271 280
               this.endDept = res.end.end.list[0];
@@ -449,7 +458,8 @@
449 458
           }))
450 459
           console.log(this.deptList, this.pickerTitle)
451 460
           this.openPicker();
452
-        } else if (this.dataObj[type][type].departmentStrategy == this.DEPARTMENT_STRATEGY['自主填写'] || this.dataObj[type][type].departmentStrategy ==
461
+        } else if (this.dataObj[type][type].departmentStrategy == this.DEPARTMENT_STRATEGY['自主填写'] || this.dataObj[type]
462
+          [type].departmentStrategy ==
453 463
           this.DEPARTMENT_STRATEGY['固定科室类型']) {
454 464
           // 固定科室类型,自主选择
455 465
           let params = {
@@ -470,16 +480,16 @@
470 480
       }
471 481
     },
472 482
     onLoad(queryParams) {
473
-      this.patientMsg = `您选择类型为<b class="green">${this.patientTaskType.taskName}</b>,需要填写科室,选择完成后点击下一步`;
474 483
       this.queryParams = queryParams;
475 484
       if (this.qucikCreateOrderType === 'patient') {
485
+        this.patientMsg = `您选择类型为<b class="green">${this.patientTaskType.taskName}</b>,需要填写科室,选择完成后点击下一步`;
476 486
         //患者建单选科室
477 487
         this.btns = [{
478 488
           name: "返回列表",
479 489
           type: "default",
480 490
           click: () => {
481 491
             uni.navigateTo({
482
-              url:'/pages/patientList/patientList'
492
+              url: '/pages/patientList/patientList'
483 493
             })
484 494
           },
485 495
         }, ];

+ 9 - 1
request/api.js

@@ -143,7 +143,7 @@ export const reqGetPatientInspectInfo = (postData) =>
143 143
     data: postData,
144 144
     method: 'POST'
145 145
   });
146
-  
146
+
147 147
 // 患者一键建单请求任务类型
148 148
 export const reqDeptTSPTaskType = (postData) =>
149 149
   request({
@@ -151,3 +151,11 @@ export const reqDeptTSPTaskType = (postData) =>
151 151
     data: postData,
152 152
     method: 'POST'
153 153
   });
154
+
155
+// 患者建单接口
156
+export const reqBuild = (type, postData) =>
157
+  request({
158
+    url: `/api/${type}`,
159
+    data: postData,
160
+    method: 'POST'
161
+  });

+ 49 - 3
static/fonts/demo_index.html

@@ -55,6 +55,18 @@
55 55
           <ul class="icon_lists dib-box">
56 56
           
57 57
             <li class="dib">
58
+              <span class="icon pda">&#xe621;</span>
59
+                <div class="name">历史记录</div>
60
+                <div class="code-name">&amp;#xe621;</div>
61
+              </li>
62
+          
63
+            <li class="dib">
64
+              <span class="icon pda">&#xe65f;</span>
65
+                <div class="name">日历</div>
66
+                <div class="code-name">&amp;#xe65f;</div>
67
+              </li>
68
+          
69
+            <li class="dib">
58 70
               <span class="icon pda">&#xe636;</span>
59 71
                 <div class="name">icon_liucheng</div>
60 72
                 <div class="code-name">&amp;#xe636;</div>
@@ -156,9 +168,9 @@
156 168
 <pre><code class="language-css"
157 169
 >@font-face {
158 170
   font-family: 'pda';
159
-  src: url('iconfont.woff2?t=1651907681793') format('woff2'),
160
-       url('iconfont.woff?t=1651907681793') format('woff'),
161
-       url('iconfont.ttf?t=1651907681793') format('truetype');
171
+  src: url('iconfont.woff2?t=1652696906310') format('woff2'),
172
+       url('iconfont.woff?t=1652696906310') format('woff'),
173
+       url('iconfont.ttf?t=1652696906310') format('truetype');
162 174
 }
163 175
 </code></pre>
164 176
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -185,6 +197,24 @@
185 197
         <ul class="icon_lists dib-box">
186 198
           
187 199
           <li class="dib">
200
+            <span class="icon pda pda-shouye8"></span>
201
+            <div class="name">
202
+              历史记录
203
+            </div>
204
+            <div class="code-name">.pda-shouye8
205
+            </div>
206
+          </li>
207
+          
208
+          <li class="dib">
209
+            <span class="icon pda pda-icon"></span>
210
+            <div class="name">
211
+              日历
212
+            </div>
213
+            <div class="code-name">.pda-icon
214
+            </div>
215
+          </li>
216
+          
217
+          <li class="dib">
188 218
             <span class="icon pda pda-icon_liucheng"></span>
189 219
             <div class="name">
190 220
               icon_liucheng
@@ -339,6 +369,22 @@
339 369
           
340 370
             <li class="dib">
341 371
                 <svg class="icon svg-icon" aria-hidden="true">
372
+                  <use xlink:href="#pda-shouye8"></use>
373
+                </svg>
374
+                <div class="name">历史记录</div>
375
+                <div class="code-name">#pda-shouye8</div>
376
+            </li>
377
+          
378
+            <li class="dib">
379
+                <svg class="icon svg-icon" aria-hidden="true">
380
+                  <use xlink:href="#pda-icon"></use>
381
+                </svg>
382
+                <div class="name">日历</div>
383
+                <div class="code-name">#pda-icon</div>
384
+            </li>
385
+          
386
+            <li class="dib">
387
+                <svg class="icon svg-icon" aria-hidden="true">
342 388
                   <use xlink:href="#pda-icon_liucheng"></use>
343 389
                 </svg>
344 390
                 <div class="name">icon_liucheng</div>

+ 11 - 3
static/fonts/iconfont.css

@@ -1,8 +1,8 @@
1 1
 @font-face {
2 2
   font-family: "pda"; /* Project id 3307922 */
3
-  src: url('/static/fonts/iconfont.woff2?t=1651907681793') format('woff2'),
4
-       url('/static/fonts/iconfont.woff?t=1651907681793') format('woff'),
5
-       url('/static/fonts/iconfont.ttf?t=1651907681793') format('truetype');
3
+  src: url('/static/fonts/iconfont.woff2?t=1652696906310') format('woff2'),
4
+       url('/static/fonts/iconfont.woff?t=1652696906310') format('woff'),
5
+       url('/static/fonts/iconfont.ttf?t=1652696906310') format('truetype');
6 6
 }
7 7
 
8 8
 .pda {
@@ -13,6 +13,14 @@
13 13
   -moz-osx-font-smoothing: grayscale;
14 14
 }
15 15
 
16
+.pda-shouye8:before {
17
+  content: "\e621";
18
+}
19
+
20
+.pda-icon:before {
21
+  content: "\e65f";
22
+}
23
+
16 24
 .pda-icon_liucheng:before {
17 25
   content: "\e636";
18 26
 }

File diff suppressed because it is too large
+ 1 - 1
static/fonts/iconfont.js


+ 14 - 0
static/fonts/iconfont.json

@@ -6,6 +6,20 @@
6 6
   "description": "转运PDA",
7 7
   "glyphs": [
8 8
     {
9
+      "icon_id": "765433",
10
+      "name": "历史记录",
11
+      "font_class": "shouye8",
12
+      "unicode": "e621",
13
+      "unicode_decimal": 58913
14
+    },
15
+    {
16
+      "icon_id": "784528",
17
+      "name": "日历",
18
+      "font_class": "icon",
19
+      "unicode": "e65f",
20
+      "unicode_decimal": 58975
21
+    },
22
+    {
9 23
       "icon_id": "4852580",
10 24
       "name": "icon_liucheng",
11 25
       "font_class": "icon_liucheng",

BIN
static/fonts/iconfont.ttf


BIN
static/fonts/iconfont.woff


BIN
static/fonts/iconfont.woff2


+ 8 - 0
store/modules/other.js

@@ -42,6 +42,14 @@ const mutations = {
42 42
     state.patientTaskType = args.patientTaskType;
43 43
     state.selectedPatient = args.selectedPatient;
44 44
   },
45
+  // 修改患者建单数据(checks|goods|urgent|yyTime|dept|isYY)
46
+  changePatientBuildData(state, args) {
47
+    state.patientBuildData[args.key] = args.value;
48
+  },
49
+  // 清空患者建单数据(checks|goods|urgent|yyTime|dept|isYY)
50
+  clearPatientBuildData(state, args) {
51
+    state.patientBuildData = {};
52
+  },
45 53
   //护士端科室显示选择(名称还是别名)1是名称,2是别名
46 54
   changeDeptDisplay(state, args) {
47 55
     state.deptDisplay = args;

+ 3 - 0
uni.scss

@@ -112,6 +112,9 @@ $textColorYellow: #F5A623;
112 112
 }
113 113
 // --------------------------华丽的分割线---------------------------------------
114 114
 // 全局样式
115
+.uni-picker-action-confirm {
116
+  color: $defaultColor !important;
117
+}
115 118
 .w100{
116 119
   width: 100%!important;
117 120
 }

+ 5 - 0
utils/index.js

@@ -14,6 +14,11 @@ import {
14 14
   reqDirectStartOrder,
15 15
 } from "../request/api.js";
16 16
 
17
+// 生成一个从 start 到 end 的连续数组
18
+export function generateArray(start, end) {
19
+  return Array.from(new Array(end + 1).keys()).slice(start).map(v => v.toString().padStart(2, '0'));
20
+}
21
+
17 22
 //aes加密
18 23
 export function encryptByEnAES(data = '') {
19 24
   let Key = "dsadmin";