seimin 2 years ago
parent
commit
cf985d7d5c

+ 3 - 1
components/seiminModel/seiminModel.vue

@@ -12,7 +12,7 @@
12 12
       <view class="seiminModel_header" :class="{noTitle:!opts.title}">
13 13
         <text>{{ opts.title }}</text>
14 14
         <text class="seiminModel_countDown" v-if="
15
-            nurseDeptSwitchTip < 0 || (nurseDeptSwitchTip > 0 && closeTime > 0)
15
+            (nurseDeptSwitchTip < 0 || (nurseDeptSwitchTip > 0 && closeTime > 0))&&isCheckDept
16 16
           ">
17 17
           <text v-if="nurseDeptSwitchTip < 0">关闭</text>倒计时<text>{{ closeTime }}s</text>
18 18
         </text>
@@ -121,6 +121,7 @@
121 121
     },
122 122
     data() {
123 123
       return {
124
+        isCheckDept:false,//是否是切换科室
124 125
         dateOptions: [
125 126
           [],
126 127
           [],
@@ -461,6 +462,7 @@
461 462
       },
462 463
       // 切换科室弹窗
463 464
       showChangeDept(options = {}) {
465
+        this.isCheckDept = true;
464 466
         this.show(options);
465 467
         // (1)	当用户设置为正数时,用户必须查看此窗体指定秒数。
466 468
         // (2)	当用户设置为负数时,用户可点击知道了也可倒计时自动关闭。

+ 1 - 1
components/seiminPicker/seiminPicker.vue

@@ -81,7 +81,7 @@
81 81
         this.$emit('onConfirm', checkedObj)
82 82
       },
83 83
       // 选择初始选项
84
-      _changeValue(index){
84
+      _changeValue(index) {
85 85
         this.pickerValue = [index];
86 86
       },
87 87
       //滑动picker

+ 1 - 1
pages/appointmentInspect/appointmentInspect.vue

@@ -4,7 +4,7 @@
4 4
       <view class="qco_msg1" v-html="patientMsg"></view>
5 5
       <view class="qco_msg2 red" v-if="isMoreDept">您选择的检查包含了多个科室,请您只包含一个科室</view>
6 6
     </view>
7
-    <view class="select_block_wrap" :style="{paddingTop:qcoHeight+'px'}">
7
+    <view class="select_block_wrap" :style="{mariginTop:qcoHeight+'px'}">
8 8
       <view class="uni-list">
9 9
         <checkbox-group @change="checkboxChange">
10 10
           <scroll-view scroll-y class="scrollHeight">

+ 66 - 11
pages/detail/detail.vue

@@ -98,7 +98,7 @@
98 98
         </view>
99 99
       </scroll-view>
100 100
     </view>
101
-    <!-- 程信息 -->
101
+    <!-- 程信息 -->
102 102
     <view class="orderDetail_info" v-show="selectedTab === 3">
103 103
       <scroll-view scroll-y class="orderDetail_infoItem">
104 104
         <view class="orderDetail_infoItem_header">
@@ -109,6 +109,24 @@
109 109
             </view>
110 110
           </view>
111 111
         </view>
112
+        <view class="orderDetail_infoItem_item process">
113
+          <block v-if="logList.length">
114
+            <view class="orderDetail_process_item" v-for="(step,i) in logList" :key="i">
115
+              <view class="step_infoStart">
116
+                <view class="step_name">{{step.operationType.name}}</view>
117
+                <view class="step_time">
118
+                  {{step.creatTime}}
119
+                </view>
120
+              </view>
121
+              <view class="step_icon pda pda-icon_liucheng active"></view>
122
+              <view class="step_infoEnd">
123
+                <view class="step_overtime">
124
+                  {{step.operationUserName}}
125
+                </view>
126
+              </view>
127
+            </view>
128
+          </block>
129
+        </view>
112 130
       </scroll-view>
113 131
     </view>
114 132
     <!-- 底部 -->
@@ -124,6 +142,7 @@
124 142
   import {
125 143
     reqFetchData,
126 144
     reqFetchWorkOrderLog,
145
+    reqFetchDataList,
127 146
   } from "../../request/api.js";
128 147
   import {
129 148
     mapState
@@ -143,6 +162,7 @@
143 162
   export default {
144 163
     data() {
145 164
       return {
165
+        logList: [], //过程信息列表
146 166
         debouncedChangeTab: null,
147 167
         // 路由传参
148 168
         queryParams: {},
@@ -171,10 +191,10 @@
171 191
                 id: 1,
172 192
                 name: '检查信息'
173 193
               },
174
-              {
175
-                id: 3,
176
-                name: '过程信息'
177
-              },
194
+              // {
195
+              //   id: 3,
196
+              //   name: '过程信息'
197
+              // },
178 198
             ];
179 199
             this.changeTab(1);
180 200
             break;
@@ -213,7 +233,7 @@
213 233
         }
214 234
         return timeStr;
215 235
       },
216
-      // 计算程信息耗时
236
+      // 计算程信息耗时
217 237
       filterTime(step) {
218 238
         let num = 0;
219 239
         step.forEach((e) => {
@@ -232,6 +252,7 @@
232 252
             this.getSpecimen(this.queryParams);
233 253
             break;
234 254
           case 3:
255
+            this.getSpecimenProcess(this.queryParams);
235 256
             break;
236 257
         }
237 258
       },
@@ -281,7 +302,7 @@
281 302
         reqFetchData('api', 'specimen', queryParams.id).then(res => {
282 303
           uni.hideLoading();
283 304
           if (res.status == 200) {
284
-            // 程信息
305
+            // 程信息
285 306
             this.info = res.data;
286 307
             //底部按钮处理
287 308
             this.btns = [{
@@ -308,6 +329,34 @@
308 329
           }
309 330
         })
310 331
       },
332
+      //获取标本过程信息数据
333
+      getSpecimenProcess(queryParams) {
334
+        console.log(queryParams);
335
+        uni.showLoading({
336
+          mask: true,
337
+          title: '加载中',
338
+        })
339
+        let postData = {
340
+          "idx": 0,
341
+          "sum": 999,
342
+          "specimenHistory": {
343
+            "scode": queryParams.scode
344
+          }
345
+        };
346
+        reqFetchDataList('api', 'specimenHistory', postData).then(res => {
347
+          uni.hideLoading();
348
+          if (res.status == 200) {
349
+            // 过程信息
350
+            this.logList = res.list || [];
351
+          } else {
352
+            this.$refs.seiminModel.show({
353
+              skin: 'toast',
354
+              icon: 'error',
355
+              content: '请求失败',
356
+            })
357
+          }
358
+        })
359
+      },
311 360
     },
312 361
     onLoad(queryParams) {
313 362
       console.log(queryParams);
@@ -324,6 +373,7 @@
324 373
 
325 374
 <style lang="scss" scoped>
326 375
   .orderDetail {
376
+
327 377
     // 头部
328 378
     .orderDetail_header {
329 379
       position: fixed;
@@ -359,6 +409,7 @@
359 409
 
360 410
       .orderDetail_infoItem {
361 411
         width: 702rpx;
412
+        height: 80vh;
362 413
         background-color: #fff;
363 414
         margin-top: 8rpx;
364 415
         border-radius: 8rpx;
@@ -456,11 +507,12 @@
456 507
             }
457 508
           }
458 509
 
459
-          // 程信息
510
+          // 程信息
460 511
           .orderDetail_process_item {
461 512
             min-height: 120rpx;
462 513
             line-height: 50rpx;
463 514
             color: #333;
515
+            margin-bottom: 20rpx;
464 516
             @include flex(center);
465 517
 
466 518
             &:last-of-type {
@@ -473,8 +525,11 @@
473 525
 
474 526
             .step_infoStart {
475 527
               font-size: 28rpx;
476
-              flex: 1;
477
-              @include flex(flex-end);
528
+              text-align: center;
529
+              position: relative;
530
+              top: -50rpx;
531
+              width: 180rpx;
532
+              margin-left: 100rpx;
478 533
 
479 534
               .step_time {
480 535
                 margin-left: 16rpx;
@@ -498,7 +553,7 @@
498 553
                 top: 60rpx;
499 554
                 left: 18rpx;
500 555
                 width: 1px;
501
-                height: calc(100% - 70rpx);
556
+                height: calc(100% - 50rpx);
502 557
                 background-color: #DDE1E5;
503 558
               }
504 559
             }

+ 1 - 1
pages/index/index.vue

@@ -105,7 +105,7 @@
105 105
   export default {
106 106
     data() {
107 107
       return {
108
-        placeholderStyle: "color:#999;font-size:30rpx;",
108
+        placeholderStyle: "color:#999;font-size:30rpx;line-height:66rpx;",
109 109
         urgentNum: 0, //急标数量
110 110
         ordinaryNum: 0, //普标数量
111 111
         newOrderList: [], //最新工单列表

+ 73 - 52
pages/orderDetail/orderDetail.vue

@@ -2,14 +2,16 @@
2 2
   <view class="orderDetail">
3 3
     <!-- 头部 -->
4 4
     <view class="orderDetail_header">
5
-      <view class="orderDetail_header_item" v-for="tab in tabs" :key="tab.id" :class="{active:tab.id === selectedTab}"
6
-        @click="debouncedChangeTab(tab.id)">
7
-        {{tab.name}}
8
-      </view>
5
+      <block v-if="tabs.length">
6
+        <view class="orderDetail_header_item" v-for="tab in tabs" :key="tab.id" :class="{active:tab.id === selectedTab}"
7
+          @click="debouncedChangeTab(tab.id)">
8
+          {{tab.name}}
9
+        </view>
10
+      </block>
9 11
     </view>
10 12
     <!-- tab -->
11 13
     <!-- 工单信息 -->
12
-    <view class="orderDetail_info" v-show="selectedTab === 1">
14
+    <view class="orderDetail_info" v-if="selectedTab === 1">
13 15
       <scroll-view scroll-y class="orderDetail_infoItem" v-if="orderInfo.id">
14 16
         <view class="orderDetail_infoItem_header">
15 17
           <view class="orderDetail_infoItem_header_title">
@@ -36,13 +38,15 @@
36 38
           </view>
37 39
           <view class="orderDetail_infoItem_item_content">
38 40
             <text class="orderDetail_infoItem_item_name">申请科室</text>
39
-            <text
40
-              class="orderDetail_infoItem_item_value">{{orderInfo.createDeptDTO?(deptDisplay==2?orderInfo.createDeptDTO.deptalias:orderInfo.createDeptDTO.dept):'暂无'}}</text>
41
+            <text class="orderDetail_infoItem_item_value"
42
+              v-if="orderInfo.createDeptDTO">{{deptDisplay==2?orderInfo.createDeptDTO.deptalias:orderInfo.createDeptDTO.dept}}</text>
43
+            <text v-else>暂无</text>
41 44
           </view>
42 45
           <view class="orderDetail_infoItem_item_content">
43 46
             <text class="orderDetail_infoItem_item_name">起点科室</text>
44
-            <text
45
-              class="orderDetail_infoItem_item_value">{{orderInfo.startDept?(deptDisplay==2?orderInfo.startDept.deptalias:orderInfo.startDept.dept):'暂无'}}</text>
47
+            <text class="orderDetail_infoItem_item_value"
48
+              v-if="orderInfo.startDept">{{deptDisplay==2?orderInfo.startDept.deptalias:orderInfo.startDept.dept}}</text>
49
+            <text v-else>暂无</text>
46 50
           </view>
47 51
           <view class="orderDetail_infoItem_item_content"
48 52
             v-if="orderInfo.taskType.associationType.value === ASSOCIATION_TYPES['患者陪检业务']||orderInfo.taskType.associationType.value === ASSOCIATION_TYPES['患者其他服务业务']">
@@ -117,7 +121,7 @@
117 121
       </scroll-view>
118 122
     </view>
119 123
     <!-- 流程信息 -->
120
-    <view class="orderDetail_info" v-show="selectedTab === 2">
124
+    <view class="orderDetail_info" v-if="selectedTab === 2">
121 125
       <scroll-view scroll-y class="orderDetail_infoItem" v-if="logList.length">
122 126
         <view class="orderDetail_infoItem_header">
123 127
           <view class="orderDetail_infoItem_header_title">
@@ -128,31 +132,33 @@
128 132
           </view>
129 133
         </view>
130 134
         <view class="orderDetail_infoItem_item process">
131
-          <view class="orderDetail_process_item" v-for="(step,i) in logList" :key="i">
132
-            <view class="step_infoStart">
133
-              <view class="step_name">{{step.operationName}}</view>
134
-              <view class="step_time" v-if="step.record && step.record[0]">
135
-                {{step.record[0].operationTime|formatDate('MM-dd HH:mm')}}
136
-              </view>
137
-            </view>
138
-            <view class="step_icon pda pda-icon_liucheng"
139
-              :class="{'active':(step.record&&step.record[0]&&step.record[0].operationTime)}"></view>
140
-            <view class="step_infoEnd">
141
-              <view class="step_overtime" v-if="i!=0&&step.record&&step.record.length">
142
-                耗时{{filterTime(step.record)}}
135
+          <block v-if="logList.length">
136
+            <view class="orderDetail_process_item" v-for="(step,i) in logList" :key="i">
137
+              <view class="step_infoStart">
138
+                <view class="step_name">{{step.operationName}}</view>
139
+                <view class="step_time" v-if="step.record && step.record[0]">
140
+                  {{step.record[0].operationTime|formatDate('MM-dd HH:mm')}}
141
+                </view>
143 142
               </view>
144
-              <view class="step_dept" v-if="step.record&&step.record[0]&&step.record[0].dept">
145
-                <text v-for="(dept,index) in step.record"
146
-                  :key="index">{{dept?(deptDisplay == 2?dept.deptalias:dept.dept)+',':''}}</text>
143
+              <view class="step_icon pda pda-icon_liucheng"
144
+                :class="{'active':(step.record&&step.record[0]&&step.record[0].operationTime)}"></view>
145
+              <view class="step_infoEnd">
146
+                <view class="step_overtime" v-if="i!=0&&step.record&&step.record.length">
147
+                  耗时{{filterTime(step.record)}}
148
+                </view>
149
+                <view class="step_dept" v-if="step.record&&step.record.length&&step.record[0]&&step.record[0].dept">
150
+                  <text v-for="(dept,index) in step.record"
151
+                    :key="index">{{dept?(deptDisplay == 2?dept.deptalias:dept.dept)+',':''}}</text>
152
+                </view>
147 153
               </view>
148 154
             </view>
149
-          </view>
155
+          </block>
150 156
         </view>
151 157
       </scroll-view>
152 158
     </view>
153 159
     <!-- 业务信息 -->
154
-    <view class="orderDetail_info" v-show="selectedTab === 3">
155
-      <scroll-view scroll-y class="orderDetail_infoItem">
160
+    <view class="orderDetail_info" v-if="selectedTab === 3">
161
+      <scroll-view scroll-y class="orderDetail_infoItem" v-if="orderInfo.id">
156 162
         <view class="orderDetail_infoItem_header">
157 163
           <view class="orderDetail_infoItem_header_title">
158 164
             <view class="icon"></view>
@@ -195,7 +201,8 @@
195 201
             </view>
196 202
           </view>
197 203
           <!-- 检查信息 -->
198
-          <block v-if="orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['患者陪检业务']">
204
+          <block
205
+            v-if="orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['患者陪检业务']&&orderInfo.checkList.length">
199 206
             <view class="inspect_item" v-for="item in orderInfo.checkList" :key="item.id"
200 207
               @click="toDetail(item.id,'inspect')">
201 208
               <view class="inspect_item_name">
@@ -217,7 +224,7 @@
217 224
         </view>
218 225
         <!-- 标本信息 -->
219 226
         <view class="orderDetail_infoItem_item business business_specimen"
220
-          v-if="orderInfo.taskType&&(orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['临时标本业务'] || orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['标本轮巡业务'])">
227
+          v-show="orderInfo.taskType&&(orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['临时标本业务'] || orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['标本轮巡业务'])">
221 228
           <view class="inspect_specimen">
222 229
             <uni-table stripe emptyText="暂无更多数据">
223 230
               <!-- 表头行 -->
@@ -228,27 +235,30 @@
228 235
                 <uni-th align="center" width="71">科室</uni-th>
229 236
               </uni-tr>
230 237
               <!-- 表格数据行 -->
231
-              <uni-tr v-for="data in orderInfo.specimenSet" :key="data.id" @click.native="toDetail(data.id,'specimen')">
232
-                <uni-td align="center">{{data.stype?data.stype.name:'暂无'}}</uni-td>
233
-                <uni-td align="center">{{data.scode || '暂无'}}</uni-td>
234
-                <uni-td align="center">{{data.speState?data.speState.name:'暂无'}}</uni-td>
235
-                <uni-td align="center" class="td" v-if="data.checkDept">
236
-                  {{deptDisplay==2?data.checkDept.deptalias:data.checkDept.dept}}
237
-                  <image class="urgent" v-if="data.urgent == 1" src="../../static/imgs/icon_ji.png" mode="widthFix">
238
-                  </image>
239
-                </uni-td>
240
-                <uni-td align="center" class="td" v-else>
241
-                  暂无
242
-                  <image class="urgent" v-if="data.urgent == 1" src="../../static/imgs/icon_ji.png" mode="widthFix">
243
-                  </image>
244
-                </uni-td>
245
-              </uni-tr>
238
+              <block v-if="orderInfo.specimenSet.length">
239
+                <uni-tr v-for="data in orderInfo.specimenSet" :key="data.id"
240
+                  @click.native="toDetail(data.id,'specimen',data.scode)">
241
+                  <uni-td align="center">{{data.stype?data.stype.name:'暂无'}}</uni-td>
242
+                  <uni-td align="center">{{data.scode || '暂无'}}</uni-td>
243
+                  <uni-td align="center">{{data.speState?data.speState.name:'暂无'}}</uni-td>
244
+                  <uni-td align="center" class="td" v-if="data.checkDept">
245
+                    {{deptDisplay==2?data.checkDept.deptalias:data.checkDept.dept}}
246
+                    <image class="urgent" v-if="data.urgent == 1" src="../../static/imgs/icon_ji.png" mode="widthFix">
247
+                    </image>
248
+                  </uni-td>
249
+                  <uni-td align="center" class="td" v-else>
250
+                    暂无
251
+                    <image class="urgent" v-if="data.urgent == 1" src="../../static/imgs/icon_ji.png" mode="widthFix">
252
+                    </image>
253
+                  </uni-td>
254
+                </uni-tr>
255
+              </block>
246 256
             </uni-table>
247 257
           </view>
248 258
         </view>
249 259
         <!-- 药品信息 -->
250 260
         <view class="orderDetail_infoItem_item business business_drugsBag"
251
-          v-if="orderInfo.taskType&&(orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['药品配送业务'] || orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['静配配送'])">
261
+          v-show="orderInfo.taskType&&(orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['药品配送业务'] || orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['静配配送'])">
252 262
           <!-- 检查信息 -->
253 263
           <block v-if="orderInfo.drugs&&orderInfo.taskType.associationType.value==ASSOCIATION_TYPES['药品配送业务']">
254 264
             <view class="drugsBag_item">
@@ -375,10 +385,16 @@
375 385
         this.changeTab(1);
376 386
       },
377 387
       // 跳转详情
378
-      toDetail(id, associationType) {
379
-        uni.navigateTo({
380
-          url: `/pages/detail/detail?id=${id}&associationType=${associationType}`
381
-        })
388
+      toDetail(id, associationType,scode) {
389
+        if(scode){
390
+          uni.navigateTo({
391
+            url: `/pages/detail/detail?id=${id}&associationType=${associationType}&scode=${scode}`
392
+          })
393
+        }else{
394
+          uni.navigateTo({
395
+            url: `/pages/detail/detail?id=${id}&associationType=${associationType}`
396
+          })
397
+        }
382 398
       },
383 399
       // 格式化时分秒
384 400
       // (时间小于一分钟则显示秒,时间大于一分钟则显示分钟数,如超出一小时则显示小时和分钟。)time单位:秒
@@ -443,7 +459,9 @@
443 459
               return this.deptDisplay == 2 ? v.deptalias : v.dept;
444 460
             }).toString();
445 461
             // 工单信息
446
-            this.orderInfo = res.data;
462
+            res.data.checkList = res.data.checkList || [];
463
+            res.data.specimenSet = res.data.specimenSet || [];
464
+            this.orderInfo = res.data || {};
447 465
             //底部按钮处理
448 466
             let btns = [{
449 467
               name: "回到列表",
@@ -521,6 +539,7 @@
521 539
                   name: "加急",
522 540
                   type: "primary",
523 541
                   click: () => {
542
+                    console.log(newOrder)
524 543
                     showJiaji.call(this, newOrder.id, () => {
525 544
                       this.$refs.seiminModel.close();
526 545
                       uni.navigateTo({
@@ -561,7 +580,7 @@
561 580
           uni.hideLoading();
562 581
           if (res.status == 200) {
563 582
             // 流程信息
564
-            this.logList = res.data;
583
+            this.logList = res.data || [];
565 584
           } else {
566 585
             this.$refs.seiminModel.show({
567 586
               skin: 'toast',
@@ -624,6 +643,7 @@
624 643
 
625 644
       .orderDetail_infoItem {
626 645
         width: 702rpx;
646
+        height: 80vh;
627 647
         background-color: #fff;
628 648
         margin-top: 8rpx;
629 649
         border-radius: 8rpx;
@@ -896,6 +916,7 @@
896 916
             ::v-deep .uni-table-td {
897 917
               word-break: break-all;
898 918
             }
919
+
899 920
           }
900 921
 
901 922
           // 业务信息-药品

+ 0 - 11
pages/orderList/orderList.vue

@@ -145,7 +145,6 @@
145 145
         pageNum: 20, //每页的工单数量
146 146
         pickerList: [], //picker列表
147 147
         type: '', //打开picker的类型,工单状态||关联类型
148
-        checkStatus: {}, //审核状态列表
149 148
       };
150 149
     },
151 150
     computed: {
@@ -233,13 +232,11 @@
233 232
         Promise.all([
234 233
           this.queryWorkOrdersRequest(), //查询最新工单列表
235 234
           this.queryDictionary('association_types'), //获取数据字典-关联类型
236
-          this.queryDictionary('check_status'), //获取数据字典-审核状态
237 235
         ]).then((values) => {
238 236
           uni.hideLoading();
239 237
           uni.stopPullDownRefresh();
240 238
           this.queryWorkOrdersResponse(values[0]);
241 239
           this.queryDictionaryResponse(values[1], 'association_types');
242
-          this.queryDictionaryResponse(values[2], 'check_status');
243 240
         });
244 241
       },
245 242
       // 查询最新工单列表(上拉)
@@ -353,7 +350,6 @@
353 350
       },
354 351
       // 获取数据字典
355 352
       queryDictionaryResponse(res, type) {
356
-        let obj = {};
357 353
         let arr = [];
358 354
         switch (type) {
359 355
           case 'association_types':
@@ -366,13 +362,6 @@
366 362
               value: -1
367 363
             }, ...arr];
368 364
             break;
369
-          case 'check_status':
370
-            obj = {};
371
-            res.forEach(v => {
372
-              obj[v.value] = v.id;
373
-            })
374
-            this.checkStatus = obj;
375
-            break;
376 365
         }
377 366
       },
378 367
     },

+ 3 - 2
pages/patientBuild/patientBuild.vue

@@ -212,7 +212,7 @@
212 212
         // 提示文字
213 213
         this.patientMsg = `患者<b class="green">${this.selectedPatient.patientName}</b>即将出科,请您选择送检人员需携带哪些设备!`;
214 214
         let goods = this.patientBuildTrip.goods ? cloneDeep(this.patientBuildTrip.goods) : []; // 设备
215
-        let checks = this.patientBuildTrip.checks ? cloneDeep(this.patientBuildTrip.checks) : []; // 检查
215
+        let checks = this.patientBuildData.checks ? cloneDeep(this.patientBuildData.checks) : []; // 检查
216 216
         this.goods = goods;
217 217
         // 患者陪检业务和患者其他服务业务相关处理
218 218
         this.hasYYtimeChecks = checks.filter((v) => Boolean(v.yyTime));
@@ -226,6 +226,7 @@
226 226
           this.urgentRemark = '';
227 227
         }
228 228
         //判断预约建单按钮
229
+        console.log(this.patientBuildTrip)
229 230
         if (this.hasYYtimeChecks.length && this.patientTaskType.appointmentSwitch == 1) {
230 231
           //选中的检查数组都有预约时间并且允许预约建单
231 232
           this.isYYBuild = true;
@@ -237,7 +238,7 @@
237 238
           this.yyInspectChange();
238 239
         } else {
239 240
           //不允许预约建单
240
-          this.isYYBuild = true;
241
+          this.isYYBuild = false;
241 242
           this.date = false;
242 243
           this.time = false;
243 244
           this.timestamp = new Date().getTime();

+ 18 - 8
pages/patientBuildConfirm/patientBuildConfirm.vue

@@ -135,11 +135,15 @@
135 135
                     this.$refs.seiminModel.show({
136 136
                       skin: "toast",
137 137
                       icon: "success",
138
-                      content: "创建成功",
138
+                      content: "您申请的工单已建单成功,工作人员会尽快处理!",
139
+                      btns:[{
140
+                        click:()=>{
141
+                          uni.navigateTo({
142
+                            url: '/pages/patientList/patientList'
143
+                          })
144
+                        }
145
+                      }]
139 146
                     });
140
-                    uni.navigateTo({
141
-                      url: '/pages/orderList/orderList'
142
-                    })
143 147
                   } else {
144 148
                     this.$refs.seiminModel.show({
145 149
                       skin: "toast",
@@ -185,6 +189,7 @@
185 189
             },
186 190
           }, {
187 191
             name: "取消",
192
+            flex: 1,
188 193
             type: "default",
189 194
             click: () => {
190 195
               this.$refs.seiminModel.close();
@@ -238,11 +243,15 @@
238 243
               this.$refs.seiminModel.show({
239 244
                 skin: "toast",
240 245
                 icon: "success",
241
-                content: "创建成功",
246
+                content: "您申请的工单已建单成功,工作人员会尽快处理!",
247
+                btns:[{
248
+                  click:()=>{
249
+                    uni.navigateTo({
250
+                      url: '/pages/patientList/patientList'
251
+                    })
252
+                  }
253
+                }]
242 254
               });
243
-              uni.navigateTo({
244
-                url: '/pages/orderList/orderList'
245
-              })
246 255
             } else if (data.status == 1000033) {
247 256
               //重复建单那策略
248 257
               this.showReaptModal(data.msg, postData);
@@ -391,6 +400,7 @@
391 400
 
392 401
       .orderDetail_infoItem {
393 402
         width: 702rpx;
403
+        height: 80vh;
394 404
         background-color: #fff;
395 405
         margin-top: 8rpx;
396 406
         border-radius: 8rpx;

+ 167 - 7
pages/patientDetail/patientDetail.vue

@@ -59,7 +59,7 @@
59 59
                 <uni-th align="center" width="71">科室</uni-th>
60 60
               </uni-tr>
61 61
               <!-- 表格数据行 -->
62
-              <uni-tr v-for="data in info.specimens" :key="data.id" @click.native="toDetail(data.id,'specimen')">
62
+              <uni-tr v-for="data in info.specimens" :key="data.id" @click.native="toDetail(data.id,'specimen',data.scode)">
63 63
                 <uni-td align="center">{{data.stype?data.stype.name:'暂无'}}</uni-td>
64 64
                 <uni-td align="center">{{data.scode || '暂无'}}</uni-td>
65 65
                 <uni-td align="center">{{data.speState?data.speState.name:'暂无'}}</uni-td>
@@ -121,6 +121,10 @@
121 121
     <!-- 底部 -->
122 122
     <seiminFooterBtn :btns="btns"></seiminFooterBtn>
123 123
     <seiminModel ref="seiminModel"></seiminModel>
124
+    <seiminPicker ref="sPicker" :title="pickerTitle" titleColor="#808080" titleFontSize="28rpx" confirmColor="#333"
125
+      confirmFontSize="38rpx" confirmFontWeight="500" itemFontSize="32rpx" @onClose="closePicker"
126
+      @onConfirm="confirmPicker" :pickerList="taskTypeList">
127
+    </seiminPicker>
124 128
   </view>
125 129
 </template>
126 130
 
@@ -130,9 +134,12 @@
130 134
   } from 'lodash/function';
131 135
   import {
132 136
     reqGetPatientInspectInfo,
137
+    reqDeptTSPTaskType,
138
+    reqBuildTrip,
133 139
   } from "../../request/api.js";
134 140
   import {
135
-    mapState
141
+    mapState,
142
+    mapMutations,
136 143
   } from "vuex";
137 144
   import {
138 145
     GDSTATE
@@ -149,6 +156,10 @@
149 156
   export default {
150 157
     data() {
151 158
       return {
159
+        checkedShowMsg: {}, //当前选中的任务类型的buildtrip信息
160
+        pickerTitle: "", //一键建单picker的title
161
+        taskTypeListResource: [], //任务类型列表(请求的原始数据)
162
+        taskTypeList: [], //任务类型列表
152 163
         debouncedChangeTab: null,
153 164
         // 路由传参
154 165
         queryParams: {},
@@ -187,7 +198,7 @@
187 198
           name: "一键建单",
188 199
           type: "default",
189 200
           click: () => {
190
-            // wocao
201
+            this.buildOrder(this.queryParams);
191 202
           },
192 203
         }],
193 204
       };
@@ -196,15 +207,163 @@
196 207
       ...mapState('other', ["deptDisplay"]),
197 208
     },
198 209
     methods: {
210
+      ...mapMutations('other', ['changeQucikCreateOrderType', 'clearPatientBuildData', 'changePatientBuildData']),
211
+      //关闭
212
+      closePicker() {
213
+        this.$refs.sPicker._close();
214
+      },
215
+      //打开
216
+      openPicker() {
217
+        this.$refs.sPicker._open();
218
+      },
219
+      //确定:接收子组件传来的参数
220
+      confirmPicker(checkedObj) {
221
+        console.log(checkedObj);
222
+        // 补充:清除建单数据
223
+        this.clearPatientBuildData();
224
+        // 2,获取buildTrip信息
225
+        let postData = {
226
+          "taskTypeId": checkedObj.value,
227
+          "patientCode": this.selectedPatient.patientCode
228
+        };
229
+        uni.showLoading({
230
+          mask: true,
231
+          title: '加载中'
232
+        })
233
+        reqBuildTrip(postData).then(res => {
234
+          uni.hideLoading();
235
+          let taskType = this.taskTypeListResource.find(v => v.id == checkedObj.value);
236
+          let patientTaskType = taskType || {};
237
+          if (patientTaskType.associationType.value == this.ASSOCIATION_TYPES['患者其他服务业务']) {
238
+            // 患者其他服务业务--无法用status判断,运输过程“默认患者所在科室”没有返回status==200,估计是后端漏掉了这种情况,如果后期后端可以返回status,则可以根据status判断。
239
+            if (res.start && res.end) {
240
+              if (res.status == 100013 || res.status == 100014 || res.status == 100015) {
241
+                this.checkedShowMsg = res.data;
242
+                //需要选择起点科室和目标科室
243
+                this.changeQucikCreateOrderType({
244
+                  type: "patient",
245
+                  taskTypeId: checkedObj.value,
246
+                  patientTaskType,
247
+                  selectedPatient: this.selectedPatient,
248
+                  patientBuildTrip: res,
249
+                });
250
+                uni.navigateTo({
251
+                  url: "/pages/quickCreateOrder/quickCreateOrder",
252
+                });
253
+              } else {
254
+                //无需选择科室
255
+                this.checkedShowMsg = res.data;
256
+                this.changePatientBuildData({
257
+                  key: 'dept',
258
+                  value: {
259
+                    startDept: res.start.start.list[0],
260
+                    endDept: res.end.end.list[0],
261
+                  }
262
+                });
263
+                this.changeQucikCreateOrderType({
264
+                  type: "patient",
265
+                  taskTypeId: checkedObj.value,
266
+                  patientTaskType,
267
+                  selectedPatient: this.selectedPatient,
268
+                  patientBuildTrip: res,
269
+                });
270
+                uni.navigateTo({
271
+                  url: "/pages/patientBuild/patientBuild",
272
+                });
273
+              }
274
+            } else {
275
+              this.$refs.seiminModel.show({
276
+                skin: "toast",
277
+                icon: "error",
278
+                content: res.msg || "获取数据失败",
279
+              });
280
+              throw new Error(res.msg || '获取数据失败');
281
+            }
282
+          } else if (patientTaskType.associationType.value == this.ASSOCIATION_TYPES['患者陪检业务']) {
283
+            // 患者陪检业务
284
+            if (res.status == 200) {
285
+              this.checkedShowMsg = res.data;
286
+              this.changePatientBuildData({
287
+                key: 'dept',
288
+                value: {
289
+                  startDept: {
290
+                    id: res.startDept,
291
+                    dept: res.startDeptName,
292
+                    deptalias: res.startDeptAlias
293
+                  }, //待改
294
+                  endDept: {
295
+                    id: res.startDept,
296
+                    dept: res.startDeptName,
297
+                    deptalias: res.startDeptAlias
298
+                  }, //待改
299
+                }
300
+              });
301
+              this.changeQucikCreateOrderType({
302
+                type: "patient",
303
+                taskTypeId: checkedObj.value,
304
+                patientTaskType,
305
+                selectedPatient: this.selectedPatient,
306
+                patientBuildTrip: res,
307
+              });
308
+              uni.navigateTo({
309
+                url: "/pages/appointmentInspect/appointmentInspect",
310
+              });
311
+            } else {
312
+              this.$refs.seiminModel.show({
313
+                skin: "toast",
314
+                icon: "error",
315
+                content: res.msg || "获取数据失败",
316
+              });
317
+              throw new Error(res.msg || '获取数据失败');
318
+            }
319
+          }
320
+        })
321
+      },
322
+      // 一键建单
323
+      buildOrder(patient) {
324
+        this.selectedPatient = patient;
325
+        // 1,请求任务类型列表
326
+        uni.showLoading({
327
+          mask: true,
328
+          title: '加载中'
329
+        })
330
+        reqDeptTSPTaskType().then(res => {
331
+          uni.hideLoading();
332
+          if (res.status == 200) {
333
+            res.data = res.data || [];
334
+            this.taskTypeListResource = res.data;
335
+            this.taskTypeList = res.data.map((v) => ({
336
+              value: v.id,
337
+              label: v.taskName,
338
+            }));
339
+            this.pickerTitle = `您选择了<b class="green">${patient.patientName}</b>患者,请选择下方具体服务项`;
340
+            this.openPicker();
341
+          } else {
342
+            this.$refs.seiminModel.show({
343
+              skin: "toast",
344
+              icon: "error",
345
+              content: res.msg || "获取数据失败",
346
+            });
347
+            throw new Error(res.msg || "获取数据失败");
348
+          }
349
+        })
350
+      },
199 351
       init(queryParams) {
352
+        console.log(queryParams)
200 353
         this.queryParams = queryParams;
201 354
         this.changeTab(1);
202 355
       },
203 356
       // 跳转详情
204
-      toDetail(id, associationType) {
205
-        uni.navigateTo({
206
-          url: `/pages/detail/detail?id=${id}&associationType=${associationType}`
207
-        })
357
+      toDetail(id, associationType,scode) {
358
+        if(scode){
359
+          uni.navigateTo({
360
+            url: `/pages/detail/detail?id=${id}&associationType=${associationType}&scode=${scode}`
361
+          })
362
+        }else{
363
+          uni.navigateTo({
364
+            url: `/pages/detail/detail?id=${id}&associationType=${associationType}`
365
+          })
366
+        }
208 367
       },
209 368
       // 切换tab
210 369
       changeTab(id) {
@@ -298,6 +457,7 @@
298 457
 
299 458
       .orderDetail_infoItem {
300 459
         width: 702rpx;
460
+        height: 80vh;
301 461
         background-color: #fff;
302 462
         margin-top: 8rpx;
303 463
         border-radius: 8rpx;

+ 3 - 3
pages/patientList/patientList.vue

@@ -30,7 +30,7 @@
30 30
             <text class="orderList_listItem_item_time">待检{{patient.watingCount}}</text>
31 31
           </view>
32 32
           <view class="orderList_listItem_item_btns">
33
-            <button type="primary" class="btn" @click.stop="toDetail(patient.patientCode)">患者详情</button>
33
+            <button type="primary" class="btn" @click.stop="toDetail(patient.patientCode,patient.patientName)">患者详情</button>
34 34
             <button type="primary" class="btn" @click.stop="buildOrder(patient)">一键建单</button>
35 35
           </view>
36 36
         </view>
@@ -224,9 +224,9 @@
224 224
         })
225 225
       },
226 226
       // 跳转患者详情
227
-      toDetail(patientCode) {
227
+      toDetail(patientCode,patientName) {
228 228
         uni.navigateTo({
229
-          url: `/pages/patientDetail/patientDetail?patientCode=${patientCode}`
229
+          url: `/pages/patientDetail/patientDetail?patientCode=${patientCode}&patientName=${patientName}`
230 230
         })
231 231
       },
232 232
       //监听输入

+ 1 - 0
pages/personalCenter/personalCenter.vue

@@ -146,6 +146,7 @@
146 146
 
147 147
       .orderDetail_infoItem {
148 148
         width: 702rpx;
149
+        height: 30vh;
149 150
         background-color: #fff;
150 151
         border-radius: 8rpx;
151 152
         position: relative;

+ 2 - 0
pages/quickCreateOrder/quickCreateOrder.vue

@@ -192,6 +192,8 @@
192 192
           this.remarksFocus = true;
193 193
         });
194 194
         this.workOrderRemark += customRemark;
195
+        console.log(this.workOrderRemark.replace(/\s/g,''))
196
+        this.workOrderRemark = this.workOrderRemark.replace(/\s/g,'').slice(0,100);
195 197
       },
196 198
       //获取所有数据
197 199
       getData(qucikCreateOrderType, qucikCreateOrderTypeId) {

+ 24 - 20
pages/specimenList/specimenList.vue

@@ -19,21 +19,23 @@
19 19
             <uni-th align="center" width="71">科室</uni-th>
20 20
           </uni-tr>
21 21
           <!-- 表格数据行 -->
22
-          <uni-tr v-for="data in speList" :key="data.id" @click.native="toDetail(data.id,'specimen')">
23
-            <uni-td align="center">{{data.stype?data.stype.name:'暂无'}}</uni-td>
24
-            <uni-td align="center">{{data.scode || '暂无'}}</uni-td>
25
-            <uni-td align="center">{{data.speState?data.speState.name:'暂无'}}</uni-td>
26
-            <uni-td align="center" class="td" v-if="data.checkDept">
27
-              {{deptDisplay==2?data.checkDept.deptalias:data.checkDept.dept}}
28
-              <image class="urgent" v-if="data.urgent == 1" src="../../static/imgs/icon_ji.png" mode="widthFix">
29
-              </image>
30
-            </uni-td>
31
-            <uni-td align="center" class="td" v-else>
32
-              暂无
33
-              <image class="urgent" v-if="data.urgent == 1" src="../../static/imgs/icon_ji.png" mode="widthFix">
34
-              </image>
35
-            </uni-td>
36
-          </uni-tr>
22
+          <block v-for="data in speList" :key="data.id">
23
+            <uni-tr @click.native="toDetail(data.id,'specimen',data.scode)">
24
+              <uni-td align="center">{{data.stype?data.stype.name:'暂无'}}</uni-td>
25
+              <uni-td align="center">{{data.scode || '暂无'}}</uni-td>
26
+              <uni-td align="center">{{data.speState?data.speState.name:'暂无'}}</uni-td>
27
+              <uni-td align="center" class="td" v-if="data.checkDept">
28
+                {{deptDisplay==2?data.checkDept.deptalias:data.checkDept.dept}}
29
+                <image class="urgent" v-if="data.urgent == 1" src="../../static/imgs/icon_ji.png" mode="widthFix">
30
+                </image>
31
+              </uni-td>
32
+              <uni-td align="center" class="td" v-else>
33
+                暂无
34
+                <image class="urgent" v-if="data.urgent == 1" src="../../static/imgs/icon_ji.png" mode="widthFix">
35
+                </image>
36
+              </uni-td>
37
+            </uni-tr>
38
+          </block>
37 39
         </uni-table>
38 40
       </view>
39 41
     </view>
@@ -88,9 +90,9 @@
88 90
     },
89 91
     methods: {
90 92
       // 跳转详情
91
-      toDetail(id, associationType) {
93
+      toDetail(id, associationType, scode) {
92 94
         uni.navigateTo({
93
-          url: `/pages/detail/detail?id=${id}&associationType=${associationType}`
95
+          url: `/pages/detail/detail?id=${id}&associationType=${associationType}&scode=${scode}`
94 96
         })
95 97
       },
96 98
       // 查询最新工单列表
@@ -111,8 +113,8 @@
111 113
       // 查询最新工单列表
112 114
       queryWorkOrdersResponse(res, idxPlus = false) {
113 115
         if (res.status == 200) {
114
-          res.data = res.data || [];
115
-          let speList = res.data;
116
+          let speList = res.data || [];
117
+          console.log(speList, idxPlus)
116 118
           if (idxPlus) {
117 119
             //累加
118 120
             this.speList = this.speList.concat(speList);
@@ -177,9 +179,11 @@
177 179
         this.init();
178 180
       },
179 181
     },
182
+    mounted() {
183
+      this.init();
184
+    },
180 185
     onLoad(querParams) {
181 186
       this.selectedSpeState = querParams.urgent == 1 ? '急查' : '普查';
182
-      this.init();
183 187
     },
184 188
     onPullDownRefresh() {
185 189
       this.init();

+ 2 - 2
request/config.js

@@ -11,8 +11,8 @@ const config = {
11 11
 };
12 12
 // 后端服务地址
13 13
 const baseUrls = {
14
-  // development: "http://192.168.3.108/service", //开发环境
15
-  development: "http://localhost/service", //开发环境
14
+  development: "http://192.168.3.108/service", //开发环境
15
+  // development: "http://localhost/service", //开发环境
16 16
   production: "http://192.168.3.108/service", //生产环境
17 17
 };
18 18
 config.baseUrl = baseUrls[process.env.NODE_ENV];

+ 1 - 1
uni_modules/uni-table/components/uni-th/uni-th.vue

@@ -14,7 +14,7 @@
14 14
 	</th>
15 15
 	<!-- #endif -->
16 16
 	<!-- #ifndef H5 -->
17
-	<view class="uni-table-th" :class="{ 'table--border': border }" :style="{ width: customWidth + 'px', 'text-align': align }"><slot></slot></view>
17
+	<view class="uni-table-th" :class="{ 'table--border': border }" :style="{ width: customWidth + 'px', 'text-align': align, 'color': '#fff' }"><slot></slot></view>
18 18
 	<!-- #endif -->
19 19
 </template>
20 20
 

+ 1 - 1
utils/index.js

@@ -253,7 +253,7 @@ export function showJiaji(id, callBack) {
253 253
             urgentDetails: {
254 254
               workerOrder: id,
255 255
               checkStatus: {
256
-                id: this.checkStatus[1]
256
+                id: 330
257 257
               },
258 258
               urgentReason: urgentTextArea,
259 259
             },