调整版本树使用的数据结构和后端一致
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, onUnmounted, reactive, toRefs } from 'vue'
|
||||
import { ref, onMounted, onUnmounted, reactive, toRefs, watch } from 'vue'
|
||||
import Tree from './tree/index.vue'
|
||||
import Detail from './detail/index.vue'
|
||||
import { versionsList } from './tools/versionsData'
|
||||
// import { versionsList } from './tools/versionsData'
|
||||
import { findAndAddChild, findAndRemoveChild } from './tools/tools'
|
||||
import { useProjectStore } from '@/stores'
|
||||
import { versionTree, getChatNodeDetail } from '@/api/versitonTree'
|
||||
|
||||
const props = defineProps({
|
||||
versionTreeData: {
|
||||
@@ -11,14 +13,79 @@ const props = defineProps({
|
||||
default: () => {
|
||||
return {
|
||||
drawer: false,
|
||||
list: []
|
||||
// list: []
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
//const emit = defineEmits([
|
||||
//])
|
||||
|
||||
const versionsList = ref([])
|
||||
|
||||
const projectStore = useProjectStore()
|
||||
watch(()=>projectStore.state.id, (newVal, oldVal) => {
|
||||
if(newVal){
|
||||
versionTree({
|
||||
projectId: projectStore.state.id
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
|
||||
// versionsList.value = res.data
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
const setVersionsList = (res)=>{
|
||||
versionsList.value = [{
|
||||
"id": "node_001",
|
||||
"url": "https://example.com/images/cover_001.jpg",
|
||||
"children": [
|
||||
{
|
||||
"id": "node_002",
|
||||
"url": "https://example.com/images/cover_002.jpg",
|
||||
"children": [
|
||||
{
|
||||
"id": "node_003",
|
||||
"url": "https://example.com/images/cover_003.jpg",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "node_004",
|
||||
"url": "https://example.com/images/cover_004.jpg",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "node_005",
|
||||
"url": "https://example.com/images/cover_005.jpg",
|
||||
"children": [
|
||||
{
|
||||
"id": "node_006",
|
||||
"url": "https://example.com/images/cover_006.jpg",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}]
|
||||
//设置versionId
|
||||
function traverseArray(items,father, callback) {
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
const item = items[i]
|
||||
callback(item, i,father)
|
||||
if (item.children && Array.isArray(item.children) && item.children.length > 0) {
|
||||
traverseArray(item.children, item, callback)
|
||||
}
|
||||
}
|
||||
}
|
||||
traverseArray(versionsList.value,'',(item,i,father)=>{
|
||||
item.versionId = father?`${father.versionId}-${i+1}`:'1'
|
||||
})
|
||||
}
|
||||
|
||||
const treeRef = ref(null)
|
||||
const treeKey = ref(0)
|
||||
const treeState = ref(true)//
|
||||
@@ -31,13 +98,13 @@ const openTree = (state)=>{
|
||||
|
||||
const versionRestore = ()=>{
|
||||
let id = ''
|
||||
if(selectItem.value?.child?.length > 0){
|
||||
if(selectItem.value?.children?.length > 0){
|
||||
function findMaxForYourFormat(items) {
|
||||
let max = 0
|
||||
|
||||
for (const item of items) {
|
||||
// 直接分割并取最后一部分
|
||||
const parts = item.id.split('-')
|
||||
const parts = item?.versionId.split('-')
|
||||
const lastNumber = parseInt(parts[parts.length - 1], 10)
|
||||
|
||||
if (lastNumber > max) {
|
||||
@@ -47,26 +114,26 @@ const versionRestore = ()=>{
|
||||
|
||||
return max
|
||||
}
|
||||
id = `${selectItem.value?.id}-${findMaxForYourFormat(selectItem.value?.child) + 1}`
|
||||
id = `${selectItem.value?.versionId}-${findMaxForYourFormat(selectItem.value?.children) + 1}`
|
||||
}else{
|
||||
id = `${selectItem.value?.id}-1`
|
||||
id = `${selectItem.value?.versionId}-1`
|
||||
}
|
||||
let addObj = {
|
||||
id,
|
||||
name:`V${id}`
|
||||
}
|
||||
findAndAddChild(versionsList, selectItem.value?.id, addObj)
|
||||
findAndAddChild(versionsList.value, selectItem.value?.versionId, addObj)
|
||||
selectItem.value = {...addObj}
|
||||
treeKey.value++
|
||||
}
|
||||
const versionDelete = (versionDetail)=>{
|
||||
if(!selectItem.value.id)return
|
||||
findAndRemoveChild(versionsList, selectItem.value.id)
|
||||
if(!selectItem.value?.versionId)return
|
||||
findAndRemoveChild(versionsList.value, selectItem.value?.versionId)
|
||||
treeKey.value++
|
||||
}
|
||||
|
||||
let data = reactive({})
|
||||
onMounted(() => {})
|
||||
onMounted(() => {setVersionsList('')})
|
||||
onUnmounted(() => {})
|
||||
defineExpose({})
|
||||
const {} = toRefs(data)
|
||||
|
||||
Reference in New Issue
Block a user