张诺
3 天以前 437a70bd86d8adda3da41853b8b1c2706a22fdd7
src/views/archiveManagement/index.vue
@@ -92,10 +92,21 @@
    </div>
    <div class="right">
      <el-row :gutter="24">
          <el-col :span="2" :offset="20"><el-button :icon="Delete" type="danger">删除</el-button></el-col>
          <el-col :span="2"><el-button :icon="Plus" type="primary">新增</el-button></el-col>
        <el-col :span="2" :offset="20"
          ><el-button :icon="Delete" type="danger" @click="delHandler">删除</el-button></el-col
        >
        <el-col :span="2"
          ><el-button
            :icon="Plus"
            type="primary"
            @click="add"
            :disabled="!tableData.length"
            >新增</el-button
          ></el-col
        >
      </el-row>
      <ETable
        :maxHeight="1200"
        :loading="loading"
        :table-data="tableData"
        :columns="columns"
@@ -107,17 +118,27 @@
      </ETable>
      <Pagination
        :total="total"
        :page-size="10"
        :page-count="Math.ceil(total / 10)"
        @page-change="currentPageChange"
        :page="queryParams.current"
        :limit="queryParams.pageSize"
        :show-total="true"
        @pagination="handlePageChange"
        :layout="'total, prev, pager, next, jumper'"
      ></Pagination>
    </div>
    <archiveDialog
      v-model:centerDialogVisible="dialogVisible"
      @centerDialogVisible="centerDialogVisible"
      :row="row"
      @submitForm="submitForm"
    >
    </archiveDialog>
  </el-card>
</template>
<script setup>
import { onMounted, ref, nextTick } from "vue";
import { onMounted, ref, nextTick, reactive } from "vue";
import ETable from "@/components/Table/ETable.vue";
import { ElButton, ElInput, ElIcon } from "element-plus";
import { ElButton, ElInput, ElIcon, ElMessage } from "element-plus";
import archiveDialog from "./mould/archiveDialog.vue";
import Pagination from "@/components/Pagination/index.vue";
import {
  Plus,
@@ -134,6 +155,7 @@
  addOrEditArchive,
  delArchive,
} from "@/api/archiveManagement";
const dialogVisible = ref(false); // 控制归档对话框显示
const loading = ref(false);
const tableData = ref([]);
const treeData = ref([]);
@@ -142,35 +164,131 @@
const filterText = ref(""); // 搜索关键字
const treeRef = ref(); // 树组件引用
const total = ref(0); // 总记录数
const current = ref(1); // 当前页码
const columns = [
  { prop: "name", label: "名称", minWidth: 180 },
  { prop: "type", label: "类型", minWidth: 120 },
  { prop: "status", label: "状态", minWidth: 100 },
];
const selectedRows = reactive([]); // 存储选中行数据
const handleSelectionChange = (selection) => {
  console.log("Selected rows:", selection);
  selectedRows.splice(0, selectedRows.length, ...selection);
};
const queryParams = reactive({
  searchText: "",
  current: 1,
  pageSize: 10, // 固定每页10条
  treeId: null, // 当前树节点ID
});
// 搜索过滤功能
const handleFilter = () => {
  treeRef.value?.filter(filterText.value);
};
const row = ref({}); // 当前选中行数据
const filterNode = (value, data) => {
  if (!value) return true;
  return data.name?.toLowerCase().includes(value.toLowerCase());
};
const submitForm = async (res) => {
  console.log("提交表单回调:", res);
  if (res && res.code === 200) {
    ElMessage.success("操作成功");
    // 刷新列表数据
    await getArchiveListData();
  } else {
    ElMessage.error("操作失败: " + (res?.message || "未知错误"));
  }
}
const centerDialogVisible = (val) => {
  console.log(val);
};
// 处理节点点击
const handleNodeClick = async (data) => {
  console.log("点击节点:", data);
  let res = await getArchiveList(data.id);
  tableData.value = res.data?.records || res.data || [];
  console.log(data)
  // 切换节点时重置到第一页
  queryParams.current = 1;
  queryParams.treeId = data.id;
  getArchiveListData();
};
const currentPageChange = (id) => {
  console.log(id);
// add
const add = () => {
  row.value = {}; // 清空行数据,确保是新增模式
  dialogVisible.value = true;
  newName.value = ""; // 清空输入框
};
// 处理分页变化
const handlePageChange = ({ page }) => {
  console.log("分页变化:", { page });
  queryParams.current = page;
  // pageSize 固定为20,不再从参数中获取
  getArchiveListData();
};
const getArchiveListData = async () => {
  try {
    loading.value = true;
    console.log("获取归档列表数据", {
      treeId: queryParams.treeId,
      current: queryParams.current,
      pageSize: queryParams.pageSize,
    });
    let res = await getArchiveList({
      treeId: queryParams.treeId,
      current: queryParams.current,
      size: queryParams.pageSize,
    });
    if (res.code !== 200) {
      ElMessage.error("获取数据失败: " + res.message);
      tableData.value = [];
      total.value = 0;
      return;
    }
    tableData.value = res.data?.records || res.data || [];
    total.value = res.data?.total || 0;
    // 确保分页参数正确更新
    if (res.data?.current) {
      queryParams.current = res.data.current;
    }
    // pageSize 固定为20,不从后端获取
    console.log("数据更新完成:", {
      total: total.value,
      current: queryParams.current,
      pageSize: queryParams.pageSize,
      records: tableData.value.length,
    });
  } catch (error) {
    console.error("获取归档列表失败:", error);
    ElMessage.error("获取数据失败");
    tableData.value = [];
    total.value = 0;
  } finally {
    loading.value = false;
  }
};
const delHandler = async () => {
  if (selectedRows.length === 0) {
    ElMessage.warning("请选择要删除的数据");
    return;
  }
  try {
    const ids = selectedRows.map((row) => row.id);
    console.log(ids)
    const { code, msg } = await delArchive(ids);
    if (code !== 200) {
      ElMessage.warning("删除失败: " + msg);
    } else {
      ElMessage.success("删除成功");
      // 删除成功后重新获取数据
      await getArchiveListData();
    }
  } catch (error) {
    console.error("删除归档失败:", error);
    ElMessage.error("删除归档失败");
  }
};
// 双击编辑节点
const headerDbClick = (comeTreeData) => {
@@ -327,7 +445,11 @@
  }
};
const handleEdit = () => {};
const handleEdit = (rows) => {
  row.value = rows;
  dialogVisible.value = true;
  console.log("编辑节点:", row.value);
};
// 移除懒加载,直接获取数据
const getList = async () => {