Browse Source

专利详情页面

zhuhao 2 years ago
parent
commit
3177a3c84b

File diff suppressed because it is too large
+ 47 - 3
src/icons/icon/iconfont.css


File diff suppressed because it is too large
+ 1 - 1
src/icons/icon/iconfont.js


+ 77 - 0
src/icons/icon/iconfont.json

@@ -6,6 +6,83 @@
   "description": "",
   "description": "",
   "glyphs": [
   "glyphs": [
     {
     {
+      "icon_id": "666885",
+      "name": "设置",
+      "font_class": "shezhi1",
+      "unicode": "e68f",
+      "unicode_decimal": 59023
+    },
+    {
+      "icon_id": "3456457",
+      "name": "设置",
+      "font_class": "shezhi2",
+      "unicode": "e70f",
+      "unicode_decimal": 59151
+    },
+    {
+      "icon_id": "13102581",
+      "name": "我的高亮",
+      "font_class": "wodegaoliang",
+      "unicode": "e6e5",
+      "unicode_decimal": 59109
+    },
+    {
+      "icon_id": "7450639",
+      "name": "收缩",
+      "font_class": "shousuo",
+      "unicode": "e665",
+      "unicode_decimal": 58981
+    },
+    {
+      "icon_id": "8224810",
+      "name": "展开",
+      "font_class": "zhankai",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "687392",
+      "name": "返回",
+      "font_class": "fanhui",
+      "unicode": "e6ff",
+      "unicode_decimal": 59135
+    },
+    {
+      "icon_id": "2678594",
+      "name": "对比",
+      "font_class": "duibi",
+      "unicode": "e647",
+      "unicode_decimal": 58951
+    },
+    {
+      "icon_id": "10360970",
+      "name": "创建项目",
+      "font_class": "chuangjianxiangmu",
+      "unicode": "e61d",
+      "unicode_decimal": 58909
+    },
+    {
+      "icon_id": "14997319",
+      "name": "批注",
+      "font_class": "pizhu",
+      "unicode": "e611",
+      "unicode_decimal": 58897
+    },
+    {
+      "icon_id": "23008574",
+      "name": "批注",
+      "font_class": "a-24_nor",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "24889722",
+      "name": "对比",
+      "font_class": "duibi1",
+      "unicode": "e6ce",
+      "unicode_decimal": 59086
+    },
+    {
       "icon_id": "383629",
       "icon_id": "383629",
       "name": "信息",
       "name": "信息",
       "font_class": "xinxi4",
       "font_class": "xinxi4",

BIN
src/icons/icon/iconfont.ttf


BIN
src/icons/icon/iconfont.woff


BIN
src/icons/icon/iconfont.woff2


+ 251 - 204
src/views/workspace/folder/articles/ContrastIndex.vue

@@ -1,91 +1,130 @@
  
  
 <template>
 <template>
-
-<div class="patent-articles" >
+  <div class="patent-articles">
     <el-container v-loading="loading">
     <el-container v-loading="loading">
-      <!-- <el-aside width="250px" class="patent-articles-menu">
-        <el-container>
-          <el-header style="height: 180px;">
-            <patent-list :patent-id="patentId" :project-id="projectId" @on-change="onChange" />
-          </el-header>
-          <el-main>
-            <patent-image v-if="patent.image" :project-id="projectId" :patent="patent" :patent-id="patentId" @refresh="getPatent(patentId)"></patent-image>
-          </el-main>
-        </el-container>
-      </el-aside> -->
-      <el-container >
-        <el-header class="patent-articles-title">
+      <el-container>
+        <el-header  style="min-height: 100px !important;height: auto;">
           <div class="patent-articles-title-box">
           <div class="patent-articles-title-box">
-            <div style="position:relative">
-              <img src="../../../../assets/visual/fixed.png" width="20px" height="20px" v-if="fix===true" @click="qx" style="position:absolute;top:5px;left:5px"/>
-              <img src="../../../../assets/visual/unfixed.png" width="20px" height="20px" v-if="fix===false"  @click="gd" style="position:absolute;top:5px;left:5px"/>
-              <!-- <div>
-                 <patent-list :patent-id="patentId" :project-id="projectId" @on-change="onChange" />
-              </div> -->
-               <div>
-              <span v-html="getViewDom(patent.patentNo)"></span>
-              <el-tag type="primary" effect="dark" size="mini" class="margin-left_10" v-if="patent.simpleStatus">{{ patent.simpleStatus }}</el-tag>
-            </div>
-            <div style="color: #6b6868; font-size: 15px;border-bottom: 1px solid #e6e6e6;padding-bottom: 5px;">
-              <span v-html="getViewDom2(patent, 'name')"></span>
-              <el-link v-if="projectId" type="primary" @click.native="handleChange(patent, 'name')" style="margin-left: 10px;margin-top: -3px;">
-                <span v-if="!patent.change">切换译文</span>
-                <span v-else>切换原文</span>
-              </el-link>
-            </div>
-            <div style="position: absolute;right: 0;top:0;">
-                  <PatentMark :patentNo="patent.patentNo" @biaozhu="getBiaoZhu"></PatentMark>
-            </div>
+            <div style="display: flex;justify-content: space-between;align-items: center;">
+              <div style="text-align: start;padding-left: 10px;">
+
+                <div style="width: 260px;">
+                  <img src="../../../../assets/visual/fixed.png" width="20px" height="20px" v-if="fix === true" @click="qx"
+                    style="" />
+                  <img src="../../../../assets/visual/unfixed.png" width="20px" height="20px" v-if="fix === false"
+                    @click="gd" style="" />
+                  <span v-html="getViewDom(patent.patentNo)"></span>
+                  <el-tag type="primary" effect="dark" size="mini" class="margin-left_10" v-if="patent.simpleStatus">{{
+                    patent.simpleStatus }}</el-tag>
+                </div>
+
+                <div style="color: #6b6868; font-size: 15px;padding-bottom: 5px;">
+                  <span v-html="getViewDom2(patent, 'name')"></span>
+                  <el-link v-if="projectId" type="primary" @click.native="handleChange(patent, 'name')"
+                    style="margin-left: 10px;margin-top: -3px;">
+                    <span v-if="!patent.change">切换译文</span>
+                    <span v-else>切换原文</span>
+                  </el-link>
+                </div>
+              </div>
+
+                <PatentMark :patentNo="patent.patentNo" @biaozhu="getBiaoZhu"></PatentMark>
+
+              <div style="display: flex;justify-content: space-between;margin-right: 10px;align-items: center;">
+                <el-dropdown size="medium" style="margin-right:10px" v-if="$permission('/workspace/createReport')">
+                  <el-button type="primary" size="small">
+                    创建报告<i class="el-icon-arrow-down el-icon--right"></i>
+                  </el-button>
+                  <el-dropdown-menu slot="dropdown" style="margin-top:0px">
+                    <!-- 遍历按钮 -->
+                    <el-dropdown-item @click.native="handleAnalyse(0)"
+                      v-if="$permission('/workspace/createReport/invalid')">无效分析</el-dropdown-item>
+                    <el-dropdown-item @click.native="handleAnalyse(1)"
+                      v-if="$permission('/workspace/createReport/invalid')">第三方意见</el-dropdown-item>
+                    <el-dropdown-item @click.native="handleAnalyse(2)"
+                      v-if="$permission('/workspace/createReport/invalid')">稳定性分析</el-dropdown-item>
+                    <el-dropdown-item @click.native="handleAnalyse(4)"
+                      v-if="$permission('/workspace/createReport/tort')">侵权分析</el-dropdown-item>
+                    <el-dropdown-item @click.native="handleAnalyse(5)"
+                      v-if="$permission('/workspace/createReport/avoidDesign')">回避设计</el-dropdown-item>
+                    <el-dropdown-item @click.native="handleAnalyse(7)"
+                      v-if="$permission('/workspace/createReport/reInvalid')">无效应对</el-dropdown-item>
+                  </el-dropdown-menu>
+                </el-dropdown>
+
+                <el-button type="primary" size="small" @click="handleSelect('PatentExport')">导出文档</el-button>
+              </div>
             </div>
             </div>
-           
-            <div  style="  position: relative;">
-              <el-link v-for="item in menuList" :type="activeMenu === item.value ? 'primary' : undefined" v-if="!item.show" :disabled="(item.value === 'PatentExport' ? !$permission('/workspace/details/exportDocument'): false) ||item.value === 'PatentPDF'?!(patent.pdf && patent.pdf.length>0):false" @click.native="handleSelect(item.value)">
-              {{ item.label }}
-              <span v-if="item.value == 'PatentImage'|| item.value=='PatentPDF'" @click.stop="ending(item.value)">
-                  <el-popover
-                    placement="right"
-                    width="400"
-                    trigger="click">
-                    <el-radio v-for="(item, index) in positionList" :key="index" v-model="radio" @input="changePosition"  :label="item.value">{{item.label}}</el-radio>
+
+            <div style="  position: relative; border-top: 1px solid #e6e6e6;">
+              <el-link v-for="item in menuList" :type="activeMenu === item.value ? 'primary' : undefined"
+                :key="item.value" v-if="!item.show"
+                :disabled="(item.value === 'PatentExport' ? !$permission('/workspace/details/exportDocument') : false) || item.value === 'PatentPDF' ? !(patent.pdf && patent.pdf.length > 0) : false"
+                @click.native="handleSelect(item.value)">
+                {{ item.label }}
+                <span v-if="item.value == 'PatentImage' || item.value == 'PatentPDF'" @click.stop="ending(item.value)">
+                  <el-popover placement="right" width="400" trigger="click">
+                    <el-radio v-for="(item, index) in positionList" :key="index" v-model="radio" @input="changePosition"
+                      :label="item.value">{{ item.label }}</el-radio>
                     <i class="el-icon-setting" slot="reference"></i>
                     <i class="el-icon-setting" slot="reference"></i>
                   </el-popover>
                   </el-popover>
                 </span>
                 </span>
               </el-link>
               </el-link>
-              <el-link v-for="item in menuList2" :type="activeMenu === item.value ? 'primary' : undefined" :disabled="item.value === 'PatentExport' ? !$permission('/workspace/details/exportDocument'): false " @click.native="handleSelect(item.value)">{{ item.label }}</el-link>
-              <el-tooltip class="item" effect="dark" :content="(showRight ? '隐藏' : '显示') + '右侧菜单'" placement="top" v-if="showcard==true">
-                <i :class="showRight ? 'el-icon-s-unfold' : 'el-icon-s-fold'" style="font-size: 25px;position: absolute; right: 10px; margin-top: 5px;color: #2f2f2f; cursor: pointer" @click="showRight = !showRight"></i>
+              <el-link v-for="item in menuList2" :type="activeMenu === item.value ? 'primary' : undefined"
+                :key="item.value"
+                :disabled="item.value === 'PatentExport' ? !$permission('/workspace/details/exportDocument') : false"
+                @click.native="handleSelect(item.value)">{{ item.label }}</el-link>
+              <el-tooltip class="item" effect="dark" :content="(showRight ? '隐藏' : '显示') + '右侧菜单'" placement="top">
+                <i :class="showRight ? 'el-icon-s-unfold' : 'el-icon-s-fold'"
+                  style="font-size: 25px;position: absolute; right: 10px; margin-top: 5px;color: #2f2f2f; cursor: pointer"
+                  @click="showRight = !showRight"></i>
               </el-tooltip>
               </el-tooltip>
             </div>
             </div>
           </div>
           </div>
         </el-header>
         </el-header>
+
+
+
+
         <el-main class="patent-articles-content" style="padding-left:30px">
         <el-main class="patent-articles-content" style="padding-left:30px">
-          <div class="patent-articles-content-left" :style="{ width: showRight ? 'calc(100% - 321px)' : 'calc(100% - 21px)'}">
+          <div class="patent-articles-content-left"
+            :style="{ width: showRight ? 'calc(100% - 321px)' : 'calc(100% - 21px)' }">
             <div class="dom1 box1" v-dragControllerDiv1 style="display:flex;width:100%">
             <div class="dom1 box1" v-dragControllerDiv1 style="display:flex;width:100%">
-              <div class="component left1" style="width:100%;overflow-y:auto;overflow-x: hidden;" :style="{height:height}">
-                <component style="width:100%;height:100%" :activeName="activeName" :is="componentName" :project-id="projectId" :patent="patent" :patentNo="[patent.patentNo]" :domId="patent.patentNo + '1'" :patent-id="patentId" :pdfType1="getPDFType()" @refresh="getPatent(patentId)"></component>
+              <!-- <div class="component left1" style="width:100%;overflow-y:auto;overflow-x: hidden;" :style="{height:height}"> -->
+              <div class="component left1" style="width:100%;height: 98%;">
+                <component style="width:100%;height:100%" :activeName="activeName" :is="componentName"
+                  :project-id="projectId" :patent="patent" :patentNo="[patent.patentNo]" :domId="patent.patentNo + '1'"
+                  :patent-id="patentId" :pdfType1="getPDFType()" @refresh="getPatent(patentId)"></component>
+              </div>
+              <div class="resize2" title="收缩侧边栏" v-show="(radio == 2 || radio == 3) && activeMenu != activeMenu2">
+                <p><span>˙</span><span>˙</span><span>˙</span></p>
+              </div>
+              <div class="resize1" title="收缩侧边栏" v-show="(radio == 4 || radio == 5) && activeMenu != activeMenu2">
+                <span>⋮</span></div>
+              <div v-show="radio != 1 && activeMenu != activeMenu2" class="mid1"
+                :style="{ height: (radio == 4 || radio == 5) ? height : '280px' }"
+                style="width:450px;height:280px;border:1px solid #E4E7ED;overflow-y:auto;overflow-x: hidden;">
+                <component :is="activeMenu2" :project-id="projectId" :patent="patent" :patent-id="patentId"
+                  :pdfType1="(patent.pdf && patent.pdf.length > 0) ? patent.pdf[0].type : 2" :sign="true"></component>
               </div>
               </div>
-              <div class="resize2" title="收缩侧边栏" v-show="(radio == 2 || radio == 3) && activeMenu != activeMenu2"><p><span>˙</span><span>˙</span><span>˙</span></p></div>
-              <div class="resize1" title="收缩侧边栏" v-show="(radio == 4 || radio == 5) && activeMenu != activeMenu2"><span>⋮</span></div>
-            <div v-show="radio != 1 && activeMenu != activeMenu2" class="mid1" :style="{height:(radio == 4 || radio == 5)?height:'280px'}" style="width:450px;height:280px;border:1px solid #E4E7ED;overflow-y:auto;overflow-x: hidden;">
-              <component :is="activeMenu2" :project-id="projectId" :patent="patent" :patent-id="patentId" :pdfType1="(patent.pdf && patent.pdf.length>0)?patent.pdf[0].type:2" :sign="true"></component>
-            </div>
             </div>
             </div>
           </div>
           </div>
           <div class="patent-articles-content-right" v-if="showRight">
           <div class="patent-articles-content-right" v-if="showRight">
             <el-container>
             <el-container>
-              <el-header v-if="showcard==true">
+              <el-header v-if="showcard == true">
                 <div class="patent-articles-option">
                 <div class="patent-articles-option">
                   <el-tabs v-model="activeOption" type="card">
                   <el-tabs v-model="activeOption" type="card">
                     <el-tab-pane label="标引" name="PatentField"></el-tab-pane>
                     <el-tab-pane label="标引" name="PatentField"></el-tab-pane>
                     <!-- <el-tab-pane label="高亮" name="PatentKeywordsHighlight"></el-tab-pane> -->
                     <!-- <el-tab-pane label="高亮" name="PatentKeywordsHighlight"></el-tab-pane> -->
-                    <el-tab-pane label="注释" name="PatentAnnotation" :disabled="!($permission('/workspace/details/notes') && $r(projectId,[1,2]))"></el-tab-pane>
+                    <el-tab-pane label="注释" name="PatentAnnotation"
+                      :disabled="!($permission('/workspace/details/notes') && $r(projectId, [1, 2]))"></el-tab-pane>
                   </el-tabs>
                   </el-tabs>
                 </div>
                 </div>
               </el-header>
               </el-header>
               <el-main>
               <el-main>
                 <keep-alive>
                 <keep-alive>
                   <component :is="activeOption" :project-id="projectId" :patent-id="patentId"></component>
                   <component :is="activeOption" :project-id="projectId" :patent-id="patentId"></component>
-                    <component :is="activeOption" :project-id="projectId" :patent-id="patentId"></component>
+                  <component :is="activeOption" :project-id="projectId" :patent-id="patentId"></component>
                 </keep-alive>
                 </keep-alive>
               </el-main>
               </el-main>
             </el-container>
             </el-container>
@@ -95,14 +134,8 @@
     </el-container>
     </el-container>
     <div class="content-main" style="padding-left:40px"></div>
     <div class="content-main" style="padding-left:40px"></div>
   </div>
   </div>
-  
-
-
- 
-  
-
 </template>
 </template>
-
+  
 <script>
 <script>
 import { changeTranslation, patentKeywordsHighlight } from '../components/mixins'
 import { changeTranslation, patentKeywordsHighlight } from '../components/mixins'
 import PatentList from './components/PatentList'
 import PatentList from './components/PatentList'
@@ -135,7 +168,7 @@ import HistoryOfInvalidEvidence from './components/history/HistoryOfInvalidEvide
 import InvalidEvidencePush from './components/history/InvalidEvidencePush.vue'
 import InvalidEvidencePush from './components/history/InvalidEvidencePush.vue'
 
 
 export default {
 export default {
-  mixins: [patentKeywordsHighlight, changeTranslation,changeWidth],
+  mixins: [patentKeywordsHighlight, changeTranslation, changeWidth],
   components: {
   components: {
     ContrastIndex,
     ContrastIndex,
     PatentList,
     PatentList,
@@ -161,46 +194,45 @@ export default {
     HistoryOfInvalidEvidence,
     HistoryOfInvalidEvidence,
     InvalidEvidencePush
     InvalidEvidencePush
   },
   },
-  props:{
-    patentMessage:{},
-    patentNo:String,
-    reportId:{},
-    required:true
+  props: {
+    patentMessage: {},
+    patentNo: String,
+    required: true
   },
   },
   data() {
   data() {
     return {
     return {
-      radio:1,
-      height:null,
-      positionList:[
+      radio: 1,
+      height: null,
+      positionList: [
         {
         {
-          label:'tab展示',
-          value:1
+          label: 'tab展示',
+          value: 1
         },
         },
         {
         {
-          label:'上边展示',
-          value:2
+          label: '上边展示',
+          value: 2
         },
         },
         {
         {
-          label:'下边展示',
-          value:3
+          label: '下边展示',
+          value: 3
         },
         },
         {
         {
-          label:'左边展示',
-          value:4
+          label: '左边展示',
+          value: 4
         },
         },
         {
         {
-          label:'右边展示',
-          value:5
+          label: '右边展示',
+          value: 5
         },
         },
       ],
       ],
-      showcard:false,
-      fix:false,
+      showcard: false,
+      fix: false,
       showRight: false,
       showRight: false,
       patentId: parseInt(this.$route.params.id || this.patentMessage || 0),
       patentId: parseInt(this.$route.params.id || this.patentMessage || 0),
       projectId: this.$route.query.id,
       projectId: this.$route.query.id,
       patent: {},
       patent: {},
       activeMenu: 'PatentBasic',
       activeMenu: 'PatentBasic',
-      activeMenu2:'',
+      activeMenu2: '',
       componentName: 'PatentBasic',
       componentName: 'PatentBasic',
       activeOption: 'PatentField',
       activeOption: 'PatentField',
       loading: false,
       loading: false,
@@ -214,8 +246,8 @@ export default {
           label: '权利要求'
           label: '权利要求'
         },
         },
         {
         {
-          value: 'PatentImage' ,
-          label:'附图'
+          value: 'PatentImage',
+          label: '附图'
         },
         },
         {
         {
           value: 'PatentInstruction',
           value: 'PatentInstruction',
@@ -233,23 +265,23 @@ export default {
           value: 'PatentPDF',
           value: 'PatentPDF',
           label: '说明书'
           label: '说明书'
         },
         },
+        // {
+        //   value: 'PatentExport',
+        //   label: '导出文档'
+        // },
         {
         {
-          value: 'PatentExport',
-          label: '导出文档'
-        },
-        {
-          value:'Permit',
-          label:'许可历史'
+          value: 'Permit',
+          label: '许可历史'
         },
         },
         {
         {
-          value:'ProductManage',
-          show:this.$permission('/workspace/product')?false:true,
-          label:'商品化'
+          value: 'ProductManage',
+          show: this.$permission('/workspace/product') ? false : true,
+          label: '商品化'
         },
         },
         {
         {
-          value:'patentWorth',
-          show:this.$permission('/workspace/patent/worth')?false:true,
-          label:'价值曲线'
+          value: 'patentWorth',
+          show: this.$permission('/workspace/patent/worth') ? false : true,
+          label: '价值曲线'
         }
         }
       ],
       ],
       menuList2: [
       menuList2: [
@@ -278,64 +310,64 @@ export default {
           label: '其他参考资料'
           label: '其他参考资料'
         },
         },
       ],
       ],
-      activeName:'0',
+      activeName: '0',
     }
     }
   },
   },
   created() {
   created() {
     // console.log(this.patentMessage)
     // console.log(this.patentMessage)
     // this.onChange(this.patentMessage)
     // this.onChange(this.patentMessage)
   },
   },
-  watch:{
-    patentMessage(val,oldval){
-      if(val){
-        this.patentId=val
+  watch: {
+    patentMessage(val, oldval) {
+      if (val) {
+        this.patentId = val
         // console.log(val,oldval)
         // console.log(val,oldval)
-        if(val==oldval||this.fix==false){
-           this.showcard=false
+        if (val == oldval || this.fix == false) {
+          this.showcard = false
         }
         }
-        if(val!=oldval){
-          this.showcard=true
+        if (val != oldval) {
+          this.showcard = true
         }
         }
 
 
-        if(this.fix!=true){
+        if (this.fix != true) {
           this.getPatent(val)
           this.getPatent(val)
         }
         }
-        
+
       }
       }
     },
     },
-   fix(val){
-    this.$emit('on-change',val)
-   },
-   activeMenu2(){
+    fix(val) {
+      this.$emit('on-change', val)
+    },
+    activeMenu2() {
       this.radio = 1
       this.radio = 1
       this.changePosition(this.radio)
       this.changePosition(this.radio)
     },
     },
   },
   },
   async mounted() {
   async mounted() {
     var patentId = this.patentId || this.patentMessage
     var patentId = this.patentId || this.patentMessage
-    if(patentId){
+    if (patentId) {
       await this.getPatent(patentId)
       await this.getPatent(patentId)
-    }else{
+    } else {
       //根据专利号通过检索获取专利信息
       //根据专利号通过检索获取专利信息
       await this.getPatentByPatentNo(this.patentNo)
       await this.getPatentByPatentNo(this.patentNo)
     }
     }
-    
-    this.$nextTick(()=>{
-        this.$set(this,'height',document.getElementsByClassName('el-main')[0].offsetHeight-200  + 'px')
+
+    this.$nextTick(() => {
+      this.$set(this, 'height', document.getElementsByClassName('el-main')[0].offsetHeight - 200 + 'px')
     })
     })
-      // 请求查询批注
-      this.getContrastList()
-  
+    // 请求查询批注
+    this.getContrastList()
+
   },
   },
   methods: {
   methods: {
     //根据专利号通过检索获取专利信息
     //根据专利号通过检索获取专利信息
-   async getPatentByPatentNo(patentNo){
-      var gj = patentNo.substring(0,2)
+    async getPatentByPatentNo(patentNo) {
+      var gj = patentNo.substring(0, 2)
       var DBType = ''
       var DBType = ''
       let change = false
       let change = false
-      if(gj == 'CN'){
+      if (gj == 'CN') {
         DBType = 'CN'
         DBType = 'CN'
-      }else{
+      } else {
         DBType = 'WD'
         DBType = 'WD'
         change = true
         change = true
       }
       }
@@ -346,18 +378,18 @@ export default {
         RowCount: 1, //每页返回条数(最多 50 条)
         RowCount: 1, //每页返回条数(最多 50 条)
         OrderBy: 'AD', //排序字段:“AD”,“PD”,“GD”, “ID”(检索引擎自生成字段,排序顺序固定)
         OrderBy: 'AD', //排序字段:“AD”,“PD”,“GD”, “ID”(检索引擎自生成字段,排序顺序固定)
         OrderByType: 'ASC', //排序方式:“ASC”,“DESC” 即正序倒序
         OrderByType: 'ASC', //排序方式:“ASC”,“DESC” 即正序倒序
-        retrieveRecordId:1
+        retrieveRecordId: 1
       };
       };
       await this.$api.patentSelectImport(params).then((response) => {
       await this.$api.patentSelectImport(params).then((response) => {
-          if (response.code == 200) {
-            this.patent = response.data.records[0]
-            if(this.patentNo==this.patent.patentNo){
-              this.showcard=false
-            }
+        if (response.code == 200) {
+          this.patent = response.data.records[0]
+          if (this.patentNo == this.patent.patentNo) {
+            this.showcard = false
           }
           }
-        }).catch((error) => {
-        });
-      
+        }
+      }).catch((error) => {
+      });
+
       this.$set(this.patent, 'change', change)
       this.$set(this.patent, 'change', change)
       this.$set(this.patent, 'change2', change)
       this.$set(this.patent, 'change2', change)
       this.changePageTitle()
       this.changePageTitle()
@@ -366,44 +398,44 @@ export default {
     getPDFType() {
     getPDFType() {
       if (this.patent.pdf && this.patent.pdf.length > 0) {
       if (this.patent.pdf && this.patent.pdf.length > 0) {
         var index = this.patent.pdf.findIndex(item => {
         var index = this.patent.pdf.findIndex(item => {
-            return item.type == 2
-          })
-          if (index != -1) {
-            return 2
-          } else {
-            return 1
-          }
+          return item.type == 2
+        })
+        if (index != -1) {
+          return 2
+        } else {
+          return 1
+        }
       }
       }
     },
     },
-     //获取需要跳转的批注
+    //获取需要跳转的批注
     getBiaoZhu(val) {
     getBiaoZhu(val) {
-      if (val.scratchField.indexOf('摘要')!=-1) {
+      if (val.scratchField.indexOf('摘要') != -1) {
         this.activeMenu = 'PatentBasic'
         this.activeMenu = 'PatentBasic'
-      } else { 
+      } else {
         this.activeMenu = this.menuList.find(item => {
         this.activeMenu = this.menuList.find(item => {
-          return val.scratchField.indexOf(item.label)!=-1
+          return val.scratchField.indexOf(item.label) != -1
         }).value
         }).value
-          if (val.scratchField.indexOf('译文') !=-1) {
+        if (val.scratchField.indexOf('译文') != -1) {
           this.activeName = '1'
           this.activeName = '1'
-          } else {
-            this.activeName='0'
-          }
+        } else {
+          this.activeName = '0'
+        }
       }
       }
       this.handleSelect(this.activeMenu)
       this.handleSelect(this.activeMenu)
-        this.tiaozhuan(val.id)
-      
+      this.tiaozhuan(val.id)
+
     },
     },
     tiaozhuan(id) {
     tiaozhuan(id) {
       const href = `#${id}`
       const href = `#${id}`
       const anchor = document.createElement('a');
       const anchor = document.createElement('a');
-        anchor.href = href;
-        anchor.style.display = "none";
-        document.body.appendChild(anchor);
-        setTimeout(function () {
-          anchor.click();
-          document.body.removeChild(anchor);
-        }, 66);
-        return true;
+      anchor.href = href;
+      anchor.style.display = "none";
+      document.body.appendChild(anchor);
+      setTimeout(function () {
+        anchor.click();
+        document.body.removeChild(anchor);
+      }, 66);
+      return true;
     },
     },
     // 查询批注
     // 查询批注
     getContrastList(val) {
     getContrastList(val) {
@@ -416,38 +448,41 @@ export default {
         }
         }
       }
       }
       let params = {
       let params = {
-        patentNo: val?val:this.patent.patentNo,
-        id: (this.projectId && !isNaN(this.projectId))?this.projectId:null,
-        createFrom:(this.projectId && !isNaN(this.projectId))?1:0
+        patentNo: val ? val : this.patent.patentNo,
+        id: (this.projectId && !isNaN(this.projectId)) ? this.projectId : null,
+        createFrom: (this.projectId && !isNaN(this.projectId)) ? 1 : 0
       }
       }
       this.$api.scratchWordsQuery(params).then(response => {
       this.$api.scratchWordsQuery(params).then(response => {
-        if (response.code==200) {
+        if (response.code == 200) {
+          // let a = this.$store.state.report.contrastList
+          // a.push(response.data)
+          // this.$store.commit('SET_PATENT_CONTRAST', response.code)
           if (this.contrastList.length > 0) {
           if (this.contrastList.length > 0) {
-             var a = this.contrastList.filter(item => {
+            var a = this.contrastList.filter(item => {
               return item.patentNo != params.patentNo
               return item.patentNo != params.patentNo
-             }).concat(response.data)
+            }).concat(response.data)
           } else {
           } else {
-             var a = response.data
+            var a = response.data
           }
           }
-           this.$store.commit('SET_PATENT_PIZHU_CONTRAST', a)
+          this.$store.commit('SET_PATENT_CONTRAST', a)
         }
         }
       })
       })
     },
     },
-    ending(val){
+    ending(val) {
       this.activeMenu2 = val
       this.activeMenu2 = val
       return false
       return false
     },
     },
     //修改附图展示方式
     //修改附图展示方式
-    changePosition(val){
+    changePosition(val) {
       var dom = document.getElementsByClassName('dom1')
       var dom = document.getElementsByClassName('dom1')
       var height = document.getElementsByClassName('patent-articles-content-left')[0].offsetHeight
       var height = document.getElementsByClassName('patent-articles-content-left')[0].offsetHeight
       // var left1 = document.getElementsByClassName('left1')
       // var left1 = document.getElementsByClassName('left1')
       // var mid1 = document.getElementsByClassName('mid1')
       // var mid1 = document.getElementsByClassName('mid1')
       // console.log(left1)
       // console.log(left1)
-      switch(val){
+      switch (val) {
         case 1://tab展示
         case 1://tab展示
           dom[0].style.flexDirection = ''
           dom[0].style.flexDirection = ''
-          this.height = document.getElementsByClassName('el-main')[0].offsetHeight-200 + 'px'
+          this.height = document.getElementsByClassName('el-main')[0].offsetHeight - 200 + 'px'
           // this.$nextTick(()=>{
           // this.$nextTick(()=>{
           //   left1[0].style.width = '100%'
           //   left1[0].style.width = '100%'
           // })
           // })
@@ -475,17 +510,17 @@ export default {
         case 5://右边展示
         case 5://右边展示
           dom[0].style.flexDirection = 'row'
           dom[0].style.flexDirection = 'row'
           this.height = (height - 80) + 'px'
           this.height = (height - 80) + 'px'
-          break;    
+          break;
       }
       }
     },
     },
-  
-     qx(){
-      this.fix=false
-     
+
+    qx() {
+      this.fix = false
+
+    },
+    gd() {
+      this.fix = true
     },
     },
-    gd(){
-      this.fix=true
-        },
     changePageTitle() {
     changePageTitle() {
       document.title = `${this.patent.patentNo} ${this.patent.name || ''}`
       document.title = `${this.patent.patentNo} ${this.patent.name || ''}`
     },
     },
@@ -504,8 +539,8 @@ export default {
       this.loading = true
       this.loading = true
       const response = await this.$api.getPatentById(id)
       const response = await this.$api.getPatentById(id)
       this.patent = response.data
       this.patent = response.data
-      if(this.patentNo==this.patent.patentNo){
-        this.showcard=false
+      if (this.patentNo == this.patent.patentNo) {
+        this.showcard = false
       }
       }
       const country = getPatentCountry(this.patent.patentNo)
       const country = getPatentCountry(this.patent.patentNo)
       let change = false
       let change = false
@@ -532,88 +567,100 @@ export default {
         window.open(router.href, '_blank');
         window.open(router.href, '_blank');
         return false
         return false
       }
       }
-      if(index == this.activeMenu2){
+      if (index == this.activeMenu2) {
         this.activeMenu2 = ''
         this.activeMenu2 = ''
         this.radio = 1
         this.radio = 1
         this.changePosition(this.radio)
         this.changePosition(this.radio)
       }
       }
       this.activeMenu = index
       this.activeMenu = index
       this.componentName = index
       this.componentName = index
-      
+
     }
     }
   }
   }
 }
 }
 </script>
 </script>
