Browse Source

公用菜单

zhuliu 1 year ago
parent
commit
43e8021795

+ 1 - 0
src/config/index.js

@@ -4,4 +4,5 @@ export default {
     specialDays:['05-12','09-18','12-13'],
     host: window.location.host,
     staticURL: process.env.NODE_ENV === 'production' ? '139.224.24.90' : '192.168.1.24',
+    WebSocketPath: process.env.NODE_ENV === 'production' ? '139.224.24.90:8879' : '192.168.1.24:8877',
 }

+ 22 - 21
src/store/modules/contextMenu.js

@@ -36,27 +36,28 @@ export default {
       state.displayContextMenu = payload.displayContextMenu;
       state.clientX = payload.clientX;
       state.clientY = payload.clientY;
-      if(payload.menuContent && payload.menuContent.length>0)
-      {
-        var a = [
-            {
-                name: "波浪线",
-                method: "wave",
-            },
-            {
-                name: "下划线",
-                method: "underscore",
-            },
-            {
-                name: "高亮",
-                method: "addHighlight",
-            },
-            {
-                name: "批注",
-                method: "mark",
-            }
-        ]
-       state.menuContent =a.concat(payload.menuContent) ; 
+      var a = [
+        {
+            name: "波浪线",
+            method: "wave",
+        },
+        {
+            name: "下划线",
+            method: "underscore",
+        },
+        {
+            name: "高亮",
+            method: "addHighlight",
+        },
+        {
+            name: "批注",
+            method: "mark",
+        }
+    ]
+      if(payload.menuContent && payload.menuContent.length>0){
+        state.menuContent =a.concat(payload.menuContent) ; 
+      }else{
+        state.menuContent =a
       }
       
     },

+ 1 - 1
src/utils/common.js

@@ -229,7 +229,7 @@ export default {
 
   //查看图片
   checkViewer(guid) {
-    return `/fileManager/downloadFile?fileId=${guid}`
+    return `/api/fileManager/downloadFile?fileId=${guid}`
   },
 
    //查看专利详情

+ 1 - 1
src/utils/model/RichText/index.vue

@@ -95,7 +95,7 @@ export default {
       }
       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">';
+      var new_img = '<img key="'+ randNum +'" src="' + str + '" onClick="vm.checkImg(event)" style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle">';
 
       // 创建新的光标对象
 //       var range = document.createRange();

+ 8 - 0
src/utils/model/contextMenu/index.vue

@@ -73,6 +73,13 @@ export default {
             }
           }
         })
+        window.addEventListener('beforeunload',(e)=>{
+          this.$store.commit("SET_CONTEXT_MENU", 
+                {
+                    displayContextMenu: false, 
+                }
+              )
+        })
     })
    
   },
@@ -91,6 +98,7 @@ export default {
   },
   destroyed(){
     window.removeEventListener('mousedown',()=>{})
+    window.removeEventListener('beforeunload',()=>{})
   }
 };
 </script>

+ 8 - 1
src/utils/window.js

@@ -20,7 +20,14 @@ exports.install = function (Vue) {
     const component = findComponentDownward(this, 'myPopover')
     component.svgOnClick(e, val)
   }
