|
@@ -152,7 +152,7 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
-import { ref, onActivated } from 'vue'
|
|
|
|
|
|
|
+import { ref, onMounted, onActivated } from 'vue'
|
|
|
import { useRouter } from 'vue-router'
|
|
import { useRouter } from 'vue-router'
|
|
|
import { folderList, mkdir } from '@/api/efinder/finder'
|
|
import { folderList, mkdir } from '@/api/efinder/finder'
|
|
|
import { addProject } from '@/api/pms/addProject'
|
|
import { addProject } from '@/api/pms/addProject'
|
|
@@ -281,8 +281,8 @@ const isTopLevel = (item) => !item.pid || item.pid === 0
|
|
|
|
|
|
|
|
const loadByCate = (cate, listRef, loadingRef, filterFn) => {
|
|
const loadByCate = (cate, listRef, loadingRef, filterFn) => {
|
|
|
loadingRef.value = true
|
|
loadingRef.value = true
|
|
|
- // 传 pid=0 让后端只返回顶层(FD_PID = 0),避免全量拉取后再前端过滤
|
|
|
|
|
- folderList({ fdCate: cate, pid: 0, pageSize: 999 }).then(res => {
|
|
|
|
|
|
|
+ // 拉取该分类全量,前端用 isTopLevel 过滤顶层(兼容 FD_PID=0 与 FD_PID IS NULL 两种数据)
|
|
|
|
|
+ folderList({ fdCate: cate, pageSize: 999 }).then(res => {
|
|
|
const list = res.rows || res.data || []
|
|
const list = res.rows || res.data || []
|
|
|
listRef.value = filterFn ? list.filter(item => filterFn(item, list)) : list
|
|
listRef.value = filterFn ? list.filter(item => filterFn(item, list)) : list
|
|
|
loadingRef.value = false
|
|
loadingRef.value = false
|
|
@@ -302,8 +302,16 @@ function loadAll() {
|
|
|
loadByCate('gzzd', gzzdList, loadingGzzd, isTopLevel)
|
|
loadByCate('gzzd', gzzdList, loadingGzzd, isTopLevel)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// onActivated 在首次挂载和 keep-alive 返回时都会触发,统一在此加载,避免重复请求
|
|
|
|
|
-onActivated(loadAll)
|
|
|
|
|
|
|
+// 首次挂载:onMounted 必定触发加载(onActivated 只在 keep-alive 缓存组件时触发,首次可能不触发)
|
|
|
|
|
+// 缓存返回时:onActivated 触发刷新;mounted 标志防止首次挂载时两个钩子重复加载
|
|
|
|
|
+let dataLoaded = false
|
|
|
|
|
+onMounted(() => {
|
|
|
|
|
+ dataLoaded = true
|
|
|
|
|
+ loadAll()
|
|
|
|
|
+})
|
|
|
|
|
+onActivated(() => {
|
|
|
|
|
+ if (dataLoaded) loadAll()
|
|
|
|
|
+})
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
<style scoped>
|