<template>
  <view class="project-page">
    <!-- 新增按钮 -->
    <view class="add-btn-row">
      <view class="button-group">
        <uni-icons 
          type="gift" 
          size="30" 
          @click="toggleQualityFilter" 
          :color="qualityFilter ? '#ffcc00' : '#333'"
        />
        <!-- <uni-icons 
          type="gear" 
          size="30" 
          @click="openSettingsPopup" 
          color="#333" 
        /> -->
        <uni-icons 
          type="plus" 
          size="30" 
          @click="handleAdd" 
          color="#333" 
        />
      </view>
    </view>

    <!-- 项目列表 -->
    <scroll-view scroll-y @scrolltolower="loadMore" :style="{ height: scrollHeight + 'px' }">
      <view class="project-grid">
        <view 
          class="project-card" 
          v-for="item in projectList" 
          :key="item.projectId" 
          @click="handleDetail(item)"
        >
          <view class="project-title">{{ item.projectName }}</view>
          <view class="project-info">
            <text>负责人：{{ item.functionary }}</text>
            <text :style="getRemainTimeStyle(item.remainTime)">
              剩余时间：{{ item.remainTime }}天
            </text>
            <text>项目总金额：{{ item.funds }}元</text>
            <text v-if="item.prePay > 0" style="color: #ffcc00;">预付款：{{ item.prePay }}元</text>
            <view style="display: flex; justify-content: flex-start; gap: 10rpx; position: absolute; bottom: 20rpx; margin-top: 10rpx;">
              <uni-tag v-if="item.projectStatus == 1" size="mini" type="success" text="进度完成"></uni-tag>
              <uni-tag v-else-if="item.projectStatus == 0" size="mini" type="warning" text="进行中"></uni-tag>
              <uni-tag v-if="item.tradeType == 0" size="mini" type="warning" text="内贸"></uni-tag>
              <uni-tag v-else-if="item.tradeType == 1" size="mini" type="success" text="外贸"></uni-tag>
            </view>  
          </view>
        </view>
      </view>
      <!-- 加载更多组件 -->
      <uni-load-more :status="loadMoreStatus"></uni-load-more>
    </scroll-view>
  </view>
</template>

<script>
import { listProject, addProject, updateProject, delProject, getProject } from '@/api/oa/project.js'
export default {
  data() {
    return {
      projectList: [],
      form: {},
      editType: '', // add/edit
      page: 1, // 当前页码
      pageSize: 10, // 每页项目数量
      selectedProject: {}, // 选中的项目
      loadMoreStatus: 'more', // 加载更多状态
      scrollHeight: 0, // 滚动区域高度
      qualityFilter: false, // 优质筛选开关
    }
  },
  onShow() {
    this.getList();
    this.calculateScrollHeight();
  },
  methods: {
    calculateScrollHeight() {
      const systemInfo = uni.getSystemInfoSync();
      const tabHeight = 75; // tab高度
      const containerPadding = 40; // 容器padding
      this.scrollHeight = systemInfo.windowHeight - tabHeight - containerPadding + 80;
    },
    getList() {
      const params = { pageNum: this.page, pageSize: this.pageSize };
      if (this.qualityFilter) {
        params.prePay = 0.1; // 添加优质筛选参数
      }
      listProject(params).then(res => {
        const newProjects = (res.rows || []).map(row => ({
          ...row,
          projectTypeLabel: row.projectType,
          projectStatusLabel: row.projectStatus,
        }));
        this.projectList = [...this.projectList, ...newProjects];

        if (newProjects.length < this.pageSize) {
          this.loadMoreStatus = 'noMore'; // 没有更多数据
        } else {
          this.loadMoreStatus = 'more'; // 还有更多数据
        }
      });
    },
    loadMore() {
      if (this.loadMoreStatus === 'more') {
        console.log('加载更多');
        this.page++;
        this.getList();
      }
    },
    handleAdd() {
      uni.navigateTo({
        url: '/pages/workbench/project/add'
      })
    },
    handleDetail(item) {
      uni.navigateTo({
        url: '/pages/workbench/project/detail?id=' + item.projectId
      })
    },
    toggleQualityFilter() {
      this.qualityFilter = !this.qualityFilter; // 切换优质筛选状态
      this.page = 1; // 重置页码
      this.projectList = []; // 清空当前项目列表
      this.getList(); // 重新获取项目列表
    },
    openEditPopup(item) {
      this.editType = 'edit';
      getProject(item.projectId).then(res => {
        this.form = { ...res.data };
        this.$refs.editPopup.open();
      });
    },
    closePopup() {
      this.$refs.editPopup.close();
    },
    submitForm() {
      if (this.editType === 'add') {
        addProject(this.form).then(() => {
          this.getList();
          this.closePopup();
        });
      } else {
        updateProject(this.form).then(() => {
          this.getList();
          this.closePopup();
        });
      }
    },
    handleClosure(item) {
      const update = { ...item, projectStatus: '1' };
      updateProject(update).then(() => {
        this.getList();
      });
    },
    handleDelete(item) {
      delProject(item.projectId).then(() => {
        this.getList();
      });
    },
    openDetailPopup(item) {
      this.selectedProject = item;
      this.$refs.detailPopup.open();
    },
    closeDetailPopup() {
      this.$refs.detailPopup.close();
    },
    getRemainTimeStyle(remainTime) {
      if (remainTime > 10) {
        return { color: '#3c763d' }; // 绿色
      } else if (remainTime > 5) {
        return { color: '#8a6d3b' }; // 黄色
      } else {
        return { color: '#a94442' }; // 红色
      }
    }
  }
}
</script>

<style scoped>
.add-btn-row {
  display: flex;
  justify-content: flex-end; /* 右对齐 */
  align-items: center;
  margin: 20rpx;
}

.button-group {
  display: flex;
  gap: 10px; /* 按钮之间的间距 */
}

.popup-content {
  background-color: #fff; /* 设置纯白背景 */
  padding: 20px; /* 添加内边距 */
  border-radius: 8px; /* 圆角 */
}

.close-button {
  display: flex;
  justify-content: flex-end; /* 右对齐 */
  margin-bottom: 10px; /* 底部间距 */
}

.project-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.project-card {
  border: 1px solid #ccc; /* 边框 */
  border-radius: 10px; /* 圆角 */
  background-color: #fff; /* 背景色 */
  margin: 10px;
  box-sizing: border-box;
  width: calc(50% - 20px); /* 每行两个卡片 */
  padding: 20px 15px; /* 添加内边距 */
  position: relative;
}

.project-title {
  font-size: 20px; /* 项目名称字号 */
  font-weight: bold; /* 加粗 */
  color: #333; /* 主字体颜色 */
  margin-bottom: 5px; /* 下边距 */
}

.project-info text {
  display: block; /* 每个信息占一行 */
  margin-top: 5px; /* 上边距 */
  color: #666; /* 较淡的字体颜色 */
  font-size: 16px; /* 信息字号 */
  line-height: 1.5; /* 行间距 */
}

.project-info {
  margin-top: 10px; /* 项目信息与标题之间的间距 */
}

/* 新增的样式 */
.horizontal-actions {
  display: flex;
  justify-content: space-between; /* 在一行内均匀分布 */
  margin-top: 10px; /* 添加顶部间距 */
}
.horizontal-actions button {
  flex: 1; /* 按钮均分宽度 */
  margin: 0 5px; /* 按钮之间的间距 */
}
</style>
