|
|
|
@ -14,7 +14,7 @@ |
|
|
|
<div class="head-container"> |
|
|
|
<el-tree |
|
|
|
:data="dassetOptions" |
|
|
|
:props="{ label: 'dassetName', children: 'children' }" |
|
|
|
:props="{ label: 'contentName', children: 'children' }" |
|
|
|
:expand-on-click-node="false" |
|
|
|
:filter-node-method="filterNode" |
|
|
|
ref="deptTreeRef" |
|
|
|
@ -25,15 +25,7 @@ |
|
|
|
> |
|
|
|
<template #default="{ data }"> |
|
|
|
<div class="custom-tree-node" @mouseenter="data.show = true" @mouseleave="data.show = false"> |
|
|
|
<span>{{ data.dassetName }}</span> |
|
|
|
<div v-if="data.parentCode === '0' && data.show"> |
|
|
|
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="primary" icon="Plus" @click="handleAddTree(data)"></el-link> |
|
|
|
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="success" icon="Edit" @click="handleEditTree(data)"></el-link> |
|
|
|
</div> |
|
|
|
<div v-if="data.parentCode !== '0' && data.show"> |
|
|
|
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="success" icon="Edit" @click="handleEditTree(data)"></el-link> |
|
|
|
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="danger" icon="Delete" @click="handleDeleteTree(data)"></el-link> |
|
|
|
</div> |
|
|
|
<span>{{ data.contentName }}</span> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-tree> |
|
|
|
@ -163,9 +155,20 @@ |
|
|
|
:rules="rules" |
|
|
|
label-width="125px"> |
|
|
|
<el-form-item label="归属资产名:" prop="dassetId"> |
|
|
|
<el-select v-model="currentForm.dassetId" style="width: 100%;" clearable> |
|
|
|
<el-option v-for="item in dassetList" :key="item.onum" :value="item.onum" :label="item.dassetName"></el-option> |
|
|
|
</el-select> |
|
|
|
<el-tree-select |
|
|
|
v-model="currentForm.dassetId" |
|
|
|
:data="dassetOptions" |
|
|
|
multiple |
|
|
|
default-expand-all |
|
|
|
check-on-click-node |
|
|
|
check-strictly |
|
|
|
:props="{ |
|
|
|
label: 'contentName', // 必须对应节点显示文本的字段 |
|
|
|
value: 'contentOnum', // 必须对应节点值的字段 |
|
|
|
children: 'children' // 必须对应子节点字段 |
|
|
|
}" |
|
|
|
@change="changeDassetId" |
|
|
|
style="width: 100%;" clearable /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="关键词:" prop="keyword"> |
|
|
|
<el-input |
|
|
|
@ -315,6 +318,7 @@ import { ref, nextTick, computed, watch, reactive, onMounted } from 'vue' |
|
|
|
import { getSscfList, saveSscf, deleteSscf, get_dasset_tree, saveDassetTreeNode } from "@/api/dataint/sscf" |
|
|
|
import * as XLSX from "xlsx"; |
|
|
|
import {getToken} from "../../../utils/auth.js"; |
|
|
|
import {getDirectoryTree} from "../../../api/dataAsset/directory.js"; |
|
|
|
|
|
|
|
|
|
|
|
const { proxy } = getCurrentInstance(); |
|
|
|
@ -329,7 +333,7 @@ const queryParams = ref({ |
|
|
|
}) |
|
|
|
const currentForm = ref({ |
|
|
|
operate: 'ADD', |
|
|
|
dassetId:'', |
|
|
|
dassetId:[], |
|
|
|
status:'1', |
|
|
|
keyword:'', |
|
|
|
algorithm:'包含', |
|
|
|
@ -398,19 +402,7 @@ const handleFileSuccess = (response, file, fileList) => { |
|
|
|
} |
|
|
|
getList(); |
|
|
|
} |
|
|
|
function handleAddTree(){ |
|
|
|
showTreeDialog.value = true |
|
|
|
currentTreeNode.value = { |
|
|
|
operate: 'ADD', |
|
|
|
dassetCode: '', |
|
|
|
dassetName: '' |
|
|
|
} |
|
|
|
} |
|
|
|
function handleEditTree(data){ |
|
|
|
currentTreeNode.value = data |
|
|
|
currentTreeNode.value.operate = 'UPDATE' |
|
|
|
showTreeDialog.value = true |
|
|
|
} |
|
|
|
|
|
|
|
function handleSaveTree(){ |
|
|
|
let param = { |
|
|
|
operate: currentTreeNode.value.operate, |
|
|
|
@ -424,17 +416,7 @@ function handleSaveTree(){ |
|
|
|
get_tree_data() |
|
|
|
}) |
|
|
|
} |
|
|
|
function handleDeleteTree(data){ |
|
|
|
let param = { |
|
|
|
onum: data.onum, |
|
|
|
dassetCode: data.dassetCode, |
|
|
|
operate: 'DELETE' |
|
|
|
} |
|
|
|
saveDassetTreeNode(param).then(res=>{ |
|
|
|
proxy.$modal.msgSuccess("操作成功") |
|
|
|
get_tree_data() |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
function handleQuery(){ |
|
|
|
queryParams.value.pageNum = 1; |
|
|
|
getList() |
|
|
|
@ -445,13 +427,17 @@ function getList(){ |
|
|
|
total.value = res.data.total |
|
|
|
}) |
|
|
|
} |
|
|
|
function changeDassetId(){ |
|
|
|
console.log(dassetOptions.value) |
|
|
|
console.log(currentForm.value.dassetId) |
|
|
|
} |
|
|
|
/** 节点单击事件 */ |
|
|
|
function handleNodeClick(data) { |
|
|
|
queryParams.value.dassetId = getAllChildOnums(data).join(','); |
|
|
|
handleQuery(); |
|
|
|
} |
|
|
|
const getAllChildOnums = (node) => { |
|
|
|
const onums = [node.onum]; // 当前节点的 onum |
|
|
|
const onums = [node.contentOnum]; // 当前节点的 onum |
|
|
|
if (node.children && node.children.length > 0) { |
|
|
|
node.children.forEach(childNode => { |
|
|
|
onums.push(...getAllChildOnums(childNode)); // 递归子节点 |
|
|
|
@ -475,7 +461,7 @@ function handleAdd(){ |
|
|
|
showDialog.value = true |
|
|
|
currentForm.value ={ |
|
|
|
operate: 'ADD', |
|
|
|
dassetId:'', |
|
|
|
dassetId:[1], |
|
|
|
status:'1', |
|
|
|
keyword:'', |
|
|
|
algorithm:'包含', |
|
|
|
@ -503,7 +489,9 @@ function changeStatus(row){ |
|
|
|
function handleSave(){ |
|
|
|
proxy.$refs.formRef.validate(valid => { |
|
|
|
if (valid) { |
|
|
|
saveSscf(currentForm.value).then(res=>{ |
|
|
|
let data = currentForm.value; |
|
|
|
data.dassetId = data.dassetId.join(',') |
|
|
|
saveSscf(data).then(res=>{ |
|
|
|
proxy.$modal.msgSuccess("操作成功"); |
|
|
|
showDialog.value = false |
|
|
|
getList() |
|
|
|
@ -557,23 +545,51 @@ function handleExport(){ |
|
|
|
function handleSelection(val){ |
|
|
|
multSelection.value= val |
|
|
|
} |
|
|
|
|
|
|
|
function cleanTreeData(nodes) { |
|
|
|
if (!nodes || nodes.length === 0) return; |
|
|
|
nodes.forEach(node => { |
|
|
|
// 优先处理子节点(深度优先) |
|
|
|
if (node.children?.length > 0) { |
|
|
|
cleanTreeData(node.children); |
|
|
|
} |
|
|
|
// 过滤当前层级无效节点 |
|
|
|
if (node.children) { |
|
|
|
node.children = node.children.filter(child => |
|
|
|
Boolean(child.contentName) // 更严谨的空值检查 |
|
|
|
); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
function get_tree_data(){ |
|
|
|
get_dasset_tree().then(res=>{ |
|
|
|
let treeList = res.data |
|
|
|
if(treeList.length > 0){ |
|
|
|
let children = [] |
|
|
|
dassetOptions.value = [] |
|
|
|
for (let i = 0; i < treeList.length; i++) { |
|
|
|
if (treeList[i].dassetCode === "root"){ |
|
|
|
dassetOptions.value.push(treeList[i]) |
|
|
|
}else { |
|
|
|
children.push(treeList[i]) |
|
|
|
} |
|
|
|
} |
|
|
|
dassetOptions.value[0].children = children |
|
|
|
dassetList.value = children |
|
|
|
getDirectoryTree({pageSize: 999}).then(res => { |
|
|
|
dassetOptions.value = [] |
|
|
|
let array = res.rows; |
|
|
|
if(array.length >0 && array[0].children && array[0].children.length>0){ |
|
|
|
array[0].children = array[0].children.filter(child => |
|
|
|
Boolean(child.contentName !== '我的收藏') // 更严谨的空值检查 |
|
|
|
); |
|
|
|
} |
|
|
|
cleanTreeData(array) |
|
|
|
dassetOptions.value = array |
|
|
|
}) |
|
|
|
|
|
|
|
// get_dasset_tree().then(res=>{ |
|
|
|
// let treeList = res.data |
|
|
|
// if(treeList.length > 0){ |
|
|
|
// let children = [] |
|
|
|
// dassetOptions.value = [] |
|
|
|
// for (let i = 0; i < treeList.length; i++) { |
|
|
|
// if (treeList[i].dassetCode === "root"){ |
|
|
|
// dassetOptions.value.push(treeList[i]) |
|
|
|
// }else { |
|
|
|
// children.push(treeList[i]) |
|
|
|
// } |
|
|
|
// } |
|
|
|
// dassetOptions.value[0].children = children |
|
|
|
// dassetList.value = children |
|
|
|
// } |
|
|
|
// }) |
|
|
|
} |
|
|
|
/** 通过条件过滤节点 */ |
|
|
|
const filterNode = (value, data) => { |
|
|
|
|