Преглед на файлове

修改自定义组件富文本

zhuliu преди 2 години
родител
ревизия
e3651d05db
променени са 1 файла, в които са добавени 26 реда и са изтрити 6 реда
  1. 26 6
      RMS-FrontEnd/src/views/components/common/RichText/index.vue

+ 26 - 6
RMS-FrontEnd/src/views/components/common/RichText/index.vue

@@ -50,6 +50,8 @@ export default {
   created() {},
   mounted() {},
   methods: {
+
+    //粘贴
    async handlePaste(e){
     var event = e || window.event
     event.preventDefault();
@@ -77,7 +79,6 @@ export default {
       if (!file) {
         return;
       }
-      var content = event.target.innerHTML
       var str = await this.fileToBase64(file)
       var randNum=Math.floor(Math.random()*(9999-1000))+1000;;
       var new_img = '<img key="'+ randNum +'" src="' + str + '" style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle">';
@@ -131,17 +132,35 @@ export default {
     },
     //设置光标位置
     setCursor(event,str,type){
-      var content = event.target.innerHTML
+          var content = event.target.innerHTML
+          // previousSibling
           var indexText = this.getColumn(event.target,window.getSelection())
           var index2 = 0
-          var str2 = content.slice(0, indexText) + str + content.slice(indexText);
-          event.target.innerHTML = str2
+          var childNodes = event.target.childNodes
+          if(!content){
+            if(event.target.nodeName == 'BR'){
+              event.target.parentNode.innerHTML = str
+              var selectedRange = document.createRange();
+              selectedRange.setStart(event.target,index2);
+              return false
+            }
+          }else{
+            content = content.replace(/&nbsp;/g,'\r')
+            var str2 = content.slice(0, indexText) + str + content.slice(indexText);
+            event.target.innerHTML = str2.replace(/\r/g,'&nbsp;')
+          }
+          
+            // console.log(event.currentTarget.childNodes)
+            // if(event.target.nodeName == 'BR'){
+            //   event.target.nodeName = 'SPAN'
+            //   event.target.innerHTML = '</br>' + str2
+            // }
           this.$nextTick(()=>{
             var selectedText = window.getSelection();
           var selectedRange = document.createRange();
           try{
-            for(var i=0;i<event.target.childNodes.length;i++){
-                var html = event.target.childNodes[i].outerHTML
+            for(var i=0;i<childNodes.length;i++){
+                var html = childNodes[i].outerHTML
                 if(type == 1){
                   if(html){
                     html = html.replace(/\r{1,}|\n{1,}|\r\n{1,}/g,'')
@@ -200,6 +219,7 @@ export default {
           }
         }
       }
+      return retIdx
     },
     // 将file文件上传转化为base64进行显示
     fileToBase64(file) {