Explorar o código

qhse体系文件面包屑

yanghao hai 2 semanas
pai
achega
cf5e70a4cc

+ 2 - 2
src/views/pms/qhse/data/IotInfoFormTree.vue

@@ -110,7 +110,7 @@ const open = async (type: string, id?: number) => {
   }
 
   displayNodeName.value = props.nodeName
-  formData.value.classId = props.classId
+  formData.value.classId = props.nodeId
   formData.value.deptId = props.deptId
 }
 
@@ -124,7 +124,7 @@ const submitForm = async () => {
     const data = formData.value
     if (formType.value === 'create') {
       data.deviceId = props.deviceId
-      data.classId = props.classId
+      data.classId = props.nodeId
       data.deptId = props.deptId
       data.folderJson = JSON.stringify(data.folderTree)
       await DataLibraryApi.createIotInfo(data)

+ 24 - 2
src/views/pms/qhse/data/index.vue

@@ -234,6 +234,7 @@ interface FileRow {
   id: TreeKey
   originId?: TreeKey
   parentId?: TreeKey
+  deptId?: TreeKey
   name?: string
   filename?: string
   fileType?: string
@@ -253,11 +254,28 @@ const uploadLoading = ref(false)
 const currentTreeOriginId = ref<TreeKey | undefined>(undefined)
 const rootDeptOriginId = ref<TreeKey | undefined>(undefined)
 const rootNodeName = ref('')
+const treeOriginIdMap = ref<Record<string, TreeKey | undefined>>({})
 
 const syncSelectedTreeOriginId = () => {
   queryParams.deptId = currentTreeOriginId.value
 }
 
+const setDeptContextByNodeId = (targetId?: TreeKey | null) => {
+  if (targetId == null) return
+  const originDeptId = treeOriginIdMap.value[String(targetId)]
+  if (originDeptId == null) return
+  currentTreeOriginId.value = originDeptId
+  deptId.value = String(originDeptId)
+}
+
+const loadTreeOriginIdMap = async () => {
+  const treeNodes = await DataLibraryApi.DataLibraryApi.getFileTreeList()
+  treeOriginIdMap.value = treeNodes.reduce<Record<string, TreeKey | undefined>>((acc, item) => {
+    acc[String(item.id)] = item.originId
+    return acc
+  }, {})
+}
+
 const searchFolderAndFile = async () => {
   formLoading.value = true
   syncSelectedTreeOriginId()
@@ -274,6 +292,7 @@ const successList = async (id?: TreeKey) => {
   topNodeId.value = id
   nodeId.value = String(id)
   clickNodeId.value = String(id)
+  setDeptContextByNodeId(id)
   if (!nodeName.value) {
     nodeName.value = rootNodeName.value
   }
@@ -400,6 +419,7 @@ const updateBreadcrumbs = async (node: FileRow) => {
   }
 
   // 更新表格数据
+  setDeptContextByNodeId(node.id)
   queryParams.classId = node.id
   syncSelectedTreeOriginId()
   const data = await DataLibraryApi.DataLibraryApi.getChildContentFile(queryParams)
@@ -440,8 +460,8 @@ const handleFileNodeClick = async (row: FileRow) => {
   })
 
   queryParams.classId = row.id
-  currentTreeOriginId.value = row.originId
-  deptId.value = row.originId != null ? String(row.originId) : ''
+  currentTreeOriginId.value = row.deptId ?? row.originId
+  deptId.value = row.deptId != null ? String(row.deptId) : row.originId != null ? String(row.originId) : ''
   nodeName.value = row.name || row.filename || ''
   if (row.type == 'device') {
     id.value = Number(row.originId)
@@ -495,6 +515,7 @@ const handleBreadcrumbClick = async (index: number) => {
   clickNodeId.value = String(targetId)
   nodeId.value = String(targetId)
   nodeName.value = targetBreadcrumbs[index].name || rootNodeName.value || ''
+  setDeptContextByNodeId(targetId)
   if (index === 0 && rootDeptOriginId.value != null) {
     currentTreeOriginId.value = rootDeptOriginId.value
     deptId.value = String(rootDeptOriginId.value)
@@ -531,6 +552,7 @@ const resetQuery = () => {
 /** 初始化 */
 onMounted(async () => {
   id.value = Number(params.id) || 0
+  await loadTreeOriginIdMap()
   await loadRootBreadcrumb()
 })
 </script>