|
|
@@ -4,6 +4,9 @@
|
|
|
<template #header>
|
|
|
<div class="card-header" style="display: flex;align-items: center;justify-content: space-between;">
|
|
|
<span>目录:</span>
|
|
|
+ <div>
|
|
|
+ <el-icon @click="addDir" style="cursor: pointer;color: #409EFF;"><Plus /></el-icon>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<el-tree :expand-on-click-node="false" ref="treeRef" :filter-node-method="filterNode" :current-node-key="currentNodeKey" class="treeLeft"
|
|
|
@@ -175,7 +178,7 @@
|
|
|
<div style="display: flex;justify-content: space-between;align-items: center;">
|
|
|
|
|
|
</div>
|
|
|
- <el-button @click="testSql" style="margin-top: 2%;left: 92%;z-index:555;position: absolute;" type="info" plain size="mini">测试</el-button>
|
|
|
+ <el-button @click="testSql" style="margin-top: -3%;left: 93%;z-index:555;position: absolute;" type="info" plain size="mini">测试</el-button>
|
|
|
<el-tabs
|
|
|
v-model="activeName"
|
|
|
type="card"
|
|
|
@@ -346,6 +349,21 @@
|
|
|
<el-form-item label="说明:" prop="itemNotes">
|
|
|
<el-input v-model="formTree.itemNotes" style="width: 75%;" placeholder="" resize="none"/>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="节点:" prop="itemNotes" v-if="byNode">
|
|
|
+ <el-tree-select
|
|
|
+ v-model="valueNode"
|
|
|
+ :data="data"
|
|
|
+ check-strictly
|
|
|
+ :render-after-expand="true"
|
|
|
+ style="width: 75%;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="级别:" prop="itemNotes" v-if="byNode">
|
|
|
+ <el-radio-group v-model="radioLev" class="ml-4">
|
|
|
+ <el-radio label="1" size="small">同级</el-radio>
|
|
|
+ <el-radio label="2" size="small">子级</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="排序:" prop="itemNo">
|
|
|
<el-input-number v-model="formTree.itemNo" :min="1" style="width: 50%;"/>
|
|
|
</el-form-item>
|
|
|
@@ -681,6 +699,8 @@ const optionsShuLei = ref([
|
|
|
value:'文件数据集'
|
|
|
},
|
|
|
])
|
|
|
+const valueNode = ref('')
|
|
|
+const radioLev = ref('1')
|
|
|
const dsCodeSql = ref('')
|
|
|
const activeName = ref('first')
|
|
|
const uploadRef = ref(null);
|
|
|
@@ -713,6 +733,7 @@ const formZu = ref({
|
|
|
dcSort:1,
|
|
|
dcNote:''
|
|
|
});
|
|
|
+const byNode = ref(false)
|
|
|
const optionsDs = ref([])
|
|
|
const testSqlResult = ref('')
|
|
|
const currentNodeKey = ref('')
|
|
|
@@ -737,7 +758,12 @@ const rulesTree = reactive({
|
|
|
const formRefTree = ref();
|
|
|
const parDscode = ref('')
|
|
|
const parLev = ref(1)
|
|
|
-
|
|
|
+const parAr = ref([])
|
|
|
+function addDir() {
|
|
|
+ byNode.value = true
|
|
|
+ valueNode.value = data.value[0].value
|
|
|
+ dialogVisibleData.value = true
|
|
|
+}
|
|
|
function testSql(){
|
|
|
if(!dsCodeSql.value){
|
|
|
proxy.$modal.msgWarning("数据源编码不能为空");
|
|
|
@@ -809,7 +835,55 @@ function delAll(){
|
|
|
proxy.$modal.msgSuccess("删除成功");
|
|
|
}).catch(() => {});
|
|
|
}
|
|
|
+function addValueField(nodes) {
|
|
|
+ if (!Array.isArray(nodes)) return;
|
|
|
+
|
|
|
+ for (const node of nodes) {
|
|
|
+ // 添加value字段,其值等于id
|
|
|
+ node.value = node.id;
|
|
|
+
|
|
|
+ // 如果存在子节点,递归处理
|
|
|
+ if (node.children && Array.isArray(node.children)) {
|
|
|
+ addValueField(node.children);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+const flattenTree = (nodes) => {
|
|
|
+ const result = [];
|
|
|
+ const stack = [...nodes];
|
|
|
+ while (stack.length) {
|
|
|
+ const node = stack.pop();
|
|
|
+ result.push({ id: node.id, pid: node.pid }); // 只提取 id 和 pid
|
|
|
+ if (node.children && node.children.length) {
|
|
|
+ stack.push(...node.children);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+};
|
|
|
function addataXiang(){
|
|
|
+ console.log(data.value)
|
|
|
+ if(byNode.value===true){
|
|
|
+ if(radioLev.value==='2'){
|
|
|
+ formTree.value.catePid = valueNode.value
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ var par = ''
|
|
|
+ parAr.value.forEach(item => {
|
|
|
+ if (item.id === valueNode.value) {
|
|
|
+ par = item.pid
|
|
|
+ }
|
|
|
+ })
|
|
|
+ formTree.value.catePid = par
|
|
|
+ }
|
|
|
+ addCate(formTree.value).then(res=>{
|
|
|
+ if(res.code===200){
|
|
|
+ proxy.$modal.msgSuccess("修改成功");
|
|
|
+ getTree()
|
|
|
+ dialogVisibleData.value = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ else{
|
|
|
if(parLev.value===1){
|
|
|
formTree.value.catePid = parTree.value.pid
|
|
|
}
|
|
|
@@ -823,12 +897,15 @@ function addataXiang(){
|
|
|
dialogVisibleData.value = false
|
|
|
}
|
|
|
})
|
|
|
+ }
|
|
|
}
|
|
|
function add1Level(){
|
|
|
+ byNode.value = false
|
|
|
parLev.value = 1
|
|
|
dialogVisibleData.value = true
|
|
|
}
|
|
|
function addNextLevel(){
|
|
|
+ byNode.value = false
|
|
|
parLev.value = 2
|
|
|
dialogVisibleData.value = true
|
|
|
}
|
|
|
@@ -969,7 +1046,9 @@ function getTree(){
|
|
|
item.value = item.id
|
|
|
item.id = item.id
|
|
|
})
|
|
|
- })
|
|
|
+ addValueField(data.value)
|
|
|
+ parAr.value = flattenTree(data.value);
|
|
|
+ })
|
|
|
}
|
|
|
function addTa(){
|
|
|
formRefZu.value.validate(async (valid) => {
|