Просмотр исходного кода

Merge branch 'product' of http://1.116.113.26:8088/zhuliu/xiaoshi_system into product

zhuhao 1 год назад
Родитель
Сommit
55dc32c7bd

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

@@ -78,6 +78,9 @@ export default {
         this.$emit("operateDirectory", 'changeColor');
     },
   },
+  destroyed(){
+    window.removeEventListener('mousedown',()=>{})
+  }
 };
 </script>
   

+ 3 - 0
src/utils/model/myView/index.vue

@@ -207,6 +207,9 @@
         display: var(--displays) !important;
         color: red !important;
     }
+    &>*{
+      overflow: auto;
+    }
   }
  
 

+ 12 - 7
src/views/components/import/task/components/index.vue

@@ -30,11 +30,11 @@
             <el-table-column label="操作" align="center" width="150">
               <template slot-scope="scope" >
                 <div  class="operate">
-                    <el-link type="primary" @click.native="details(scope.row)">
+                    <!-- <el-link type="primary" @click.native="details(scope.row)">
                         <el-tooltip class="item" effect="dark" content="下载" placement="top">
                         <i class="el-icon-document"></i>
                         </el-tooltip>  
-                    </el-link>
+                    </el-link> -->
                   <el-link type="primary" @click.native="handleDownload(scope.row)" v-if="$permission('/workspace/common/taskDownload') && ((scope.row.type == 1 || scope.row.type == 2) && (scope.row.state !== 0 || scope.row.state !== 1))">
                     <el-tooltip class="item" effect="dark" content="下载" placement="top">
                       <i class="iconfont icon-xiazai"></i>
