liuhairui 1 an în urmă
părinte
comite
38c2b0b5b5
1 a modificat fișierele cu 69 adăugiri și 50 ștergeri
  1. 69 50
      src/view/performance/Dayreports.vue

+ 69 - 50
src/view/performance/Dayreports.vue

@@ -1907,56 +1907,75 @@ const GetDedhVisible = ref(false);
 const table_fplb = ref(null); // el-tree 的 ref
 const defaultExpandedKey = ref(null); // 默认展开的节点 key
 const selectIndex = ref(0); // 当前选中的索引
-	
-const getDedhsubmit = async () => {
-  try {
-	const response = await productionDedh({
-	  sczl_jtbh: formData.value.sczl_jtbh,
-	});
-	
-	if (response.code === 0) {
-	  if (formData.value.sczl_jtbh === "") {
-		const data = [response.data];
-		
-		const buildTree = (node) => {
-		  const treeNode = {
-			id: node.sys_bh, // 确保有 id 属性,供 node-key 使用
-			label: node.sys_bh + "【" + node.sys_mc + "】",
-			children: [],
-			key: node.sys_bh, //保留 key 属性,便于自定义操作
-		  };
-		
-		  if (node.bh_mc && Array.isArray(node.bh_mc)) {
-			node.bh_mc.forEach((childNode) => {
-			  treeNode.children.push(buildTree(childNode));
-			});
-		  }
-		  return treeNode;
-		};
-
-		// 更新树形数据
-		GetDedhtreeData.splice(0, GetDedhtreeData.length, ...data.map(buildTree));
-		// 显示树形选择框
-		GetDedhVisible.value = true;
-		// 使用 nextTick 确保树形组件渲染完成
-		nextTick(() => {
-		  const tree = table_fplb.value;
-		  if (tree) {
-			const firstNode = tree.getNode(0); // 获取树形的第一个节点
-			if (firstNode) {
-			  firstNode.el.focus(); // 聚焦第一个节点
-			}
-		  }
-		});
-	  } else {
-		// 如果 sczl_jtbh 有值,则直接填充数据
-		formData.value.sczl_dedh = response.data.sys_bh;
-	  }
-	}
-  } catch (error) {
-	console.error(error);
-  }
-};
+
+const getDedhsubmit = async () => {
+  try {
+    const response = await productionDedh({
+      sczl_jtbh: formData.value.sczl_jtbh, // 请求参数
+    });
+
+    if (response.code === 0) {
+      const data = response.data;
+
+      // 处理单条记录的情况,直接赋值
+      if (!Array.isArray(data) && !data.bh_mc) {
+        formData.value.sczl_dedh = data.sys_bh;
+        return;
+      }
+
+      // 定义递归函数,用于构造树形结构
+      const buildTree = (node) => {
+        const treeNode = {
+          id: node.sys_bh,
+          label: node.sys_bh + (node.sys_mc ? `【${node.sys_mc}】` : ""), // 显示内容
+          children: [],
+          key: node.Key_ || node.sys_bh, // 保留 key 属性,用于操作
+        };
+
+        // 如果有子节点,递归处理
+        if (node.bh_mc && Array.isArray(node.bh_mc)) {
+          treeNode.children = node.bh_mc.map((childNode) => buildTree(childNode));
+        }
+
+        return treeNode;
+      };
+
+      // 处理数组数据结构,生成树形结构并展示弹窗
+      if (Array.isArray(data)) {
+        GetDedhtreeData.splice(
+          0,
+          GetDedhtreeData.length,
+          ...data.map((item) => ({
+            id: item.sys_bh,
+            label: item.sys_bh,
+            children: [],
+            key: item.sys_bh,
+          }))
+        );
+        GetDedhVisible.value = true; // 展示弹窗
+      }
+
+      // 处理嵌套的树形结构数据
+      if (!Array.isArray(data) && data.bh_mc) {
+        GetDedhtreeData.splice(0, GetDedhtreeData.length, buildTree(data));
+        GetDedhVisible.value = true; // 展示弹窗
+      }
+
+      // 使用 nextTick 确保树形组件渲染完成后执行操作
+      nextTick(() => {
+        const tree = table_fplb.value; // 获取树形组件实例
+        if (tree) {
+          const firstNode = tree.getNode(0); // 获取树形的第一个节点
+          if (firstNode) {
+            firstNode.el.focus(); // 聚焦到第一个节点
+          }
+        }
+      });
+    }
+  } catch (error) {
+    console.error("获取数据失败:", error);
+  }
+};	
 
 //键盘事件
 const handleTreeKeydown = (event) => {