From 2adf0b60f951746518feb88a11501b10455d83d6 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期一, 23 三月 2026 17:44:24 +0800
Subject: [PATCH] fix: 更新系统

---
 src/views/data/Excel.vue |   86 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 79 insertions(+), 7 deletions(-)

diff --git a/src/views/data/Excel.vue b/src/views/data/Excel.vue
index a18c53b..ad2203c 100644
--- a/src/views/data/Excel.vue
+++ b/src/views/data/Excel.vue
@@ -21,8 +21,21 @@
       </template>
 
       <el-form :inline="true" :model="searchForm" class="search-form">
-        <el-form-item label="鍗曚綅鍚嶇О">
-          <el-input v-model="searchForm.unitName" placeholder="璇疯緭鍏ュ崟浣嶅悕绉�" clearable />
+        <el-form-item label="鍗曚綅">
+          <el-select
+              v-model="searchForm.unitCode"
+              placeholder="璇烽�夋嫨鍗曚綅"
+              clearable
+              filterable
+              style="width: 250px"
+          >
+            <el-option
+                v-for="dept in flatDepartmentList"
+                :key="dept.deptCode"
+                :label="`${dept.deptCode} - ${dept.deptName}`"
+                :value="dept.deptCode"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="浜ゆ槗娴佹按鍙�">
           <el-input v-model="searchForm.transactionNo" placeholder="璇疯緭鍏ヤ氦鏄撴祦姘村彿" clearable />
@@ -36,6 +49,7 @@
       <el-table :data="tableData" v-loading="loading" border stripe>
         <el-table-column prop="sortNo" label="缂栧彿" width="80" />
         <el-table-column prop="seqNo" label="搴忓彿" width="80" />
+        <el-table-column prop="pkVoucher" label="鍞竴缂栧彿" width="100" />
         <el-table-column prop="secondaryUnit" label="浜岀骇鍗曚綅" width="120" />
         <el-table-column prop="unitCode" label="鍗曚綅缂栫爜" width="100" />
         <el-table-column prop="unitName" label="鍗曚綅鍚嶇О" width="200" />
@@ -146,7 +160,7 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="BP鍚堝悓鍙�" prop="bpContractNo">
-              <el-input v-model="form.bpContractNo" placeholder="璇疯緭鍏P鍚堝悓鍙�" />
+              <el-input v-model="form.bpContractNo" placeholder="璇疯緭鍏IP鍚堝悓鍙�" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -158,19 +172,19 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="BP鍙戠エ鍙�" prop="bpInvoiceNo">
-              <el-input v-model="form.bpInvoiceNo" placeholder="璇疯緭鍏P鍙戠エ鍙�" />
+              <el-input v-model="form.bpInvoiceNo" placeholder="璇疯緭鍏IP鍙戠エ鍙�" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鍙ゆ帶绯荤粺瀵瑰簲鍙戠エ鍙�" prop="gkInvoiceNo">
-              <el-input v-model="form.gkInvoiceNo" placeholder="璇疯緭鍏ュ彜鎺х郴缁熷搴斿彂绁ㄥ彿" />
+              <el-input v-model="form.gkInvoiceNo" placeholder="璇疯緭鍏ョ櫨鏃虹郴缁熷搴斿彂绁ㄥ彿" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="涓氬姟鍏宠仈鍏崇郴" prop="businessRelation">
-              <el-input v-model="form.businessRelation" placeholder="璇疯緭鍏ヤ笟鍔″叧鑱斿叧绯�" />
+              <el-input v-model="form.businessRelation" placeholder="璇疯緭鍏ュ洓鑰呮湭鍏宠仈鍘熷洜" />
             </el-form-item>
           </el-col>
 <!--          <el-col :span="12">-->
@@ -195,8 +209,9 @@
 </template>
 
 <script setup>
-import { ref, reactive, onMounted } from 'vue'
+import {ref, reactive, onMounted, computed} from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
+import { getDepartmentTree } from '@/api/department'
 import { Plus, Edit, Delete, Search, Refresh, Upload, Download } from '@element-plus/icons-vue'
 import { getExcelPage, createExcel, updateExcel, deleteExcel, importExcel, downloadTemplate } from '@/api/excel'
 
@@ -206,9 +221,11 @@
 const dialogTitle = ref('')
 const formRef = ref(null)
 const uploadRef = ref(null)
+const departmentList = ref([])
 
 const searchForm = reactive({
   unitName: '',
+  unitCode: '',
   transactionNo: '',
   accountingPeriod: ''
 })
@@ -243,6 +260,60 @@
 const rules = {
   unitName: [{ required: true, message: '璇疯緭鍏ュ崟浣嶅悕绉�', trigger: 'blur' }],
   transactionNo: [{ required: true, message: '璇疯緭鍏ヤ氦鏄撴祦姘村彿', trigger: 'blur' }]
+}
+
+const flatDepartmentList = computed(() => {
+  const flatten = (list) => {
+    let result = []
+    list.forEach(item => {
+      result.push(item)
+      if (item.children && item.children.length > 0) {
+        result = result.concat(flatten(item.children))
+      }
+    })
+    return result
+  }
+  return flatten(departmentList.value)
+})
+
+const fetchDepartmentList = async () => {
+  try {
+    const res = await getDepartmentTree()
+    departmentList.value = buildTree(res.data)
+  } catch (error) {
+    console.error('鑾峰彇閮ㄩ棬鍒楄〃澶辫触:', error)
+  }
+}
+
+const buildTree = (list) => {
+  const map = {}
+  const roots = []
+
+  list.forEach(item => {
+    map[item.deptCode] = { ...item, children: [] }
+  })
+
+  list.forEach(item => {
+    const parent = map[item.parentCode]
+    if (parent) {
+      parent.children.push(map[item.deptCode])
+    } else {
+      roots.push(map[item.deptCode])
+    }
+  })
+
+  const cleanEmptyChildren = (nodes) => {
+    nodes.forEach(node => {
+      if (node.children && node.children.length === 0) {
+        delete node.children
+      } else {
+        cleanEmptyChildren(node.children)
+      }
+    })
+  }
+
+  cleanEmptyChildren(roots)
+  return roots
 }
 
 const formatAmount = (amount) => {
@@ -409,6 +480,7 @@
 }
 
 onMounted(() => {
+  fetchDepartmentList()
   fetchData()
 })
 </script>

--
Gitblit v1.9.1