-
-<style lang="scss">
+  
+<style lang="scss" scoped>
 @import '@/assets/css/activeDiv.scss';
 @import '@/assets/css/activeDiv.scss';
-.content-main{
-  width:80% !important ;
+
+.content-main {
+  width: 80% !important;
   background-color: skyblue !important;
   background-color: skyblue !important;
 }
 }
+
 .patent-articles {
 .patent-articles {
   width: 100%;
   width: 100%;
   height: 100% !important;
   height: 100% !important;
   padding: 0 !important;
   padding: 0 !important;
-  .patent-articles-menu {
 
 
-  }
+  .patent-articles-menu {}
+
   .el-menu-item.is-active {
   .el-menu-item.is-active {
     background: #ecf5ff !important;
     background: #ecf5ff !important;
-    color: #409EFF!important;
+    color: #409EFF !important;
   }
   }
-  .patent-articles-title {
+
+  .patent-articles-title-box {
     padding: 0 !important;
     padding: 0 !important;
-    height: 100px !important;
+    min-height: 100px !important;
+    font-size: 20px;
+    width: 100%;
+    text-align: center;
+
     .el-link {
     .el-link {
       margin-right: 20px;
       margin-right: 20px;
     }
     }
-    .patent-articles-title-box {
-      font-size: 20px;
-      width: 100%;
-      text-align: center;
-    }
+
   }
   }
+
   .patent-articles-content {
   .patent-articles-content {
     background: #fff;
     background: #fff;
     padding: 0;
     padding: 0;
     height: 100%;
     height: 100%;
     overflow: hidden;
     overflow: hidden;
+
     .patent-articles-content-left {
     .patent-articles-content-left {
       float: left;
       float: left;
       height: 100%;
       height: 100%;
       overflow-y: auto;
       overflow-y: auto;
       overflow-x: hidden;
       overflow-x: hidden;
-      padding: 10px;
+      // padding: 10px;
     }
     }
+
     .patent-articles-content-right {
     .patent-articles-content-right {
       width: 300px;
       width: 300px;
       border-left: 1px solid #e6e6e6;
       border-left: 1px solid #e6e6e6;
       float: right;
       float: right;
       height: 100%;
       height: 100%;
+
       .el-header {
       .el-header {
         height: 50px !important;
         height: 50px !important;
         position: relative !important;
         position: relative !important;
       }
       }
+
       .el-main {
       .el-main {
         padding: 0 12px !important;
         padding: 0 12px !important;
       }
       }
-      .el-container, .el-main {
+
+      .el-container,
+      .el-main {
         height: 100%;
         height: 100%;
       }
       }
+
       .patent-articles-option {
       .patent-articles-option {
         position: absolute;
         position: absolute;
         bottom: 0;
         bottom: 0;
         height: 100%;
         height: 100%;
         left: 50px;
         left: 50px;
+
         .el-tabs {
         .el-tabs {
           margin-top: 9px;
           margin-top: 9px;
         }
         }
+
         .el-tabs__header {
         .el-tabs__header {
           margin-bottom: 0 !important;
           margin-bottom: 0 !important;
         }
         }
       }
       }
     }
     }
   }
   }
-}
-</style>
+}</style>

