From 2e340d09cf3e7c060216cb980c466586c27ecc2d Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 20 十一月 2025 17:21:53 +0800
Subject: [PATCH] 1.金鹰黄金-劳保统计页面展示数据修改

---
 src/views/lavorissue/ledger/Modal.vue |   65 ++++++++++++++++++++++++++++----
 1 files changed, 56 insertions(+), 9 deletions(-)

diff --git a/src/views/lavorissue/ledger/Modal.vue b/src/views/lavorissue/ledger/Modal.vue
index f5b0e3a..1ed016f 100644
--- a/src/views/lavorissue/ledger/Modal.vue
+++ b/src/views/lavorissue/ledger/Modal.vue
@@ -2,9 +2,26 @@
   <el-dialog :title="modalOptions.title" v-model="visible" @close="close" width="60%">
     <el-form :model="form" label-width="100px" :rules="formRules" ref="formRef">
       <el-form-item label="宀椾綅鍚嶇О" prop="deptPositionId">
-        <el-select v-model="form.deptPositionId" placeholder="璇烽�夋嫨" clearable @change="handlePositionChange">
-          <el-option :label="item.name" :value="item.id" v-for="(item,index) in positionOptions" :key="item.id" />
-        </el-select>
+        <el-tree-select
+          v-model="form.deptPositionId"
+          :data="deptPositionTree"
+          :props="{ value: 'id', label: 'label', children: 'children' }"
+          placeholder="璇烽�夋嫨閮ㄩ棬鎴栧矖浣�"
+          clearable
+          check-strictly
+    :render-after-expand="false"
+    check-on-click-node
+          @change="handlePositionChange"
+        >
+          <template #default="{ data }">
+            <span>
+              <el-tag size="small" :type="data.type===1 ? 'success' : 'warning'" effect="plain" style="margin-right:4px;">
+                {{ data.type === 1 ? '閮ㄩ棬' : '宀椾綅' }}
+              </el-tag>
+              {{ data.label }}
+            </span>
+          </template>
+        </el-tree-select>
       </el-form-item>
       <el-form-item label="鍔充繚绫诲瀷" prop="dictType">
         <el-select v-model="form.dictType" placeholder="璇烽�夋嫨" clearable>
@@ -64,7 +81,7 @@
 import useUserStore from "@/store/modules/user";
 import {staffOnJobListPage} from "@/api/personnelManagement/employeeRecord.js";
 import { getDept } from "@/api/collaborativeApproval/approvalProcess.js";
-import { deptPositionListPage, getDeptPositionByDeptIdLabor } from "@/api/lavorissce/issue";
+import { getDeptPositionTree, getDeptPositionByDeptIdLabor } from "@/api/lavorissce/issue";
 import { deepCopySameProperties } from '@/utils/util'
 import { ElMessage } from "element-plus";
 
@@ -80,7 +97,7 @@
 
 const productOptions = ref([]);
 const personList = ref([]);
-const positionOptions = ref([]);
+const deptPositionTree = ref([]);
 const laborSuppliesOptions = ref([]);
 
 const formRules = {
@@ -167,12 +184,42 @@
   await nextTick()
   deepCopySameProperties(row, form)
 }
-async function loadPositions() {
-  const res = await deptPositionListPage({pageNum: -1, pageSize:-1})
-    positionOptions.value = res?.data?.records || res?.data || []
+// 灏嗛儴闂ㄥ矖浣嶆暟鎹浆鎹负鏍戝舰缁撴瀯
+function mapDeptToTree(d) {
+  const node = {
+    id: d.id,
+    label: d.name,
+    type: d.type,
+    children: [],
+  }
+  const kids = Array.isArray(d.children) ? d.children : []
+  for (const c of kids) {
+    if (c.type === 1) {
+      node.children.push(mapDeptToTree(c))
+    } else if (c.type === 2) {
+      node.children.push({
+        id: c.id,
+        label: c.name,
+        type: c.type,
+      })
+    }
+  }
+  return node
+}
+
+async function loadDeptPositionTree() {
+  try {
+    const res = await getDeptPositionTree()
+    const data = res?.data || res || []
+    deptPositionTree.value = data.map(d => mapDeptToTree(d))
+  } catch (e) {
+    console.error('鍔犺浇閮ㄩ棬宀椾綅鏍戝け璐�:', e)
+    deptPositionTree.value = []
+  }
 }
 
 async function handlePositionChange(deptPositionId) {
+  console.log('閫夋嫨鐨勫矖浣岻D:', deptPositionId)
   if (!deptPositionId) {
     laborSuppliesOptions.value = []
     form.dictId = undefined
@@ -183,7 +230,7 @@
 }
 
 onMounted(() => {
-  loadPositions()
+  loadDeptPositionTree()
   getPersonList()
 })
 

--
Gitblit v1.9.3