MrShi
2025-03-12 69a1b3bf45738f048361ee4ccb6bdc64fce35720
h5/pages/applicationRecord/applicationRecord.vue
@@ -2,61 +2,162 @@
   <view class="box">
      <scroll-view scroll-x class="box_head">
         <view class="box_head_list">
            <view class="box_head_item active">全部</view>
            <view class="box_head_item">待审核</view>
            <view class="box_head_item">审核通过</view>
            <view class="box_head_item">审核驳回</view>
        <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 class="box_list_item" v-for="(item, index) in 3" :key="index">
      <view
        @click="handleDetail(item.id)"
        class="box_list_item"
        v-for="(item, index) in list"
        :key="index"
      >
            <view class="box_list_item_head">
               <text>丁恩凯的劳务入厂申请</text>
               <text class="loading">待审核</text>
          <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>人事部-王亚蓝</text>
            <text
              >{{ item.receptMemberDepartment }}-{{
                item.receptMemberName
              }}</text
            >
               </view>
               <view class="box_list_item_nr_item">
                  <text>进厂时间:</text>
                  <text>12-12 09:00</text>
            <text v-if="item.starttime">{{ item.starttime.slice(5, 16) }}</text>
               </view>
               <view class="box_list_item_nr_item">
                  <text>离厂时间:</text>
                  <text>12-12 12:00</text>
               </view>
               <view class="box_list_item_nr_item">
                  <text>入厂人数:</text>
                  <text>10</text>
            <text>离园时间:</text>
            <text v-if="item.endtime">{{ item.endtime.slice(5, 16) }}</text>
               </view>
               <view class="box_list_item_nr_item">
                  <text>来访事由:</text>
                  <text>业务来往</text>
            <text>{{ item.reason }}</text>
               </view>
               <view class="box_list_item_nr_x"></view>
               <view class="box_list_item_nr_text">
                  2023-12-12 09:00提交
          <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: '下发失败',
        7: '拜访中',
        8: '已签离',
        9: '已失效',
      }
    }
  },
  onShow() {
     this.pagination.page = 0
     this.list = []
     this.getList()
  },
  onReachBottom() {
      const {
         total,
         list
      } = this
      if (list.length < total) {
         this.getList()
      } else {
         this.showToast('暂无更多数据')
      }
  },
  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>
<style lang="scss">
   page {
      background-color: #F7F7F7 !important;
  background-color: #f7f7f7 !important;
   }
</style>
<style lang="scss" scoped>
@@ -67,7 +168,7 @@
         height: 108rpx;
         padding: 0 30rpx;
         box-sizing: border-box;
         background: #FFFFFF;
    background: #ffffff;
         position: sticky;
         top: 0;
         left: 0;
@@ -76,21 +177,23 @@
            height: 100%;
            display: flex;
            align-items: center;
      justify-content: space-between;
            .active {
               border: 1rpx solid #025EEF !important;
               color: #025EEF !important;
        border: 2rpx solid $uni-color-primary !important;
        color: $uni-color-primary !important;
            }
            .box_head_item {
               padding: 0 30rpx;
        width: 156rpx;
        text-align: center;
               height: 60rpx;
               line-height: 60rpx;
               box-sizing: border-box;
        display: flex;
            align-items: center;
            justify-content: center;
               border-radius: 30rpx;
               border: 1rpx solid #999999;
        border: 2rpx solid #999999;
               font-size: 26rpx;
               font-weight: 400;
               color: #333333;
               margin-right: 20rpx;
            }
         }
      }
@@ -109,24 +212,24 @@
               height: 100rpx;
               padding: 0 30rpx;
               box-sizing: border-box;
               background: linear-gradient(270deg, #FEFEFF 0%, #E1F7FE 100%);
        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: #025EEF;
          color: $uni-color-primary;
               }
               .success {
                  color: #03C68F;
          color: #03c68f;
               }
               .error {
                  color: #E0312A;
          color: #e0312a;
               }
               text {
                  &:nth-child(1) {
                     font-size: 32rpx;
                     font-weight: 500;
            font-weight: 600;
                     color: #222222;
                  }
                  &:nth-child(2) {
@@ -139,18 +242,18 @@
               padding: 30rpx;
               width: 100%;
               box-sizing: border-box;
               background-color: #FFFFFF;
               .box_list_item_nr_x {
        background-color: #ffffff;
        /* .box_list_item_nr_x {
                  width: 100%;
                  height: 1rpx;
                  background-color: #E5E5E5;
               }
          background-color: #e5e5e5;
        } */
               .box_list_item_nr_text {
                  width: 100%;
                  font-size: 26rpx;
                  font-weight: 400;
                  color: #999999;
                  margin-top: 32rpx;
          /* margin-top: 32rpx; */
               }
               .box_list_item_nr_item {
                  width: 100%;