<template>
  <!-- 政策法规列表页面容器 -->
  <view class="policy-container">
    <!-- 搜索框区域 -->
    <view class="search-box">
      <van-search
        :value="abc"
        placeholder="输入关键字查询"
        id="sreach"
        @clear="handleClear"
        @change="handleSearch"
      />
    </view>

    <!-- 政策法规列表区域 -->
    <!-- 修改列表项部分 -->
    <view class="policy-list">
      <scroll-view
        class="policy-scroll"
        scroll-y
        @scrolltolower="loadNextPage"
        @refresherrefresh="onRefresh"
        refresher-enabled
        :refresher-triggered="isRefreshing"
      >
        <view
          class="policy-item"
          v-for="item in policyList"
          :key="item.id"
          @click="handlePolicyClick(item)"
        >
          <view class="item-left">
            <image
              src="@/static/images/owner/policy.png"
              class="policy-icon"
              mode="aspectFit"
            ></image>
          </view>
          <view class="item-right">
            <view class="policy-title">
              {{ item.title }}
            </view>
            <view class="policy-time">
              生效时间: {{ item.effectiveDate }}
            </view>
          </view>
        </view>
      </scroll-view>
    </view>

    <!-- 加载更多状态组件 -->
    <uni-load-more :status="loadMoreStatus" />
  </view>
</template>

<script>
import { PolicyApi, formatPolicyContext } from '@/api/policy/index.js'
import { formatDate } from '@/utils/ruoyi.js'
import config from '@/config'

export default {
  data() {
    return {
      isRefreshing: false, // 是否正在刷新
      searchValue: '', // 搜索关键字
      abc: '',
      policyList: [], // 政策法规列表数据
      pageNum: 1, // 当前页码
      pageSize: 10, // 每页显示条数
      total: 0, // 总数据条数
      loadMoreStatus: 'more', // 加载更多状态：more-加载前 loading-加载中 noMore-没有更多
      itemImgUrl:
        config.imgUrl +
        '/miniohb/c103c92335bdd30d33ff8a062c219ead0626bf0a1898536bd7590285ca11c9db.png'
    }
  },
  // 页面加载时获取列表数据
  onShow() {
    console.log(this.itemImgUrl)
    this.getPolicyList()
  },

  methods: {
    // 下拉刷新
    onRefresh() {
      this.isRefreshing = true
      this.pageNum = 1
      this.getPolicyList()
    },
    loadNextPage() {
      console.log('列表值', this.policyList.length)
      if (this.policyList.length < this.total) {
        this.pageNum++
        this.getPolicyList()
      }
    },
    // 获取政策法规列表数据
    async getPolicyList() {
      try {
        console.log('PolicyApi', this.searchValue)
        this.loadMoreStatus = 'loading'
        const res = await PolicyApi.getPolicyPage({
          pageNum: this.pageNum,
          pageSize: this.pageSize,
          name: this.searchValue // 搜索关键字
        })

        if (res.code === 0 && res.data.total > 0) {
          // 限制标题长度，超出显示省略号
          const formattedData = res.data.list.map(item => ({
            ...item,
            title:
              item.name.length > 15
                ? item.name.slice(0, 15) + '...'
                : item.name,
            effectiveDate: formatDate(item.effectiveDate, 'YYYY年MM月DD日')
          }))

          // 判断是首次加载还是加载更多
          if (this.pageNum === 1) {
            this.policyList = formattedData
          } else {
            this.policyList = [...this.policyList, ...formattedData]
          }
          console.log('列表信息', res)
          this.total = res.data.total
          // 更新加载状态
          this.loadMoreStatus =
            this.policyList.length >= this.total ? 'noMore' : 'more'
        }
      } catch (error) {
        console.error(error)
        this.loadMoreStatus = 'more'
        uni.showToast({
          title: '获取列表失败',
          icon: 'none'
        })
      } finally {
        this.loadMoreStatus =
          this.policyList.length >= this.total ? 'noMore' : 'more'
        // 无论成功失败都关闭刷新状态
        // 确保在数据加载完成后关闭刷新状态
        setTimeout(() => {
          this.isRefreshing = false
        }, 300) // 添加短暂延时，确保动画效果完整
      }
    },
    // 搜索事件处理
    handleSearch(e) {
      if (e.detail && e.detail.length > 1) {
        this.pageNum = 1 // 重置页码
        this.searchValue = e.detail // 更新搜索关键字
        this.getPolicyList()
      }
    },
    // 清除搜索事件处理
    handleClear() {
      this.pageNum = 1 // 重置页码
      this.searchValue = '' // 清空搜索关键字
      this.getPolicyList()
    },
    // 点击政策条目跳转详情
    handlePolicyClick(item) {
      uni.navigateTo({
        url: `/sub/owner/policy-detail?id=${item.id}`
      })
    }
  }
}
</script>

<style lang="scss">
.policy-container {
  background: var(--LightMode-Secondary-Secondary, #f9f9f9);
  min-height: 100vh;
  display: flex;
  flex-direction: column;

  .search-box {
    padding: 20rpx;
    background: #fff;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1;
  }

  .policy-list {
    margin-top: 120rpx; // 为搜索框留出空间
    flex: 1;

    .policy-scroll {
      height: calc(100vh - 120rpx);
      box-sizing: border-box;
      padding-top: 24rpx;
    }

    .policy-item {
      display: flex;
      padding: 24rpx;
      align-items: center;
      gap: 24rpx;
      background: #fff;
      margin: 24rpx;
      margin-bottom: 0;
      border-radius: 16rpx;
      border-bottom: 2rpx solid var(--LightMode-Grey-Grey-100, #f9f9f9);
      .item-left {
        border-radius: 100rpx;
        background: var(--LightMode-Grey-Grey-100, #f9f9f9);
        padding: 16rpx;
        display: flex;
        justify-content: center;
        align-items: center;
        .policy-icon {
          width: 40rpx;
          height: 40rpx;
          flex-shrink: 0;
        }
      }

      .item-right {
        flex: 1;
        overflow: hidden;

        .policy-title {
          font-weight: bold;
          margin-bottom: 8rpx;
          font-size: 28rpx;
          color: #333;
          line-height: 1.4;
        }

        .policy-time {
          font-size: 24rpx;
          color: #999;
          line-height: 1.2;
        }
      }
    }
  }
}

// 加载更多组件样式
::v-deep .uni-load-more {
  padding: 24rpx 0;
}
</style>
