<template>
  <div class="manage-container">
    <div class="manage-wrap">
      <search-form @search="handleSearch" />
      <div class="manage-header">
        <div class="header-left"></div>
        <div class="header-right"></div>
      </div>
      <div class="manage-content" v-loading="loading">
        <common-table
          :autoHeight="true"
          :maxRows="10"
          :data="tableData"
          :columns="tableColumns"
          :total="total"
          :current-page="currentPage"
          :page-size="pageSize"
          :index="true"
          :indexLabel="'序号'"
          title=""
          :border="true"
          @size-change="handleSizeChange"
          @current-page-change="handleCurrentPageChange"
        >
          <template #operations="{ row, index }">
            <!-- projectLzType = 9: 重新决策 -->
            <el-button
              link
              type="primary"
              size="small"
              v-if="
                canAudit && (row.projectLzType == 9 || row.projectLzType == 13)
              "
              :loading="row.loading"
              @click="editProject(row)"
            >
              重新决策</el-button
            >
            <!-- projectLzType = 12: 审核 -->
            <el-button
              link
              type="primary"
              size="small"
              v-else-if="canAudit && row.projectLzType == 12"
              :loading="row.loading"
              @click="previewProject(row)"
              >审核</el-button
            >
            <!-- projectLzType = 11: 填报 -->
            <el-button
              link
              type="primary"
              size="small"
              v-else-if="canAudit && row.projectLzType == 11"
              :loading="row.loading"
              @click="editProject(row)"
              >填报</el-button
            >
            <!-- 其他状态: 查看 -->
            <el-button
              link
              type="primary"
              size="small"
              v-else
              :loading="row.loading"
              @click="previewProject(row)"
              >查看</el-button
            >
          </template>
        </common-table>
      </div>
    </div>
  </div>
</template>

<script setup>
import { reactive, ref, onMounted, computed, getCurrentInstance } from "vue";
import { useRouter } from "vue-router";
import { useUserStore } from "@/stores/user.js";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectList } from "@/composables/useProjectList";

const { projectLzType } = defineProps({
  projectLzType: [String, Number],
});
const handleSearch = (formData) => {
  currentPage.value = 1;

  getProjectData(formData);
};
const router = useRouter();
const { proxy } = getCurrentInstance();
// 是否是审核角色
const userStore = useUserStore();
const userInfo =
  userStore.userInfo ||
  (sessionStorage.getItem("userInfo") &&
    JSON.parse(sessionStorage.getItem("userInfo"))) ||
  {};
let canAudit = ref(false);
userInfo.roles.map((item) => {
  if (["xmlx_sp", "xmjc_sp"].includes(item.key)) {
    canAudit.value = true;
  }
});

let tableData = ref([]);
let tableColumns = ref([
  {
    prop: "projectName",
    label: "项目名称",
    showOverflowTooltip: true,
  },
  {
    prop: "projectCode",
    label: "项目编号",
    showOverflowTooltip: true,
  },
  {
    prop: "projectLzType",
    label: "状态",
    width: 140,
    align: "center",
    formatter: (data) => {
      return data.projectLzType === "1"
        ? "待立项"
        : data.projectLzType === "3"
          ? "立项审批中"
          : data.projectLzType === "5"
            ? "已立项"
            : data.projectLzType === "7"
              ? "决策填报中"
              : data.projectLzType === "8"
                ? "决策审批中"
                : data.projectLzType === "9"
                  ? "已决策"
                  : data.projectLzType === "11"
                    ? "再决策填报中"
                    : data.projectLzType === "12"
                      ? "再决策审批中"
                      : data.projectLzType === "13"
                        ? "再决策审批通过"
                        : "待立项";
    },
  },
  {
    prop: "operations",
    label: "操作",
    width: 160,
    slot: "operations",
    fixed: "right",
    align: "center",
  },
]);

let loading = ref(false);
let total = ref(0);
let currentPage = ref(1);
let pageSize = ref(10);
// 获取列表数据
const getProjectData = (params = {}) => {
  loading.value = true;
  proxy.$post({
    url: "/api/project/listProject",
    data: {
      page: currentPage.value,
      pagesize: pageSize.value,
      attributes: [],
      menuType: "xmzjc",
      ...params,
    },
    callback: (data) => {
      tableData.value = data.rows;
      total.value = data.count;
      loading.value = false;
    },
  });
};
const { showAddBtn } = useProjectList(projectLzType, getProjectData);
// 分页
const handleSizeChange = (size) => {
  pageSize.value = size;
  currentPage.value = 1;
  getProjectData();
};
const handleCurrentPageChange = (page) => {
  currentPage.value = page;
  getProjectData();
};
const previewProject = (item) => {
  // 预览模式：查看、审核
  router.push({
    name: "decisionAdd",
    query: {
      projectId: item.id,
      isPreview: 1, // 预览模式
    },
  });
};

const editProject = (item) => {
  // 编辑模式：重新决策、填报
  router.push({
    name: "decisionAdd",
    query: {
      projectId: item.id,
      // 不传 isPreview，默认为编辑模式
    },
  });
};
</script>

<style scoped lang="less"></style>