-
+  Vue.prototype.checkImg = function (val) {
+    const component = findComponentDownward(this, 'myCommonUse')
+    component.checkImg(val)
+  }
+  Vue.prototype.selectMark = function (val) {
+    const component = findComponentDownward(this, 'myCommonUse')
+    component.selectMark(val)
+  }
 }
 
 function findComponentDownward(context, componentName) {

+ 5 - 1
src/views/components/import/mixins/index.js

@@ -6,7 +6,11 @@ export default{
         FieldDrawer
       },
     props:{
-        importData:{}
+        importData:{
+            default:()=>{
+                return {}
+            }
+        }
     },
     data() {
         return {

+ 14 - 1
src/views/layout/components/contextMenu.vue

@@ -2,6 +2,7 @@
   <div>
     <myContextMenu @operateDirectory="getMethod"></myContextMenu>
     <contrast ref="contrast"></contrast>
+    <my-ImageViewer v-if="showImg" :on-close="closeViewer" :url-list="[imgSrc]"></my-ImageViewer>
   </div>
 </template>
 
@@ -9,12 +10,15 @@
 import {mapGetters} from 'vuex'
 import contrast from '@/views/components/dialog/menuDialog/contrast.vue'
 export default {
+  name: 'myCommonUse',
   components: {
     contrast
   },
   props: {},
   data() {
     return {
+      showImg:false,
+      imgSrc:'',
     };
   },
   watch: {},
@@ -23,9 +27,18 @@ export default {
   },
   created() {},
   mounted() {
-    window.selectMark = this.selectMark
+    // window.selectMark = this.selectMark
   },
   methods: {
+    //查看图片
+    checkImg(e){
+      this.imgSrc = e.target.src
+    	this.showImg = true
+    },
+    //关闭图片弹窗
+    closeViewer(){
+      this.showImg = false
+    },
      //点击图标回显数据
      selectMark(id, selectType) {
       var Id = id.substring(1,id.length)

+ 2 - 2
src/views/layout/mixins/index.js

@@ -4,8 +4,8 @@ import Store from '@/store'
 export const webSocket = {
   methods: {
     connectWebSocket(userId) {
-      let webSocket = new WebSocket(`ws://${this.$c.staticURL}:8879/api/xiaoshi/ws/` + userId)
-      // let webSocket = new WebSocket(`ws://192.168.1.18:8877/api/xiaoshi/ws/` + userId)
+      // let webSocket = new WebSocket(`ws://${this.$c.staticURL}:8879/api/xiaoshi/ws/` + userId)
+      let webSocket = new WebSocket(`ws://${this.$c.WebSocketPath}/api/xiaoshi/ws/` + userId)
       Store.commit('SET_WEB_SOCKET', webSocket)
       webSocket.onopen = () => {
         console.log('WebSocket连接成功')

+ 0 - 1
src/views/product/components/index.vue

@@ -283,7 +283,6 @@ export default {
     },
     //预览图片
     checkImage(row){
-      // this.imgSrc =  `http://192.168.1.14:8801/fileManager/downloadFile?fileId=${item.systemFileList[0].guid}`
       this.imgSrc = this.$commonJS.checkViewer(row.systemFileList[0].guid)
       this.showImg = true
     },

File diff suppressed because it is too large
+ 1 - 1
src/views/project/patentCollection/components/mixins/index.js


+ 0 - 343
src/views/project/patentCollection/components/mixins/index2.js

@@ -1,343 +0,0 @@
-export const patentKeywordsHighlight = {
- 
-  computed: {
-    highlight() {
-      return this.$store.state.patent.highlight
-    },
-    contrastList() {
-      return this.$store.state.report.contrastList
-    }
-  },
-  mounted() {
-    window.mouseenter1=this.mouseenter1
-     window.mouseleave1=this.mouseleave1
-  },
-  methods: {
-    mouseenter1(e, id) {
-      var dom = document.getElementsByClassName(id)
-      var message = this.getMessage(id)
-      // 普通for循环可以拿到dom节点,forEach是拿不到dom节点
-      for (let i = 0; i < dom.length - 1; i++){
-        dom[i].classList.add('greenColor')
-        this.getChildNodesAdd(dom[i].childNodes)
-      }
-          // e.target是获取当前的,dom获取的是所有的class相同的节点
-        e.target.parentNode.classList.add("pizhuLightHeigh");
-        if (message.remark) {
-          e.target.parentNode.appendChild(this.addPara(message.remark,e));
-        }
-    },
-    // 添加背景色
-    getChildNodesAdd(dom) {
-      if (dom.length > 0) {
-        for (let m = 0; m < dom.length; m++){
-          if (dom[m].nodeType == 1) {
-            dom[m].classList.add('greenColor')
-          }
-          if (dom[m].childNodes.length > 0) {
-            this.getChildNodesAdd(dom[m].childNodes)
-          }
-        }
-      }
-    },
-    // 删除背景色
-    getChildNodesRemove(dom) {
-      if (dom.length > 0) {
-        for (let m = 0; m < dom.length; m++){
-          if (dom[m].nodeType == 1) {
-            dom[m].classList.remove('greenColor')
-          }
-          if (dom[m].childNodes.length > 0) {
-            this.getChildNodesRemove(dom[m].childNodes)
-          }
-        }
-      }
-    },
-    getMessage(Id) {
-      return this.contrastList.find(item => {
-        return item.id == Id
-      })
-    },
-    addPara(val, e) {
-      //创建div标签
-       var p = document.createElement("div");
-      //添加class
-      p.classList.add('showPiZhu')
-      if (e.clientY - 200 < 200 && e.clientX + 200 > document.documentElement.clientWidth) {
-        p.setAttribute('style','left:-200px')
-      }else if ((e.clientX + 200 > document.documentElement.clientWidth && e.clientY + 200 > document.documentElement.clientHeight) || e.clientX + 200 > document.documentElement.clientWidth) {
-         p.setAttribute('style','bottom:25px;left:-200px;') 
-      } else if((e.clientY + 200 > document.documentElement.clientHeight && e.clientX-200 < 200) || (e.clientY + 200 > document.documentElement.clientHeight && e.clientX-200 > 200)) {
-        p.setAttribute('style','bottom:20px;left:10px')
-      }
-      //创建文本节点
-      var text = document.createTextNode(val);
-      //将文本节点追加到元素节点中
-      p.appendChild(text);
-       return p
-  },
-    mouseleave1(e, id) {
-      var dom = document.getElementsByClassName(id)
-      e.target.parentNode.classList.remove("pizhuLightHeigh");
-      var message = this.getMessage(id)
-      if (message.remark) {
-        document.getElementsByClassName('showPiZhu')[0].remove()
-      }
-      for (let i = 0; i < dom.length - 1; i++){
-        dom[i].classList.remove('greenColor')
-        this.getChildNodesRemove(dom[i].childNodes)
-      }
-    },
-    getViewDom1(row, field,key) {
-      if(!row){
-        return '';
-      }
-      var html = ''
-      if(row.length == 1){
-        var str = row[0][key]
-        if(!str){
-          return ''
-        }
-        var arr = str.split(/\r\n/g)
-        arr.forEach(item=>{
-          html = html + `<p class="common"> ${item} </p>`
-        })
-      }else{
-        row.forEach(item => {
-          if(item[key]){
-             html = html + `<p class="common"> ${item[key]} </p>`
-          }
-        
-       })
-      }
-      
-     return this.getViewDom(html,field)
-    },
-    getViewDom(text, field) {
-      if(!text){
-        return ""
-      }
-      if (this.contrastList.length > 0) {
-        for (let i = 0; i < this.contrastList.length; i++) {
-          if (this.contrastList[i].patentNo == this.patent.patentNo) {
-            if (this.contrastList[i].scratchField.indexOf(field) != -1) {
-              var a = {
-                color: this.contrastList[i].color,
-                Type: this.contrastList[i].scratchType,
-                Id: this.contrastList[i].id,
-                column: this.contrastList[i].scratchField,
-                index: Number(this.contrastList[i].position),
-                text: this.contrastList[i].text,
-                remark: this.contrastList[i].remark,
-                temNode: text
-              }
-              text = this.AddClass1(a);
-            }
-          }
-        }
-      }
-
-       
-      if (!this.highlight.enable || !text) {
-        return text
-      }
-      try {
-
-        this.highlight.configs.map(item => {
-          const keywords = item.keywords.split(';')
-          for (let keyword of keywords) {
-            if (!keyword) {
-              continue
-            }
-            let sText = text
-            let num = -1
-            const rStr = new RegExp(keyword, "g")
-            const rHtml = new RegExp("\<.*?\>", "ig")
-            const sKey = `<span style="background: ${item.color};color: #fff">${keyword}</span>`
-            const aHtml = sText.match(rHtml)
-            sText = sText.replace(rHtml, '{~}')
-            sText = sText.replace(rStr, sKey)
-            sText = sText.replace(/{~}/g, () => {
-              num++
-              return aHtml[num]
-            })
-            text = sText
-          }
-        })
-
-      } catch (e) {
-      }
-      return text
-    },
-    SplitHtmlTag1(el) {
-      let temInnerHtml = el.trim();
-      let pattern = /<[^>]+>/g;
-      let Indexs = [];
-      let i = 0
-      var match = null
-      while ((match = pattern.exec(temInnerHtml)) != null) {
-        Indexs[i] = match;
-        i++;
-      }
-      var splitStrings = new Array();
-      i = 0;
-      var currentIndex = 0;
-      for (var index = 0; index < Indexs.length; index++) {
-        if (Indexs[index].index > currentIndex) {
-          splitStrings[i] = { "text": temInnerHtml.substring(currentIndex, Indexs[index].index), "type": "text" };
-          i++;
-          splitStrings[i] = { "text": Indexs[index][0], "type": "tag" };
-          i++;
-        } else {
-          splitStrings[i] = { "text": Indexs[index][0], "type": "tag" };
-          i++;
-        }
-        currentIndex = Indexs[index].index + Indexs[index][0].length;
-      }
-      if (currentIndex < temInnerHtml.length) {
-        splitStrings[i] = { "text": temInnerHtml.substring(currentIndex, temInnerHtml.length), "type": "text" };
-      }
-
-      return splitStrings;
-
-    },
-    AddClass1(selectObject) {
-      let el = selectObject.temNode;
-      // 将当前页面获取到的字符串进行处理,返回当前页面所有的标签及文本
-      var splitStrings = this.SplitHtmlTag1(el);
-      let bgColor = selectObject.color;
-      // 添加线及高亮
-      let startTag = '<span class="' + selectObject.Id + '" id="' + selectObject.Id + '" style="background-color:' + selectObject.color + '">';
-      if (selectObject.Type == 0) {
-        startTag = '<span class="' + selectObject.Id + '" id="' + selectObject.Id + '" style="border-bottom:2px solid ' + selectObject.color + '">';
-      }
-      if (selectObject.Type == 2) {
-        startTag = '<span class = "' + selectObject.Id + '" id="' + selectObject.Id + '" style = "text-decoration-line: underline;text-decoration-style: wavy ;text-decoration-color: ' + selectObject.color + '">';
-      }
-      // let imgTag = '<span  class="' + selectObject.Id + '" style="background-color:white !important;"><i class="el-icon-location-outline" style="vertical-align: super;background-color:white !important;" onclick="selectMark(\'' + selectObject.Id + '\')"  onmouseenter="mouseenter1(event,\'' + selectObject.Id + '\')"  onmouseleave="mouseleave1(event,\'' + selectObject.Id + '\')"></i></span>';
-      let imgTag = '<span  class="' + selectObject.Id + '" style="background-color:white !important;"><i class="iconfont icon-xinxi3" style="vertical-align: super;background-color:white !important;" onclick="selectMark(\'' + selectObject.Id + '\')"  onmouseenter="mouseenter1(event,\'' + selectObject.Id + '\')"  onmouseleave="mouseleave1(event,\'' + selectObject.Id + '\')"></i></span>';
-      let endTag = '</span>';
-      let elText = '';
-
-      splitStrings.forEach(function (item) {
-        if (item.type == 'text') {
-          elText = elText + item.text;
-        }
-      });
-      let Indexs = [];
-      let i = 0
-      if (selectObject.index < 0) {
-        let pattern = new RegExp(selectObject.text.replace(/[\r\n]/g, "").replace(/\ +/g, ""), "g");
-        while ((match = pattern.exec(elText)) != null) {
-          Indexs[i] = match;
-          i++;
-        }
-      } else {
-        Indexs[i] = [selectObject.text];
-        Indexs[i].index = selectObject.index;
-      }
-      Indexs.forEach(function (match) {
-        let currentIndex = 0;
-        let temSplitStrings = new Array();
-        splitStrings.forEach(function (item) {
-          if (item.type == 'text') {
-            if (item.text) {
-              if (match.index >= currentIndex && match.index < (currentIndex + item.text.length)) {
-                if (selectObject.column.indexOf('权利要求') != -1) {
-                  item.text = item.text.replace(/\r/g, ' ')
-                  if (item.text.match(/\r/g)) {
-                    match.index -= 1
-                  }
-
-                }
-                if (selectObject.column.indexOf('说明书') != -1) {
-                  // var b = selectObject.temNode.replace(/<[^>]+>/g, '')
-                  // if (b.substring(0, match.index).indexOf('\r') == -1) {
-                  //   var a = b.substring(0, match.index).match(/\n/g)
-                  //   if (a) {
-                  //     match.index -= a.length
-                  //   }
-                  // }
-                  item.text = item.text.replace(/\r/g, "")
-                }
-                
-                if ((match.index + match[0].length) <= (currentIndex + item.text.length) && item.text.indexOf(match[0]) != -1) {
-
-                  if (match.index > currentIndex) {
-                    temSplitStrings.push({ text: item.text.substring(0, match.index - currentIndex), type: 'text' });
-                  }
-                  temSplitStrings.push({ text: startTag, type: 'tag' });
-                  temSplitStrings.push({ text: match[0], type: 'text' });
-                  temSplitStrings.push({ text: imgTag, type: 'tag' });
-                  // }
-                  temSplitStrings.push({ text: endTag, type: 'tag' });
-
-                  if ((match.index + match[0].length) < (currentIndex + item.text.length)) {
-                    temSplitStrings.push({ text: item.text.substring((match.index + match[0].length) - currentIndex), type: 'text' });
-                  }
-                } else {
-                  if (item.text.indexOf(match[0]) != -1) {
-                    if (match.index > currentIndex) {
-                      temSplitStrings.push({ text: item.text.substring(0, match.index - currentIndex), type: 'text' });
-                    }
-                    if (temSplitStrings.length > 1) {
-                      temSplitStrings.push({ text: startTag, type: 'tag' });
-                    } else {
-                      temSplitStrings.push({ text: startTag, type: 'tag' });
-                    }
-
-                    temSplitStrings.push({ text: item.text.substring(match.index - currentIndex), type: 'text' });
-                    temSplitStrings.push({ text: endTag, type: 'tag' });
-                  } else {
-                    temSplitStrings.push({ text: item.text.substring(0, match.index - currentIndex), type: 'text' });
-                    temSplitStrings.push({ text: startTag, type: 'tag' });
-                    temSplitStrings.push({ text: item.text.substring( match.index - currentIndex,item.text.length), type: 'text' });
-                    temSplitStrings.push({ text: endTag, type: 'tag' });
-                  }
-                }
-              } else {
-                if ((match.index + match[0].length) <= (currentIndex + item.text.length) && (match.index + match[0].length) > currentIndex) {
-
-                  temSplitStrings.push({ text: startTag, type: 'tag' });
-                  temSplitStrings.push({ text: item.text.substring(0, match.index + match[0].length - currentIndex), type: 'text' });
-
-                  temSplitStrings.push({ text: imgTag, type: 'tag' });
-
-                  temSplitStrings.push({ text: endTag, type: 'tag' });
-                  if ((match.index + match[0].length) < (currentIndex + item.text.length)) {
-                    temSplitStrings.push({ text: item.text.substring((match.index + match[0].length - currentIndex)), type: 'text' });
-                  }
-                } else {
-                  if (match.index < currentIndex && (match.index + match[0].length) >= (currentIndex + item.text.length)) {
-
-                    temSplitStrings.push({ text: startTag, type: 'tag' });
-                    temSplitStrings.push(item);
-                    temSplitStrings.push({ text: endTag, type: 'tag' });
-                  } else {
-
-                    temSplitStrings.push(item);
-                  }
-                }
-              }
-
-              currentIndex = currentIndex + item.text.length;
-            } else {
-              temSplitStrings.push(item);
-            }
-          } else {
-            temSplitStrings.push(item);
-          }
-        });
-
-        splitStrings = temSplitStrings;
-      });
-
-      let temInnerHtml = '';
-      splitStrings.forEach(function (item) {
-        temInnerHtml = temInnerHtml + item.text;
-      });
-      return temInnerHtml;
-
-    },
-  }
-}

+ 1 - 1
src/views/project/patentDetails/components/patentDetails.vue

@@ -290,7 +290,7 @@ export default {
   },
   computed: {
     condition(){
-      return this.$s.getSession('import')
+      return this.$s.getSession('import') || {}
     }
   },
   created() { },

+ 1 - 1
src/views/project/patentDetails/components/patentMessage/mixins/index.js

@@ -76,7 +76,7 @@ export const patentDetails={
         },
         //打开弹窗
         showMenu(e){
-            var menuContent = null
+            var menuContent = []
             if(this.reportType == 1 || this.reportType == 2){
                 menuContent=[
                     {

+ 5 - 5
src/views/report/InvalidResponse/components/dialog/addEvidenceReason.vue

@@ -35,7 +35,7 @@
             <div>
                 <div  style="display:flex;justify-content:space-between;padding-bottom:10px">
                     <div>无效证据</div>
-                    <div v-if="!ifSecondInvalid">
+                    <div v-if="!ifSecondInvalid || showFeature">
                         <el-button type="primary" size="small" @click="featuresHistory" v-if="['4','8'].indexOf(form.statutesId) ==-1">特征拆分历史</el-button>
                         <el-button type="primary" size="small" @click="splitClaim" v-if="['4','8'].indexOf(form.statutesId) ==-1">自动拆分</el-button>
                         <el-button type="primary" size="small" @click="addFeature">添加特征</el-button>
@@ -53,7 +53,7 @@
                         <el-table-column prop="featureOrder" label="特征内容" >
                             <template slot-scope="scope">
                                 <div v-if="['4','8'].indexOf(form.statutesId) ==-1">
-                                   <div v-if="!ifSecondInvalid">
+                                   <div v-if="!ifSecondInvalid || showFeature">
                                         <el-input type="textarea" autosize v-model="scope.row.featureText" @blur="change(scope.row)"></el-input>
                                     </div>
                                     <div v-else>
@@ -153,7 +153,8 @@ export default {
         row:{},
         descriptions:'',
         editProofGroupDescription:false,
-        addFeatures:[]
+        addFeatures:[],
+        showFeature:false
     };
   },
   watch: {},
@@ -254,7 +255,6 @@ export default {
    },
     //打开弹窗
     open(form,feature){
-        console.log(feature)
         this.form = form
         this.features = []
         this.addFeatures = []
@@ -303,7 +303,7 @@ export default {
                 }
                 data = this.features.concat(this.addFeatures)
             }else{
-                data = this.feature
+                data = this.features
             }
             this.btnLoading = true
             var params = {

+ 1 - 1
src/views/report/InvalidResponse/components/powerManage/powerManage.vue

@@ -155,7 +155,7 @@ export default {
                 }
             })
             if(obj){
-                return obj.comment
+                return obj.description
             }
         }
         return ''