| <template> | 
|   <view class="box"> | 
|     <scroll-view scroll-x class="box_head"> | 
|       <view class="box_head_list"> | 
|         <view | 
|           class="box_head_item" | 
|           :class="{ active: status == '' }" | 
|           @click="tabsClick('')" | 
|           >全部</view | 
|         > | 
|         <view | 
|           class="box_head_item" | 
|           @click="tabsClick('0')" | 
|           :class="{ active: status == '0' }" | 
|           >待审核</view | 
|         > | 
|         <view | 
|           class="box_head_item" | 
|           @click="tabsClick('2')" | 
|           :class="{ active: status == '2' }" | 
|           >审核通过</view | 
|         > | 
|         <view | 
|           class="box_head_item" | 
|           @click="tabsClick('3')" | 
|           :class="{ active: status == '3' }" | 
|           >审核驳回</view | 
|         > | 
|       </view> | 
|     </scroll-view> | 
|     <view class="box_list"> | 
|       <view | 
|         @click="handleDetail(item.id)" | 
|         class="box_list_item" | 
|         v-for="(item, index) in list" | 
|         :key="index" | 
|       > | 
|         <view class="box_list_item_head"> | 
|           <text>{{ item.name }}提交的访客申请</text> | 
|           <text class="loading" :class="{error: item.status == 3}">{{ statusMap[item.status] }}</text> | 
|         </view> | 
|         <view class="box_list_item_nr"> | 
|           <view class="box_list_item_nr_item"> | 
|             <text>被访问人:</text> | 
|             <text | 
|               >{{ item.receptMemberDepartment }}-{{ | 
|                 item.receptMemberName | 
|               }}</text | 
|             > | 
|           </view> | 
|           <view class="box_list_item_nr_item"> | 
|             <text>进厂时间:</text> | 
|             <text v-if="item.starttime">{{ item.starttime.slice(5, 16) }}</text> | 
|           </view> | 
|           <view class="box_list_item_nr_item"> | 
|             <text>离园时间:</text> | 
|             <text v-if="item.endtime">{{ item.endtime.slice(5, 16) }}</text> | 
|           </view> | 
|           <view class="box_list_item_nr_item"> | 
|             <text>来访事由:</text> | 
|             <text>{{ item.reason }}</text> | 
|           </view> | 
|           <view class="box_list_item_nr_x"></view> | 
|           <view v-if="item.createDate" class="box_list_item_nr_text">{{ item.createDate.slice(0, 16) }} 提交</view> | 
|         </view> | 
|       </view> | 
|       <view v-if="list.length === 0" style="text-align: center"> | 
|         <image | 
|           src="@/static/empty.png" | 
|           style="width: 320rpx; margin: 120rpx auto 0" | 
|           mode="widthFix" | 
|         /> | 
|         <view class="placeholder9 fs24">暂无数据</view> | 
|       </view> | 
|     </view> | 
|   </view> | 
| </template> | 
|   | 
| <script> | 
| import { getVisitedRecord } from '@/api' | 
| export default { | 
|   data() { | 
|     return { | 
|       pagination: { | 
|         page: 0, | 
|         capacity: 10 | 
|       }, | 
|       list: [], | 
|       total: 0, | 
|       status: '', | 
|   | 
|       statusMap: { | 
|         0: '待审核', | 
|         1: '已提交', | 
|         2: '审核通过', | 
|         3: '审核驳回', | 
|         4: '取消', | 
|         5: '下发成功', | 
|         6: '下发失败', | 
|       } | 
|     } | 
|   }, | 
|   onLoad() { | 
|     this.getList() | 
|   }, | 
|   onReachBottom() { | 
|     if (this.total > 10) { | 
|       this.getList() | 
|     } | 
|   }, | 
|   methods: { | 
|     handleDetail(id) { | 
|       uni.navigateTo({ | 
|         url: "/pages/appointmentDetails/appointmentDetails?detail=1&id=" + id | 
|       }) | 
|     }, | 
|     tabsClick(val) { | 
|       this.pagination.page = 0 | 
|       this.list = [] | 
|       this.status = val | 
|       this.getList() | 
|     }, | 
|     getList() { | 
|       const { pagination, status, list } = this | 
|       pagination.page = pagination.page + 1 | 
|       getVisitedRecord({ | 
|         ...pagination, | 
|         model: { | 
|           openid: this.$store.state.openId, | 
|           status | 
|         }, | 
|       }).then(res => { | 
|         if (res.data.records.length > 0) { | 
|           if (pagination.page === 1) { | 
|             this.list = res.data.records | 
|           } else { | 
|             this.list = [...list, ...res.data.records] | 
|           } | 
|           this.total = res.data.total | 
|         } | 
|       }) | 
|     } | 
|   | 
|   } | 
| } | 
| </script> | 
| <style lang="scss"> | 
| page { | 
|   background-color: #f7f7f7 !important; | 
| } | 
| </style> | 
| <style lang="scss" scoped> | 
| .box { | 
|   width: 100%; | 
|   .box_head { | 
|     width: 100%; | 
|     height: 108rpx; | 
|     padding: 0 30rpx; | 
|     box-sizing: border-box; | 
|     background: #ffffff; | 
|     position: sticky; | 
|     top: 0; | 
|     left: 0; | 
|     .box_head_list { | 
|       width: 100%; | 
|       height: 100%; | 
|       display: flex; | 
|       align-items: center; | 
|       justify-content: space-between; | 
|       .active { | 
|         border: 1rpx solid $uni-color-primary !important; | 
|         color: $uni-color-primary !important; | 
|       } | 
|       .box_head_item { | 
|         width: 156rpx; | 
|         text-align: center; | 
|         height: 60rpx; | 
|         line-height: 60rpx; | 
|         box-sizing: border-box; | 
|         border-radius: 30rpx; | 
|         border: 1rpx solid #999999; | 
|         font-size: 26rpx; | 
|         font-weight: 400; | 
|         color: #333333; | 
|       } | 
|     } | 
|   } | 
|   .box_list { | 
|     width: 100%; | 
|     padding: 30rpx; | 
|     box-sizing: border-box; | 
|     .box_list_item { | 
|       width: 100%; | 
|       margin-bottom: 20rpx; | 
|       &:last-child { | 
|         margin: 0 !important; | 
|       } | 
|       .box_list_item_head { | 
|         width: 100%; | 
|         height: 100rpx; | 
|         padding: 0 30rpx; | 
|         box-sizing: border-box; | 
|         background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%); | 
|         border-radius: 8rpx 8rpx 0rpx 0rpx; | 
|         display: flex; | 
|         align-items: center; | 
|         justify-content: space-between; | 
|         .loading { | 
|           color: $uni-color-primary; | 
|         } | 
|         .success { | 
|           color: #03c68f; | 
|         } | 
|         .error { | 
|           color: #e0312a; | 
|         } | 
|         text { | 
|           &:nth-child(1) { | 
|             font-size: 32rpx; | 
|             font-weight: 600; | 
|             color: #222222; | 
|           } | 
|           &:nth-child(2) { | 
|             font-size: 26rpx; | 
|             font-weight: 400; | 
|           } | 
|         } | 
|       } | 
|       .box_list_item_nr { | 
|         padding: 30rpx; | 
|         width: 100%; | 
|         box-sizing: border-box; | 
|         background-color: #ffffff; | 
|         /* .box_list_item_nr_x { | 
|           width: 100%; | 
|           height: 1rpx; | 
|           background-color: #e5e5e5; | 
|         } */ | 
|         .box_list_item_nr_text { | 
|           width: 100%; | 
|           font-size: 26rpx; | 
|           font-weight: 400; | 
|           color: #999999; | 
|           /* margin-top: 32rpx; */ | 
|         } | 
|         .box_list_item_nr_item { | 
|           width: 100%; | 
|           display: flex; | 
|           align-items: center; | 
|           margin-bottom: 20rpx; | 
|           text { | 
|             &:nth-child(1) { | 
|               font-size: 26rpx; | 
|               font-weight: 400; | 
|               color: #666666; | 
|             } | 
|             &:nth-child(2) { | 
|               font-size: 26rpx; | 
|               font-weight: 400; | 
|               color: #333333; | 
|             } | 
|           } | 
|         } | 
|       } | 
|     } | 
|   } | 
| } | 
| </style> |