yangg 6 hónapja
szülő
commit
9bec808a2d
1 módosított fájl, 81 hozzáadás és 18 törlés
  1. 81 18
      ui/src/views/system/document/create.vue

+ 81 - 18
ui/src/views/system/document/create.vue

@@ -488,7 +488,18 @@
             @node-drag-end="handleDragEnd"
           >
             <span class="custom-tree-node" slot-scope="{ data }">
-              <span>{{ data.label }}</span>
+              <span v-if="data.isEditing">
+                <el-input
+                  v-model="data.editingContent"
+                  size="mini"
+                  @blur="handleEditComplete(data)"
+                  @keyup.enter.native="handleEditComplete(data)"
+                  ref="editInput"
+                ></el-input>
+              </span>
+              <span v-else @dblclick="handleStartEdit(data)">
+                {{ data.label }}
+              </span>
             </span>
           </el-tree>
         </div>
@@ -511,7 +522,18 @@
                   @node-drag-end="handleDragEnd"
                 >
                   <span class="custom-tree-node" slot-scope="{ data }">
-                    <span>{{ data.label }}</span>
+                    <span v-if="data.isEditing">
+                      <el-input
+                        v-model="data.editingContent"
+                        size="mini"
+                        @blur="handleEditComplete(data)"
+                        @keyup.enter.native="handleEditComplete(data)"
+                        ref="editInput"
+                      ></el-input>
+                    </span>
+                    <span v-else @dblclick="handleStartEdit(data)">
+                      {{ data.label }}
+                    </span>
                   </span>
                 </el-tree>
               </div>
@@ -878,6 +900,8 @@ import {
   searchTemplate,
   getTemplateInfo,
   getAllCategory,
+  createTemplate,
+  updateTemplate,
 } from "@/api/template";
 import docAttr from "./com/components/Attribute/docAttr";
 import comList from "./com/components/Attribute/comList";
@@ -1202,7 +1226,10 @@ export default {
 
     /* 目录模板 */
     handleCatalogClick(data) {
-      // 处理目录点击事件
+      // 如果正在编辑,不触发其他操作
+      if (data.isEditing) return;
+      
+      // 其他点击处理逻辑...
       console.log("点击的目录项:", data);
     },
 
@@ -3846,21 +3873,11 @@ export default {
 
     // 处理目录项点击
     handleCatalogClick(data) {
-      // 更新选中的组件索引
-      this.comIndex = data.moduleIndex;
-
-      // 滚动到对应位置
-      this.$nextTick(() => {
-        const element = document.querySelector(`[data-module-index="${data.moduleIndex}"]`);
-        if (element) {
-          element.scrollIntoView({ behavior: 'smooth', block: 'center' });
-          // 添加高亮效果
-          element.classList.add('highlight');
-          setTimeout(() => {
-            element.classList.remove('highlight');
-          }, 2000);
-        }
-      });
+      // 如果正在编辑,不触发其他操作
+      if (data.isEditing) return;
+      
+      // 其他点击处理逻辑...
+      console.log("点击的目录项:", data);
     },
 
     // 处理组件内容更新
@@ -3966,6 +3983,52 @@ export default {
         this.$forceUpdate();
       });
     },
+
+    // 开始编辑目录
+    handleStartEdit(data) {
+      // 设置编辑状态和临时编辑内容
+      this.$set(data, 'isEditing', true);
+      this.$set(data, 'editingContent', data.label.split(' ').slice(1).join(' ')); // 只编辑内容部分,保留编号
+      
+      // 等待DOM更新后聚焦输入框
+      this.$nextTick(() => {
+        if (this.$refs.editInput && this.$refs.editInput[0]) {
+          this.$refs.editInput[0].focus();
+        }
+      });
+    },
+
+    // 完成编辑
+    handleEditComplete(data) {
+      if (!data.isEditing) return;
+
+      // 获取原始编号
+      const number = data.label.split(' ')[0];
+      
+      // 更新目录树节点的显示文本
+      data.label = `${number} ${data.editingContent}`;
+      
+      // 更新对应模块的目录属性
+      const { moduleIndex } = data;
+      const module = this.coms[moduleIndex];
+      if (module) {
+        const directoryAttr = module.attrs.find(attr => 
+          attr.type === 'Directory' && 
+          attr.number === number
+        );
+        
+        if (directoryAttr) {
+          directoryAttr.content = data.editingContent;
+        }
+      }
+
+      // 清除编辑状态
+      this.$delete(data, 'isEditing');
+      this.$delete(data, 'editingContent');
+      
+      // 强制更新视图
+      this.$forceUpdate();
+    },
   },
 };
 </script>