nanjingliujinyu 5 tháng trước cách đây
mục cha
commit
8a7b611537

+ 2 - 1
ruoyi-ui/src/views/index.vue

@@ -1,5 +1,6 @@
 <template>
-  
+    <div>
+    </div>
 </template>
 <script setup>
 import { ref } from 'vue';

+ 1 - 1
ruoyi-ui/src/views/register/componentReg/index.vue

@@ -1181,7 +1181,7 @@ async function submit(){
         if(formJi.value.devlang==='1'){
           formJi.value.devlang = elseLan.value
         }
-        delete formJi.value.msort
+        delete formJi.value.msort 
         formJi.value.devkind = 'APP'
         formJi.value.cateid = '776eba74-eaeb-47ca-8436-e05ed87b68ec'
         addModel(formJi.value).then(res=>{

+ 82 - 3
ruoyi-ui/src/views/register/modelData/dataJi.vue

@@ -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) => {

+ 14 - 3
ruoyi-ui/src/views/standardization/modeling/index.vue

@@ -136,8 +136,10 @@
               style="border: 0.5px solid #c8c9cc;border-radius: 6px;border-radius: 6px;min-height: 8vh;min-width: 13vw">
                 <div style='width:100%;font-size:10px;display:flex;align-items:flex-end;height: 10px;margin-top: 2%;justify-content: space-between;'>
                   <img style="width: 15px;height:15px;border-radius: 12px;" src="@/assets/images/icon-HTTP.png" alt="">
-                  <div style="margin-left:3%;font-weight: 500;">
-                    {{ specialNodeProps.data.label   }}
+                  <div style="margin-left:3%;font-weight: 500;"> 
+                    <el-input class="custom-no-border" placeholder="" type="primary" v-model="specialNodeProps.data.label" size="mini" text 
+                    style="margin-left: 0%;font-size: 10px;height: 15px;width: 150%;" ></el-input>
+                    <!-- {{ specialNodeProps.data.label}} -->
                   </div>
                   <el-icon style="cursor: pointer;margin-left: auto;"><CaretRight /></el-icon>
                   <el-icon @click.stop="delNode(specialNodeProps)" style="cursor: pointer;color: #F56C6C;margin-left: 2%;"><Delete /></el-icon>
@@ -544,7 +546,16 @@ watch(nodes, (newNodes) => {
 @import '@vue-flow/core/dist/theme-default.css';
 </style>
 <style scoped>
-
+.custom-no-border :deep(.el-input__wrapper) {
+  box-shadow: none !important; /* 移除默认阴影(即边框) */
+  border: none !important;     /* 双重保障 */
+}
+/* 处理悬停和聚焦状态 */
+.custom-no-border :deep(.el-input__wrapper:hover),
+.custom-no-border :deep(.el-input__wrapper:focus-within) {
+  box-shadow: none !important;
+  border: none !important;
+}
 :deep(.treeLeft) .el-tree-node__content {
   display: flex !important;
   height: 28px;                  /* 按设计稿调整高度 */