Explorar el Código

Merge branch 'Syouhouu_Behaviorfix' of FanYanPeng/EAIFrontend into host-nju

JiangPengYu hace 6 meses
padre
commit
2f6d2e448c

+ 1 - 1
src/components/AIChatter/AIChatter.vue

@@ -253,7 +253,7 @@
       AICount.value++
     } else {
       ElMessage.warning("单次只能使用10次对话功能")
-      AICount.value++
+      // AICount.value++
       return
     }
     data.loading = true;

+ 1 - 1
src/components/QuillEditor/Editor.vue

@@ -94,7 +94,7 @@ import {ElMessage} from "element-plus";
         Object.assign(opsObj, op);
       });
       delete opsObj.attributes;
-
+      //有bug,当replace时,既有delete又有insert,此时会被误判为删除操作
       if(deleteOps.length > 0){ //删除操作
         // 获取删除操作的位置和长度
         const deleteStart = delta.ops.find(op => 'retain' in op).retain || 0;   // 删除起始位置

+ 36 - 13
src/components/QuillEditor/QuillEditor.vue

@@ -51,15 +51,35 @@
     changeRecordList.push(event)
   });
 
+const normalizeKey = (event: KeyboardEvent) => {
+  let key = event.key
+
+  // Shift + 数字 → 符号(包含 0 -> ))
+  const shiftNumMap: Record<string, string> = {
+    '1': '!', '2': '@', '3': '#', '4': '$', '5': '%',
+    '6': '^', '7': '&', '8': '*', '9': '(', '0': ')'
+  }
+  if (event.shiftKey && shiftNumMap[key]) {
+    return shiftNumMap[key]
+  }
+
+  // Shift + 字母 → 大写
+  if (event.shiftKey && /^[a-z]$/i.test(key)) {
+    return key.toUpperCase()
+  }
+
+  return key
+}
+
   const handleKeydown = (event: KeyboardEvent) => {
     // 增加对Shift组合键的识别
     // 在handleKeyup中增加对组合键的识别
-    let key = event.key
-    if (event.shiftKey && /^[0-9]$/.test(key)) {
-      key = "!@#$%^&*()"[parseInt(key) - 1]; // 映射Shift+数字到符号
-    } else if(event.shiftKey && /^[a-z]$/i.test(event.key) ){
-      key = event.key.toUpperCase()
-    }
+    let key = normalizeKey(event)
+    // if (event.shiftKey && /^[0-9]$/.test(key)) {
+    //   key = "!@#$%^&*()"[parseInt(key) - 1]; // 映射Shift+数字到符号
+    // } else if(event.shiftKey && /^[a-z]$/i.test(event.key) ){
+    //   key = event.key.toUpperCase()
+    // }
 
     // 存储down事件信息到keyEventMap中
     if (!keyEventMap[key]) {
@@ -107,9 +127,12 @@
     return result
   }
 
+const isCtrlOrMeta = (event: KeyboardEvent) => event.ctrlKey === true || event.metaKey === true
+
+
   const handleKeyup = (event: KeyboardEvent) => {
     const realTime = dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss.SSS")
-    const key = event.key;
+    const key = normalizeKey(event);
     // 处理所有与该按键key有关的keydown行为
     while (keyEventMap[key] && keyEventMap[key].length > 0) {
       // 取得keydown事件信息
@@ -151,23 +174,23 @@
           }
 
         }
-        // 粘贴
-        else if ((key === 'c' || key === 'C') && event.ctrlKey === true) {
+        // 复制
+        else if ((key === 'c' || key === 'C') && isCtrlOrMeta(event)) {
           changeRecordList[i] = {
             ...changeRecordList[i],
             ...combinedEvent,
             pauseTime: combinedEvent.startStamp - getPause(i),
-            type: 'paste'
+            type: 'copy'
           }
           break
         }
-        // 复制
-        else if ((key === 'v' || key === 'V') && event.ctrlKey === true) {
+        // 粘贴
+        else if ((key === 'v' || key === 'V') && isCtrlOrMeta(event)) {
           changeRecordList[i] = {
             ...changeRecordList[i],
             ...combinedEvent,
             pauseTime: combinedEvent.startStamp - getPause(i),
-            type: 'copy'
+            type: 'paste'
           }
           break
         }