+ 619 - 0
src/views/workspace/folder/articles/ContrastIndex2.vue

@@ -0,0 +1,619 @@
+ 
+<template>
+
+<div class="patent-articles" >
+    <el-container v-loading="loading">
+      <!-- <el-aside width="250px" class="patent-articles-menu">
+        <el-container>
+          <el-header style="height: 180px;">
+            <patent-list :patent-id="patentId" :project-id="projectId" @on-change="onChange" />
+          </el-header>
+          <el-main>
+            <patent-image v-if="patent.image" :project-id="projectId" :patent="patent" :patent-id="patentId" @refresh="getPatent(patentId)"></patent-image>
+          </el-main>
+        </el-container>
+      </el-aside> -->
+      <el-container >
+        <el-header class="patent-articles-title">
+          <div class="patent-articles-title-box">
+            <div style="position:relative">
+              <img src="../../../../assets/visual/fixed.png" width="20px" height="20px" v-if="fix===true" @click="qx" style="position:absolute;top:5px;left:5px"/>
+              <img src="../../../../assets/visual/unfixed.png" width="20px" height="20px" v-if="fix===false"  @click="gd" style="position:absolute;top:5px;left:5px"/>
+              <!-- <div>
+                 <patent-list :patent-id="patentId" :project-id="projectId" @on-change="onChange" />
+              </div> -->
+               <div>
+              <span v-html="getViewDom(patent.patentNo)"></span>
+              <el-tag type="primary" effect="dark" size="mini" class="margin-left_10" v-if="patent.simpleStatus">{{ patent.simpleStatus }}</el-tag>
+            </div>
+            <div style="color: #6b6868; font-size: 15px;border-bottom: 1px solid #e6e6e6;padding-bottom: 5px;">
+              <span v-html="getViewDom2(patent, 'name')"></span>
+              <el-link v-if="projectId" type="primary" @click.native="handleChange(patent, 'name')" style="margin-left: 10px;margin-top: -3px;">
+                <span v-if="!patent.change">切换译文</span>
+                <span v-else>切换原文</span>
+              </el-link>
+            </div>
+            <div style="position: absolute;right: 0;top:0;">
+                  <PatentMark :patentNo="patent.patentNo" @biaozhu="getBiaoZhu"></PatentMark>
+            </div>
+            </div>
+           
+            <div  style="  position: relative;">
+              <el-link v-for="item in menuList" :type="activeMenu === item.value ? 'primary' : undefined" v-if="!item.show" :disabled="(item.value === 'PatentExport' ? !$permission('/workspace/details/exportDocument'): false) ||item.value === 'PatentPDF'?!(patent.pdf && patent.pdf.length>0):false" @click.native="handleSelect(item.value)">
+              {{ item.label }}
+              <span v-if="item.value == 'PatentImage'|| item.value=='PatentPDF'" @click.stop="ending(item.value)">
+                  <el-popover
+                    placement="right"
+                    width="400"
+                    trigger="click">
+                    <el-radio v-for="(item, index) in positionList" :key="index" v-model="radio" @input="changePosition"  :label="item.value">{{item.label}}</el-radio>
+                    <i class="el-icon-setting" slot="reference"></i>
+                  </el-popover>
+                </span>
+              </el-link>
+              <el-link v-for="item in menuList2" :type="activeMenu === item.value ? 'primary' : undefined" :disabled="item.value === 'PatentExport' ? !$permission('/workspace/details/exportDocument'): false " @click.native="handleSelect(item.value)">{{ item.label }}</el-link>
+              <el-tooltip class="item" effect="dark" :content="(showRight ? '隐藏' : '显示') + '右侧菜单'" placement="top" v-if="showcard==true">
+                <i :class="showRight ? 'el-icon-s-unfold' : 'el-icon-s-fold'" style="font-size: 25px;position: absolute; right: 10px; margin-top: 5px;color: #2f2f2f; cursor: pointer" @click="showRight = !showRight"></i>
+              </el-tooltip>
+            </div>
+          </div>
+        </el-header>
+        <el-main class="patent-articles-content" style="padding-left:30px">
+          <div class="patent-articles-content-left" :style="{ width: showRight ? 'calc(100% - 321px)' : 'calc(100% - 21px)'}">
+            <div class="dom1 box1" v-dragControllerDiv1 style="display:flex;width:100%">
+              <div class="component left1" style="width:100%;overflow-y:auto;overflow-x: hidden;" :style="{height:height}">
+                <component style="width:100%;height:100%" :activeName="activeName" :is="componentName" :project-id="projectId" :patent="patent" :patentNo="[patent.patentNo]" :domId="patent.patentNo + '1'" :patent-id="patentId" :pdfType1="getPDFType()" @refresh="getPatent(patentId)"></component>
+              </div>
+              <div class="resize2" title="收缩侧边栏" v-show="(radio == 2 || radio == 3) && activeMenu != activeMenu2"><p><span>˙</span><span>˙</span><span>˙</span></p></div>
+              <div class="resize1" title="收缩侧边栏" v-show="(radio == 4 || radio == 5) && activeMenu != activeMenu2"><span>⋮</span></div>
+            <div v-show="radio != 1 && activeMenu != activeMenu2" class="mid1" :style="{height:(radio == 4 || radio == 5)?height:'280px'}" style="width:450px;height:280px;border:1px solid #E4E7ED;overflow-y:auto;overflow-x: hidden;">
+              <component :is="activeMenu2" :project-id="projectId" :patent="patent" :patent-id="patentId" :pdfType1="(patent.pdf && patent.pdf.length>0)?patent.pdf[0].type:2" :sign="true"></component>
+            </div>
+            </div>
+          </div>
+          <div class="patent-articles-content-right" v-if="showRight">
+            <el-container>
+              <el-header v-if="showcard==true">
+                <div class="patent-articles-option">
+                  <el-tabs v-model="activeOption" type="card">
+                    <el-tab-pane label="标引" name="PatentField"></el-tab-pane>
+                    <!-- <el-tab-pane label="高亮" name="PatentKeywordsHighlight"></el-tab-pane> -->
+                    <el-tab-pane label="注释" name="PatentAnnotation" :disabled="!($permission('/workspace/details/notes') && $r(projectId,[1,2]))"></el-tab-pane>
+                  </el-tabs>
+                </div>
+              </el-header>
+              <el-main>
+                <keep-alive>
+                  <component :is="activeOption" :project-id="projectId" :patent-id="patentId"></component>
+                    <component :is="activeOption" :project-id="projectId" :patent-id="patentId"></component>
+                </keep-alive>
+              </el-main>
+            </el-container>
+          </div>
+        </el-main>
+      </el-container>
+    </el-container>
+    <div class="content-main" style="padding-left:40px"></div>
+  </div>
+  
+
+
+ 
+  
+
+</template>
+
+<script>
+import { changeTranslation, patentKeywordsHighlight } from '../components/mixins'
+import PatentList from './components/PatentList'
+import PatentField from './components/PatentField'
+import PatentAnnotation from './components/PatentAnnotation'
+import PatentBasic from "./components/PatentBasic"
+import PatentPDF from "./components/PatentPDF"
+import PatentImage from "./components/PatentImage"
+import PatentRight from "./components/PatentRight"
+import PatentInstruction from "./components/PatentInstruction"
+import PatentFamily from "./components/PatentFamily"
+import PatentStatus from "./components/PatentStatus"
+import PatentKeywordsHighlight from '../components/PatentKeywordsHighlight'
+import ContrastIndex from './ContrastIndex'
+import { getPatentCountry } from "@/utils";
+
+import Permit from './components/history/permit.vue'
+import Examination from './components/history/examination.vue'
+import File from './components/history/file.vue'
+import Invalid from './components/history/invalid.vue'
+import Litigation from './components/history/litigation.vue'
+import Other from './components/history/other.vue'
+import PatentMark from './components/PatentMark.vue'
+
+import ProductManage from '@/views/product/components/category.vue'
+import PatentWorth from './components/history/components/echarts/components/echarts.vue'
+import { changeWidth } from '../../components/common/editDiv'
+
+import HistoryOfInvalidEvidence from './components/history/HistoryOfInvalidEvidence.vue'
+import InvalidEvidencePush from './components/history/InvalidEvidencePush.vue'
+
+export default {
+  mixins: [patentKeywordsHighlight, changeTranslation,changeWidth],
+  components: {
+    ContrastIndex,
+    PatentList,
+    PatentField,
+    PatentAnnotation,
+    PatentKeywordsHighlight,
+    PatentBasic,
+    PatentPDF,
+    PatentImage,
+    PatentRight,
+    PatentFamily,
+    PatentStatus,
+    PatentInstruction,
+    Permit,
+    Examination,
+    File,
+    Invalid,
+    Litigation,
+    Other,
+    ProductManage,
+    PatentWorth,
+    PatentMark,
+    HistoryOfInvalidEvidence,
+    InvalidEvidencePush
+  },
+  props:{
+    patentMessage:{},
+    patentNo:String,
+    reportId:{},
+    required:true
+  },
+  data() {
+    return {
+      radio:1,
+      height:null,
+      positionList:[
+        {
+          label:'tab展示',
+          value:1
+        },
+        {
+          label:'上边展示',
+          value:2
+        },
+        {
+          label:'下边展示',
+          value:3
+        },
+        {
+          label:'左边展示',
+          value:4
+        },
+        {
+          label:'右边展示',
+          value:5
+        },
+      ],
+      showcard:false,
+      fix:false,
+      showRight: false,
+      patentId: parseInt(this.$route.params.id || this.patentMessage || 0),
+      projectId: this.$route.query.id,
+      patent: {},
+      activeMenu: 'PatentBasic',
+      activeMenu2:'',
+      componentName: 'PatentBasic',
+      activeOption: 'PatentField',
+      loading: false,
+      menuList: [
+        {
+          value: 'PatentBasic',
+          label: '基础信息'
+        },
+        {
+          value: 'PatentRight',
+          label: '权利要求'
+        },
+        {
+          value: 'PatentImage' ,
+          label:'附图'
+        },
+        {
+          value: 'PatentInstruction',
+          label: '说明书文本'
+        },
+        {
+          value: 'PatentFamily',
+          label: '同族专利'
+        },
+        {
+          value: 'PatentStatus',
+          label: '法律状态'
+        },
+        {
+          value: 'PatentPDF',
+          label: '说明书'
+        },
+        {
+          value: 'PatentExport',
+          label: '导出文档'
+        },
+        {
+          value:'Permit',
+          label:'许可历史'
+        },
+        {
+          value:'ProductManage',
+          show:this.$permission('/workspace/product')?false:true,
+          label:'商品化'
+        },
+        {
+          value:'patentWorth',
+          show:this.$permission('/workspace/patent/worth')?false:true,
+          label:'价值曲线'
+        }
+      ],
+      menuList2: [
+        {
+          value: 'Examination',
+          label: '审查历史'
+        },
+        {
+          value: 'Invalid',
+          label: '被无效历史'
+        },
+        {
+          value: 'HistoryOfInvalidEvidence',
+          label: '作为无效证据使用历史'
+        },
+        {
+          value: 'InvalidEvidencePush',
+          label: '无效证据推荐'
+        },
+        {
+          value: 'Litigation',
+          label: '诉讼历史'
+        },
+        {
+          value: 'Other',
+          label: '其他参考资料'
+        },
+      ],
+      activeName:'0',
+    }
+  },
+  created() {
+    // console.log(this.patentMessage)
+    // this.onChange(this.patentMessage)
+  },
+  watch:{
+    patentMessage(val,oldval){
+      if(val){
+        this.patentId=val
+        // console.log(val,oldval)
+        if(val==oldval||this.fix==false){
+           this.showcard=false
+        }
+        if(val!=oldval){
+          this.showcard=true
+        }
+
+        if(this.fix!=true){
+          this.getPatent(val)
+        }
+        
+      }
+    },
+   fix(val){
+    this.$emit('on-change',val)
+   },
+   activeMenu2(){
+      this.radio = 1
+      this.changePosition(this.radio)
+    },
+  },
+  async mounted() {
+    var patentId = this.patentId || this.patentMessage
+    if(patentId){
+      await this.getPatent(patentId)
+    }else{
+      //根据专利号通过检索获取专利信息
+      await this.getPatentByPatentNo(this.patentNo)
+    }
+    
+    this.$nextTick(()=>{
+        this.$set(this,'height',document.getElementsByClassName('el-main')[0].offsetHeight-200  + 'px')
+    })
+      // 请求查询批注
+      this.getContrastList()
+  
+  },
+  methods: {
+    //根据专利号通过检索获取专利信息
+   async getPatentByPatentNo(patentNo){
+      var gj = patentNo.substring(0,2)
+      var DBType = ''
+      let change = false
+      if(gj == 'CN'){
+        DBType = 'CN'
+      }else{
+        DBType = 'WD'
+        change = true
+      }
+      var params = {
+        CurrentQuery: `AN=${patentNo} OR PN=${patentNo} OR GN=${patentNo}`, //检索式
+        DBType: DBType, //”CN”或”WD”,表示检索中文库或世界库
+        PageNum: 1, //页码(最多 200 页)
+        RowCount: 1, //每页返回条数(最多 50 条)
+        OrderBy: 'AD', //排序字段:“AD”,“PD”,“GD”, “ID”(检索引擎自生成字段,排序顺序固定)
+        OrderByType: 'ASC', //排序方式:“ASC”,“DESC” 即正序倒序
+        retrieveRecordId:1
+      };
+      await this.$api.patentSelectImport(params).then((response) => {
+          if (response.code == 200) {
+            this.patent = response.data.records[0]
+            if(this.patentNo==this.patent.patentNo){
+              this.showcard=false
+            }
+          }
+        }).catch((error) => {
+        });
+      
+      this.$set(this.patent, 'change', change)
+      this.$set(this.patent, 'change2', change)
+      this.changePageTitle()
+    },
+    //获取pdf类型
+    getPDFType() {
+      if (this.patent.pdf && this.patent.pdf.length > 0) {
+        var index = this.patent.pdf.findIndex(item => {
+            return item.type == 2
+          })
+          if (index != -1) {
+            return 2
+          } else {
+            return 1
+          }
+      }
+    },
+     //获取需要跳转的批注
+    getBiaoZhu(val) {
+      if (val.scratchField.indexOf('摘要')!=-1) {
+        this.activeMenu = 'PatentBasic'
+      } else { 
+        this.activeMenu = this.menuList.find(item => {
+          return val.scratchField.indexOf(item.label)!=-1
+        }).value
+          if (val.scratchField.indexOf('译文') !=-1) {
+          this.activeName = '1'
+          } else {
+            this.activeName='0'
+          }
+      }
+      this.handleSelect(this.activeMenu)
+        this.tiaozhuan(val.id)
+      
+    },
+    tiaozhuan(id) {
+      const href = `#${id}`
+      const anchor = document.createElement('a');
+        anchor.href = href;
+        anchor.style.display = "none";
+        document.body.appendChild(anchor);
+        setTimeout(function () {
+          anchor.click();
+          document.body.removeChild(anchor);
+        }, 66);
+        return true;
+    },
+    // 查询批注
+    getContrastList(val) {
+      if (val) {
+        var index = this.contrastList.findIndex(item => {
+          item.patentNo == val
+        })
+        if (index != -1) {
+          return false;
+        }
+      }
+      let params = {
+        patentNo: val?val:this.patent.patentNo,
+        id: (this.projectId && !isNaN(this.projectId))?this.projectId:null,
+        createFrom:(this.projectId && !isNaN(this.projectId))?1:0
+      }
+      this.$api.scratchWordsQuery(params).then(response => {
+        if (response.code==200) {
+          if (this.contrastList.length > 0) {
+             var a = this.contrastList.filter(item => {
+              return item.patentNo != params.patentNo
+             }).concat(response.data)
+          } else {
+             var a = response.data
+          }
+           this.$store.commit('SET_PATENT_PIZHU_CONTRAST', a)
+        }
+      })
+    },
+    ending(val){
+      this.activeMenu2 = val
+      return false
+    },
+    //修改附图展示方式
+    changePosition(val){
+      var dom = document.getElementsByClassName('dom1')
+      var height = document.getElementsByClassName('patent-articles-content-left')[0].offsetHeight
+      // var left1 = document.getElementsByClassName('left1')
+      // var mid1 = document.getElementsByClassName('mid1')
+      // console.log(left1)
+      switch(val){
+        case 1://tab展示
+          dom[0].style.flexDirection = ''
+          this.height = document.getElementsByClassName('el-main')[0].offsetHeight-200 + 'px'
+          // this.$nextTick(()=>{
+          //   left1[0].style.width = '100%'
+          // })
+          break;
+        case 2://上边展示
+          dom[0].style.flexDirection = 'column-reverse'
+          this.height = (height - 300) + 'px'
+          // this.$nextTick(()=>{
+          //   mid1[0].style.width = '100%'
+          //   left1[0].style.width = '100%'
+          // })
+          break;
+        case 3://下边展示
+          dom[0].style.flexDirection = 'column'
+          this.height = (height - 400) + 'px'
+          // this.$nextTick(()=>{
+          //   mid1[0].style.width = '100%'
+          //   left1[0].style.width = '100%'
+          // })
+          break;
+        case 4://左边展示
+          dom[0].style.flexDirection = 'row-reverse'
+          this.height = (height - 80) + 'px'
+          break;
+        case 5://右边展示
+          dom[0].style.flexDirection = 'row'
+          this.height = (height - 80) + 'px'
+          break;    
+      }
+    },
+  
+     qx(){
+      this.fix=false
+     
+    },
+    gd(){
+      this.fix=true
+        },
+    changePageTitle() {
+      document.title = `${this.patent.patentNo} ${this.patent.name || ''}`
+    },
+    async onChange(data) {
+      await this.getPatent(data.id)
+      await this.$router.push({
+        path: '/workspace/folder/' + data.id,
+        query: {
+          id: this.projectId,
+        }
+      })
+      this.patentId = data.id
+      this.changePageTitle()
+    },
+    async getPatent(id) {
+      this.loading = true
+      const response = await this.$api.getPatentById(id)
+      this.patent = response.data
+      if(this.patentNo==this.patent.patentNo){
+        this.showcard=false
+      }
+      const country = getPatentCountry(this.patent.patentNo)
+      let change = false
+      if (country !== 'CN') {
+        change = true
+      }
+      this.$set(this.patent, 'change', change)
+      this.$set(this.patent, 'change2', change)
+      this.loading = false
+      this.changePageTitle()
+    },
+    handleSelect2(index, path) {
+
+    },
+    handleSelect(index) {
+      if (index === 'PatentExport') {
+        const router = this.$router.resolve({
+          path: '/workspace/folder/export/patent',
+          query: {
+            id: this.projectId,
+            patent: this.patent.id
+          }
+        })
+        window.open(router.href, '_blank');
+        return false
+      }
+      if(index == this.activeMenu2){
+        this.activeMenu2 = ''
+        this.radio = 1
+        this.changePosition(this.radio)
+      }
+      this.activeMenu = index
+      this.componentName = index
+      
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+@import '@/assets/css/activeDiv.scss';
+.content-main{
+  width:80% !important ;
+  background-color: skyblue !important;
+}
+.patent-articles {
+  width: 100%;
+  height: 100% !important;
+  padding: 0 !important;
+  .patent-articles-menu {
+
+  }
+  .el-menu-item.is-active {
+    background: #ecf5ff !important;
+    color: #409EFF!important;
+  }
+  .patent-articles-title {
+    padding: 0 !important;
+    height: 100px !important;
+    .el-link {
+      margin-right: 20px;
+    }
+    .patent-articles-title-box {
+      font-size: 20px;
+      width: 100%;
+      text-align: center;
+    }
+  }
+  .patent-articles-content {
+    background: #fff;
+    padding: 0;
+    height: 100%;
+    overflow: hidden;
+    .patent-articles-content-left {
+      float: left;
+      height: 100%;
+      overflow-y: auto;
+      overflow-x: hidden;
+      padding: 10px;
+    }
+    .patent-articles-content-right {
+      width: 300px;
+      border-left: 1px solid #e6e6e6;
+      float: right;
+      height: 100%;
+      .el-header {
+        height: 50px !important;
+        position: relative !important;
+      }
+      .el-main {
+        padding: 0 12px !important;
+      }
+      .el-container, .el-main {
+        height: 100%;
+      }
+      .patent-articles-option {
+        position: absolute;
+        bottom: 0;
+        height: 100%;
+        left: 50px;
+        .el-tabs {
+          margin-top: 9px;
+        }
+        .el-tabs__header {
+          margin-bottom: 0 !important;
+        }
+      }
+    }
+  }
+}
+</style>

+ 54 - 0
src/views/workspace/folder/articles/components/PatentLeft.vue

@@ -0,0 +1,54 @@
+<template>
+  <div class="PatentLeft" style="">
+    
+    <div
+      style="display: flex;justify-content: space-evenly;height: 50px;line-height: 50px;border-bottom: 1px solid #ccc;">
+      <div>总专利数量:2篇</div>
+    </div>
+    <div class="left-patentNo">
+      <div>CN202210250237.X</div>
+      <el-tooltip content="一种金属带卷制雨伞管的加工设备" placement="bottom-start">
+        <div style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">一种金属带卷制雨伞管的加工设备</div>
+      </el-tooltip>
+    </div>
+    <div class="left-patentNo">
+      <div>CN202210250234.6</div>
+      <div style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">一种雨伞管加工设备</div>
+    </div>
+    
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+     
+    }
+  },
+  mounted() {
+
+  },
+  methods: {
+  
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+.PatentLeft{
+  .left-patentNo {
+    border-bottom: 1px solid #ccc;
+    overflow: hidden;
+    padding: 5px 10px;
+    height: 60px;
+    color: #333;
+    font-size: 14px;
+    padding-top: 10px;
+  }
+
+  .left-patentNo:hover {
+    background: #cdd7eb;
+  }
+}
+  </style>

File diff suppressed because it is too large
+ 478 - 282
src/views/workspace/folder/articles/index.vue


+ 671 - 0
src/views/workspace/folder/articles/index2.vue

@@ -0,0 +1,671 @@
+<template>
+<div style="height:calc(100% - 50px)">
+  <div style="background:white;display:flex; justify-content:flex-end">
+    <el-dropdown size="medium" style="margin-top:20px;margin-right:20px" v-if="$permission('/workspace/createReport')">
+                <el-button type="primary" size="small" >
+                    创建报告<i class="el-icon-arrow-down el-icon--right"></i>
+                </el-button>
+                   <el-dropdown-menu slot="dropdown" style="margin-top:0px">
+                    <!-- 遍历按钮 -->
+                      <el-dropdown-item  @click.native="handleAnalyse(0)" v-if="$permission('/workspace/createReport/invalid')">无效分析</el-dropdown-item>
+                      <el-dropdown-item  @click.native="handleAnalyse(1)" v-if="$permission('/workspace/createReport/invalid')">第三方意见</el-dropdown-item>
+                      <el-dropdown-item  @click.native="handleAnalyse(2)" v-if="$permission('/workspace/createReport/invalid')">稳定性分析</el-dropdown-item>
+                      <el-dropdown-item  @click.native="handleAnalyse(4)" v-if="$permission('/workspace/createReport/tort')">侵权分析</el-dropdown-item>
+                      <el-dropdown-item  @click.native="handleAnalyse(5)" v-if="$permission('/workspace/createReport/avoidDesign')">回避设计</el-dropdown-item>
+                      <el-dropdown-item  @click.native="handleAnalyse(7)" v-if="$permission('/workspace/createReport/reInvalid')">无效应对</el-dropdown-item>
+                    </el-dropdown-menu>
+                </el-dropdown>
+     <el-popover placement="bottom" title="关键词高亮" width="320" trigger="click" style="margin-top:20px">
+                <patent-keywords-highlight :project-id="projectId" />
+                <el-button :disabled="!$permission('/workspace/common/highlight')" slot="reference" size="small" type="primary" class="margin-right_10">
+                  高亮<i class="el-icon-arrow-down el-icon--right"></i>
+                </el-button>
+              </el-popover>
+    <el-switch
+    style="margin-top:25px"
+    v-model="value"
+    :disabled="!$permission('/workspace/details/comparison')"
+    inactive-text="对比"
+    active-color="#00BFFF"
+    inactive-color="#D3D3D3">
+</el-switch>
+   <patent-list :patent-id="patentId" :project-id="projectId" @on-change="onChange" :ban='ban'/>
+  </div>       
+              
+  <!-- <el-button @click="two">对比</el-button> -->
+
+
+  <div class="box" ref="box" v-dragControllerDiv>
+    <div class="left" :style="{width:width}"><!--左侧div内容-->
+      <div class="patent-articles" >
+        <el-container v-loading="loading">
+          <!-- <el-aside width="250px" class="patent-articles-menu">
+            <el-container>
+              <el-header style="height: 180px;">
+                <patent-list :patent-id="patentId" :project-id="projectId" @on-change="onChange" />
+              </el-header>
+              <el-main>
+                <patent-image v-if="patent.image" :project-id="projectId" :patent="patent" :patent-id="patentId" @refresh="getPatent(patentId)"></patent-image>
+              </el-main>
+            </el-container>
+          </el-aside> -->
+          <el-container >
+            <el-header class="patent-articles-title">
+              <div class="patent-articles-title-box">
+                <div style="position:relative">
+                  <img src="@/assets/visual/fixed.png" width="20px" height="20px" v-if="fix===true&&value==true" @click="qx" style="position:absolute;top:5px;left:5px"/>
+                  <img src="@/assets/visual/unfixed.png" width="20px" height="20px" v-if="fix===false&&value==true"  @click="gd" style="position:absolute;top:5px;left:5px"/>
+                <!-- <div style="background-image:url('');width:20px;height:20px"></div> -->
+                  <div>
+                  <span v-html="getViewDom(patent.patentNo)"></span>
+                  <el-tag type="primary" effect="dark" size="mini" class="margin-left_10" v-if="patent.simpleStatus">{{ patent.simpleStatus }}</el-tag>
+                </div>
+                <div style="color: #6b6868; font-size: 15px;border-bottom: 1px solid #e6e6e6;padding-bottom: 5px;">
+                  <span v-html="getViewDom2(patent, 'name')"></span>
+                  <el-link v-if="projectId" type="primary" @click.native="handleChange(patent, 'name')" style="margin-left: 10px;margin-top: -3px;">
+                    <span v-if="!patent.change">切换译文</span>
+                    <span v-else>切换原文</span>
+                  </el-link>
+                </div>
+                <div style="position: absolute;right: 0;top:0;">
+                  <PatentMark :patentNo="patent.patentNo" @biaozhu="getBiaoZhu"></PatentMark>
+                </div>
+              </div>
+              
+                <div style="  position: relative;">
+                  <el-link v-for="item in menuList" :type="activeMenu === item.value ? 'primary' : undefined" v-if="!item.show" :disabled="(item.value === 'PatentExport' ? !$permission('/workspace/details/exportDocument'): false) ||item.value === 'PatentPDF'?!(patent.pdf && patent.pdf.length>0):false" @click.native="handleSelect(item.value)">
+                    {{ item.label }}
+                    <span v-if="item.value == 'PatentImage'|| item.value=='PatentPDF'" @click.stop="ending(item.value)">
+                      <el-popover
+                        placement="right"
+                        width="400"
+                        trigger="click">
+                        <el-radio v-for="(item, index) in positionList" :key="index" v-model="radio" @input="changePosition"  :label="item.value">{{item.label}}</el-radio>
+                        <i class="el-icon-setting" slot="reference"></i>
+                      </el-popover>
+                    </span>
+                  </el-link>
+                  <el-link v-for="item in menuList2" :type="activeMenu === item.value ? 'primary' : undefined" :disabled="item.value === 'PatentExport' ? !$permission('/workspace/details/exportDocument'): false " @click.native="handleSelect(item.value)">{{ item.label }}</el-link>
+                  <el-tooltip class="item" effect="dark" :content="(showRight ? '隐藏' : '显示') + '右侧菜单'" placement="top">
+                    <i :class="showRight ? 'el-icon-s-unfold' : 'el-icon-s-fold'" style="font-size: 25px;position: absolute; right: 10px; margin-top: 5px;color: #2f2f2f; cursor: pointer" @click="showRight = !showRight"></i>
+                  </el-tooltip>
+                </div>
+              </div>
+            </el-header>
+            <el-main class="patent-articles-content" style="padding-left:30px">
+              <div class="patent-articles-content-left" :style="{ width: showRight ? 'calc(100% - 321px)' : 'calc(100% - 21px)'}">
+                <div class="dom box1" v-dragControllerDiv1 style="display:flex;width:100%">
+                  <div class="component left1" style="width:100%;overflow-y:auto;overflow-x: hidden;padding-bottom:10px" :style="{height:height}">
+                    <component :activeName="activeName" style="width:100%;" :is="componentName" :project-id="projectId" :patent="patent" :patentNo="[patent.patentNo]" :domId="patent.patentNo + '1'" :patent-id="patentId" :pdfType1="getPDFType()" @refresh="getPatent(patentId)"></component>
+                  </div>
+                  <div class="resize2" title="收缩侧边栏"  v-show="(radio == 2 || radio == 3) && activeMenu != activeMenu2"><p><span>˙</span><span>˙</span><span>˙</span></p></div>
+                  <div class="resize1" title="收缩侧边栏"  v-show="(radio == 4 || radio == 5) && activeMenu != activeMenu2"><span>⋮</span></div>
+                  <div v-show="radio != 1 && activeMenu != activeMenu2" class="mid1" :style="{height:(radio == 4 || radio == 5)?height:'280px'}" style="width:450px;height:280px;border:1px solid #E4E7ED;margin:10px;overflow-y: auto;overflow-x: hidden;">
+                    <component :is="activeMenu2" :project-id="projectId" :patent="patent" :patent-id="patentId" :pdfType1="(patent.pdf && patent.pdf.length>0)?patent.pdf[0].type:2" :sign="true"></component>
+                  </div>
+                </div>
+              </div>
+              <div class="patent-articles-content-right" v-if="showRight">
+                <el-container>
+                  <el-header>
+                    <div class="patent-articles-option">
+                      <el-tabs v-model="activeOption" type="card">
+                        <el-tab-pane label="标引" name="PatentField"></el-tab-pane>
+                        <!-- <el-tab-pane label="高亮" name="PatentKeywordsHighlight"></el-tab-pane> -->
+                        <el-tab-pane label="注释" name="PatentAnnotation" :disabled="!($permission('/workspace/details/notes') && $r(projectId,[1,2]))"></el-tab-pane>
+                      </el-tabs>
+                    </div>
+                  </el-header>
+                  <el-main>
+                    <keep-alive>
+                      <component :is="activeOption" :project-id="projectId" :patentNo="patent.patentNo" :patent-id="patentId"></component>
+                        <component :is="activeOption" :project-id="projectId" :patentNo="patent.patentNo" :patent-id="patentId"></component>
+                    </keep-alive>
+                  </el-main>
+                </el-container>
+              </div>
+            </el-main>
+          </el-container>
+        </el-container>
+        <div class="content-main" style="padding-left:40px"></div>
+      </div>
+    </div>
+    <div class="resize" title="收缩侧边栏"   v-show="width!='100%'">⋮</div>
+    <div class="mid" v-show="width!='100%'" :style="{width:width}"><!--右侧div内容-->
+        <contrast-index :patentMessage="message" :patentNo="pNo" @on-change='changefix' />
+    </div>
+  </div>
+
+
+    <CreateReport ref="ReportForm"></CreateReport>
+</div>
+   
+
+</template>
+
+<script>
+import { changeTranslation, patentKeywordsHighlight } from '../components/mixins'
+import PatentList from './components/PatentList'
+import PatentField from './components/PatentField'
+import PatentAnnotation from './components/PatentAnnotation'
+import PatentBasic from "./components/PatentBasic"
+import PatentPDF from "./components/PatentPDF"
+import PatentImage from "./components/PatentImage"
+import PatentRight from "./components/PatentRight"
+import PatentInstruction from "./components/PatentInstruction"
+import PatentFamily from "./components/PatentFamily"
+import PatentStatus from "./components/PatentStatus"
+// import PatentKeywordsHighlight from '../components/PatentKeywordsHighlight'
+import ContrastIndex from './ContrastIndex'
+import PatentKeywordsHighlight from "../../folder/components/PatentKeywordsHighlight"
+import { getPatentCountry } from "@/utils";
+// import Import from '../../import/index.vue'
+
+import CreateReport from './components/CreateReport.vue'
+import Permit from './components/history/permit.vue'
+import Examination from './components/history/examination.vue'
+import File from './components/history/file.vue'
+import Invalid from './components/history/invalid.vue'
+import Litigation from './components/history/litigation.vue'
+import Other from './components/history/other.vue'
+
+
+import ProductManage from '@/views/product/components/product.vue'
+import PatentWorth from './components/history/components/echarts/components/echarts.vue'
+
+import { changeWidth } from '../../components/common/editDiv'
+
+import PatentMark from './components/PatentMark.vue'
+
+import HistoryOfInvalidEvidence from './components/history/HistoryOfInvalidEvidence.vue'
+import InvalidEvidencePush from './components/history/InvalidEvidencePush.vue'
+
+export default {
+  mixins: [patentKeywordsHighlight, changeTranslation,changeWidth],
+  components: {
+    ContrastIndex,
+    PatentList,
+    PatentField,
+    PatentAnnotation,
+    PatentKeywordsHighlight,
+    PatentBasic,
+    PatentPDF,
+    PatentImage,
+    PatentRight,
+    PatentFamily,
+    PatentStatus,
+    PatentInstruction,
+    // Import,
+    CreateReport,
+    Permit,
+    Examination,
+    File,
+    Invalid,
+    Litigation,
+    Other,
+    ProductManage,
+    PatentWorth,
+    PatentMark,
+    HistoryOfInvalidEvidence,
+    InvalidEvidencePush
+},
+  data() {
+    return {
+      radio:1,
+      height:null,
+      positionList:[
+        {
+          label:'tab展示',
+          value:1
+        },
+        {
+          label:'上边展示',
+          value:2
+        },
+        {
+          label:'下边展示',
+          value:3
+        },
+        {
+          label:'左边展示',
+          value:4
+        },
+        {
+          label:'右边展示',
+          value:5
+        },
+      ],
+      ban:0,
+      pNo:'',
+      message:1,
+      fix:false,
+      fix2:false,
+      cfix:false,
+      value: false,
+      width:'100%',
+      showRight: false,
+      patentId: parseInt(this.$route.params.id || 0),
+      projectId: parseInt(this.$route.query.id || 0),
+      patent: {},
+      activeMenu: 'PatentBasic',
+      activeMenu2: '',
+      componentName: 'PatentBasic',
+      activeOption: 'PatentField',
+      loading: false,
+      menuList: [
+        {
+          value: 'PatentBasic',
+          label: '基础信息'
+        },
+        {
+          value: 'PatentRight',
+          label: '权利要求'
+        },
+        {
+          value: 'PatentImage' ,
+          label:'附图'
+        },
+        {
+          value: 'PatentInstruction',
+          label: '说明书文本'
+        },
+        {
+          value: 'PatentFamily',
+          label: '同族专利'
+        },
+        {
+          value: 'PatentStatus',
+          label: '法律状态'
+        },
+        {
+          value: 'PatentPDF',
+          label: '说明书'
+        },
+        {
+          value: 'PatentExport',
+          label: '导出文档'
+        },
+        {
+          value:'Permit',
+          show:this.$permission('/workspace/patent/worth')?false:true,
+          label:'许可历史'
+        },
+        {
+          value:'ProductManage',
+          show:this.$permission('/workspace/product')?false:true,
+          label:'商品化'
+        },
+        {
+          value:'patentWorth',
+          show:this.$permission('/workspace/patent/worth')?false:true,
+          label:'价值曲线'
+        }
+      ],
+      menuList2: [
+        {
+          value: 'Examination',
+          label: '审查历史'
+        },
+        {
+          value: 'Invalid',
+          label: '被无效历史'
+        },
+        {
+          value: 'HistoryOfInvalidEvidence',
+          label: '作为无效证据使用历史'
+        },
+        {
+          value: 'InvalidEvidencePush',
+          label: '无效证据推荐'
+        },
+        {
+          value: 'Litigation',
+          label: '诉讼历史'
+        },
+        {
+          value: 'Other',
+          label: '其他参考资料'
+        },
+      ],
+      activeName:'0',
+    }
+  },
+  created() {
+  },
+  async mounted() {
+     await this.getPatent(this.patentId)
+     this.$nextTick(()=>{
+        this.$set(this,'height',document.getElementsByClassName('el-main')[0].offsetHeight-200  + 'px')
+     })
+      // 请求查询批注
+      this.getContrastList()
+     
+  },
+  computed: {
+    contrastList() {
+      return this.$store.state.report.contrastList
+    }
+  },
+  watch:{
+    value(val){
+      if(val==true){
+        this.width='50%'
+      }else{
+        this.width='100%'
+      }
+    },
+    fix2(val){
+       if(this.fix==true&&val==true){
+        this.ban=1
+      }else{
+        this.ban=0
+      }
+    },
+    fix(val){
+        if(this.fix2==true&&val==true){
+        this.ban=1
+      }else{
+        this.ban=0
+      }
+    },
+    activeMenu2(){
+      this.radio = 1
+      this.changePosition(this.radio)
+    },
+  },
+  methods: {
+    //获取pdf类型
+    getPDFType() {
+      if (this.patent.pdf && this.patent.pdf.length > 0) {
+        var index = this.patent.pdf.findIndex(item => {
+            return item.type == 2
+          })
+          if (index != -1) {
+            return 2
+          } else {
+            return 1
+          }
+      }
+    },
+    //获取需要跳转的批注
+    getBiaoZhu(val) {
+      if (val.scratchField.indexOf('摘要')!=-1) {
+        this.activeMenu = 'PatentBasic'
+      } else { 
+        this.activeMenu = this.menuList.find(item => {
+          return val.scratchField.indexOf(item.label)!=-1
+        }).value
+          if (val.scratchField.indexOf('译文') !=-1) {
+          this.activeName = '1'
+          } else {
+            this.activeName='0'
+          }
+      }
+      this.handleSelect(this.activeMenu)
+      
+        this.tiaozhuan(val.id,val)
+    },
+    tiaozhuan(id) {
+      const href = `#${id}`
+      const anchor = document.createElement('a');
+        anchor.href = href;
+        anchor.style.display = "none";
+        document.body.appendChild(anchor);
+        setTimeout(function () {
+          anchor.click();
+          document.body.removeChild(anchor);
+        }, 66);
+        return true;
+    },
+    // 查询批注
+    getContrastList(val) {
+      if (val) {
+        var index = this.contrastList.findIndex(item => {
+          item.patentNo == val
+        })
+        if (index != -1) {
+          return false;
+        }
+      }
+      let params = {
+        patentNo: val?val:this.patent.patentNo,
+        id: this.projectId,
+        createFrom:1
+      }
+      this.$api.scratchWordsQuery(params).then(response => {
+        if (response.code==200) {
+          if (this.contrastList.length > 0) {
+             var a = this.contrastList.filter(item => {
+              return item.patentNo != params.patentNo
+             }).concat(response.data)
+          } else {
+             var a = response.data
+          }
+           this.$store.commit('SET_PATENT_PIZHU_CONTRAST', a)
+        }
+      })
+    },
+     
+    ending(val){
+      this.activeMenu2 = val
+      return false
+    },
+    //修改附图展示方式
+    changePosition(val){
+      var dom = document.getElementsByClassName('dom')
+      var height = document.getElementsByClassName('patent-articles-content-left')[0].offsetHeight
+      var left1 = document.getElementsByClassName('left1')
+      var mid1 = document.getElementsByClassName('mid1')
+      switch(val){
+        case 1://tab展示
+          dom[0].style.flexDirection = ''
+          this.height = document.getElementsByClassName('el-main')[0].offsetHeight-200 + 'px'
+          this.$nextTick(()=>{
+            left1[0].style.width = '100%'
+          })
+          break;
+        case 2://上边展示
+          dom[0].style.flexDirection = 'column-reverse'
+          this.height = (height - 300) + 'px'
+          this.$nextTick(()=>{
+            mid1[0].style.width = '100%'
+            left1[0].style.width = '100%'
+          })
+          break;
+        case 3://下边展示
+          dom[0].style.flexDirection = 'column'
+          this.height = (height - 400) + 'px'
+          this.$nextTick(()=>{
+            mid1[0].style.width = '100%'
+            left1[0].style.width = '100%'
+          })
+          break;
+        case 4://左边展示
+          dom[0].style.flexDirection = 'row-reverse'
+          this.height = (height) + 'px'
+          // this.$nextTick(()=>{
+          //   mid1[0].style.height = this.height
+          // })
+          break;
+        case 5://右边展示
+          dom[0].style.flexDirection = 'row'
+          this.height = (height) + 'px'
+          // this.$nextTick(()=>{
+          //   mid1[0].style.height = this.height
+          // })
+          break;    
+      }
+    },
+    // 创建报告:无效分析等点击事件
+    handleAnalyse(id) {
+      this.$api.getProject({id:this.projectId}).then(response=>{
+        var form = {
+          type:id,
+          signPatentNo:this.pNo,
+          projectId:this.projectId,
+          departmentId:response.data[0].departmentId,
+          personId:response.data[0].personnelId,
+          clientId:response.data[0].clientId,
+          proTec:response.data[0].technicalTheme,
+          scenarioList:response.data[0].scenarioList
+      }
+      this.$refs.ReportForm.open(form)
+      })
+      
+    },
+    changefix(val){
+      // console.log(val)
+      this.fix2=val
+     
+    },
+    qx(){
+      this.fix=false
+      // this.message.fix=false
+      // console.log(1)
+    },
+    gd(){
+      this.fix=true
+      // this.message.fix=true
+    },
+    changePageTitle() {
+      document.title = `${this.patent.patentNo} ${this.patent.name || ''}`
+    },
+    async onChange(data) {
+      // this.getContrastList(this.projectId,data.patentNo)
+      // console.log(this.projectId,data)
+      this.message = data.id
+      if(this.fix!=true){
+        await this.getPatent(data.id)
+      }
+      
+      await this.$router.push({
+        path: '/workspace/folder/' + data.id,
+        query: {
+          id: this.projectId,
+        }
+      })
+      this.patentId = data.id
+      this.changePageTitle()
+      this.getContrastList(data.patentNo)
+    },
+    async getPatent(id) {
+      this.loading = true
+      const response = await this.$api.getPatentById(id, { projectId: this.projectId })
+      this.patent = response.data
+      // console.log(this.patent)
+      this.pNo=this.patent.patentNo
+      const country = getPatentCountry(this.patent.patentNo)
+      let change = false
+      if (country !== 'CN') {
+        change = true
+      }
+      this.$set(this.patent, 'change', change)
+      this.$set(this.patent, 'change2', change)
+      this.loading = false
+      this.changePageTitle()
+    },
+    handleSelect2(index, path) {
+
+    },
+    handleSelect(index) {
+      if (index === 'PatentExport') {
+        const router = this.$router.resolve({
+          path: '/workspace/folder/export/patent',
+          query: {
+            id: this.projectId,
+            patent: this.patent.id
+          }
+        })
+        window.open(router.href, '_blank');
+        return false
+      }
+      // if((index == 'PatentImage' && this.activeMenu2 == 'PatentImage') ||(index == 'PatentPDF' && this.activeMenu2 == 'PatentPDF')){
+      //   this.radio = 1
+      //   this.changePosition(this.radio)
+      // }
+      if(index == this.activeMenu2){
+        this.activeMenu2 = ''
+        this.radio = 1
+        this.changePosition(this.radio)
+      }
+      this.activeMenu = index
+      this.componentName = index
+     
+      
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+@import '@/assets/css/activeDiv.scss';
+.content-main{
+  width:80% !important ;
+  background-color: skyblue !important;
+}
+.patent-articles {
+  width: 100%;
+  height: 100% !important;
+  padding: 0 !important;
+  .patent-articles-menu {
+
+  }
+  .el-menu-item.is-active {
+    background: #ecf5ff !important;
+    color: #409EFF!important;
+  }
+  .patent-articles-title {
+    padding: 0 !important;
+    height: 100px !important;
+    .el-link {
+      margin-right: 20px;
+    }
+    .patent-articles-title-box {
+      font-size: 20px;
+      width: 100%;
+      text-align: center;
+    }
+  }
+  .patent-articles-content {
+    background: #fff;
+    padding: 0;
+    height: 100%;
+    overflow: hidden;
+    .patent-articles-content-left {
+      float: left;
+      height: 100%;
+      overflow-y: hidden;
+      overflow-x: hidden;
+      padding: 10px;
+    }
+    .patent-articles-content-right {
+      width: 300px;
+      border-left: 1px solid #e6e6e6;
+      float: right;
+      height: 100%;
+      .el-header {
+        height: 50px !important;
+        position: relative !important;
+      }
+      .el-main {
+        padding: 0 12px !important;
+      }
+      .el-container, .el-main {
+        height: 100%;
+      }
+      .patent-articles-option {
+        position: absolute;
+        bottom: 0;
+        height: 100%;
+        left: 50px;
+        .el-tabs {
+          margin-top: 9px;
+        }
+        .el-tabs__header {
+          margin-bottom: 0 !important;
+        }
+      }
+    }
+  }
+}
+</style>