From 277ecf5567ebd2d28d9c1b6ae466d9a70e45c71b Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 20 五月 2026 17:08:04 +0800
Subject: [PATCH] fix: 删除部分旧财务功能

---
 /dev/null |  355 -----------------------------------------------------------
 1 files changed, 0 insertions(+), 355 deletions(-)

diff --git a/src/api/financialManagement/expenseManagement.js b/src/api/financialManagement/expenseManagement.js
deleted file mode 100644
index a22af1b..0000000
--- a/src/api/financialManagement/expenseManagement.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import request from "@/utils/request";
-
-// 鏌ヨ鍒楄〃
-export const listPage = (params) => {
-  return request({
-    url: "/account/accountExpense/listPage",
-    method: "get",
-    params,
-  });
-};
-export const listPageAnalysis = (params) => {
-  return request({
-    url: "/account/accountExpense/report/analysis",
-    method: "get",
-    params,
-  });
-};
-
-// 鏂板
-export function add(data) {
-  return request({
-    url: "/account/accountExpense/add",
-    method: "post",
-    data: data,
-  });
-}
-
-// 缂栬緫
-export function update(data) {
-  return request({
-    url: "/account/accountExpense/update",
-    method: "post",
-    data: data,
-  });
-}
-
-//瀵煎嚭
-export const exportAccountExpense = (query) => {
-  return request({
-    url: "/account/accountExpense/export",
-    method: "post",
-    data: query,
-    responseType: "blob",
-  });
-};
-
-export const delAccountExpense = (query) => {
-  return request({
-    url: `account/accountExpense/del`,
-    method: "delete",
-    data: query,
-  });
-};
-
-export const getAccountExpense = (id) => {
-  return request({
-    url: `/account/accountExpense/${id}`,
-    method: "get",
-  });
-};
-
-// 鏌ヨ闄勪欢鍒楄〃
-export function fileListPage(query) {
-  return request({
-    url: "/account/accountFile/listPage",
-    method: "get",
-    params: query,
-  });
-}
-// 淇濆瓨闄勪欢鍒楄〃
-export function fileAdd(query) {
-  return request({
-    url: "/account/accountFile/add",
-    method: "post",
-    data: query,
-  });
-}
-// 鍒犻櫎闄勪欢鍒楄〃
-export function fileDel(query) {
-  return request({
-    url: "/account/accountFile/del",
-    method: "delete",
-    data: query,
-  });
-}
diff --git a/src/api/financialManagement/loanManagement.js b/src/api/financialManagement/loanManagement.js
deleted file mode 100644
index 46ea749..0000000
--- a/src/api/financialManagement/loanManagement.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import request from "@/utils/request";
-
-// 鏌ヨ鍒楄〃
-export const listPage = (params) => {
-  return request({
-    url: "/borrowInfo/listPage",
-    method: "get",
-    params,
-  });
-};
-
-// 鏂板
-export function add(data) {
-  return request({
-    url: "/borrowInfo/add",
-    method: "post",
-    data: data,
-  });
-}
-
-// 缂栬緫
-export function update(data) {
-  return request({
-    url: "/borrowInfo/update",
-    method: "post",
-    data: data,
-  });
-}
-
-// 鍒犻櫎
-export const delAccountLoan = (data) => {
-  return request({
-    url: "/borrowInfo/delete",
-    method: "delete",
-    data,
-  });
-};
diff --git a/src/api/financialManagement/revenueManagement.js b/src/api/financialManagement/revenueManagement.js
deleted file mode 100644
index 090ddf8..0000000
--- a/src/api/financialManagement/revenueManagement.js
+++ /dev/null
@@ -1,78 +0,0 @@
-import request from "@/utils/request";
-
-// 鏌ヨ鍒楄〃
-export const listPage = (params) => {
-  return request({
-    url: "/account/accountIncome/listPage",
-    method: "get",
-    params,
-  });
-};
-
-// 鏂板
-export function add(data) {
-  return request({
-    url: "/account/accountIncome/add",
-    method: "post",
-    data: data,
-  });
-}
-
-// 缂栬緫
-export function update(data) {
-  return request({
-    url: "/account/accountIncome/update",
-    method: "post",
-    data: data,
-  });
-}
-
-//瀵煎嚭
-export const exportAccountIncome = (query) => {
-  return request({
-    url: "/account/accountIncome/export",
-    method: "post",
-    data: query,
-    responseType: "blob",
-  });
-};
-
-export const delAccountIncome = (query) => {
-  return request({
-    url: `account/accountIncome/del`,
-    method: "delete",
-    data: query,
-  });
-};
-
-export const getAccountIncome = (id) => {
-  return request({
-    url: `/account/accountIncome/${id}`,
-    method: "get",
-  });
-};
-
-// 鏌ヨ闄勪欢鍒楄〃
-export function fileListPage(query) {
-  return request({
-    url: "/account/accountFile/listPage",
-    method: "get",
-    params: query,
-  });
-}
-// 淇濆瓨闄勪欢鍒楄〃
-export function fileAdd(query) {
-  return request({
-    url: "/account/accountFile/add",
-    method: "post",
-    data: query,
-  });
-}
-// 鍒犻櫎闄勪欢鍒楄〃
-export function fileDel(query) {
-  return request({
-    url: "/account/accountFile/del",
-    method: "delete",
-    data: query,
-  });
-}
diff --git a/src/views/financialManagement/expenseManagement/Modal.vue b/src/views/financialManagement/expenseManagement/Modal.vue
deleted file mode 100644
index 4d743c1..0000000
--- a/src/views/financialManagement/expenseManagement/Modal.vue
+++ /dev/null
@@ -1,177 +0,0 @@
-<template>
-  <FormDialog
-    v-model="dialogVisible"
-    :title="dialogTitle"
-    :operationType="operationType"
-    width="50%"
-    @confirm="sendForm"
-    @close="close"
-    @cancel="close"
-  >
-    <el-form :model="form" label-width="100px" :rules="formRules" ref="formRef">
-      <el-form-item label="鏀嚭鏃ユ湡" prop="expenseDate">
-        <el-date-picker
-          style="width: 100%"
-          v-model="form.expenseDate"
-          format="YYYY-MM-DD"
-          value-format="YYYY-MM-DD"
-          type="date"
-          placeholder="璇烽�夋嫨鏃ユ湡"
-          clearable
-        />
-      </el-form-item>
-      <el-form-item label="鏀嚭绫诲瀷" prop="expenseType">
-        <el-select
-          v-model="form.expenseType"
-          placeholder="璇烽�夋嫨"
-          clearable
-        >
-          <el-option :label="item.label" :value="item.value" v-for="(item,index) in expense_types" :key="index" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName">
-        <el-input v-model="form.supplierName" placeholder="璇疯緭鍏�" />
-      </el-form-item>
-      <el-form-item label="鏀嚭閲戦" prop="expenseMoney">
-        <el-input-number :step="0.01" :min="0" style="width: 100%"
-          v-model="form.expenseMoney"
-          placeholder="璇疯緭鍏�"
-        />
-      </el-form-item>
-      <el-form-item label="鏀嚭鎻忚堪" prop="expenseDescribed">
-        <el-input v-model="form.expenseDescribed" placeholder="璇疯緭鍏�" />
-      </el-form-item>
-      <el-form-item label="浠樻鏂瑰紡" prop="expenseMethod">
-        <el-select
-          v-model="form.expenseMethod"
-          placeholder="璇烽�夋嫨"
-          clearable
-        >
-          <el-option :label="item.label" :value="item.value" v-for="(item,index) in checkout_payment" :key="index" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鍙戠エ鍙风爜" prop="invoiceNumber">
-        <el-input v-model="form.invoiceNumber" placeholder="璇疯緭鍏�" />
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="note">
-        <el-input
-          v-model="form.note"
-          placeholder="澶囨敞"
-        />
-      </el-form-item>
-    </el-form>
-  </FormDialog>
-</template>
-
-<script setup>
-import { add, update, getAccountExpense } from "@/api/financialManagement/expenseManagement";
-import { ElMessage } from "element-plus";
-import useFormData from "@/hooks/useFormData";
-import FormDialog from "@/components/Dialog/FormDialog.vue";
-import { ref } from "vue";
-
-const { proxy } = getCurrentInstance()
-
-defineOptions({
-  name: "鏀嚭鏂板缂栬緫",
-});
-
-const emits = defineEmits(["success"]);
-
-const formRef = ref(null);
-const dialogVisible = ref(false);
-const operationType = ref("add"); // add | edit
-const id = ref(undefined);
-const submitting = ref(false);
-
-const dialogTitle = (type) => {
-  if (type === "edit") return "缂栬緫鏀嚭";
-  return "鏂板鏀嚭";
-};
-
-const { expense_types } = proxy.useDict("expense_types");
-const { checkout_payment } = proxy.useDict("checkout_payment");
-
-const formRules = {
-  supplierName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-  expenseMoney: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-  expenseDescribed: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-  expenseDate: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
-  expenseType: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
-  expenseMethod: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
-}
-
-const { form, resetForm } = useFormData({
-  expenseDate: undefined, // 鏀嚭鏃ユ湡
-  expenseType: undefined, // 鏀嚭绫诲瀷
-  supplierName: undefined, // 渚涘簲鍟嗗悕绉�
-  expenseMoney: undefined, // 鏀嚭閲戦
-  expenseDescribed: undefined, // 鏀嚭鎻忚堪
-  expenseMethod: undefined, // 浠樻鏂瑰紡
-  invoiceNumber: undefined, // 鍙戠エ鍙风爜
-  note: undefined, // 澶囨敞
-});
-
-const sendForm = () => {
-  if (submitting.value) return;
-  formRef.value?.validate(async (valid) => {
-    if (valid) {
-      submitting.value = true;
-      try {
-        const { code } = id.value
-          ? await update({ id: id.value, ...form })
-          : await add(form);
-        if (code == 200) {
-          emits("success");
-          ElMessage({ message: "鎿嶄綔鎴愬姛", type: "success" });
-          close();
-        }
-      } finally {
-        submitting.value = false;
-      }
-    }
-  })
-};
-
-const close = () => {
-  resetForm();
-  formRef.value?.clearValidate();
-  id.value = undefined;
-  dialogVisible.value = false;
-};
-
-const loadForm = async (rowId) => {
-  operationType.value = "edit";
-  id.value = rowId;
-  dialogVisible.value = true;
-  if (rowId) {
-    const { code, data } = await getAccountExpense(rowId);
-    if (code == 200) {
-      form.expenseDate = data.expenseDate;
-      form.expenseType = data.expenseType;
-      form.supplierName = data.supplierName;
-      form.expenseMoney = data.expenseMoney;
-      form.expenseDescribed = data.expenseDescribed;
-      form.expenseMethod = data.expenseMethod;
-      form.invoiceNumber = data.invoiceNumber;
-      form.note = data.note;
-    }
-  } else {
-    resetForm();
-    formRef.value?.clearValidate();
-  }
-};
-
-const openModal = () => {
-  operationType.value = "add";
-  id.value = undefined;
-  resetForm();
-  formRef.value?.clearValidate();
-  dialogVisible.value = true;
-};
-
-defineExpose({
-  openModal,
-  loadForm,
-});
-</script>
diff --git a/src/views/financialManagement/expenseManagement/index.vue b/src/views/financialManagement/expenseManagement/index.vue
deleted file mode 100644
index 173f8e1..0000000
--- a/src/views/financialManagement/expenseManagement/index.vue
+++ /dev/null
@@ -1,332 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="filters" :inline="true">
-      <el-form-item label="鏀嚭鏃ユ湡:">
-        <el-date-picker v-model="filters.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
-                        placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
-      </el-form-item>
-      <el-form-item label="浠樻鏂瑰紡:">
-        <el-select
-                v-model="filters.expenseMethod"
-                placeholder="璇烽�夋嫨"
-                clearable
-                style="width: 200px;"
-              >
-                <el-option
-                  v-for="item in checkout_payment"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                />
-              </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="getTableData">鎼滅储</el-button>
-        <el-button @click="resetFilters">閲嶇疆</el-button>
-      </el-form-item>
-    </el-form>
-    <div class="table_list">
-      <div class="actions">
-        <div></div>
-        <div>
-          <el-button type="primary" @click="add" icon="Plus"> 鏂板 </el-button>
-          <el-button @click="handleOut" icon="download">瀵煎嚭</el-button>
-          <el-button
-            type="danger"
-            icon="Delete"
-            :disabled="multipleList.length <= 0 || hasBusinessIdInSelection"
-            @click="handleBatchDelete"
-          >
-            鎵归噺鍒犻櫎
-          </el-button>
-        </div>
-      </div>
-      <PIMTable
-        rowKey="id"
-        isSelection
-        :column="columns"
-        :tableData="dataList"
-        :page="{
-          current: pagination.currentPage,
-          size: pagination.pageSize,
-          total: pagination.total,
-        }"
-        :isShowSummary="true"
-        :summaryMethod="summarizeMainTable"
-        @selection-change="handleSelectionChange"
-        @pagination="changePage"
-      >
-        <template #operation="{ row }">
-          <el-button 
-            type="primary" 
-            link 
-            :disabled="!!row.businessId"
-            @click="edit(row.id)"
-          >
-            缂栬緫
-          </el-button>
-          <el-button
-            type="primary"
-            link
-            @click="openFilesFormDia(row)"
-          >
-            闄勪欢
-          </el-button>
-        </template>
-      </PIMTable>
-    </div>
-    <Modal ref="modalRef" @success="getTableData"></Modal>
-    <FileList v-if="fileDialogVisible"  v-model:visible="fileDialogVisible" record-type="account_expense" :record-id="recordId"  />
-  </div>
-</template>
-
-<script setup>
-import { usePaginationApi } from "@/hooks/usePaginationApi";
-import { listPage, delAccountExpense } from "@/api/financialManagement/expenseManagement";
-import {onMounted, getCurrentInstance, ref, computed, defineAsyncComponent} from "vue";
-import Modal from "./Modal.vue";
-import { ElMessageBox, ElMessage } from "element-plus";
-import dayjs from "dayjs";
-const FileList = defineAsyncComponent(() => import("@/components/Dialog/FileList.vue"));
-
-defineOptions({
-  name: "鏀嚭绠$悊",
-});
-
-// 琛ㄦ牸澶氶�夋閫変腑椤�
-const multipleList = ref([]);
-const { proxy } = getCurrentInstance();
-const modalRef = ref();
-const { checkout_payment } = proxy.useDict("checkout_payment");
-const { expense_types } = proxy.useDict("expense_types");
-const accountType = ref('鏀嚭');
-
-const {
-  filters,
-  columns,
-  dataList,
-  pagination,
-  getTableData,
-  resetFilters,
-  onCurrentChange,
-} = usePaginationApi(
-  listPage,
-  {
-    expenseMethod: undefined,
-    entryDate: undefined,
-  },
-  [
-    {
-      label: "鏀嚭鏃ユ湡",
-      prop: "expenseDate",
-    },
-    {
-      label: "鏀嚭绫诲瀷",
-      align: "center",
-      prop: "expenseType",
-      dataType: "tag",
-      formatData: (params) => {
-        if (expense_types.value.find((m) => m.value == params)) {
-          return expense_types.value.find((m) => m.value == params).label;
-        } else {
-          return null
-        }
-      },
-    },
-    {
-      label: "渚涘簲鍟嗗悕绉�",
-      prop: "supplierName",
-
-    },
-    {
-      label: "鏀嚭閲戦",
-      prop: "expenseMoney",
-
-    },
-    {
-      label: "鏀嚭鎻忚堪",
-      prop: "expenseDescribed",
-
-    },
-    {
-      label: "浠樻鏂瑰紡",
-      align: "center",
-      prop: "expenseMethod",
-			width: '120',
-      dataType: "tag",
-      formatData: (params) => {
-        if (checkout_payment.value.find((m) => m.value == params)) {
-          return checkout_payment.value.find((m) => m.value == params).label;
-        } else {
-          return null
-        }
-      },
-    },
-    {
-      label: "鍙戠エ鍙风爜",
-      prop: "invoiceNumber",
-
-    },
-    {
-      label: "澶囨敞",
-      prop: "note",
-
-    },
-    {
-      label: "褰曞叆浜�",
-      prop: "inputUser",
-    },
-    {
-      label: "褰曞叆鏃ユ湡",
-      prop: "inputTime",
-
-    },
-    {
-      fixed: "right",
-      label: "鎿嶄綔",
-      dataType: "slot",
-      slot: "operation",
-      align: "center",
-      width: "160px",
-    },
-  ]
-);
-
-// 琛ㄦ牸鍚堣锛氭敮鍑洪噾棰�
-const summarizeMainTable = (param) => {
-  return proxy.summarizeTable(param, ["expenseMoney"]);
-};
-
-// 澶氶�夊悗鍋氫粈涔�
-const handleSelectionChange = (selectionList) => {
-  multipleList.value = selectionList;
-};
-
-// 鍒ゆ柇閫変腑鐨勯」涓槸鍚︽湁 businessId
-const hasBusinessIdInSelection = computed(() => {
-  return multipleList.value.some(item => item.businessId);
-});
-
-const add = () => {
-  modalRef.value.openModal();
-};
-const edit = (id) => {
-  // 妫�鏌ュ綋鍓嶈鏄惁鏈� businessId
-  const row = dataList.value.find(item => item.id === id);
-  if (row && row.businessId) {
-    proxy.$modal.msgWarning("璇ヨ褰曞凡鍏宠仈涓氬姟锛屼笉鑳界紪杈�");
-    return;
-  }
-  modalRef.value.loadForm(id);
-};
-const changePage = ({ page, limit }) => {
-  pagination.currentPage = page;
-	pagination.pageSize = limit;
-  onCurrentChange(page);
-};
-const deleteRow = (id) => {
-  // 濡傛灉鏄暟缁勶紝妫�鏌ユ槸鍚︽湁 businessId
-  if (Array.isArray(id)) {
-    const hasBusinessId = id.some(itemId => {
-      const row = dataList.value.find(item => item.id === itemId);
-      return row && row.businessId;
-    });
-    if (hasBusinessId) {
-      proxy.$modal.msgWarning("閫変腑鐨勮褰曚腑鍖呭惈宸插叧鑱斾笟鍔$殑璁板綍锛屼笉鑳藉垹闄�");
-      return;
-    }
-  } else {
-    // 鍗曚釜鍒犻櫎锛屾鏌ユ槸鍚︽湁 businessId
-    const row = dataList.value.find(item => item.id === id);
-    if (row && row.businessId) {
-      proxy.$modal.msgWarning("璇ヨ褰曞凡鍏宠仈涓氬姟锛屼笉鑳藉垹闄�");
-      return;
-    }
-  }
-  
-  ElMessageBox.confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?", "鎻愮ず", {
-    confirmButtonText: "纭畾",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  }).then(async () => {
-    const { code } = await delAccountExpense(id);
-    if (code == 200) {
-      ElMessage({
-        type: "success",
-        message: "鍒犻櫎鎴愬姛",
-      });
-      getTableData();
-    }
-  });
-};
-
-// 鎵归噺鍒犻櫎
-const handleBatchDelete = () => {
-  if (multipleList.value.length === 0) {
-    proxy.$modal.msgWarning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
-    return;
-  }
-  
-  // 妫�鏌ユ槸鍚︽湁 businessId
-  if (hasBusinessIdInSelection.value) {
-    proxy.$modal.msgWarning("閫変腑鐨勮褰曚腑鍖呭惈宸插叧鑱斾笟鍔$殑璁板綍锛屼笉鑳藉垹闄�");
-    return;
-  }
-  
-  const ids = multipleList.value.map((item) => item.id);
-  deleteRow(ids);
-};
-
-const changeDaterange = (value) => {
-  if (value) {
-    filters.entryDate = value;
-    filters.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
-    filters.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
-  } else {
-    filters.entryDate = null;
-    filters.entryDateStart = undefined;
-    filters.entryDateEnd = undefined;
-  }
-  getTableData();
-};
-
-const handleOut = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      proxy.download(`/account/accountExpense/export`, {}, "鏀嚭鍙拌处.xlsx");
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-// 鎵撳紑闄勪欢寮圭獥
-const recordId =ref(0)
-const fileDialogVisible = ref(false)
-
-// 鎵撳紑闄勪欢寮规
-const openFilesFormDia = async (row) => {
-  recordId.value = row.id
-  fileDialogVisible.value = true
-}
-
-onMounted(() => {
-  getTableData();
-});
-</script>
-
-<style lang="scss" scoped>
-.table_list {
-  margin-top: unset;
-}
-.actions {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 10px;
-}
-</style>
-
diff --git a/src/views/financialManagement/loanManagement/Modal.vue b/src/views/financialManagement/loanManagement/Modal.vue
deleted file mode 100644
index 73b2cc3..0000000
--- a/src/views/financialManagement/loanManagement/Modal.vue
+++ /dev/null
@@ -1,222 +0,0 @@
-<template>
-  <FormDialog
-    v-model="dialogVisible"
-    :title="dialogTitle"
-    :operationType="operationType"
-    width="60%"
-    @confirm="sendForm"
-    @close="close"
-    @cancel="close"
-  >
-    <el-form
-      ref="formRef"
-      :model="form"
-      :rules="formRules"
-      label-width="120px"
-    >
-      <el-form-item label="鍊熸浜哄鍚�" prop="borrowerName">
-        <el-input v-model="form.borrowerName" placeholder="璇疯緭鍏ュ�熸浜哄鍚�" />
-      </el-form-item>
-      <el-form-item label="鍊熸閲戦锛堝厓锛�" prop="borrowAmount">
-        <el-input-number
-          :step="0.01"
-          :min="0"
-          :precision="2"
-          style="width: 100%"
-          v-model="form.borrowAmount"
-          placeholder="璇疯緭鍏ュ�熸閲戦"
-        />
-      </el-form-item>
-      <el-form-item label="鍊熸鍒╃巼锛�%锛�" prop="interestRate">
-        <el-input-number
-          :step="0.01"
-          :min="0"
-          :precision="2"
-          style="width: 100%"
-          v-model="form.interestRate"
-          placeholder="璇疯緭鍏ュ�熸鍒╃巼锛屽锛�5.85"
-        />
-      </el-form-item>
-      <el-form-item label="鍊熸鏃ユ湡" prop="borrowDate">
-        <el-date-picker
-          style="width: 100%"
-          v-model="form.borrowDate"
-          format="YYYY-MM-DD"
-          value-format="YYYY-MM-DD"
-          type="date"
-          placeholder="璇烽�夋嫨鍊熸鏃ユ湡"
-          clearable
-        />
-      </el-form-item>
-      <!-- 瀹為檯杩樻鏃ユ湡锛氫粎鈥滆繕娆锯�濇椂鍙~ -->
-      <el-form-item
-        v-if="operationType === 'repay'"
-        label="瀹為檯杩樻鏃ユ湡"
-        prop="repayDate"
-      >
-        <el-date-picker
-          style="width: 100%"
-          v-model="form.repayDate"
-          format="YYYY-MM-DD"
-          value-format="YYYY-MM-DD"
-          type="date"
-          placeholder="璇烽�夋嫨瀹為檯杩樻鏃ユ湡锛堣繕娆惧悗濉啓锛�"
-          clearable
-        />
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input
-          v-model="form.remark"
-          type="textarea"
-          :rows="3"
-          placeholder="璇疯緭鍏ュ娉紙鍊熸璇存槑锛�"
-        />
-      </el-form-item>
-    </el-form>
-  </FormDialog>
-</template>
-
-<script setup>
-import { add, update } from "@/api/financialManagement/loanManagement";
-import useFormData from "@/hooks/useFormData";
-import FormDialog from "@/components/Dialog/FormDialog.vue";
-import { ElMessage } from "element-plus";
-import { ref } from "vue";
-
-defineOptions({
-  name: "鍊熸鏂板缂栬緫",
-});
-
-const emits = defineEmits(["success"]);
-
-const formRef = ref(null);
-const dialogVisible = ref(false);
-const operationType = ref("add"); // add | edit
-const id = ref(undefined);
-const submitting = ref(false);
-
-const dialogTitle = (type) => {
-  if (type === "edit") return "缂栬緫鍊熸";
-  if (type === "repay") return "杩樻";
-  return "鏂板鍊熸";
-};
-
-const formRules = {
-  borrowerName: [{ required: true, trigger: "blur", message: "璇疯緭鍏ュ�熸浜哄鍚�" }],
-  borrowAmount: [{ required: true, trigger: "blur", message: "璇疯緭鍏ュ�熸閲戦" }],
-  interestRate: [{ required: true, trigger: "blur", message: "璇疯緭鍏ュ�熸鍒╃巼" }],
-  borrowDate: [{ required: true, trigger: "change", message: "璇烽�夋嫨鍊熸鏃ユ湡" }],
-  repayDate: [
-    {
-      validator: (_rule, value, callback) => {
-        if (operationType.value === "repay" && !value) {
-          callback(new Error("璇烽�夋嫨瀹為檯杩樻鏃ユ湡"));
-          return;
-        }
-        callback();
-      },
-      trigger: "change",
-    },
-  ],
-};
-
-const { form, resetForm } = useFormData({
-  borrowerName: undefined, // 鍊熸浜哄鍚�
-  borrowAmount: undefined, // 鍊熸閲戦锛堝厓锛�
-  interestRate: undefined, // 鍊熸鍒╃巼锛堝锛�5.85 浠h〃5.85%锛�
-  borrowDate: undefined, // 鍊熸鏃ユ湡
-  repayDate: undefined, // 瀹為檯杩樻鏃ユ湡锛堣繕娆惧悗濉厖锛�
-  remark: undefined, // 澶囨敞锛堝�熸璇存槑锛�
-});
-
-const sendForm = () => {
-  if (submitting.value) return;
-  formRef.value?.validate(async (valid) => {
-    if (valid) {
-      submitting.value = true;
-      try {
-        const isRepay = operationType.value === "repay";
-        // 杩樻锛氫笉灞曠ず status锛屼絾鎻愪氦鏃跺己鍒朵紶 status=2锛岃蛋鏇存柊鎺ュ彛
-        const payload = isRepay
-          ? { id: id.value, ...form, status: 2 }
-          : id.value
-            ? { id: id.value, ...form }
-            : form;
-
-        const { code } = isRepay
-          ? await update(payload)
-          : id.value
-            ? await update(payload)
-            : await add(payload);
-        if (code == 200) {
-          emits("success");
-          ElMessage({ message: "鎿嶄綔鎴愬姛", type: "success" });
-          close();
-        }
-      } finally {
-        submitting.value = false;
-      }
-    }
-  });
-};
-
-const close = () => {
-  resetForm();
-  formRef.value?.clearValidate();
-  id.value = undefined;
-  dialogVisible.value = false;
-};
-
-// 缂栬緫锛氱洿鎺ョ敤鍒楄〃琛屾暟鎹洖濉紙閬垮厤渚濊禆璇︽儏鎺ュ彛锛�
-const loadForm = async (row) => {
-  const rowId = row?.id;
-  operationType.value = "edit";
-  id.value = rowId;
-  dialogVisible.value = true;
-  if (rowId) {
-    form.borrowerName = row.borrowerName;
-    form.borrowAmount = row.borrowAmount;
-    form.interestRate = row.interestRate;
-    form.borrowDate = row.borrowDate;
-    form.repayDate = row.repayDate;
-    form.remark = row.remark;
-  } else {
-    resetForm();
-    formRef.value?.clearValidate();
-  }
-};
-
-// 杩樻锛氭墦寮�寮圭獥锛屼粎濉啓瀹為檯杩樻鏃ユ湡锛屾彁浜ゆ椂寮哄埗 status=2
-const repay = async (row) => {
-  const rowId = row?.id;
-  operationType.value = "repay";
-  id.value = rowId;
-  dialogVisible.value = true;
-  if (rowId) {
-    // 涓轰簡璧� update 鎺ュ彛鏇寸ǔ濡ワ紝甯︿笂鍘熸湁鏁版嵁锛涘彧璁╃敤鎴烽�� repayDate
-    form.borrowerName = row.borrowerName;
-    form.borrowAmount = row.borrowAmount;
-    form.interestRate = row.interestRate;
-    form.borrowDate = row.borrowDate;
-    form.remark = row.remark;
-    form.repayDate = undefined;
-  } else {
-    resetForm();
-    formRef.value?.clearValidate();
-  }
-};
-
-const openModal = () => {
-  operationType.value = "add";
-  id.value = undefined;
-  resetForm();
-  formRef.value?.clearValidate();
-  dialogVisible.value = true;
-};
-
-defineExpose({
-  openModal,
-  loadForm,
-  repay,
-});
-</script>
diff --git a/src/views/financialManagement/loanManagement/index.vue b/src/views/financialManagement/loanManagement/index.vue
deleted file mode 100644
index cb52ff1..0000000
--- a/src/views/financialManagement/loanManagement/index.vue
+++ /dev/null
@@ -1,278 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="filters" :inline="true">
-      <el-form-item label="鍊熸浜哄鍚�:">
-        <el-input
-          v-model="filters.borrowerName"
-          placeholder="璇疯緭鍏ュ�熸浜哄鍚�"
-          clearable
-          style="width: 200px;"
-        />
-      </el-form-item>
-      <el-form-item label="鍊熸鏃ユ湡:">
-        <el-date-picker
-          v-model="filters.borrowDate"
-          value-format="YYYY-MM-DD"
-          format="YYYY-MM-DD"
-          type="daterange"
-          range-separator="鑷�"
-          start-placeholder="寮�濮嬫棩鏈�"
-          end-placeholder="缁撴潫鏃ユ湡"
-          clearable
-          @change="changeDaterange"
-        />
-      </el-form-item>
-      <el-form-item label="鍊熸鐘舵��:">
-        <el-select
-          v-model="filters.status"
-          placeholder="璇烽�夋嫨"
-          clearable
-          style="width: 200px;"
-        >
-          <el-option label="寰呰繕娆�" :value="1" />
-          <el-option label="宸茶繕娆�" :value="2" />
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="getTableData">鎼滅储</el-button>
-        <el-button @click="resetFilters">閲嶇疆</el-button>
-      </el-form-item>
-    </el-form>
-    <div class="table_list">
-      <div class="actions">
-        <div></div>
-        <div>
-          <el-button type="primary" @click="add" icon="Plus"> 鏂板 </el-button>
-          <el-button @click="handleOut" icon="download">瀵煎嚭</el-button>
-          <el-button
-            type="danger"
-            icon="Delete"
-            :disabled="multipleList.length <= 0"
-            @click="deleteRow(multipleList.map((item) => item.id))"
-          >
-            鎵归噺鍒犻櫎
-          </el-button>
-        </div>
-      </div>
-      <PIMTable
-        rowKey="id"
-        isSelection
-        :column="columns"
-        :tableData="dataList"
-        :page="{
-          current: pagination.currentPage,
-          size: pagination.pageSize,
-          total: pagination.total,
-        }"
-        :isShowSummary="true"
-        :summaryMethod="summarizeMainTable"
-        @selection-change="handleSelectionChange"
-        @pagination="changePage"
-      >
-        <template #operation="{ row }">
-          <el-button type="primary" link @click="edit(row)">
-            缂栬緫
-          </el-button>
-          <el-button
-            :disabled="row.status !== 1"
-            type="primary"
-            link
-            @click="repay(row)"
-          >
-            杩樻
-          </el-button>
-        </template>
-      </PIMTable>
-    </div>
-    <Modal ref="modalRef" @success="getTableData"></Modal>
-  </div>
-</template>
-
-<script setup>
-import { usePaginationApi } from "@/hooks/usePaginationApi";
-import { listPage, delAccountLoan } from "@/api/financialManagement/loanManagement";
-import { onMounted, getCurrentInstance, ref, nextTick } from "vue";
-import Modal from "./Modal.vue";
-import { ElMessageBox, ElMessage } from "element-plus";
-import dayjs from "dayjs";
-
-defineOptions({
-  name: "鍊熸绠$悊",
-});
-
-// 琛ㄦ牸澶氶�夋閫変腑椤�
-const multipleList = ref([]);
-const { proxy } = getCurrentInstance();
-const modalRef = ref();
-
-const {
-  filters,
-  columns,
-  dataList,
-  pagination,
-  getTableData,
-  resetFilters,
-  onCurrentChange,
-} = usePaginationApi(
-  listPage,
-  {
-    borrowerName: undefined,
-    borrowDate: undefined,
-    status: undefined,
-  },
-  [
-    {
-      label: "鍊熸浜哄鍚�",
-      prop: "borrowerName",
-    },
-    {
-      label: "鍊熸閲戦锛堝厓锛�",
-      prop: "borrowAmount",
-      formatData: (val) => {
-        return val ? `楼${parseFloat(val).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : '楼0.00';
-      },
-    },
-    {
-      label: "鍊熸鍒╃巼锛�%锛�",
-      prop: "interestRate",
-      formatData: (val) => {
-        return val ? `${parseFloat(val).toFixed(2)}%` : '-';
-      },
-    },
-    {
-      label: "鍊熸鏃ユ湡",
-      prop: "borrowDate",
-    },
-    {
-      label: "瀹為檯杩樻鏃ユ湡",
-      prop: "repayDate",
-    },
-    {
-      label: "鍊熸鐘舵��",
-      prop: "status",
-      dataType: "tag",
-			align: 'center',
-      formatData: (params) => {
-        if (params == 1) {
-          return "寰呰繕娆�";
-        } else if (params == 2) {
-          return "宸茶繕娆�";
-        }
-        return null;
-      },
-      formatType: (params) => {
-        if (params == 1) {
-          return "error";
-        } else if (params == 2) {
-          return "success";
-        }
-        return null;
-      },
-    },
-    {
-      fixed: "right",
-      label: "鎿嶄綔",
-      dataType: "slot",
-      slot: "operation",
-      align: "center",
-      width: "120px",
-    },
-  ],
-  null,
-  {
-    // 灏嗗墠绔�熸鏃ユ湡鑼冨洿杞崲涓哄悗绔渶瑕佺殑 entryDateStart / entryDateEnd锛屽苟涓斾笉浼� borrowDate
-    borrowDate: (val) => {
-      if (val && val.length === 2) {
-        return {
-          entryDateStart: dayjs(val[0]).format("YYYY-MM-DD"),
-          entryDateEnd: dayjs(val[1]).format("YYYY-MM-DD"),
-        };
-      }
-      return {};
-    },
-  }
-);
-
-// 琛ㄦ牸鍚堣锛氬�熸閲戦
-const summarizeMainTable = (param) => {
-  return proxy.summarizeTable(param, ["borrowAmount"]);
-};
-
-// 澶氶�夊悗鍋氫粈涔�
-const handleSelectionChange = (selectionList) => {
-  multipleList.value = selectionList;
-};
-
-const add = () => {
-  modalRef.value.openModal();
-};
-
-const edit = (row) => {
-  modalRef.value.loadForm(row);
-};
-
-const repay = (row) => {
-  modalRef.value.repay(row);
-};
-
-const changePage = ({ page, limit }) => {
-  pagination.currentPage = page;
-  pagination.pageSize = limit;
-  onCurrentChange(page);
-};
-
-const deleteRow = (id) => {
-  ElMessageBox.confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?", "鎻愮ず", {
-    confirmButtonText: "纭畾",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  }).then(async () => {
-    const { code } = await delAccountLoan(id);
-    if (code == 200) {
-      ElMessage({
-        type: "success",
-        message: "鍒犻櫎鎴愬姛",
-      });
-      getTableData();
-    }
-  });
-};
-
-const changeDaterange = (value) => {
-  if (value) {
-    filters.borrowDate = value;
-  } else {
-    filters.borrowDate = null;
-  }
-  getTableData();
-};
-
-const handleOut = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      proxy.download(`/borrowInfo/export`, {}, "鍊熸鍙拌处.xlsx");
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-onMounted(() => {
-  getTableData();
-});
-</script>
-
-<style lang="scss" scoped>
-.table_list {
-  margin-top: unset;
-}
-.actions {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 10px;
-}
-</style>
diff --git a/src/views/financialManagement/revenueManagement/Modal.vue b/src/views/financialManagement/revenueManagement/Modal.vue
deleted file mode 100644
index 7dd6865..0000000
--- a/src/views/financialManagement/revenueManagement/Modal.vue
+++ /dev/null
@@ -1,177 +0,0 @@
-<template>
-  <FormDialog
-    v-model="dialogVisible"
-    :title="dialogTitle"
-    :operationType="operationType"
-    width="30%"
-    @confirm="sendForm"
-    @close="close"
-    @cancel="close"
-  >
-    <el-form :model="form" label-width="100px" :rules="formRules" ref="formRef">
-      <el-form-item label="鏀跺叆鏃ユ湡" prop="incomeDate">
-        <el-date-picker
-          style="width: 100%"
-          v-model="form.incomeDate"
-          format="YYYY-MM-DD"
-          value-format="YYYY-MM-DD"
-          type="date"
-          placeholder="璇烽�夋嫨鏃ユ湡"
-          clearable
-        />
-      </el-form-item>
-      <el-form-item label="鏀跺叆绫诲瀷" prop="incomeType">
-        <el-select
-          v-model="form.incomeType"
-          placeholder="璇烽�夋嫨"
-          clearable
-        >
-          <el-option :label="item.label" :value="item.value" v-for="(item,index) in income_types.filter(item => item.value != 3)" :key="index" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="瀹㈡埛鍚嶇О" prop="customerName">
-        <el-input v-model="form.customerName" placeholder="璇疯緭鍏�" />
-      </el-form-item>
-      <el-form-item label="鏀跺叆閲戦" prop="incomeMoney">
-        <el-input-number :step="0.01" :min="0" style="width: 100%"
-          v-model="form.incomeMoney"
-          placeholder="璇疯緭鍏�"
-        />
-      </el-form-item>
-      <el-form-item label="鏀跺叆鎻忚堪" prop="incomeDescribed">
-        <el-input v-model="form.incomeDescribed" placeholder="璇疯緭鍏�" />
-      </el-form-item>
-      <el-form-item label="鏀舵鏂瑰紡" prop="incomeMethod">
-        <el-select
-          v-model="form.incomeMethod"
-          placeholder="璇烽�夋嫨"
-          clearable
-        >
-          <el-option :label="item.label" :value="item.value" v-for="(item,index) in payment_methods" :key="index" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鍙戠エ鍙风爜" prop="invoiceNumber">
-        <el-input v-model="form.invoiceNumber" placeholder="璇疯緭鍏�" />
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="note">
-        <el-input
-          v-model="form.note"
-          placeholder="澶囨敞"
-        />
-      </el-form-item>
-    </el-form>
-  </FormDialog>
-</template>
-
-<script setup>
-import { add, update, getAccountIncome } from "@/api/financialManagement/revenueManagement";
-import { ElMessage } from "element-plus";
-import useFormData from "@/hooks/useFormData";
-import FormDialog from "@/components/Dialog/FormDialog.vue";
-import { ref } from "vue";
-
-const { proxy } = getCurrentInstance()
-
-defineOptions({
-  name: "鏀跺叆鏂板缂栬緫",
-});
-
-const emits = defineEmits(["success"]);
-
-const formRef = ref(null);
-const dialogVisible = ref(false);
-const operationType = ref("add"); // add | edit
-const id = ref(undefined);
-const submitting = ref(false);
-
-const dialogTitle = (type) => {
-  if (type === "edit") return "缂栬緫鏀跺叆";
-  return "鏂板鏀跺叆";
-};
-
-const { income_types } = proxy.useDict("income_types");
-const { payment_methods } = proxy.useDict("payment_methods");
-
-const formRules = {
-  customerName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-  incomeMoney: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-  incomeDescribed: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-  incomeDate: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
-  incomeType: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
-  incomeMethod: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
-}
-
-const { form, resetForm } = useFormData({
-  incomeDate: undefined, // 鏀跺叆鏃ユ湡
-  incomeType: undefined, // 鏀跺叆绫诲瀷
-  customerName: undefined, // 瀹㈡埛鍚嶇О
-  incomeMoney: undefined, // 鏀跺叆閲戦
-  incomeDescribed: undefined, // 鏀跺叆鎻忚堪
-  incomeMethod: undefined, // 鏀舵鏂瑰紡
-  invoiceNumber: undefined, // 鍙戠エ鍙风爜
-  note: undefined, // 澶囨敞
-});
-
-const sendForm = () => {
-  if (submitting.value) return;
-  formRef.value?.validate(async (valid) => {
-    if (valid) {
-      submitting.value = true;
-      try {
-        const { code } = id.value
-          ? await update({ id: id.value, ...form })
-          : await add(form);
-        if (code == 200) {
-          emits("success");
-          ElMessage({ message: "鎿嶄綔鎴愬姛", type: "success" });
-          close();
-        }
-      } finally {
-        submitting.value = false;
-      }
-    }
-  })
-};
-
-const close = () => {
-  resetForm();
-  formRef.value?.clearValidate();
-  id.value = undefined;
-  dialogVisible.value = false;
-};
-
-const loadForm = async (rowId) => {
-  operationType.value = "edit";
-  id.value = rowId;
-  dialogVisible.value = true;
-  if (rowId) {
-    const { code, data } = await getAccountIncome(rowId);
-    if (code == 200) {
-      form.incomeDate = data.incomeDate;
-      form.incomeType = data.incomeType;
-      form.customerName = data.customerName;
-      form.incomeMoney = data.incomeMoney;
-      form.incomeDescribed = data.incomeDescribed;
-      form.incomeMethod = data.incomeMethod;
-      form.invoiceNumber = data.invoiceNumber;
-      form.note = data.note;
-    }
-  } else {
-    resetForm();
-    formRef.value?.clearValidate();
-  }
-};
-
-const openModal = () => {
-  operationType.value = "add";
-  id.value = undefined;
-  resetForm();
-  formRef.value?.clearValidate();
-  dialogVisible.value = true;
-};
-
-defineExpose({
-  openModal,
-  loadForm,
-});
-</script>
diff --git a/src/views/financialManagement/revenueManagement/index.vue b/src/views/financialManagement/revenueManagement/index.vue
deleted file mode 100644
index bcef5b6..0000000
--- a/src/views/financialManagement/revenueManagement/index.vue
+++ /dev/null
@@ -1,355 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="filters" :inline="true">
-      <el-form-item label="鏀跺叆鏃ユ湡:">
-        <el-date-picker v-model="filters.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
-                        placeholder="璇烽�夋嫨" clearable @change="changeDaterange"/>
-      </el-form-item>
-      <el-form-item label="鏀舵鏂瑰紡:">
-        <el-select
-            v-model="filters.incomeMethodLabel"
-            placeholder="璇烽�夋嫨"
-            clearable
-            style="width: 200px;"
-        >
-          <el-option
-              v-for="item in incomeMethodOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="getTableData">鎼滅储</el-button>
-        <el-button @click="resetFilters">閲嶇疆</el-button>
-      </el-form-item>
-    </el-form>
-    <div class="table_list">
-      <div class="actions">
-        <div></div>
-        <div>
-          <el-button type="primary" @click="add" icon="Plus"> 鏂板</el-button>
-          <el-button @click="handleOut" icon="download">瀵煎嚭</el-button>
-          <el-button
-              type="danger"
-              icon="Delete"
-              :disabled="multipleList.length <= 0 || hasBusinessIdInSelection"
-              @click="handleBatchDelete"
-          >
-            鎵归噺鍒犻櫎
-          </el-button>
-        </div>
-      </div>
-      <PIMTable
-          rowKey="id"
-          isSelection
-          :column="columns"
-          :tableData="dataList"
-          :page="{
-          current: pagination.currentPage,
-          size: pagination.pageSize,
-          total: pagination.total,
-        }"
-          :isShowSummary="true"
-          :summaryMethod="summarizeMainTable"
-          @selection-change="handleSelectionChange"
-          @pagination="changePage"
-      >
-        <template #incomeMethodSlot="{ row }">
-          <el-tag>
-            {{ getIncomeMethodLabel(row) }}
-          </el-tag>
-        </template>
-        <template #operation="{ row }">
-          <el-button
-              type="primary"
-              link
-              :disabled="!!row.businessId"
-              @click="edit(row.id)"
-          >
-            缂栬緫
-          </el-button>
-          <el-button
-              type="primary"
-              link
-              @click="openFilesFormDia(row)"
-          >
-            闄勪欢
-          </el-button>
-        </template>
-      </PIMTable>
-    </div>
-    <Modal ref="modalRef" @success="getTableData"></Modal>
-    <FileListDialog v-if="fileListDialogVisible" :record-id="currentRecordId" record-type="account_income" v-model:visible="fileListDialogVisible"/>
-  </div>
-</template>
-
-<script setup>
-import {usePaginationApi} from "@/hooks/usePaginationApi";
-import {listPage, delAccountIncome} from "@/api/financialManagement/revenueManagement";
-import {onMounted, getCurrentInstance, ref, computed} from "vue";
-import {ElMessageBox, ElMessage} from "element-plus";
-import dayjs from "dayjs";
-
-defineOptions({
-  name: "鏀跺叆绠$悊",
-});
-
-// 琛ㄦ牸澶氶�夋閫変腑椤�
-const multipleList = ref([]);
-const {proxy} = getCurrentInstance();
-const modalRef = ref();
-const {payment_methods} = proxy.useDict("payment_methods");
-const {receipt_payment_type} = proxy.useDict("receipt_payment_type");
-const {income_types} = proxy.useDict("income_types");
-const fileListRef = ref(null);
-const fileListDialogVisible = ref(false);
-const currentRecordId = ref(0);
-
-const incomeMethodOptions = computed(() => {
-  const merged = [...(payment_methods.value || []), ...(receipt_payment_type.value || [])];
-  const uniqueMap = new Map();
-  merged.forEach((item) => {
-    const label = item?.label;
-    if (!label) return;
-    if (!uniqueMap.has(label)) {
-      uniqueMap.set(label, {label, value: label});
-    }
-  });
-  return Array.from(uniqueMap.values());
-});
-
-const {
-  filters,
-  columns,
-  dataList,
-  pagination,
-  getTableData,
-  resetFilters,
-  onCurrentChange,
-} = usePaginationApi(
-    listPage,
-    {
-      incomeMethodLabel: undefined,
-      entryDate: undefined,
-    },
-    [
-      {
-        label: "鏀跺叆鏃ユ湡",
-        prop: "incomeDate",
-      },
-      {
-        label: "鏀跺叆绫诲瀷",
-        prop: "incomeType",
-        dataType: "tag",
-        formatData: (params) => {
-          if (income_types.value.find((m) => m.value == params)) {
-            return income_types.value.find((m) => m.value == params).label;
-          } else {
-            return null
-          }
-        },
-      },
-      {
-        label: "瀹㈡埛鍚嶇О",
-        prop: "customerName",
-        width: '200'
-
-      },
-      {
-        label: "鏀跺叆閲戦",
-        prop: "incomeMoney",
-
-      },
-      {
-        label: "鏀跺叆鎻忚堪",
-        prop: "incomeDescribed",
-
-      },
-      {
-        label: "鏀舵鏂瑰紡",
-        prop: "incomeMethodLabel",
-        align: 'center',
-        width: '100',
-        dataType: "slot",
-        slot: "incomeMethodSlot",
-      },
-      {
-        label: "鍙戠エ鍙风爜",
-        prop: "invoiceNumber",
-
-      },
-      {
-        label: "澶囨敞",
-        prop: "note",
-
-      },
-      {
-        label: "褰曞叆浜�",
-        prop: "inputUser",
-      },
-      {
-        label: "褰曞叆鏃ユ湡",
-        prop: "inputTime",
-
-      },
-      {
-        fixed: "right",
-        label: "鎿嶄綔",
-        dataType: "slot",
-        slot: "operation",
-        align: "center",
-        width: "160px",
-      },
-    ],
-    undefined,
-    {
-      incomeMethodLabel: (value) => ({
-        incomeMethodLabel: value || undefined,
-      }),
-    }
-);
-
-// 琛ㄦ牸鍚堣锛氭敹鍏ラ噾棰�
-const summarizeMainTable = (param) => {
-  return proxy.summarizeTable(param, ["incomeMoney"]);
-};
-
-const getIncomeMethodLabel = (row) => {
-  const methodValue = row?.incomeMethod;
-  const dictList = String(row?.businessType) === "1"
-      ? receipt_payment_type.value
-      : payment_methods.value;
-  return dictList.find((item) => item.value == methodValue)?.label || "--";
-};
-
-// 澶氶�夊悗鍋氫粈涔�
-const handleSelectionChange = (selectionList) => {
-  multipleList.value = selectionList;
-};
-
-// 鍒ゆ柇閫変腑鐨勯」涓槸鍚︽湁 businessId
-const hasBusinessIdInSelection = computed(() => {
-  return multipleList.value.some(item => item.businessId);
-});
-
-const add = () => {
-  modalRef.value.openModal();
-};
-const edit = (id) => {
-  // 妫�鏌ュ綋鍓嶈鏄惁鏈� businessId
-  const row = dataList.value.find(item => item.id === id);
-  if (row && row.businessId) {
-    proxy.$modal.msgWarning("璇ヨ褰曞凡鍏宠仈涓氬姟锛屼笉鑳界紪杈�");
-    return;
-  }
-  modalRef.value.loadForm(id);
-};
-const changePage = ({page, limit}) => {
-  pagination.currentPage = page;
-  pagination.pageSize = limit;
-  onCurrentChange(page);
-};
-const deleteRow = (id) => {
-  // 濡傛灉鏄暟缁勶紝妫�鏌ユ槸鍚︽湁 businessId
-  if (Array.isArray(id)) {
-    const hasBusinessId = id.some(itemId => {
-      const row = dataList.value.find(item => item.id === itemId);
-      return row && row.businessId;
-    });
-    if (hasBusinessId) {
-      proxy.$modal.msgWarning("閫変腑鐨勮褰曚腑鍖呭惈宸插叧鑱斾笟鍔$殑璁板綍锛屼笉鑳藉垹闄�");
-      return;
-    }
-  } else {
-    // 鍗曚釜鍒犻櫎锛屾鏌ユ槸鍚︽湁 businessId
-    const row = dataList.value.find(item => item.id === id);
-    if (row && row.businessId) {
-      proxy.$modal.msgWarning("璇ヨ褰曞凡鍏宠仈涓氬姟锛屼笉鑳藉垹闄�");
-      return;
-    }
-  }
-
-  ElMessageBox.confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?", "鎻愮ず", {
-    confirmButtonText: "纭畾",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  }).then(async () => {
-    const {code} = await delAccountIncome(id);
-    if (code == 200) {
-      ElMessage({
-        type: "success",
-        message: "鍒犻櫎鎴愬姛",
-      });
-      getTableData();
-    }
-  });
-};
-
-// 鎵归噺鍒犻櫎
-const handleBatchDelete = () => {
-  if (multipleList.value.length === 0) {
-    proxy.$modal.msgWarning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
-    return;
-  }
-
-  // 妫�鏌ユ槸鍚︽湁 businessId
-  if (hasBusinessIdInSelection.value) {
-    proxy.$modal.msgWarning("閫変腑鐨勮褰曚腑鍖呭惈宸插叧鑱斾笟鍔$殑璁板綍锛屼笉鑳藉垹闄�");
-    return;
-  }
-
-  const ids = multipleList.value.map((item) => item.id);
-  deleteRow(ids);
-};
-
-const changeDaterange = (value) => {
-  if (value) {
-    filters.entryDate = value;
-    filters.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
-    filters.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
-  } else {
-    filters.entryDate = null;
-    filters.entryDateStart = undefined;
-    filters.entryDateEnd = undefined;
-  }
-  getTableData();
-};
-
-const handleOut = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-      .then(() => {
-        proxy.download(`/account/accountIncome/export`, {}, "鏀跺叆鍙拌处.xlsx");
-      })
-      .catch(() => {
-        proxy.$modal.msg("宸插彇娑�");
-      });
-};
-// 鎵撳紑闄勪欢寮规
-const openFilesFormDia = async (row) => {
-  currentRecordId.value = row.id;
-  fileListDialogVisible.value = true;
-};
-
-onMounted(() => {
-  getTableData();
-});
-</script>
-
-<style lang="scss" scoped>
-.table_list {
-  margin-top: unset;
-}
-
-.actions {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 10px;
-}
-</style>
-

--
Gitblit v1.9.3