@@ -158,8 +158,13 @@ export default {
   },
   methods: {
     initTask() {
-      var webSocket = this.webSocket
-      webSocket.onmessage = (e) => {
+        
+    //   var webSocket = this.webSocket
+    //   console.log(webSocket)
+      this.webSocket.onmessage = (e) => {
+        if(e.data.indexOf('{') == -1){
+            return false
+        }
         const { code, data, message } = JSON.parse(e.data)
         // console.log({ code, data, message });
 //         var a = {
@@ -181,7 +186,7 @@ export default {
         if(code === 900){
             if(data.doneType == 0){
                 const index = this.tableData.findIndex(item=>{return item.id == data.taskId})
-                if (index === -1) {
+                if (index == -1) {
 
                 } else {
                     var arr = this.tableData[index]
@@ -189,7 +194,7 @@ export default {
                     arr.percentage = data.percentage
                     // arr.successNum =  data.index
                     arr.state =  data.taskStatus
-                    // this.$set(this.tableData, index, arr)
+                    this.$set(this.tableData, index, arr)
                 }
             }
         }
@@ -203,7 +208,7 @@ export default {
             arr.percentage = data.percentage
             // arr.successNum =  data.index
             arr.state =  data.taskStatus
-            // this.$set(this.tableData, index, arr)
+            this.$set(this.tableData, index, arr)
           }
           if (data.complete) {
             // if(data.taskType!=2){

+ 2 - 1
src/views/layout/index.vue

@@ -71,6 +71,7 @@ export default {
   },
   created(){
     this.getPermissionList()
+    this.connectWebSocket(this.userinfo.id)
   },
   async mounted() {
     this.$store.commit('SET_PREFIX', '/')
@@ -86,7 +87,7 @@ export default {
       await this.$store.dispatch('getSystemField', this.projectId)
     }
     this.guide()
-    this.connectWebSocket(this.userinfo.id)
+    
   },
   methods: {
     guide(){

+ 156 - 0
src/views/project/patentDetails/components/menu.vue

@@ -0,0 +1,156 @@
+<template>
+  <div class="height_100 article_menu">
+     <!-- 展开后 -->
+     <div v-if="!isContract" style="width: 300px;height: 100%;">
+        <el-container>
+          <el-header
+            style="width: 100%;display: flex;justify-content: space-evenly; align-items: center; height: 50px;line-height: 50px;">
+            <el-popover ref="heightPopover" placement="bottom" title="高亮" width="320" trigger="click">
+              <patent-keywords-highlight :project-id="projectId" />
+            </el-popover>
+            <el-tooltip content="返回专题库专利清单" placement="top">
+              <el-button size="small" @click="handleClick"><i class="iconfont icon-fanhui"></i></el-button>
+            </el-tooltip>
+            <el-tooltip :content="isRight ? '设置菜单栏为左侧' : '设置菜单栏为右侧'" placement="top">
+              <el-button size="small" class="articles-Loop" @click="isRight = !isRight">
+                <i class="iconfont icon-shezhi2"></i>
+              </el-button>
+            </el-tooltip>
+            <el-tooltip content="设定高亮关键词" placement="top">
+              <el-button v-popover:heightPopover size="small"><i class="iconfont icon-wodegaoliang"></i></el-button>
+            </el-tooltip>
+            <el-tooltip content="对比" placement="top">
+              <el-button size="small" @click="value = !value">
+                <i v-if="!value" class="iconfont icon-duibi"></i>
+                <i v-else class="iconfont icon-duibi1"></i>
+              </el-button>
+            </el-tooltip>
+            <el-tooltip content="收缩" placement="top">
+              <el-button size="small" @click="isContract = !isContract">
+                <i class="iconfont icon-shousuo"></i></el-button>
+            </el-tooltip>
+          </el-header>
+          <el-main style="background: #FFFFFF;">
+            <!-- <PatentLeft></PatentLeft> -->
+          </el-main>
+          <el-footer style="text-align: center;">
+            <el-pagination background layout=" prev, pager, next" :current-page.sync="queryParams.current"
+              :page-size.sync="queryParams.size" @current-change="handleCurrentChange" :total="total">
+            </el-pagination>
+          </el-footer>
+        </el-container>
+      </div>
+      <!-- 收缩后 -->
+      <div v-else class="articles-Loop-div">
+        <el-tooltip content="返回专题库专利清单" placement="right">
+          <div class="articles-Loop">
+            <i class="iconfont icon-fanhui"></i>
+          </div>
+        </el-tooltip>
+        <el-tooltip :content="isRight ? '设置菜单栏为左侧' : '设置菜单栏为右侧'" placement="right-end">
+          <div class="articles-Loop" @click="isRight = !isRight">
+            <i class="iconfont icon-shezhi2"></i>
+          </div>
+        </el-tooltip>
+        <el-tooltip content="展开" placement="right">
+          <div class="articles-Loop" @click="isContract = !isContract">
+            <i class="iconfont icon-zhankai"></i>
+          </div>
+        </el-tooltip>
+        <el-tooltip content="设定高亮关键词" placement="right-end">
+          <el-popover placement="right" title="关键词高亮" width="320" trigger="click" style="margin-top:20px">
+            <patent-keywords-highlight :project-id="projectId" />
+            <div class="articles-Loop" slot="reference" style="">
+              <i class="iconfont icon-wodegaoliang"></i>
+            </div>
+          </el-popover>
+        </el-tooltip>
+        <el-tooltip content="对比" placement="right-end">
+          <div class="articles-Loop" @click="value = !value" :style="{ background: value ? '#9cb2e5' : 'white' }">
+            <i v-if="!value" class="iconfont icon-duibi"></i>
+            <i v-else class="iconfont icon-duibi1"></i>
+          </div>
+        </el-tooltip>
+        <el-tooltip placement="right-end">
+          <template slot="content">
+            <div>点击查看上一篇专利</div>
+            <div>专利:CN202210250237</div>
+            <div>数量:1</div>
+          </template>
+          <div class="articles-Loop">
+            <i class="el-icon-arrow-up"></i>
+          </div>
+        </el-tooltip>
+        <el-tooltip placement="right-end">
+          <template slot="content">
+            <div>点击查看下一篇专利</div>
+            <div>专利:CN202210250237</div>
+            <div>数量:1</div>
+          </template>
+          <div class="articles-Loop" style="">
+            <i class="el-icon-arrow-down"></i>
+          </div>
+        </el-tooltip>
+      </div>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {},
+  data() {
+    return {
+        value:false,//对比
+        isRight:false,//是否在右侧
+        isContract:false,//是否收缩
+        queryParams:{
+            current:1,
+            size:10,
+        },
+        total:0
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    //分页
+    handleCurrentChange(val){
+        this.queryParams.current = val
+    }
+  },
+};
+</script>
+<style lang="scss" scoped>
+.articles_menu{
+.articles-Loop-div {
+    width: 51px;
+    height: 100%;
+    background: #fff;
+    text-align: center;
+
+    .articles-Loop {
+      height: 50px;
+      line-height: 50px;
+      border-bottom: 1px solid #ccc;
+      background: #fff;
+      // border-bottom: none;
+      cursor: pointer;
+    }
+
+    .articles-Loop:hover {
+      background: #cdd7eb !important;
+    }
+
+    .articles-Loop-number {
+      overflow: hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+    }
+
+  }
+}
+
+</style>

+ 285 - 0
src/views/project/patentDetails/components/patentDetails.vue

@@ -0,0 +1,285 @@
+<template>
+  <div>
+    <el-container>
+        <el-header style="min-height: 100px !important;height: auto;">
+            <div class="patent-articles-title-box">
+              <div style="display: flex;justify-content: space-between;align-items: center;">
+                <div style="text-align: start;padding-left: 10px;position: relative;">
+                  <div style="width: 260px;">
+                    <img src="@/assets/visual/fixed.png" width="20px" height="20px"
+                      v-if="fix === true && value == true" @click="qx" style="" />
+                    <img src="@/assets/visual/unfixed.png" width="20px" height="20px"
+                      v-if="fix === false && value == true" @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 style="  position: relative; border-top: 1px solid #e6e6e6;text-align: center;">
+                <el-link v-for="item in menuList" :type="activeMenu === item.value ? 'primary' : undefined" :key="item.value" v-if="!item.show"
+                  :disabled="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"
+                  :key="item.value" @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>
+            <div>
+                <div class="patent-article-left" :style="{ width: showRight ? 'calc(100% - 321px)' : 'calc(100% - 21px)' }">
+                    <my-view :position="this.positionList.find(item=>item.value == radio).position" :showView="radio!=1 && activeMenu != activeMenu2">
+                        <div slot="left">
+                            <component :activeName="activeName" style="width:100%;padding-right: 10px;"
+                              :is="componentName" :project-id="projectId" :patent="patent" :patentNo="[patent.patentNo]"
+                              :domId="patent.patentNo + '1'" 
+                              @refresh="getPatent()"></component>
+                        </div>
+                        <div slot="right">
+                            <component :is="activeMenu2" :project-id="projectId" :patent="patent" :sign="true"></component>
+                        </div>
+                    </my-view>
+                </div>
+                <div class="patent-article-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="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"></component>
+                            </keep-alive>
+                          </el-main>
+                    </el-container>
+                </div>
+            </div>
+        </el-main>
+    </el-container>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {
+    projectId:{
+        default:0
+    }
+  },
+  data() {
+    return {
+        radio: 1,
+        positionList: [
+            {
+                label: 'tab展示',
+                value: 1,
+                position:'row'
+            },
+            {
+                label: '上边展示',
+                value: 2,
+                position:'column-reverse'
+            },
+            {
+                label: '下边展示',
+                value: 3,
+                position:'column'
+            },
+            {
+                label: '左边展示',
+                value: 4,
+                position:'row-reverse'
+            },
+            {
+                label: '右边展示',
+                value: 5,
+                position:'row'
+            },
+        ],
+        menuList: [
+        {
+          value: 'PatentBasic',
+          label: '基础信息'
+        },
+        {
+          value: 'PatentRight',
+          label: '权利要求'
+        },
+        {
+          value: 'PatentImage',
+          label: '附图'
+        },
+        {
+          value: 'PatentInstruction',
+          label: '说明书文本'
+        },
+        {
+          value: 'PatentFamily',
+          label: '同族专利'
+        },
+        {
+          value: 'PatentStatus',
+          label: '法律状态'
+        },
+        {
+          value: 'PatentPDF',
+          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: '其他参考资料'
+            },
+        ],
+        fix: false,
+        showRight: false,
+        activeOption: 'PatentField',
+        activeMenu: 'PatentBasic',
+        activeMenu2: '',
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    getBiaoZhu(){
+
+    },
+    // 创建报告:无效分析等点击事件
+    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)
+      })
+    },
+    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
+    },
+    ending(val) {
+      this.activeMenu2 = val
+      return false
+    },
+    changePosition(val){
+
+    }
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 302 - 0
src/views/project/patentDetails/components/patentMessage/PatentBasic.vue

@@ -0,0 +1,302 @@
+<template>
+  <div class="patent-basic"  @mouseup="mouseup">
+    <el-row :gutter="24">
+      <el-col :span="18" >
+        <el-row :gutter="24">
+          <el-col :span="24">
+            <el-tabs value="0">
+              <el-tab-pane label="摘要" name="0">
+                <p class="common" :data-type="'摘要'+(patent.change2?'译文':'原文')" :style="setStyle()" v-html="getViewDom2(patent, 'abstractStr','摘要'+(patent.change2?'译文':'原文'))"></p>
+               
+             <span>
+                 <el-link v-if="projectId" type="primary" @click.native="handleChange(patent, 'abstractStr')" >
+                  <span v-if="!patent.change2">切换译文</span>
+                  <span v-else>切换原文</span>
+                </el-link>
+              </span>
+        <table class="patent-basic-table">
+          <tr v-if="$permission('/workspace/details/links')">
+            <td width="80"><span class="patent-basic-label">外部链接:</span></td>
+            <td>
+              <el-link type="primary" :href="`https://worldwide.espacenet.com/patent/search?q=${patent.publicNo}`" target="_blank" v-html="getViewDom('Espacenet')" style="margin-right: 15px;"></el-link>
+              <el-link type="primary" :href="`http://epub.cnipa.gov.cn/patent/${patent.publicNo}`" target="_blank" v-html="getViewDom('CNIPA')"></el-link>
+            </td>
+          </tr>
+          <tr>
+            <td width="80"><span  class="patent-basic-label">标签:</span></td>
+            <td>
+              <div class="patent-label">
+                <template >
+                  <el-tag v-if="$permission('/workspace/details/deleteLabel') && $r(projectId,[1,2])" v-for="(label, index) in patent.label" effect="dark" type="primary" size="small" closable :disable-transitions="false" @close="handleCloseLabel(index)">{{ label.name }}</el-tag>
+                 <el-tag v-else v-for="(label, index) in patent.label" effect="dark" type="primary" size="small">{{ label.name }}</el-tag>
+                  <el-input
+                      class="input-new-tag"
+                      v-if="inputLabelVisible"
+                      v-model="inputLabelValue"
+                      ref="saveLabelInput"
+                      size="mini"
+                      @keyup.enter.native="handleInputLabelConfirm"
+                      @blur="handleInputLabelConfirm"
+                  >
+                  </el-input>
+                  <el-button :disabled="!($permission('/workspace/details/addLabel') && $r(projectId,[1,2]))" v-else type="primary" size="mini" @click="showInputLabel" circle icon="el-icon-plus"></el-button>
+                </template>
+              </div>
+            </td>
+          </tr>
+        </table>
+              </el-tab-pane>
+            </el-tabs>
+          </el-col>
+        </el-row>
+      </el-col>
+      <el-col :span="6">
+         <el-card shadow="never" class="text-align_center " style="margin-top:50px;" data-type="附图">
+          <div style="height: 200px;" class="picture">
+            <el-image v-if="(!projectId && patent.abstractPath2)||projectId" :src="patent.abstractPath2?patent.abstractPath2:getImagePath1(patent)" :preview-src-list="[patent.abstractPath2]" :style="{width:patent.imgWidth?patent.imgWidth:'100%',height:patent.imgHeight?patent.imgHeight:'100%'}">
+              <div slot="error" class="image-slot">
+                <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="">
+              </div>
+            </el-image>
+          </div>
+          
+        </el-card>
+        </el-col>
+    </el-row>
+     <el-row :gutter="24">
+      <el-col :span="18" >
+        <el-row :gutter="24">
+          <el-col :span="24">
+            <el-tabs value="0">
+              <el-tab-pane label="著录项目" name="0">
+                <el-descriptions :column=2>
+                  <el-descriptions-item label="申请号"><div class="patent-basic-value"  v-html="getViewDom(patent.applicationNo,'申请号')"></div></el-descriptions-item>
+                  <el-descriptions-item label="申请日"><div class="patent-basic-value"  v-html="getViewDom(patent.applicationDate,'申请日')"></div></el-descriptions-item>
+                  <el-descriptions-item label="公开号"><div class="patent-basic-value" v-html="getViewDom(patent.publicNo,'公开号')"></div></el-descriptions-item>
+                  <el-descriptions-item label="公开日"><div class="patent-basic-value"  v-html="getViewDom(patent.publicDate,'公开日')"></div></el-descriptions-item>
+                  <el-descriptions-item label="授权号" v-if="patent.publicAccreditNo"><div class="patent-basic-value"  v-html="getViewDom(patent.publicAccreditNo,'授权号')"></div></el-descriptions-item>
+                  <el-descriptions-item label="授权日" v-if="patent.publicAccreditDate"><div class="patent-basic-value"  v-html="getViewDom(patent.publicAccreditDate,'授权日')"></div></el-descriptions-item>
+                  <el-descriptions-item label="优先权" v-if="patent.priorityNo"><div class="patent-basic-value"  v-html="getViewDom(patent.priorityNo,'优先权')+ '&nbsp;&nbsp;&nbsp;&nbsp;' +getViewDom(patent.priorityDate)"></div></el-descriptions-item>
+                </el-descriptions>
+              </el-tab-pane>
+            </el-tabs>
+          </el-col>
+        </el-row>
+      </el-col>
+    </el-row>  
+    <el-row :gutter="24">
+      <el-col :span="18" >
+        <el-row :gutter="24">
+          <el-col :span="24">
+            <el-tabs value="0">
+              <el-tab-pane label="相关人" name="0">
+                <el-descriptions :column="1">
+                  <el-descriptions-item label="申请人" labelStyle="width:90px" v-if="patent.applicant" contentStyle="display:flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;">
+                   <div class="patent-basic-value" v-for="item in patent.applicant.filter(a => a.dataType === 2)" :key="item.name">
+                    <div class="margin-right_10">
+                      <span v-html="getViewDom(item.name,'申请人')"></span>
+                      <span v-if="item.shortName" v-html="'(标:'+getViewDom(item.shortName,'申请人')+')'"></span>
+                    </div>
+                   </div>
+                </el-descriptions-item>
+                <el-descriptions-item label="申请人地址" labelStyle="width:90px" v-if="patent.applicant">
+                   <div class="patent-basic-value" v-if="patent.applicant.filter(a => a.dataType === 2)[0]" v-html="getViewDom(patent.applicant.filter(a => a.dataType === 2)[0].addressStr,'申请人地址')"></div>
+                </el-descriptions-item>
+               <el-descriptions-item label="权利人" labelStyle="width:90px" v-if="patent.applicant && patent.applicant.filter(a => a.dataType === 1).length>0" contentStyle="display:flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;">
+                 <div class="patent-basic-value" v-for="item in patent.applicant.filter(a => a.dataType === 1)" :key="item.name">
+                  <div class="margin-right_10">
+                    <span v-html="getViewDom(item.name,'权利人')"></span>
+                    <span v-if="item.shortName" v-html="'(标:'+getViewDom(item.shortName,'权利人')+')'"></span>
+                  </div>
+                 </div>
+               </el-descriptions-item>
+                <el-descriptions-item label="权利人地址" labelStyle="width:90px" v-if="patent.applicant && patent.applicant.filter(a => a.dataType === 1).length>0">
+                  <div class="patent-basic-value"  v-if="patent.applicant.filter(a => a.dataType === 1)[0]"  v-html="getViewDom(patent.applicant.filter(a => a.dataType === 1)[0].addressStr,'权利人地址')"></div>
+                </el-descriptions-item>
+               
+                <el-descriptions-item label="发明人" labelStyle="width:90px" v-if="patent.inventor && patent.inventor.length>0" contentStyle="display:flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;">
+                  <div class="patent-basic-value margin-right_10" v-for="item in patent.inventor" :key="item.name" v-html="getViewDom(item.name,'发明人')" ></div>
+                </el-descriptions-item>
+                <el-descriptions-item label="代理人" labelStyle="width:90px" v-if="patent.agent && patent.agent.length>0">
+                  <div class="patent-basic-value margin-right_10" v-for="item in patent.agent" :key="item.name"  v-html="getViewDom(item.name,'代理人')"></div>
+                </el-descriptions-item>
+                <el-descriptions-item label="代理机构" labelStyle="width:90px" v-if="patent.agency">
+                   <div v-if="patent.agency" class="patent-basic-value"  v-html="getViewDom(patent.agency.name,'代理机构')"></div>
+                </el-descriptions-item>
+            </el-descriptions>
+              </el-tab-pane>
+            </el-tabs>
+          </el-col>
+        </el-row>
+      </el-col>
+    </el-row>
+
+     <el-row :gutter="24">
+      
+      <el-col :span="18" >
+        <el-row :gutter="24">
+          <el-col :span="24">
+            <el-tabs value="0">
+              <el-tab-pane label="分类号" name="0"  v-if="patent.ipcList">
+                <el-descriptions :column=1>
+                <el-descriptions-item label="IPC分类号" contentStyle="display:flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;">
+                  <div class="patent-basic-value margin-right_10" v-for="item in patent.ipcList" :key="item" v-html="getViewDom(item,'IPC分类号')"></div>
+                </el-descriptions-item>
+            </el-descriptions>
+              </el-tab-pane>
+            </el-tabs>
+          </el-col>
+        </el-row>
+      </el-col>
+    </el-row>
+
+    
+  </div>
+</template>
+
+<script>
+import { commonMixins ,addContrast } from "./mixins"
+import { changeTranslation ,patentKeywordsHighlight} from "@/views/workspace/folder/components/mixins";
+
+export default {
+  mixins: [commonMixins, changeTranslation,addContrast,patentKeywordsHighlight],
+  data() {
+    return {
+      inputLabelVisible: false,
+      inputLabelValue: '',
+    }
+  },
+  watch:{
+    patent(val,oldVal){
+      if(val!=oldVal){
+        this.$nextTick(()=>{
+          if(!this.projectId && !this.patent.abstractPath2 && this.patent.publicNo){
+            var params = {
+              patentCell:4,
+              patentNo:this.patent.publicNo,
+              appNo:this.patent.applicationNo,
+            }
+            this.$api.getPatentPart(params).then(response=>{
+                  if(response.code == 200){
+                    if(Object.keys(response.data).length>0 && response.data.image.length>0){
+                      this.$set(this.patent,'abstractPath2',response.data.image[0].url)
+                    }else{
+                      this.$set(this.patent,'abstractPath2','q')
+                    }
+                    
+                    this.getHeight(this.patent.abstractPath2, this.patent)
+                  }
+              })
+          }
+        })
+      }
+    }
+  },
+  mounted() {
+    if(!this.projectId && !this.patent.abstractPath2 && this.patent.publicNo){
+      var params = {
+        patentCell:4,
+        patentNo:this.patent.publicNo,
+        appNo:this.patent.applicationNo,
+      }
+       this.$api.getPatentPart(params).then(response=>{
+            if(response.code == 200){
+              if(Object.keys(response.data).length>0 && response.data.image.length>0){
+                this.$set(this.patent,'abstractPath2',response.data.image[0].url)
+              }else{
+                this.$set(this.patent,'abstractPath2','q')
+              }
+              
+              this.getHeight(this.patent.abstractPath2, this.patent)
+            }
+        })
+    }
+  },
+
+  methods: {
+    handleCloseLabel(index) {
+      this.patent.label.splice(index, 1);
+      this.handleSubmitLabel()
+    },
+    handleInputLabelConfirm() {
+      let inputLabelValue = this.inputLabelValue;
+      if (inputLabelValue) {
+        this.patent.label.push({
+          name: inputLabelValue
+        });
+        this.handleSubmitLabel()
+      }
+      this.inputLabelVisible = false;
+      this.inputLabelValue = '';
+    },
+    showInputLabel() {
+      this.inputLabelVisible = true;
+      this.$nextTick(_ => {
+        this.$refs.saveLabelInput.$refs.input.focus();
+      });
+    },
+    handleSubmitLabel() {
+      let data = {
+        projectId: this.projectId,
+        patentId: this.patent.id,
+        type: 96,
+        field: '54-0',
+        selected: this.patent.label.map(item => item.name)
+      }
+      this.$api.updatePatentLabel(data).then(response => {
+        this.$message.success('操作成功')
+      }).catch(error => {
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+
+.patent-basic {
+  // height: 500px;
+  overflow: auto;
+  height:calc(100% + 30px) ;
+  padding-bottom: 10px;
+  .el-image {
+    width: 100%;
+  }
+  .patent-basic-label {
+    color: #6b6868;
+  }
+  .patent-basic-value {
+  }
+  .patent-basic-table {
+    
+    font-size: 14px;
+    tr {
+      height: 30px;
+    }
+  }
+  .patent-articles-patent-abstract {
+    .common {
+      font-size: 14px;
+      margin-top: 0;
+    }
+    .title {
+      font-weight: bold;
+      border-bottom: 1px solid #e6e6e6;
+      padding-bottom: 5px;
+      margin-top: 0;
+      margin-bottom: 5px;
+    }
+  }
+  .patent-label {
+    line-height: 35px;
+    .el-tag {
+      margin-left: 0;
+      margin-right: 10px;
+    }
+    .input-new-tag {
+      width: 90px;
+      vertical-align: bottom;
+    }
+  }
+}
+</style>

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


+ 16 - 8
src/views/project/patentDetails/index.vue

@@ -1,17 +1,22 @@
 <template>
-  <div class="height_100">
-    <el-container>
-        <el-aside></el-aside>
-        <el-main>
-            
-        </el-main>
-    </el-container>
+  <div class="height_100 article">
+    <articleMenu></articleMenu>
+    <div class="height_100">
+        <my-View>
+            <div slot="left"></div>
+            <div slot="right"></div>
+        </my-View>
+    </div>
+    
   </div>
 </template>
 
 <script>
+import articleMenu from './components/menu.vue'
 export default {
-  components: {},
+  components: {
+    articleMenu
+  },
   props: {},
   data() {
     return {
@@ -25,4 +30,7 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
+.article{
+    display: flex;
+}
 </style>