Bläddra i källkod

专题库表格显示,专利挖掘再审核任务页面修改

zhuhao 1 år sedan
förälder
incheckning
83e12a05e6

+ 8 - 0
src/api/newApi/project.js

@@ -41,4 +41,12 @@ export default {
     groupPatentProject(data) {
         return axios.post("/xiaoshi/patentProject/groupPatentProject", data);
     },
+    /**
+     * 专利数据库查询专利清单
+     * @param {*} data 
+     * @returns 
+     */
+    QueryPatent(data) {
+        return axios.post("/xiaoshi/patent/queryPatent", data);
+    },
 };

+ 5 - 1
src/utils/model/upload/index.vue

@@ -34,7 +34,7 @@
       <div class="line" v-if="fileList.length > 0"></div>
       <div class="fileList" v-if="fileList.length > 0">
         <ul>
-          <li v-for="item in fileList" :key="item.guid">
+          <li v-for="item in fileList" :key="item.guid" @dblclick="ondblclick(item)">
             <div>
               <i class="el-icon-document" style="margin-right: 10px"></i
               ><span class="name" @click="checkFiles(item)">{{
@@ -183,6 +183,10 @@ export default {
   created() {},
   mounted() {},
   methods: {
+    // 双击已上传的文件
+    ondblclick(file) {
+      this.$emit('on-dblclick',file)
+    },
     onPreview(file) {
       this.$emit("on-preview", file);
     },

+ 2 - 3
src/views/components/dialog/examine.vue

@@ -100,7 +100,6 @@ export default {
     },
     // 确定
     submitTask() {
-      console.log(1);
       this.isEndTime = false
       this.$refs.form.validate((valid) => {
         if (valid) {
@@ -125,14 +124,14 @@ export default {
               ...this.form,
             }
             params.projectId = this.parentForm.projectId//项目id
-            params.id = this.parentForm.id//当前任务id
+            params.assoTaskId  = this.parentForm.id//当前任务id
           } else {
             params = {
               patentDigProjectDTO: this.parentForm,
               projectTaskDTO: this.form,
             }
           }
-         console.log(2,this.form);
+        //  console.log(2,this.form);
           // 区分是哪种审核
           switch (this.form.type) {
             case 1://专利挖掘项目审核

+ 1 - 1
src/views/patentMining/components/details/components/projectPath.vue

@@ -96,7 +96,7 @@ export default {
   data() {
     return {
       numObj: {
-        '创新点梳理':12,
+        '创新点梳理':{},
         '查新检索': 0,
         '保护主题规划': 0,
         '独权撰写': 0,

+ 106 - 194
src/views/patentMining/components/handleExamine/detailsPage.vue

@@ -1,95 +1,99 @@
 <template>
   <div class="detailsPage" style="height: calc(100% - 60px);">
-    <el-container >
+    <el-container>
       <el-aside width="40px" style="text-align: center;">
-        <div style="font-size: 24px;" @click="handleTarget(1)"> 
+        <div style="font-size: 24px;" @click="handleTarget(1)">
           <el-tooltip content="回到基本信息" placement="right">
-            <i class="el-icon-document" ></i> 
+            <i class="el-icon-document"></i>
           </el-tooltip>
         </div>
         <div style="font-size: 24px;" @click="handleTarget(2)">
           <el-tooltip content="回到文件" placement="right">
-            <i class="el-icon-folder"></i> 
-          </el-tooltip> 
-          
+            <i class="el-icon-folder"></i>
+          </el-tooltip>
+
         </div>
-        <div style="font-size: 24px;" @click="handleTarget(3)"> 
+        <div style="font-size: 24px;" @click="handleTarget(3)">
           <el-tooltip content="回到审核历史" placement="right">
-            <i class="el-icon-alarm-clock"></i> 
+            <i class="el-icon-alarm-clock"></i>
           </el-tooltip>
         </div>
       </el-aside>
-      <el-main>
+      <el-main class="main">
 
-        <el-descriptions title="" :column="2" size="" border style="margin-bottom: 20px;">
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-user"></i> 任务名称
-            </template>
-            {{ row.name }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-user"></i> 创建人
-            </template>
-            {{ row.name }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-user"></i> 处理人
-            </template>
-            {{ row.name }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-mobile-phone"></i> 所属项目
-            </template>
-            {{ row.name }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-location-outline"></i> 所属流程
-            </template>
-            {{ row.taskPath }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-tickets"></i> 截止时间
-            </template>
-            {{ row.endTime }}
-          </el-descriptions-item>
-        </el-descriptions>
-        <el-table :data="tableData" border>
-          <el-table-column prop="name" label="文件名称" align="center"></el-table-column>
-          <el-table-column prop="name" label="上传人" align="center"></el-table-column>
-          <el-table-column prop="time" label="上传时间" align="center"> </el-table-column>
-          <el-table-column prop="type" label="文件类型" align="center"> </el-table-column>
-          <el-table-column label="操作" align="center" width="120px">
-            <template slot-scope="scope">
-              <el-button type="text" @click="handleCommand(1, scope.row)">预览</el-button>
-              <el-button type="text" @click="handleCommand(2, scope.row)">下载</el-button>
-              <!-- <div>
-                <el-dropdown split-button type="primary" size="small" @command="handleCommand($event, scope.row)"
-                  @click="handleQuote(scope.row)">
-                  <span>引 用</span>
-                  <el-dropdown-menu slot="dropdown">
-                    <el-dropdown-item command="1">预览</el-dropdown-item>
-                    <el-dropdown-item command="2">下载</el-dropdown-item>
-                  </el-dropdown-menu>
-                </el-dropdown>
-              </div> -->
-            </template>
-          </el-table-column>
-        </el-table>
+        <div class="message">
+          <el-descriptions title="" :column="2" size="" border style="margin-bottom: 20px;">
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-user"></i> 任务名称
+              </template>
+              {{ row.name }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-user"></i> 创建人
+              </template>
+              {{ row.name }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-user"></i> 处理人
+              </template>
+              {{ row.name }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-mobile-phone"></i> 所属项目
+              </template>
+              {{ row.name }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-location-outline"></i> 所属流程
+              </template>
+              {{ row.taskPath }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-tickets"></i> 截止时间
+              </template>
+              {{ row.endTime }}
+            </el-descriptions-item>
+          </el-descriptions>
+        </div>
+        <div class="fileTable">
+          <el-table :data="tableData" border>
+            <el-table-column prop="name" label="文件名称" align="center"></el-table-column>
+            <el-table-column prop="name" label="上传人" align="center"></el-table-column>
+            <el-table-column prop="time" label="上传时间" align="center"> </el-table-column>
+            <el-table-column prop="type" label="文件类型" align="center"> </el-table-column>
+            <el-table-column label="操作" align="center" width="120px">
+              <template slot-scope="scope">
+                <el-button type="text" @click="handleCommand(1, scope.row)">预览</el-button>
+                <el-button type="text" @click="handleCommand(2, scope.row)">下载</el-button>
+                <!-- <div>
+                  <el-dropdown split-button type="primary" size="small" @command="handleCommand($event, scope.row)"
+                    @click="handleQuote(scope.row)">
+                    <span>引 用</span>
+                    <el-dropdown-menu slot="dropdown">
+                      <el-dropdown-item command="1">预览</el-dropdown-item>
+                      <el-dropdown-item command="2">下载</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </el-dropdown>
+                </div> -->
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
         <!-- <div class="div_margin">说明:</div>
         <el-input type="textarea" :rows="3" readonly v-model="row.description"></el-input> -->
-    
-        <div>
+
+        <div class="history">
           <p>审核历史:</p>
           <el-timeline :reverse="false" style="padding: 10px 0 0 10px;cursor: pointer;">
             <template>
-              <div v-if="timelineList.length>0">
-                 <el-card v-for="item in timelineList" :key="item.id">
+              <div v-if="timelineList.length > 0">
+                <el-card v-for="item in timelineList" :key="item.id">
                   <div style="margin-bottom: 5px;">
                     <span>处理人:</span>
                   </div>
@@ -105,119 +109,9 @@
                     <span>暂无数据</span>
                   </div>
                 </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
-                <el-card>
-                  <div>
-                    <span>暂无数据</span>
-                  </div>
-                </el-card>
               </div>
             </template>
-           
+
           </el-timeline>
         </div>
 
@@ -227,12 +121,13 @@
 </template>
 
 <script>
+import { downLoad2 } from "@/utils"
 export default {
   props: ['row'],
   data() {
     return {
       // 分配任务详情
-      detailsMessage:{},
+      detailsMessage: {},
       //文件
       tableData: [
         {
@@ -242,7 +137,7 @@ export default {
         }
       ],
       //审核历史
-      timelineList:[],
+      timelineList: [],
     }
   },
   watch: {},
@@ -252,21 +147,34 @@ export default {
   },
   methods: {
     handleTarget(val) {
+      let dom=''
       switch (val) {
         case 1:
-          console.log(1);
+          dom = '.message'
+          this.getTarget(dom)
           break;
         case 2:
-          
+          dom = '.fileTable'
+          this.getTarget(dom)
           break;
         case 3:
-          
+          dom = '.history'
+          this.getTarget(dom)
           break;
-      
+
         default:
           break;
       }
     },
+    // 页面滚动到某个位置
+    getTarget(dom) {
+      let target = document.querySelector(dom)
+      target.scrollIntoView({
+        block: 'start',
+        inline: 'nearest',
+        behavior: 'smooth'
+      })
+    },
     // 获取数据
     getDetails() {
       let params = {
@@ -274,8 +182,8 @@ export default {
       }
       this.$api.queryAuditHistory(params).then(res => {
         if (res.code == 200) {
-          this.detailsMessage=res.data
-          this.tableData=res.data
+          this.detailsMessage = res.data
+          this.tableData = res.data
           this.timelineList = res.data.projectTaskVOS//审查历史
         }
       })
@@ -284,16 +192,20 @@ export default {
     handleCommand(ev, row) {
       switch (ev) {
         case '1'://预览
-
+          this.preview(row)
           break;
         case '2'://下载
-
+          this.downloads()
           break;
 
         default:
           break;
       }
     },
+    // 预览
+    preview(data) { },
+    // 下载
+    downloads(data){},
   },
 }
 </script>

+ 7 - 4
src/views/patentMining/components/handleExamine/handleExamine.vue

@@ -19,7 +19,7 @@
                 <el-col :span="24">
                   <el-form-item label="审核附件:">
                     <myUpload :file-list="form.systemFileList" @on-change="onchangeFile" @on-remove="onRemove"
-                      style="height: 180px;" :autoUpload="true"></myUpload>
+                      style="height: 180px;" :autoUpload="true" @on-dblclick="handleOndblclick" @on-preview="onPreview"></myUpload>
                   </el-form-item>
                 </el-col>
               </el-row>
@@ -86,7 +86,7 @@ export default {
   data() {
     return {
       form: {
-        systemFileList: [],//文件数组
+        systemFileList: [{name:'创新点流程'}],//文件数组
         description: '',//审核意见
         ifSearch: false,//是否返回修改
       },
@@ -96,10 +96,12 @@ export default {
 
   },
   methods: {
+    // 双击文件
+    handleOndblclick(file) {
 
+    },
     // 审核确认
     sure() {
-      // window.open("about:blank", "_top").close()
       // 判断文件是否都上传完毕
       if (this.form.systemFileList && this.form.systemFileList.length > 0) {
         this.form.fileGuids = []
@@ -115,7 +117,8 @@ export default {
         return false
       }
       let params = {
-        taskId: this.row.id,
+        type:5,//任务的类型,5任务审核任务
+        assoTaskId : this.row.id,//当前任务的id
         ...this.form,
       }
       this.$api.addTaskAuditResult(params).then(res => {

+ 40 - 235
src/views/project/patentCollection/components/views/Table.vue

@@ -1,284 +1,86 @@
 <template>
   <div class="patent-table-list-view">
-    <el-table
-        v-if="refreshData"
-        ref="table"
-        class="view-table"
-        :data="records"
-        style=""
-        border
-        :height="tableHeight"
-        header-row-class-name="custom-table-header"
-        @cell-click="handleClick"
-        :cell-class-name="cellClassName"
-    >
-      <el-table-column width="80" align="center">
-        <!-- <template slot="header">
-          <patent-table-view-sort prop="id" @on-sort="onSort" />
-        </template> -->
+    <!-- <el-table :data="tableData" border style="width: 100%" header-row-class-name="custom-table-header" v-if="showTable"
+      :maxHeight="tableHeight" @sort-change="sortChange" v-el-table-infinite-scroll="getList"
+      :infinite-scroll-distance="10" :infinite-scroll-disabled="disabled"> -->
+    <el-table :data="tableData" border style="width: 100%" header-row-class-name="custom-table-header"  @sort-change="sortChange">
+      <el-table-column label="#" width="60" type="index" align="center">
         <template slot-scope="scope">
-          <div v-if="refresh">
-            <el-checkbox :label="scope.row.id" @change="changeSelect(scope.row)" :checked="selected.indexOf(scope.row.id) !== -1 || patentNoList.indexOf(scope.row.patentNo)!== -1 || patentNoList.indexOf(scope.row.applicationNo)!== -1 ">
-              <span>{{ (scope.$index + 1) + ((params.current - 1) * params.size) }}</span>
-            </el-checkbox>
-          </div>
+          <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="专利号" show-overflow-tooltip align="center" width="180">
-        <!-- <template slot="header">
-          <patent-table-view-sort title="专利号" prop="patentNo" @on-sort="onSort" />
-        </template> -->
+
+      <el-table-column v-for="item in column.filter(item => !item.ifHidden)" :render-header="$commonJS.renderHeaderMethods"
+        :key="item.value" :prop="item.value" :label="item.name" sortable="custom" align="center">
         <template slot-scope="scope">
-          <el-popover placement="right-start" width="500" trigger="hover" >
-            <table class="patent-popover-table" >
-              <tr>  
-                <td>
-                  <div class="patent-abstract-image text-align_center" >
-                    <el-image v-if="(!projectId && scope.row.abstractPath2)||projectId" :src="scope.row.abstractPath2?scope.row.abstractPath2:getImagePath1(scope.row)" :preview-src-list="[scope.row.abstractPath2]" style="vertical-align:middle;" :style="{width:scope.row.imgWidth?scope.row.imgWidth:'100%',height:scope.row.imgHeight?scope.row.imgHeight:'100%'}">
-                      <div slot="error" class="image-slot">
-                        <el-image :src="getErrorImage(scope.row)" :preview-src-list="[getErrorImage(scope.row)]">
-                          <div slot="error" class="image-slot">
-                            <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
-                          </div>
-                        </el-image>
-                      </div>
-                    </el-image>
-                  </div>
-                </td>
-                <td>
-                  <p v-html="getViewDom2(scope.row, 'abstractStr')"></p>
-                  <el-link v-if="projectId" type="primary" @click.native="handleChange(scope.row, 'abstractStr')">
-                    <span v-if="!scope.row.change2">切换译文</span>
-                    <span v-else>切换原文</span>
-                  </el-link>
-                </td>
-              </tr>
-            </table>
-            <el-link slot="reference" :disabled="!$permission('/workspace/details')" :class="$permission('/workspace/details')?'':'jinzhi'" :type="scope.row.read === 1 ? 'success' : 'danger'" @click.native="handleLink(scope.row,scope.$index)">
-              <span v-html="getViewDom(scope.row.patentNo)"></span>
+          <div v-if="['name'].includes(item.value)">
+            <el-link type="primary" @click="handleClick(scope.row, item.value)">
+              <span v-html="$commonJS.getColumnData(scope.row, item)"></span>
             </el-link>
-          </el-popover>
-        </template>
-      </el-table-column>
-      <el-table-column v-for="column in columnList" :label="column.name" show-overflow-tooltip align="center">
-        <!-- <template slot="header">
-          <patent-table-view-sort :title="column.name" :prop="column.key" :projectId="projectId" @on-sort="onSort" />
-        </template> -->
-        <template slot-scope="scope">
-          <div style="" v-for="data in getColumnValue(scope.row, column)">
-            <template v-if="column.key === 'name'">
-              <span v-html="getViewDom2(scope.row, 'name')"></span>
-              <br>
-              <el-link v-if="projectId" type="primary" @click.native="handleChange(scope.row, 'name')">
-                <span v-if="!scope.row.change">切换译文</span>
-                <span v-else>切换原文</span>
-              </el-link>
-            </template>
-            <template v-else-if="column.key === 'abstractStr'">
-              <span v-html="getViewDom2(scope.row, 'abstractStr')"></span>
-              <br>
-              <el-link v-if="projectId" type="primary" @click.native="handleChange(scope.row, 'abstractStr')">
-                <span v-if="!scope.row.change2">切换译文</span>
-                <span v-else>切换原文</span>
-              </el-link>
-            </template>
-            <template v-else>
-              <span v-html="getViewDom(data)"></span>
-            </template>
           </div>
+          <div v-else v-html="$commonJS.getColumnData(scope.row, item)"></div>
         </template>
       </el-table-column>
+
     </el-table>
   </div>
 </template>
 
 <script>
-// import { commonMixins } from "../../articles/components/mixins"
-// import { patentViewList, patentKeywordsHighlight } from '../mixins'
-// import PatentTableViewSort from "./TableSort";
-
+// import { getTableHeight } from '@/views/components/mixins'
 export default {
-  props: ['viewField'],
-  // mixins: [patentViewList, patentKeywordsHighlight,commonMixins],
+  mixins: [],
+  props: ['tableData','queryParams','column'],
   components: {
-    // PatentTableViewSort
+
   },
   data() {
     return {
-      tableData: [],
-      tableHeight: null,
-      refreshData: false
+      // tableData: [],
     }
   },
   watch: {
-    viewField: {
-      handler(n, o) {
-        this.refreshTable()
-      },
-      deep: true
-    },
-    records(val,oldval) {
-      
-      if(val != oldval){
-        this.$nextTick(() => {
-          this.addRecords()
-          this.refreshCheckBox()
-          this.setHeight()
-        })
-      }
-      
-    },
-    refreshData(val){
-      if(val){
-        this.$nextTick(()=>{
-          this.setHeight()
-        })
-        
-      }
-    }
+
   },
   activated() {
     // this.refreshTable()
   },
   computed: {
-    columnList() {
-      return this.viewField.filter(item => !item.hidden)
-    }
+
   },
-  created(){
+  created() {
 
   },
   mounted() {
-    if(this.viewField.length>0){
-      this.refreshTable()
-    }
-    this.$nextTick(()=>{
-      this.addRecords()
-    })
+
     // console.log(this.columnList);
   },
   methods: {
-    getPatentAbstractImage(path) {
-      if (!path) {
-        return ''
-      }
-      return this.$p + path
-    },
-    onSort(data) {
-      this.$emit('on-sort', data)
+    // 点击专利号
+    handleClick(row,key){},
+    // 排序
+    sortChange({ column, prop, order }) {
+      this.$emit('on-sort', { column, prop, order, str })
     },
-    setHeight() {
-      const offsetTop = window.innerHeight - 225
-      const body = document.querySelector('.el-table__body')
-      if (!body) {
-        return false
-      }
-      const offsetBodyHeight = body.offsetHeight
-      if (this.records.length && offsetBodyHeight < offsetTop) {
-        this.tableHeight = offsetBodyHeight + 75
-      } else if (!this.records.length) {
-        this.tableHeight = null
-      } else {
-        this.tableHeight = offsetTop
-      }
-    },
-    refreshTable() {
-      this.refreshData = false
-      this.$nextTick(() => {
-        this.refreshData = true
-      })
-    },
-    getColumnValue(row, column) {
-      if (column.type !== 'list') {
-        const field = row.field.find(item => item.id === parseInt(column.key))
-        if (field) {
-          return field.selected
-        }
-      } else if (column.key === 'label') {
-        if(row.label)
-        return row.label.map(item => item.name)
-      } else {
-        const value = row[column.key]
-        if (column.key === 'inventor' || column.key === 'agent') {
-          if(value)
-          return value.map(item => item.name)
-        }
-        if (column.key === 'applicant1') {
-          if(row.applicant)
-          return row.applicant.filter(a => a.dataType === 1).map(item => item.shortName)
-        }
-        if (column.key === 'applicant2') {
-          if(row.applicant)
-          return row.applicant.filter(a => a.dataType === 1).map(item => item.name)
-        }
-        if (column.key === 'applicant3') {
-          if(row.applicant)
-          return row.applicant.filter(a => a.dataType === 2).map(item => item.shortName)
-        }
-        if (column.key === 'applicant4') {
-          if(row.applicant)
-          return row.applicant.filter(a => a.dataType === 2).map(item => item.name)
-        }
-        if (column.key === 'simpleFamily') {
-          return [row.family.simple.length]
-        }
-        if (column.key === 'inpadocFamily') {
-          return [row.family.inpadoc.length]
-        }
-        if (column.key === 'patSnapFamily') {
-          return [row.family.patSnap.length]
-        }
-        if (column.key === 'agency' && value) {
-          return [value.name]
-        }
-        if (value instanceof Array) {
-          return value
-        } else if (typeof value === 'string' || typeof value === 'number') {
-          return [value]
-        }
-        return ''
-      }
-    },
-    cellClassName({ row, column, rowIndex, columnIndex }) {
-      if (this.validationCustomField(column.label)) {
-        return 'custom-field-cell'
-      }
-    },
-    validationCustomField(label) {
-      const customField = this.viewField.filter(item => item.type !== 'list' || item.key === 'label')
-      const field = customField.find(item => item.name === label)
-      if (field) {
-        return field
-      }
-      return false
-    },
-    handleClick(row, column, cell,event) {
-      // console.log(document.querySelector('.el-table__body-wrapper').scrollTop)
-      if (!this.$r(this.projectId, [1, 2]) || !this.$permission('/workspace/details/indexing')) {
-        return false
-      }
-      if(!this.projectId){
-        return false
-      }
-      const field = this.validationCustomField(column.label)
-      if (field) {
-        this.$emit('index-setting', row, field)
-      }
-    },
-  }
+  },
 }
 </script>
 
 <style lang="scss">
 .patent-popover-table {
-  tbody, tr, td {
+
+  tbody,
+  tr,
+  td {
     height: 100%;
     vertical-align: top;
   }
+
   p {
     padding: 0 !important;
     margin: 0 !important;
   }
+
   .patent-abstract-image {
     padding: 10px;
     border: 1px solid #bcc2cc;
@@ -286,21 +88,24 @@ export default {
     width: 120px;
     height: 150px;
     line-height: 150px;
+
     img {
       width: 100%;
       height: 100%;
     }
   }
 }
+
 .patent-table-list-view {
   .view-table {
     width: 100%;
   }
+
   .el-table .cell {
     white-space: pre-line !important;
   }
+
   .custom-field-cell {
     cursor: pointer;
   }
-}
-</style>
+}</style>

+ 235 - 218
src/views/project/patentCollection/index.vue

@@ -4,112 +4,109 @@
       <el-aside width="200px">Aside</el-aside>
       <el-container>
         <el-header style="display:flex;justify-content:space-between">
-            <div style="display:flex">
-                <el-tooltip class="item" effect="dark" :content="(showLeft ? '隐藏' : '显示') + '左侧菜单'" placement="top">
-                    <i :class="showLeft ? 'el-icon-s-fold' : 'el-icon-s-unfold'" style="font-size: 25px;position: relative; top: 5px; color: #2f2f2f; cursor: pointer" @click="showLeft = !showLeft"></i>
-                </el-tooltip>
-                <mySearch :SearchFields="searchFiled" @search="search" :searchValue="searchOption"></mySearch>
-                <el-popover placement="bottom" title="关键词高亮" width="320" trigger="click">
-                    <!-- <patent-keywords-highlight :project-id="projectId" /> -->
-                    <el-button slot="reference" size="small" type="primary" class="margin-right_10 margin-left_10" :disabled="!$permission('/workspace/common/highlight')">
-                    高亮<i class="el-icon-arrow-down el-icon--right"></i>
-                    </el-button>
-                </el-popover>
-            </div>
-            <div>
-                <el-button-group class="margin-left_10">
-                    <el-tooltip v-for="item in viewList" :key="item.value" class="item" effect="dark" :content="item.title" placement="top">
-                    <el-button @click="handleChangeView(item)" size="small" :type="viewSelected === item.value ? 'primary' : ''" >
-                        <i :class="item.btn" style="font-size: 12px !important;"></i>
-                        </el-button>
-                    </el-tooltip>
-                </el-button-group>
-                <el-dropdown trigger="click" split-button type="primary" size="small">
-                    <span @click="handleField" v-disabled="!($permission('/workspace/common/customField') && $r(projectId,[1,2]))">自定义栏位管理</span>
-                    <el-dropdown-menu slot="dropdown" class="text-align_center">
-                    <el-dropdown-item @click.native="handleFile">报告文档</el-dropdown-item>
-                    <el-dropdown-item @click.native="handleQuestion" v-if="$permission('/workspace/event')">事 件</el-dropdown-item>
-                    <el-dropdown-item @click.native="handleFieldManage">显示栏位管理</el-dropdown-item>
-                    <el-dropdown-item @click.native="exportPDF">导出PDF首页</el-dropdown-item>
-                    <el-dropdown-item @click.native="handleBatch" :disabled="!($permission('/workspace/folder/batchUploadSpecification') && $r(projectId,[1,2]))">批量上传说明书</el-dropdown-item>
-                    <el-dropdown-item>
-                        <el-dropdown trigger="hover" placement="right-start">
-                            <span>
-                            导出专利<i class="el-icon-arrow-right el-icon--right"></i>
-                            </span>
-                            <el-dropdown-menu slot="dropdown">
-                            <el-dropdown-item @click.native="handleExport(false)">当前全部</el-dropdown-item>
-                            <el-dropdown-item @click.native="handleExport(true)">当前所选</el-dropdown-item>
-                            </el-dropdown-menu>
-                        </el-dropdown>
-                    </el-dropdown-item>
-                    <el-dropdown-item>
-                        <el-dropdown  trigger="hover" placement="right-start">
-                        <span>
-                            {{ familyObj[queryParams.family] }}<i class="el-icon-arrow-right el-icon--right"></i>
-                        </span>
-                        <el-dropdown-menu slot="dropdown">
-                            <el-dropdown-item v-for="(item, key) in familyObj" :key="key" @click.native="onChangeFamily(key)">{{ item }}</el-dropdown-item>
-                        </el-dropdown-menu>
-                        </el-dropdown>
-                    </el-dropdown-item>
-                    <el-dropdown-item :disabled="!$permission('/workspace/folder/merge')">
-                        <el-dropdown trigger="hover" placement="right-start">
-                        <span >
-                            合并<i class="el-icon-arrow-right el-icon--right"></i>
-                        </span>
-                        <el-dropdown-menu slot="dropdown">
-                            <el-dropdown-item @click.native="handleMerge2" :disabled="!($permission('/workspace/folder/merge/inventorMerge') && $r(projectId,[1,2]))">发明人</el-dropdown-item>
-                            <el-dropdown-item @click.native="handleMerge" :disabled="!($permission('/workspace/folder/merge/applicationMerge') && $r(projectId,[1,2]))">申请人/权利人</el-dropdown-item>
-                        </el-dropdown-menu>
-                        </el-dropdown>
-                    </el-dropdown-item>
-                    <el-dropdown-item v-if="$permission('/workspace/createReport')">
-                        <el-dropdown trigger="hover" placement="right-start">
-                        <span>
-                            创建报告<i class="el-icon-arrow-right el-icon--right"></i>
-                        </span>
-                        <el-dropdown-menu slot="dropdown" style="margin-top:0px">
-                            <!-- 遍历按钮 -->
-                            <el-dropdown-item  @click.native="handleAnalyses(3)" v-if="$permission('/workspace/createReport/FTO')">FTO调查</el-dropdown-item>
-                            </el-dropdown-menu>
-                        </el-dropdown>
-                    </el-dropdown-item>
-                    <el-dropdown-item @click.native="handleAnalyse('custom')" :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis') && $r(projectId,[1,2,4]))">图表分析</el-dropdown-item>
+          <div style="display:flex">
+            <el-tooltip class="item" effect="dark" :content="(showLeft ? '隐藏' : '显示') + '左侧菜单'" placement="top">
+              <i :class="showLeft ? 'el-icon-s-fold' : 'el-icon-s-unfold'"
+                style="font-size: 25px;position: relative; top: 5px; color: #2f2f2f; cursor: pointer"
+                @click="showLeft = !showLeft"></i>
+            </el-tooltip>
+            <mySearch :SearchFields="searchFiled" @search="search" :searchValue="searchOption"></mySearch>
+            <el-popover placement="bottom" title="关键词高亮" width="320" trigger="click">
+              <!-- <patent-keywords-highlight :project-id="projectId" /> -->
+              <el-button slot="reference" size="small" type="primary" class="margin-right_10 margin-left_10"
+                :disabled="!$permission('/workspace/common/highlight')">
+                高亮<i class="el-icon-arrow-down el-icon--right"></i>
+              </el-button>
+            </el-popover>
+          </div>
+          <div>
+            <el-button-group class="margin-left_10">
+              <el-tooltip v-for="item in viewList" :key="item.value" class="item" effect="dark" :content="item.title"
+                placement="top">
+                <el-button @click="handleChangeView(item)" size="small"
+                  :type="viewSelected === item.value ? 'primary' : ''">
+                  <i :class="item.btn" style="font-size: 12px !important;"></i>
+                </el-button>
+              </el-tooltip>
+            </el-button-group>
+            <el-dropdown trigger="click" split-button type="primary" size="small">
+              <span @click="handleField"
+                v-disabled="!($permission('/workspace/common/customField') && $r(projectId, [1, 2]))">自定义栏位管理</span>
+              <el-dropdown-menu slot="dropdown" class="text-align_center">
+                <el-dropdown-item @click.native="handleFile">报告文档</el-dropdown-item>
+                <el-dropdown-item @click.native="handleQuestion" v-if="$permission('/workspace/event')">事
+                  件</el-dropdown-item>
+                <el-dropdown-item @click.native="handleFieldManage">显示栏位管理</el-dropdown-item>
+                <el-dropdown-item @click.native="exportPDF">导出PDF首页</el-dropdown-item>
+                <el-dropdown-item @click.native="handleBatch"
+                  :disabled="!($permission('/workspace/folder/batchUploadSpecification') && $r(projectId, [1, 2]))">批量上传说明书</el-dropdown-item>
+                <el-dropdown-item>
+                  <el-dropdown trigger="hover" placement="right-start">
+                    <span>
+                      导出专利<i class="el-icon-arrow-right el-icon--right"></i>
+                    </span>
+                    <el-dropdown-menu slot="dropdown">
+                      <el-dropdown-item @click.native="handleExport(false)">当前全部</el-dropdown-item>
+                      <el-dropdown-item @click.native="handleExport(true)">当前所选</el-dropdown-item>
                     </el-dropdown-menu>
-                </el-dropdown>
-            </div>
-            
+                  </el-dropdown>
+                </el-dropdown-item>
+                <el-dropdown-item>
+                  <el-dropdown trigger="hover" placement="right-start">
+                    <span>
+                      {{ familyObj[queryParams.family] }}<i class="el-icon-arrow-right el-icon--right"></i>
+                    </span>
+                    <el-dropdown-menu slot="dropdown">
+                      <el-dropdown-item v-for="(item, key) in familyObj" :key="key" @click.native="onChangeFamily(key)">{{
+                        item }}</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </el-dropdown>
+                </el-dropdown-item>
+                <el-dropdown-item :disabled="!$permission('/workspace/folder/merge')">
+                  <el-dropdown trigger="hover" placement="right-start">
+                    <span>
+                      合并<i class="el-icon-arrow-right el-icon--right"></i>
+                    </span>
+                    <el-dropdown-menu slot="dropdown">
+                      <el-dropdown-item @click.native="handleMerge2"
+                        :disabled="!($permission('/workspace/folder/merge/inventorMerge') && $r(projectId, [1, 2]))">发明人</el-dropdown-item>
+                      <el-dropdown-item @click.native="handleMerge"
+                        :disabled="!($permission('/workspace/folder/merge/applicationMerge') && $r(projectId, [1, 2]))">申请人/权利人</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </el-dropdown>
+                </el-dropdown-item>
+                <el-dropdown-item v-if="$permission('/workspace/createReport')">
+                  <el-dropdown trigger="hover" placement="right-start">
+                    <span>
+                      创建报告<i class="el-icon-arrow-right el-icon--right"></i>
+                    </span>
+                    <el-dropdown-menu slot="dropdown" style="margin-top:0px">
+                      <!-- 遍历按钮 -->
+                      <el-dropdown-item @click.native="handleAnalyses(3)"
+                        v-if="$permission('/workspace/createReport/FTO')">FTO调查</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </el-dropdown>
+                </el-dropdown-item>
+                <el-dropdown-item @click.native="handleAnalyse('custom')"
+                  :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis') && $r(projectId, [1, 2, 4]))">图表分析</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </div>
+
         </el-header>
         <el-main v-loading="loading">
-            <div>
-              <component
-                  ref="patentViewList"
-                  :is="viewSelected"
-                  @download="handleDownload"
-                  @change-read="handleChangeRead"
-                  @select-change="handleSelect"
-                  :projectId="projectId"
-                  :selected.sync="queryParams.selected"
-                  :patentNoList.sync="patentNoList"
-                  :view-field="customList"
-                  @index-setting="handleIndexSetting"
-                  @on-sort="handleSort"
-                  :queryParams="queryParams"
-              ></component>
-            </div>
+          <div>
+            <component ref="patentViewList" :is="viewSelected" @download="handleDownload" @change-read="handleChangeRead"
+              :projectId="projectId" :selected.sync="queryParams.selected"
+              :patentNoList.sync="patentNoList" :column="customList" @index-setting="handleIndexSetting"
+              @on-sort="handleSort" :queryParams="queryParams" :tableData="tableData"></component>
+          </div>
         </el-main>
         <el-footer class="pagination">
-            <el-pagination
-                background
-                layout="total, sizes, prev, pager, next, jumper"
-                :current-page.sync="queryParams.current"
-                :page-sizes="sizeArr"
-                :page-size.sync="queryParams.size"
-                @current-change="handleCurrentChange"
-                @size-change="getList"
-                :total="total">
-            </el-pagination>
+          <el-pagination background layout="total, sizes, prev, pager, next, jumper"
+            :current-page.sync="queryParams.current" :page-sizes="sizeArr" :page-size.sync="queryParams.size"
+            @current-change="handleCurrentChange" @size-change="getList" :total="total">
+          </el-pagination>
         </el-footer>
       </el-container>
     </el-container>
@@ -120,9 +117,9 @@
 
 <script>
 import { downLoad2, getTreeDataList, getTreeLastChildren, getPatentCountry } from "@/utils"
-  import FieldDrawer from '@/views/components/drawer/Field.vue'
+import FieldDrawer from '@/views/components/drawer/Field.vue'
 // import PatentAbstractListView from './components/views/Abstract'
-import PatentTableListView from './components/views/Table'
+import PatentTableListView from './components/views/Table.vue'
 // import PatentPictureListView from './components/views/Picture'
 // import PatentPDFListView from './components/views/PDF.vue'
 export default {
@@ -135,126 +132,147 @@ export default {
   props: {},
   data() {
     return {
-        //是否隐藏左侧
-        showLeft:false,
-        //检索字段
-        searchFiled: [
-            {
-            label: "项目名称",
-            value: "name",
-            type: 1,
-            placeholder: "请输入项目名称",
-            },
-            {
-            label: "技术主题",
-            value: "technicalTheme",
-            type: 1,
-            placeholder: "请输入技术主题",
-            },
-            {
-            label: "负责部门",
-            value: "departmentId",
-            type: 3,
-            placeholder: "请选择负责部门",
-            },
-            {
-            label: "内部案卷",
-            value: "innerFile",
-            type: 1,
-            placeholder: "请输入内部案卷",
-            },
-        ],
-        //检索条件
-        searchOption: {
-            name: localStorage.searchContent,
+      //是否隐藏左侧
+      showLeft: false,
+      //检索字段
+      searchFiled: [
+        {
+          label: "项目名称",
+          value: "name",
+          type: 1,
+          placeholder: "请输入项目名称",
         },
-        //专利数据库ID
-        projectId:0,
-        //视图方式
-        viewList: [
-            {
-                value: 'patent-table-list-view',
-                title: '表格视图',
-                btn: 'el-icon-tickets',
-            },
-            {
-                value: 'patent-abstract-list-view',
-                title: '摘要视图',
-                btn: 'el-icon-news',
-            },
-            {
-                value: 'patent-picture-list-view',
-                title: '图片视图',
-                btn: 'el-icon-picture-outline',
-            },
-            {
-                value:'PatentPDFListView',
-                title: 'PDF视图',
-                btn: 'iconfont icon-pdf',
-            }
-        ],
-        //选择的视图
-        viewSelected:"patent-table-list-view",
-        //显示栏位
-        customList:[],
-        //同族
-        familyObj: {
-            0: '不区分同族',
-            1: '简单同族',
-            2: 'INPADOC同族',
-            3: '扩展同族',
+        {
+          label: "技术主题",
+          value: "technicalTheme",
+          type: 1,
+          placeholder: "请输入技术主题",
         },
-        //页大小
-        sizeArr:[10, 20, 30, 40, 50, 100],
-        //分页
-        queryParams:{
-            current:1,
-            size:10
+        {
+          label: "负责部门",
+          value: "departmentId",
+          type: 3,
+          placeholder: "请选择负责部门",
         },
-        //总数
-        total:0,
-        //排序
-        sort:[
-            {
-                "orderBy": "createTime",
-                "orderType": 1
-            }
-        ],
-        //选择的专利集合
-        patentNoList:[],
-        //加载
-        loading:false,
+        {
+          label: "内部案卷",
+          value: "innerFile",
+          type: 1,
+          placeholder: "请输入内部案卷",
+        },
+      ],
+      //检索条件
+      searchOption: {
+        name: localStorage.searchContent,
+      },
+      //专利数据库ID
+      projectId: 0,
+      //视图方式
+      viewList: [
+        {
+          value: 'patent-table-list-view',
+          title: '表格视图',
+          btn: 'el-icon-tickets',
+        },
+        {
+          value: 'patent-abstract-list-view',
+          title: '摘要视图',
+          btn: 'el-icon-news',
+        },
+        {
+          value: 'patent-picture-list-view',
+          title: '图片视图',
+          btn: 'el-icon-picture-outline',
+        },
+        {
+          value: 'PatentPDFListView',
+          title: 'PDF视图',
+          btn: 'iconfont icon-pdf',
+        }
+      ],
+      //选择的视图
+      viewSelected: "patent-table-list-view",
+      //显示栏位
+      customList: [],
+      //同族
+      familyObj: {
+        0: '不区分同族',
+        1: '简单同族',
+        2: 'INPADOC同族',
+        3: '扩展同族',
+      },
+      //页大小
+      sizeArr: [10, 20, 30, 40, 50, 100],
+      //分页
+      queryParams: {
+        current: 1,
+        size: 10
+      },
+      //总数
+      total: 0,
+      //排序
+      sort: [
+        {
+          "orderBy": "createTime",
+          "orderType": 1
+        }
+      ],
+      //选择的专利集合
+      patentNoList: [],
+      //加载
+      loading: false,
+      // 数据
+      tableData:[],
     };
   },
   watch: {},
-  computed: {},
-  created() {},
+  computed: {
+    // 专题库id
+    id() {
+      return this.$route.query.id
+    },
+  },
+  created() { },
   async mounted() {
-    this.customList = await this.$commonJS.getCustomField('reportProject')
+    this.customList = await this.$commonJS.getCustomField('patent')
+    // 获取专利信息
+    this.getList()
   },
   methods: {
     //检索
-    search(val){
-        
+    search(val) {
+
     },
     //切换视图
     async handleChangeView(item) {
       this.viewSelected = item.value
       this.queryParams.current = 1
-      if(this.viewSelected == 'PatentPDFListView'){
+      if (this.viewSelected == 'PatentPDFListView') {
         return false
       }
       if (this.viewSelected === 'patent-picture-list-view') {
-        
-        this.$set(this.queryParams,'size',20)
+
+        this.$set(this.queryParams, 'size', 20)
       } else {
         this.queryParams.size = 10
       }
       this.getList()
     },
     //获取专利信息
-    getList(){
-
+    getList() {
+      let params = {
+        ...this.queryParams,//分页信息
+        projectId:this.id,
+      }
+      this.$api.QueryPatent(params).then(res => {
+        if (res.code == 200) {
+          this.tableData = res.data.data
+          this.total=res.data.total
+        }
+      }).catch(error => {
+        this.tableData = []
+        this.total = 0
+      })
     },
     //排序
     handleSort(data) {
@@ -284,16 +302,16 @@ export default {
     },
     // 事件按钮
     handleQuestion() {
-      let a=this.$router.resolve({
+      let a = this.$router.resolve({
         path: '/questionEvent',
         query: {
-          projectId:this.projectId
+          projectId: this.projectId
         }
       })
       window.open(a.href, '_blank');
     },
     //PDF首页导出
-    exportPDF(){
+    exportPDF() {
       let params = JSON.parse(JSON.stringify(this.queryParams))
       params.tree.map(tree => {
         let field = params.field.filter(item => item.key === tree.key)
@@ -302,15 +320,15 @@ export default {
         }
       })
       params.tree = undefined
-      this.$api.pdfFirstPage(params).then(response=>{
-        if(response.code == 200){
+      this.$api.pdfFirstPage(params).then(response => {
+        if (response.code == 200) {
           const router = this.$router.resolve({
             path: '/taskList',
             query: {
-              projectId:this.projectId,
+              projectId: this.projectId,
             }
           })
-          window.open(router.href,'_blank')
+          window.open(router.href, '_blank')
         }
       })
     },
@@ -346,16 +364,16 @@ export default {
     },
     //创建FTO报告
     handleAnalyses(id) {
-      this.$api.getProject({id:this.projectId}).then(response=>{
+      this.$api.getProject({ id: this.projectId }).then(response => {
         var form = {
-          type:id,
-          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
-      }
+          type: id,
+          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)
       })
     },
@@ -382,7 +400,7 @@ export default {
         this.$alert('专利暂未上传说明书文档', '请求错误', {
           confirmButtonText: '确定',
           type: 'error',
-          callback: action => {}
+          callback: action => { }
         });
       }
     },
@@ -412,5 +430,4 @@ export default {
   },
 };
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>