<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">{{ 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>{{ item.starttime }}</text> 
 | 
          </view> 
 | 
          <view class="box_list_item_nr_item"> 
 | 
            <text>离园时间:</text> 
 | 
            <text>{{ item.endtime }}</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 class="box_list_item_nr_text">{{ item.createDate }} 提交</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?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; 
 | 
      .active { 
 | 
        border: 1rpx solid $uni-color-primary !important; 
 | 
        color: $uni-color-primary !important; 
 | 
      } 
 | 
      .box_head_item { 
 | 
        padding: 0 30rpx; 
 | 
        height: 60rpx; 
 | 
        line-height: 60rpx; 
 | 
        box-sizing: border-box; 
 | 
        border-radius: 30rpx; 
 | 
        border: 1rpx solid #999999; 
 | 
        font-size: 26rpx; 
 | 
        font-weight: 400; 
 | 
        color: #333333; 
 | 
        margin-right: 20rpx; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  .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: 500; 
 | 
            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> 
 |