zhuhao hai 1 ano
pai
achega
3161cde601
Modificáronse 26 ficheiros con 1304 adicións e 724 borrados
  1. 3 3
      src/api/newApi/common.js
  2. 42 0
      src/api/newApi/report.js
  3. 26 25
      src/views/product/components/framework/viewIndex.vue
  4. 1 1
      src/views/project/patentCollection/components/mixins/index.js
  5. 1 1
      src/views/project/patentCollection/components/views/Table.vue
  6. 69 57
      src/views/project/patentCollection/index.vue
  7. 313 182
      src/views/project/patentDetails/components/PatentField.vue
  8. 24 12
      src/views/project/patentDetails/components/PatentLeft.vue
  9. 1 1
      src/views/project/patentDetails/components/menu.vue
  10. 190 184
      src/views/project/patentDetails/components/patentDetails.vue
  11. 11 5
      src/views/project/patentDetails/index.vue
  12. 20 3
      src/views/report/components/allocationTask/components/allocationTask.vue
  13. 7 1
      src/views/report/components/allocationTask/index.vue
  14. 45 8
      src/views/report/components/checkPatent/checkPatent.vue
  15. 1 1
      src/views/report/components/details/index.vue
  16. 49 16
      src/views/report/components/dialog/teamwork.vue
  17. 2 2
      src/views/report/components/index.vue
  18. 23 8
      src/views/report/components/patentList/components/customFields.vue
  19. 90 35
      src/views/report/components/patentList/components/index.vue
  20. 11 2
      src/views/report/components/patentList/index.vue
  21. 195 93
      src/views/report/components/productResult/productResult.vue
  22. 1 1
      src/views/report/tort/components/informationEntry/index.vue
  23. 142 73
      src/views/report/tort/components/tortContrast.vue
  24. 4 1
      src/views/report/tort/components/tortTeamWork/index.vue
  25. 9 3
      src/views/report/tort/index.vue
  26. 24 6
      src/views/task/components/index.vue

+ 3 - 3
src/api/newApi/common.js

@@ -122,11 +122,11 @@ export default {
 
    /**
    * 查询所有标引栏位
-   * @param {*} data 
+   * @param {*} params 
    * @returns 
    */
-   getAllPatentCustomField(data) {
-    return axios.post("/xiaoshi/customField/getAllPatentCustomField", data);
+   getAllPatentCustomField(params) {
+    return axios.get("/xiaoshi/customField/getAllPatentCustomField", {params});
   },
    /**
    * 查询所有标引栏位值

+ 42 - 0
src/api/newApi/report.js

@@ -141,6 +141,48 @@ export default {
   addFinalTortResult(data) {
     return axios.post("/xiaoshi/tort/addFinalTortResult", data);
   },
+  /**
+   * FTO报告对比任务查询对比结果
+   */
+  getFTOCompareRecord(data) {
+    return axios.post("/xiaoshi/fto/getFTOCompareRecord", data);
+  },
+  /**
+   * FTO报告对比任务保存对比结果
+   */
+  addFTOCompareRecord(data) {
+    return axios.post("/xiaoshi/fto/addFTOCompareRecord", data);
+  },
+  /**
+   * FTO报告添加协同任务
+   */
+  addFTOAssItTask(data) {
+    return axios.post("/xiaoshi/fto/addFTOAssitTask", data);
+  },
+  /**
+   * FTO报告协同任务对比结果保存
+   */
+  addFTOAssItTaskResult(data) {
+    return axios.post("/xiaoshi/fto/addFTOAssitTaskResult", data);
+  },
+  /**
+   * FTO报告协同任务对比结果处理查询
+   */
+  getFTOAssItResult(params) {
+    return axios.get("/xiaoshi/fto/getFTOAssitResult", {params});
+  },
+  /**
+   * FTO报告协同任务确认结果查询
+   */
+  getFTOFinalResult(params) {
+    return axios.get("/xiaoshi/fto/getFTOFinalResult", {params});
+  },
+  /**
+   * FTO报告协同任务确认结果保存
+   */
+  addFinalAssItResult(data) {
+    return axios.post("/xiaoshi/fto/addFinalAssitResult", data);
+  },
 
 
 

+ 26 - 25
src/views/product/components/framework/viewIndex.vue

@@ -5,7 +5,7 @@
       <el-header>
         <div style="display: flex;justify-content: space-between;align-items:center;width:100%;padding:0 10px;">
           <div>
-            <p>{{ row.type==1?'产品类别名称:':'产品名称:' }}{{ row.name }}</p>
+            <p>{{ row.type == 1 ? '产品类别名称:' : '产品名称:' }}{{ row.name }}</p>
           </div>
           <div>
             <el-button type="primary" size="small" @click="handleImport">导 入</el-button>
@@ -17,7 +17,7 @@
           <div style="display:flex;margin-bottom:10px;">
             <el-input v-model="productName" size="small" placeholder="请输入名称" style="margin-right:10px;"></el-input>
             <el-button type="primary" size="small" @click="handleQuery">查询</el-button>
-            <el-button v-if="row.type=='1'" type="primary" size="small" @click="handleAppend">新增分类节点</el-button>
+            <el-button v-if="row.type == '1'" type="primary" size="small" @click="handleAppend">新增分类节点</el-button>
             <el-dropdown v-else split-button type="primary" size="small" @click="handleAppend">
               <span>新增分类节点</span>
               <el-dropdown-menu slot="dropdown">
@@ -90,12 +90,12 @@ import classifyNode from '../dialog/classifyNode.vue';
 import nodeCopy from '@/views/components/dialog/nodeCopy.vue';
 export default {
   props: {
-    name:{
-      type:String
+    name: {
+      type: String
     },//产品名称或者是产品类别名称
-    id:{},//产品id或者是产品类别id
-    categoryId:{},//产品类别Id
-    type:{}//类型1是产品类别,2是产品
+    id: {},//产品id或者是产品类别id
+    categoryId: {},//产品类别Id
+    type: {}//类型1是产品类别,2是产品
   },
   components: {
     frameworkTable,
@@ -137,20 +137,20 @@ export default {
       // 排序
       sort: [],
       //展示图片
-      showImg:false,
+      showImg: false,
       //图片地址
       imgSrc: '',
       // 当前节点的id
-      nodeId:null,
+      nodeId: null,
     }
   },
-  computed:{
-    row(){
+  computed: {
+    row() {
       return {
-        name:this.name,
-        categoryId:this.categoryId,
-        id:this.id,
-        type:this.type
+        name: this.name,
+        categoryId: this.categoryId,
+        id: this.id,
+        type: this.type
       }
     }
   },
@@ -162,14 +162,14 @@ export default {
     // 请求架构路径
     this.getPath()
 
-    
+
   },
   methods: {
     //获取排序字段// 子组件table排序
     handleSort({ column, prop, order, }) {
       //如需要多个字段排序,则不需要清空
       var params = {
-        sort:this.sort,
+        sort: this.sort,
         column,
         prop,
         order,
@@ -224,7 +224,7 @@ export default {
       this.showImg = true
     },
     //关闭预览图片
-    closeViewer(){
+    closeViewer() {
       this.showImg = false
     },
     // 删除
@@ -289,7 +289,7 @@ export default {
     },
     // 树节点上复制分类架构
     copy(data, node) {
-      this.nodeId=data.id
+      this.nodeId = data.id
       this.openNodeCopy()
     },
     // 树节点点击事件
@@ -302,20 +302,20 @@ export default {
     },
     // 按钮复制分类架构
     handleCopy() {
-      this.nodeId=null
+      this.nodeId = null
       this.openNodeCopy()
     },
-    openNodeCopy(){
+    openNodeCopy() {
       var form = {
         toType: '2',//类型:1产品类别,2产品,3技术分类,4自定义树
         toTypeId: this.row.id,//产品id
         toNodeId: this.nodeId,//放到哪一个节点下面
         fromType: '1',//类型:1产品类别,2产品,3技术分类,4自定义树
-        fromTypeId:this.row.categoryId,//类别id
+        fromTypeId: this.row.categoryId,//类别id
       }
       this.$refs.nodeCopy.open(form)
     },
-    submitNode(val){
+    submitNode(val) {
       this.getList()
       this.getTableList()
     },
@@ -347,7 +347,7 @@ export default {
         } else if (item == 'typeId') {
           label = this.row.id
         } else {
-          label = this.parentId?this.parentId:'0'
+          label = this.parentId ? this.parentId : '0'
         }
         let obj = {
           searchValue: {
@@ -429,7 +429,8 @@ export default {
   .el-divider--horizontal {
     margin: 15px 0,
   }
-  .el-dropdown .el-button-group{
+
+  .el-dropdown .el-button-group {
     display: flex;
   }
 }

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

@@ -51,7 +51,7 @@ export const projectData = {
   },
   methods: {
     // 点击专利号
-    handleClick(row,key){
+    handleClick(row, key) {
       this.$emit('clickPatentNo',row)
     },
     changeSelect(patent){

+ 1 - 1
src/views/project/patentCollection/components/views/Table.vue

@@ -99,7 +99,7 @@ export default {
     
     // 排序
     sortChange({ column, prop, order }) {
-      this.$emit('on-sort', { column, prop, order, str })
+      this.$emit('on-sort', { column, prop, order })
     },
   },
 }

+ 69 - 57
src/views/project/patentCollection/index.vue

@@ -97,14 +97,14 @@
         <el-main v-loading="loading">
           <div class="height_100">
             <component ref="patentViewList" :is="viewSelected" @download="handleDownload" @change-read="handleChangeRead"
-              :projectId="projectId" :patentNoList.sync="patentNoList" @clickPatentNo="handleClick"
-              :column="customList" @index-setting="handleIndexSetting" @on-sort="handleSort" :queryParams="queryParams"
-              :tableData="tableData" :refresh='refresh'></component>
+              :projectId="projectId" :patentNoList.sync="patentNoList" @clickPatentNo="handleClick" :column="customList"
+              @index-setting="handleIndexSetting" @on-sort="handleSort" :queryParams="queryParams" :tableData="tableData"
+              :refresh='refresh'></component>
           </div>
         </el-main>
         <el-footer class="pagination" style="display:flex;justify-content:space-between;align-items:center">
           <div style="display:flex;align-items:center">
-            <span v-if="patentNoList.length>0" >
+            <span v-if="patentNoList.length > 0">
               已勾选 <b>{{ patentNoList.length }}</b> 条
             </span>
             <el-popover placement="bottom" title="" width="220" trigger="click">
@@ -121,23 +121,28 @@
                   <el-button type="text" size="" @click="handleSelectNumber(2)">确定</el-button>
                 </div>
               </el-main>
-              <el-button type="info" size="small" class="margin-left_10" slot="reference"> 选择专利<i class="el-icon-arrow-down el-icon--right"></i></el-button>
+              <el-button type="info" size="small" class="margin-left_10" slot="reference"> 选择专利<i
+                  class="el-icon-arrow-down el-icon--right"></i></el-button>
             </el-popover>
-            
-              <div v-show="patentNoList.length" class="margin-left_10">
-                <el-dropdown size="medium">
-                  <el-button type="primary" size="small" :disabled="!$permission('/workspace/folder/batchOperation')">
-                    批量操作<i class="el-icon-arrow-down el-icon--right"></i>
-                  </el-button>
-                  <el-dropdown-menu slot="dropdown">
-                    <el-dropdown-item @click.native="handleRead(1)" :disabled="!$permission('/workspace/folder/isRead')">已读</el-dropdown-item>
-                    <el-dropdown-item @click.native="handleRead(0)" :disabled="!$permission('/workspace/folder/isRead')">未读</el-dropdown-item>
-                    <el-dropdown-item @click.native="handleIndex" :disabled="!($permission('/workspace/folder/batchOperation/batchIndexing') && $r(projectId,[1,2]))">批量标引</el-dropdown-item>
-                    <el-dropdown-item @click.native="checkPatentWorth"  v-if="patentNoList.length && $permission('/workspace/patent/worth')">价值曲线</el-dropdown-item>
-                  </el-dropdown-menu>
-                </el-dropdown>
-              </div>
-              <div class="margin-left_10">
+
+            <div v-show="patentNoList.length" class="margin-left_10">
+              <el-dropdown size="medium">
+                <el-button type="primary" size="small" :disabled="!$permission('/workspace/folder/batchOperation')">
+                  批量操作<i class="el-icon-arrow-down el-icon--right"></i>
+                </el-button>
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item @click.native="handleRead(1)"
+                    :disabled="!$permission('/workspace/folder/isRead')">已读</el-dropdown-item>
+                  <el-dropdown-item @click.native="handleRead(0)"
+                    :disabled="!$permission('/workspace/folder/isRead')">未读</el-dropdown-item>
+                  <el-dropdown-item @click.native="handleIndex"
+                    :disabled="!($permission('/workspace/folder/batchOperation/batchIndexing') && $r(projectId, [1, 2]))">批量标引</el-dropdown-item>
+                  <el-dropdown-item @click.native="checkPatentWorth"
+                    v-if="patentNoList.length && $permission('/workspace/patent/worth')">价值曲线</el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+            </div>
+            <div class="margin-left_10">
               <el-checkbox @change="changeRefresh" :checked="refresh">
                 <span>编辑</span>
               </el-checkbox>
@@ -145,11 +150,11 @@
           </div>
           <div>
             <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>
+              :current-page.sync="queryParams.current" :page-sizes="sizeArr" :page-size.sync="queryParams.size"
+              @current-change="handleCurrentChange" @size-change="getList" :total="total">
+            </el-pagination>
           </div>
-          
+
         </el-footer>
       </el-container>
     </el-container>
@@ -238,11 +243,11 @@ export default {
       // 数据
       tableData: [],
       //选择总数
-      selectedTotal:0,
+      selectedTotal: 0,
       //选择专利加载
-      selectNumberLoading:false,
+      selectNumberLoading: false,
       //是否编辑
-      refresh:false,
+      refresh: false,
     };
   },
   watch: {},
@@ -260,12 +265,12 @@ export default {
     this.getList()
   },
   methods: {
-    handleClick(row){
+    handleClick(row) {
       this.$router.push(
         {
-          path:'/patentDetails/'+row.patentNo,
-          query:{
-            projectId:this.projectId
+          path: '/patentDetails/' + row.patentNo,
+          query: {
+            projectId: this.projectId
           }
         }
       )
@@ -320,7 +325,7 @@ export default {
     //获取专利信息
     getList(size) {
       if (size) {
-        this.queryParams.size=size
+        this.queryParams.size = size
       }
       let params = {
         ...this.queryParams,//分页信息
@@ -506,38 +511,38 @@ export default {
     },
 
     //取消编辑
-    changeRefresh(){
+    changeRefresh() {
       this.patentNoList = []
       this.refresh = !this.refresh
     },
     //取消选择
     handleCancelSelectNumber() {
-        this.patentNoList = [];
-        this.queryParams.isAdd = []
-        this.queryParams.isDelete = []
-        this.startNumber = 1
-        this.queryParams.startNumber = 1
-        this.queryParams.endNumber = this.total
-        this.endNumber = 0
-        this.quickSelect = false
-        this.selectedTotal = 0
+      this.patentNoList = [];
+      this.queryParams.isAdd = []
+      this.queryParams.isDelete = []
+      this.startNumber = 1
+      this.queryParams.startNumber = 1
+      this.queryParams.endNumber = this.total
+      this.endNumber = 0
+      this.quickSelect = false
+      this.selectedTotal = 0
       // this.getList()
     },
     //开始条数校验
     change1(val) {
       if (!isNaN(val)) {
-         if (!val || val <= 0) {
-          this.queryParams.startNumber=1
+        if (!val || val <= 0) {
+          this.queryParams.startNumber = 1
         } else {
-          if (this.queryParams.startNumber>this.total) {
-            this.queryParams.startNumber=this.total
+          if (this.queryParams.startNumber > this.total) {
+            this.queryParams.startNumber = this.total
           }
         }
       } else {
-        this.queryParams.startNumber=1
+        this.queryParams.startNumber = 1
       }
     },
-     //结束条数校验
+    //结束条数校验
     change2(val) {
       if (!isNaN(val)) {
         if (!val || val <= 0) {
@@ -547,12 +552,12 @@ export default {
             this.queryParams.endNumber = this.total
           }
         }
-      }else {
-        this.queryParams.endNumber=this.total
+      } else {
+        this.queryParams.endNumber = this.total
       }
     },
-     //快速选择
-     handleSelectNumber(type) {
+    //快速选择
+    handleSelectNumber(type) {
       switch (type) {
         case 0: //本页选择
           this.patentNoList = [...new Set(this.patentNoList.concat(this.$store.state.patent.records.map((item) => item.applicationNo))),];
@@ -561,17 +566,17 @@ export default {
         case 1: //全部选择
           this.startNumber = 1;
           this.endNumber = this.total;
-          this.$set(this.queryParams,'startNumber',1)
-          this.$set(this.queryParams,'endNumber',this.total)
+          this.$set(this.queryParams, 'startNumber', 1)
+          this.$set(this.queryParams, 'endNumber', this.total)
         case 2: //范围选择
           this.queryParams.isDelete = [];
           this.queryParams.isAdd = [];
           this.patentNoList = [];
           this.quickSelect = true;
           if (type == 2) {
-            if (!Number(this.queryParams.startNumber) ||!Number(this.queryParams.endNumber)) {
-              this.$set(this.queryParams,'startNumber',this.endNumber > 0 ? this.startNumber : 1)
-              this.$set(this.queryParams,'endNumber',this.endNumber > 0 ? this.endNumber : this.total)
+            if (!Number(this.queryParams.startNumber) || !Number(this.queryParams.endNumber)) {
+              this.$set(this.queryParams, 'startNumber', this.endNumber > 0 ? this.startNumber : 1)
+              this.$set(this.queryParams, 'endNumber', this.endNumber > 0 ? this.endNumber : this.total)
               break;
             }
             this.startNumber = this.queryParams.startNumber;
@@ -588,6 +593,7 @@ export default {
 <style lang="scss" scoped>
 .patent-fast-edit-popover {
   padding: 0 !important;
+
   .btn {
     color: #000;
     line-height: 30px;
@@ -596,14 +602,17 @@ export default {
     text-align: left;
     font-size: 14px;
     cursor: pointer;
+
     &:hover {
       background: #adadad;
       color: #fff;
     }
   }
+
   .disabled {
     cursor: not-allowed !important;
   }
+
   .bottom {
     text-align: right;
     color: #1e9fff;
@@ -611,13 +620,16 @@ export default {
     padding-left: 10px;
     font-size: 18px;
   }
+
   .el-divider--horizontal {
     margin: 10px 0 !important;
   }
+
   .select-number {
     .el-input {
       width: 70px;
     }
+
     span {
       padding: 0 3px;
     }

+ 313 - 182
src/views/project/patentDetails/components/PatentField.vue

@@ -1,8 +1,8 @@
 <template>
-  <div class="patent-articles-patent-field" style="width:300px">
+  <div class="patent-articles-patent-field">
     <el-form label-position="top" class="custom-field-form">
       <template v-for="(item, index) in customField">
-        <el-form-item :key="index">
+        <el-form-item :key="item.id">
           <template slot="label">
             <span :title="item.name" class="name">{{ item.name }}</span>
           </template>
@@ -12,64 +12,60 @@
                 <i class="el-icon-more el-icon--right"></i>
               </span>
               <el-dropdown-menu slot="dropdown">
-                <el-dropdown-item @click.native="handleOption(0, item.id, index)">上移</el-dropdown-item>
-                <el-dropdown-item @click.native="handleOption(1, item.id, index)">下移</el-dropdown-item>
+                <el-dropdown-item @click.native="handleOption(0, item)">上移</el-dropdown-item>
+                <el-dropdown-item @click.native="handleOption(1, item)">下移</el-dropdown-item>
               </el-dropdown-menu>
             </el-dropdown>
           </div>
           <template v-if="item.type === 0 || item.type === 2 || item.type === 1">
-            <div v-for="(val, i) in selected[item.id]"  class="custom-input">
-              <el-date-picker v-if="item.type === 1"  v-model="val.label" value-format="yyyy-MM-dd" type="date" size="small" placeholder="选择日期" class="width_100" @change="onChange($event, item, val)"></el-date-picker>
-              <el-input v-else type="textarea"  v-model="val.label" placeholder="请输入内容" size="small" @blur="onChange($event, item, val)"></el-input>
-            </div>
+            <el-date-picker v-if="item.type === 1" v-model="item.label" value-format="yyyy-MM-dd" type="date" size="small"
+              placeholder="选择日期" class="width_100" @blur="onChange($event, item)"></el-date-picker>
+            <el-input v-else type="textarea" v-model="item.label" placeholder="请输入内容" size="small"
+              @blur="onChange($event, item)"></el-input>
           </template>
           <template v-if="item.type === 4">
             <div class="showValue">
               <div>
-                <div v-for="fieldValue in item.selected" :key="fieldValue" class="value">{{ fieldValue.name }}</div>
+                <div v-for="fieldValue in item.selected" :key="fieldValue.value" class="value">{{ fieldValue.value }}
+                </div>
               </div>
-                <el-button size="small" @click="$set(item,'show',!item.show)">{{ item.show?'收起':'修改' }}</el-button>
+              <el-button size="small" @click="$set(item, 'show', !item.show)">{{ item.show ? '收起' : '修改' }}</el-button>
             </div>
-            <el-radio-group v-model="item.selectedId" @change="onChange($event, item)" v-show="item.show">
-              <div v-for="option in item.option">
-                <el-radio class="custom-radio" :label="option.id" @click.native.prevent="getSelect(item,option.id)">{{ option.name }}</el-radio>
+            <el-radio-group v-model="item.selectedId" v-show="item.show">
+              <div v-for="option in item.option" :key="option.id">
+                <el-radio class="custom-radio" :label="option.id" @change="onChange($event, item)">{{
+                  option.name }}</el-radio>
               </div>
             </el-radio-group>
           </template>
           <template v-if="item.type === 5">
             <div class="showValue">
               <div>
-                <div v-for="fieldValue in item.selected" :key="fieldValue" class="value">{{ fieldValue }}</div>
+                <div v-for="fieldValue in item.selected" :key="fieldValue" class="value">{{ fieldValue.value }}</div>
               </div>
-                <el-button size="small" @click="$set(item,'show',!item.show)">{{ item.show?'收起':'修改' }}</el-button>
+              <el-button size="small" @click="$set(item, 'show', !item.show)">{{ item.show ? '收起' : '修改' }}</el-button>
             </div>
-            <el-checkbox-group v-model="selected[item.id]"  @change="onChange($event, item)" v-show="item.show">
-              <el-checkbox class="custom-checkbox" v-for="option in item.option" :label="option.id">{{ option.name }}</el-checkbox>
+            <el-checkbox-group v-model="item.selectedValue" v-show="item.show">
+              <el-checkbox class="custom-checkbox" v-for="option in item.option" :label="option.id" :key="option.id"
+                @change="(val) => onChange(option.id, item, val)">{{ option.name
+                }}</el-checkbox>
             </el-checkbox-group>
           </template>
-          <template v-if="item.type === 6" >
+          <template v-if="item.type === 6">
             <div class="showValue">
               <div>
-                <div v-for="fieldValue in item.selected" :key="fieldValue" class="value">{{ fieldValue }}</div>
+                <div v-for="fieldValue in item.selected" :key="fieldValue" class="value">{{ fieldValue.value }}</div>
               </div>
-                <el-button size="small" @click="$set(item,'show',!item.show)">{{ item.show?'收起':'修改' }}</el-button>
+              <el-button size="small" @click="$set(item, 'show', !item.show)">{{ item.show ? '收起' : '修改' }}</el-button>
             </div>
-          <div v-show="item.show">
-             <el-tree
-                @check-change="onChange($event, item)"
-                :ref="item.id"
-                :data="item.option"
-                check-strictly
-                :default-checked-keys="selected[item.id]"
-                show-checkbox
-                node-key="id"
-                default-expand-all
-                :props="defaultProps"
-            ></el-tree>
-          </div>
-           
+            <div v-show="item.show">
+              <el-tree @check-change="(data, checked) => onChange(data, item, checked)" :items="item" :ref="item.id"
+                :data="item.option" check-strictly :default-checked-keys="item.selectedValue" show-checkbox node-key="id"
+                default-expand-all :props="defaultProps"></el-tree>
+            </div>
+
           </template>
-          
+
         </el-form-item>
       </template>
 
@@ -80,178 +76,303 @@
 <script>
 export default {
   props: {
-    projectId:{
-      default:0
+    projectId: {
+      default: 0
     },
-    taskId:{
-      default:0
+    taskId: {
+      default: null,
     },
-    patentNo:''
+    patentNo: ''
   },
   data() {
     return {
-      customField:[],
-      selected:[],
-      defaultProps:{
-        children:'child'
-      }
+      customField: [],
+      selected: [],//qudiao
+      defaultProps: {
+        children: 'child',
+        label: 'name'
+      },
     }
   },
   watch: {
-    patentNo(){
+    patentNo() {
       this.getOptionsAndSelected()
     }
   },
   mounted() {
     this.getCustomField()
   },
-  methods:{
+  methods: {
+    // getShow(item) {
+    //   this.
+    //   this.getCustomOption(item)
+    // },
     //上移下移
-    handleOption(type,id,index){
+    handleOption(type, row) {
+      if (row.sysOrder == 0) {
+        this.$message.error('已是最顶层')
+        return false
+      }
+      if (row.sysOrder == this.customField.length - 1) {
+        this.$message.error('已是最后一层')
+        return false
+      }
+      if (type == 0) {//上移
+        this.customField.forEach(item => {
+          if (item.sysOrder == row.sysOrder - 1) {
+            item.sysOrder += 1
+          }
+          if (item.id == row.id) {
+            item.sysOrder -= 1
+          }
+        })
+      } else {
+        this.customField.forEach(item => {
+          if (item.sysOrder == row.sysOrder + 1) {
+            item.sysOrder -= 1
+          }
+          if (item.id == row.id) {
+            item.sysOrder += 1
+          }
+        })
+      }
+      let params = {
+        taskId: this.taskId,
+        projectId: this.projectId,
+        allCustomFieldVOs: this.customField
+      }
 
+      this.$api.addAllPatentCustomFieldOrder(params).then(res => {
+        if (res.code == 200) {
+          this.$message('移动成功')
+          this.getCustomField()
+        }
+      })
     },
     //切换选择
-    onChange(){
+    onChange(data, item, checked) {
+      console.log(data, item);
+      var params = {
+        projectId: this.projectId,
+        taskId: this.taskId,
+        fieldType: item.type,
+        fieldId: item.id,
+        fieldValue: [data.id || data],
+        patentNo: this.patentNo,
+        optionType: '',
+      }
+      if (item.type == 0 || item.type == 1 || item.type == 2) {
+        params.fieldValue[0] = item.label
+      }
+      // 判断optionType  0取消1添加2覆盖
+      if (item.type == 6 || item.type == 5) {
+        if (checked) {
+          item.selectedValue.push(data.id)
+          item.selected.push(data.name)
+          params.optionType = 1
+        } else if (checked == false) {
+          let index = item.selectedValue.findIndex(valIndex => {
+            return valIndex == data.id
+          })
+          if (index != -1) {
+            item.selectedValue.splice(index, 1)
+            item.selected.splice(index, 1)
+          }
+          params.optionType = 0
+        }
+      } else {
+        if (data) {//单选的id
+          this.$set(item, 'selectedId', data)
+        }
+        params.optionType = 2
+      }
+      this.$api.addCustomFieldValue(params).then(response => {
+        if (response.code == 200) {
+          this.$message.success('修改成功')
+          this.getSelected(item)
+        }
+      }).catch(error => {
 
+      })
     },
-    getCustomField(){
+    // 获取栏位
+    getCustomField() {
       var params = {
-        projectId:this.projectId,
-        taskId:this.taskId
+        projectId: this.projectId,
+        taskId: this.taskId
       }
-      this.$api.getAllPatentCustomField(params).then(response=>{
-        if(response.code == 200){
-          this.customField = response.data
-          // this.getOptionsAndSelected()
+      this.$api.getAllPatentCustomField(params).then(response => {
+        if (response.code == 200) {
+          this.customField = response.data.data
+          this.getOptionsAndSelected()
         }
-      }).catch(error=>{
+      }).catch(error => {
         this.customField = [
-            {
-                "id": 10,
-                "name": "相似度",
-                "projectId": 101,
-                "type": 6,
-                "description": "",
-                "status": true,
-                "createId": "328",
-                "createName": "朱豪",
-                "createTime": "2023-12-15 14:52:42"
-            },
-            {
-                "id": 11,
-                "name": "多选",
-                "projectId": 101,
-                "type": 5,
-                "description": "",
-                "status": true,
-                "createId": "328",
-                "createName": "朱豪",
-                "createTime": "2023-12-15 14:54:03"
-            },
-            {
-                "id": 12,
-                "name": "单选",
-                "projectId": 101,
-                "type": 4,
-                "description": "",
-                "status": true,
-                "createId": "328",
-                "createName": "朱豪",
-                "createTime": "2023-12-15 14:54:29",
-                selected:[
-                  {
-                    id:1,
-                    name:'选项'
-                  }
-                ],
-                selectedId:1,
-                option:[
-                  {
-                    id:1,
-                    name:'选项'
-                  }
-                ]
-            },
-            {
-                "id": 13,
-                "name": "文本",
-                "projectId": 101,
-                "type": 2,
-                "description": "",
-                "status": true,
-                "createId": "328",
-                "createName": "朱豪",
-                "createTime": "2023-12-15 14:54:51"
-            },
-            {
-                "id": 14,
-                "name": "日期",
-                "projectId": 101,
-                "type": 1,
-                "description": "",
-                "status": true,
-                "createId": "328",
-                "createName": "朱豪",
-                "createTime": "2023-12-15 14:54:57"
-            },
-            {
-                "id": 15,
-                "name": "数字",
-                "projectId": 101,
-                "type": 0,
-                "description": "",
-                "status": true,
-                "createId": "328",
-                "createName": "朱豪",
-                "createTime": "2023-12-15 14:55:03"
-            }
+          {
+            "id": 10,
+            "name": "相似度",
+            "projectId": 101,
+            "type": 6,
+            "description": "",
+            "status": true,
+            "createId": "328",
+            "createName": "朱豪",
+            "createTime": "2023-12-15 14:52:42"
+          },
+          {
+            "id": 11,
+            "name": "多选",
+            "projectId": 101,
+            "type": 5,
+            "description": "",
+            "status": true,
+            "createId": "328",
+            "createName": "朱豪",
+            "createTime": "2023-12-15 14:54:03"
+          },
+          {
+            "id": 12,
+            "name": "单选",
+            "projectId": 101,
+            "type": 4,
+            "description": "",
+            "status": true,
+            "createId": "328",
+            "createName": "朱豪",
+            "createTime": "2023-12-15 14:54:29",
+            selected: [
+              {
+                id: 1,
+                name: '选项'
+              }
+            ],
+            selectedId: 1,
+            option: [
+              {
+                id: 1,
+                name: '选项'
+              }
+            ]
+          },
+          {
+            "id": 13,
+            "name": "文本",
+            "projectId": 101,
+            "type": 2,
+            "description": "",
+            "status": true,
+            "createId": "328",
+            "createName": "朱豪",
+            "createTime": "2023-12-15 14:54:51"
+          },
+          {
+            "id": 14,
+            "name": "日期",
+            "projectId": 101,
+            "type": 1,
+            "description": "",
+            "status": true,
+            "createId": "328",
+            "createName": "朱豪",
+            "createTime": "2023-12-15 14:54:57"
+          },
+          {
+            "id": 15,
+            "name": "数字",
+            "projectId": 101,
+            "type": 0,
+            "description": "",
+            "status": true,
+            "createId": "328",
+            "createName": "朱豪",
+            "createTime": "2023-12-15 14:55:03"
+          }
         ]
       })
     },
     //获取栏位的选项和选项值(0数字,1日期,2文本,4单选,5多选,6树,7产品8产品类别9技术分类)
-    getOptionsAndSelected(){
+    getOptionsAndSelected() {
       this.customField.forEach(item => {
-            this.getSelected(item)
-            switch(item.type){
-              case 4:
-              case 5:
-              case 6:
-                this.getCustomOption(item)
-                break;
-              case 7:
-                break;
-              case 8:
-                break;
-            }
+        this.getSelected(item)
+        switch (item.type) {
+          case 4:
+          case 5:
+          case 6:
+            this.getCustomOption(item)
+            break;
+          case 7:
+            this.queryProductCategory(item, 7)
+            break;
+          case 8:
+            this.queryProductCategory(item, 8)
+            break;
+        }
       });
     },
-    //获取选项值
-    getSelected(item){
-      this.$api.getCustomFieldValues().then(response=>{
-        if(response.code == 200){
-          item.selected = response.data
+    //获取已选中选项值、已添加的值
+    getSelected(item) {
+      let params = {
+        projectId: this.projectId,
+        taskId: this.taskId,
+        fieldType: item.type,
+        fieldId: item.id,
+        patentNo: this.patentNo,
+      }
+      this.$api.getCustomFieldValues(params).then(response => {
+        if (response.code == 200) {
+          item.selected = response.data.data
+
+          switch (item.type) {
+            case 0://数字,日期,文字
+            case 1:
+            case 2:
+              this.$set(item, 'label', (item.selected && item.selected.length > 0) ? item.selected[0].value : '')
+              break;
+            case 4://单选
+              this.$set(item, 'selectedId', (item.selected && item.selected.length > 0) ? item.selected[0].valueId : '')
+              break;
+            case 6://多选和树
+            case 5:
+              item.selectedValue = []
+              item.selectedValue = (item.selected && item.selected.length > 0) ? item.selected.map(item => item.valueId) : []
+              break;
+
+            default:
+              break;
+          }
+
         }
-      }).catch(error=>{
+      }).catch(error => {
         item.selected = []
       })
     },
     //查询自定义栏位选项
-    getCustomOption(item){
+    getCustomOption(item) {
       var params = {
-        customFieldId:item.id
+        customFieldId: item.id
       }
-      this.$api.queryCustomOption(params).then(response=>{
-        if(response.code == 200){
+      this.$api.queryCustomOption(params).then(response => {
+        if (response.code == 200) {
           this.$set(item, 'option', response.data.data)
         }
-      }).catch(error=>{
+      }).catch(error => {
         this.$set(item, 'option', [])
       })
     },
-    //获取产品或产品类别架构
-    getProductCategory(){
-
-    }
+    //获取产品或产品类别架构以及技术分类
+    queryProductCategory(item,type) {
+      let params = {
+        type: type,//类型:1产品类别,2产品,3技术分类,4自定义树
+        typeId: item.id,//产品或类别id
+      }
+      this.$api.queryTreeNodeTree(params).then(res => {
+        if (res.code == 200) {
+          
+        }
+      }).catch(err => {
+        
+      })
+    },
   }
 }
 </script>
@@ -266,17 +387,21 @@ export default {
       text-overflow: ellipsis;
       white-space: nowrap;
     }
+
     .option {
       position: absolute;
       right: 0;
       top: -50px;
       color: #1e9fff;
+
       i {
         cursor: pointer;
       }
     }
+
     .el-form-item {
       margin-bottom: 0 !important;
+
       .el-form-item__label {
         font-size: 16px;
         border-bottom: 1px solid #d2d2d2;
@@ -284,20 +409,25 @@ export default {
         color: #EE6666;
       }
     }
+
     .custom-input {
       margin-bottom: 10px;
-      .el-input {
-      }
+
+      .el-input {}
+
       .el-button {
         float: right;
         margin-top: 5px;
       }
     }
-    .custom-checkbox, .custom-radio {
+
+    .custom-checkbox,
+    .custom-radio {
       width: 100%;
       margin-right: 0 !important;
       line-height: 30px;
     }
+
     .el-form-item__label {
       width: 100%;
       padding: 0 !important;
@@ -306,20 +436,21 @@ export default {
 }
 </style>
 <style lang="scss" scoped>
-  .showValue{
-    width:100%;
-    display: flex;
-    align-items: center;
-    &>div{
-      width:100%;
-      min-height: 30px;
-      border:1px solid var(--color1);
-    }
-    
-    .value{
-      
-      padding:5px;
-      line-height: 20px;
-    }
+.showValue {
+  width: 100%;
+  display: flex;
+  align-items: center;
+
+  &>div {
+    width: 100%;
+    min-height: 30px;
+    border: 1px solid var(--color1);
+  }
+
+  .value {
+
+    padding: 5px;
+    line-height: 20px;
   }
+}
 </style>

+ 24 - 12
src/views/project/patentDetails/components/PatentLeft.vue

@@ -1,26 +1,38 @@
 <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>总专利数量:{{ total }}</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>
+    <div class="left-patentNo" v-for="item in patentList" :key="item.patentNo" @click="$emit('getPatentLeft',item.patentNo)">
+      <div>{{ item.patentNo }}</div>
+      <el-tooltip :content="item.title.content" placement="bottom-start">
+        <div style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">{{ item.title.content }}</div>
       </el-tooltip>
     </div>
-    <div class="left-patentNo">
+    <!-- <div class="left-patentNo">
       <div>CN202210250234.6</div>
       <div style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">一种雨伞管加工设备</div>
-    </div>
-    
+    </div> -->
+
   </div>
 </template>
 
 <script>
 export default {
+  props: {
+    patentList: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    total: {
+      type: Number,
+      default: 0
+    }
+  },
   data() {
     return {
      
@@ -30,13 +42,13 @@ export default {
 
   },
   methods: {
-  
+    
   },
 }
 </script>
 
 <style lang="scss" scoped>
-.PatentLeft{
+.PatentLeft {
   .left-patentNo {
     border-bottom: 1px solid #ccc;
     overflow: hidden;
@@ -51,4 +63,4 @@ export default {
     background: #cdd7eb;
   }
 }
-  </style>
+</style>

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

@@ -31,7 +31,7 @@
             </el-tooltip>
           </el-header>
           <el-main style="background: #FFFFFF;">
-            <PatentLeft :patentList="patentList"></PatentLeft>
+            <PatentLeft :patentList="patentList" :total="total" v-on="$listeners"></PatentLeft>
           </el-main>
           <el-footer style="text-align: center;">
             <el-pagination background layout=" prev, pager, next" :current-page.sync="queryParams.current"

+ 190 - 184
src/views/project/patentDetails/components/patentDetails.vue

@@ -1,112 +1,112 @@
 <template>
   <div class="height_100">
     <el-container>
-        <el-header style="min-height: 100px !important;height: auto;">
-            <div style="width:100%">
-              <div style="display: flex;justify-content: space-between;align-items: center;height:50px">
-                <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="getView(patent, 'title')"></span>
-                    <el-link v-if="projectId" type="primary" @click.native="handleChange(patent, 'title')"
-                      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>
+      <el-header style="min-height: 100px !important;height: auto;">
+        <div style="width:100%">
+          <div style="display: flex;justify-content: space-between;align-items: center;height:50px">
+            <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="  position: relative; border-top: 1px solid #e6e6e6;text-align: center;" class="menu">
-                <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>
+              <div style="color: #6b6868; font-size: 15px;padding-bottom: 5px;">
+                <span v-html="getView(patent, 'title')"></span>
+                <el-link v-if="projectId" type="primary" @click.native="handleChange(patent, 'title')"
+                  style="margin-left: 10px;margin-top: -3px;">
+                  <span v-if="!patent.change">切换译文</span>
+                  <span v-else>切换原文</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 class="height_100">
-                <div class="height_100" :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="activeMenu" style="width:100%;padding-right: 10px;"
-                              :is="activeMenu" :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="height_100" 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>
+            <!-- <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>
-        </el-main>
+          </div>
+
+          <div style="  position: relative; border-top: 1px solid #e6e6e6;text-align: center;" class="menu">
+            <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 class="height_100" style="display: flex;">
+          <div class="height_100" :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="activeMenu" style="width:100%;padding-right: 10px;" :is="activeMenu"
+                  :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="height_100" v-if="showRight" style="width: 300px;margin: auto;">
+            <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" :taskId="taskId"></component>
+                </keep-alive>
+              </el-main>
+            </el-container>
+          </div>
+        </div>
+      </el-main>
     </el-container>
   </div>
 </template>
@@ -119,7 +119,9 @@ import PatentInstruction from './patentMessage/PatentInstruction.vue'
 import PatentFamily from './patentMessage/PatentFamily.vue'
 import PatentStatus from './patentMessage/PatentStatus.vue'
 import PatentPDF from './patentMessage/PatentPDF.vue'
-import {projectData,handleData} from '../../patentCollection/components/mixins/index'
+import { projectData, handleData } from '../../patentCollection/components/mixins/index'
+
+import PatentField from './PatentField.vue'
 
 export default {
   components: {
@@ -129,48 +131,52 @@ export default {
     PatentInstruction,
     PatentFamily,
     PatentStatus,
-    PatentPDF
+    PatentPDF,
+    PatentField,
   },
-  mixins: [projectData,handleData],
+  mixins: [projectData, handleData],
   props: {
-    projectId:{
-        default:0
+    projectId: {
+      default: 0
+    },
+    patentNo: {
+      type: String
+    },
+    taskId: {
+      default:null,
     },
-    patentNo:{
-      type:String
-    }
   },
   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: [
+      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: '基础信息'
@@ -214,65 +220,65 @@ export default {
           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: '',
-        value:false,
-        patent:{}
+      ],
+      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: '',
+      value: false,
+      patent: {}
     };
   },
   watch: {
-    patentNo(val){
-      if(val){
+    patentNo(val) {
+      if (val) {
         this.getPatent()
       }
     }
   },
   computed: {},
-  created() {},
+  created() { },
   mounted() {
     this.getPatent()
   },
   methods: {
-    getBiaoZhu(){
+    getBiaoZhu() {
 
     },
     //获取专利信息
-    getPatent(){
-      var params= {
-        patentNo:this.patentNo
+    getPatent() {
+      var params = {
+        patentNo: this.patentNo
       }
-      this.$api.selectPatentDetail(params).then(response=>{
-        if(response.code == 200){
+      this.$api.selectPatentDetail(params).then(response => {
+        if (response.code == 200) {
           this.patent = response.data
         }
       })
@@ -316,15 +322,15 @@ export default {
       this.activeMenu2 = val
       return false
     },
-    changePosition(val){
+    changePosition(val) {
 
     }
   },
 };
 </script>
 <style lang="scss" scoped>
-.menu{
-  .el-link{
+.menu {
+  .el-link {
     margin-right: 20px;
   }
 }

+ 11 - 5
src/views/project/patentDetails/index.vue

@@ -1,13 +1,13 @@
 <template>
   <div class="height_100 article">
-    <articleMenu @contrast="contrast" :projectId="projectId"></articleMenu>
+    <articleMenu @contrast="contrast" :projectId="projectId"  @getPatentLeft="getPatentLeft"></articleMenu>
     <div class="height_100 content">
         <my-View :showView="showView">
             <div slot="left" style="width:100%">
-              <Patent-Details :patentNo="patentNo" :projectId="projectId"></Patent-Details>
+              <Patent-Details :patentNo="patentNo" :projectId="projectId" :taskId="taskId"></Patent-Details>
             </div>
             <div slot="right" style="width:100%">
-              <Patent-Details :patentNo="patentNo" :projectId="projectId"></Patent-Details>
+              <Patent-Details :patentNo="patentNo" :projectId="projectId" :taskId="taskId"></Patent-Details>
             </div>
         </my-View>
     </div>
@@ -34,14 +34,20 @@ export default {
   computed: {
     projectId(){
       return this.$route.query.projectId
-    }
+    },
+    taskId(){
+      return this.$route.query.taskId
+    },
   },
   created() {},
   mounted() {},
   methods: {
     contrast(val){
       this.showView = val
-    }
+    },
+    getPatentLeft(val) {
+      this.patentNo=val
+    },
   },
 };
 </script>

+ 20 - 3
src/views/report/components/allocationTask/components/allocationTask.vue

@@ -81,7 +81,7 @@
     <!-- 选择人员 -->
     <personList ref="personList" @getPersonIds="getPersonIds"></personList>
     <!-- 选择专利 -->
-    <checkPatent ref="checkPatent" @checkPatentList="checkPatentList"></checkPatent>
+    <checkPatent ref="checkPatent" :oldSearchOption="oldSearchOption" :customFields="customFields" @checkPatentList="checkPatentList"></checkPatent>
 
     <examine ref="examine" @save="handleSave" :title="'添加分配任务'" :isShow="false">
     </examine>
@@ -101,7 +101,23 @@ export default {
     examine,
     showColumn,
   },
-  props: ['projectId',],
+  props: {
+    projectId: {
+      default:'',
+    },
+    oldSearchOption: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    },
+    customFields: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+  },
   data() {
     return {
       // 
@@ -166,7 +182,8 @@ export default {
       let params = {
         ...this.queryParams,//分页信息
         projectId: this.projectId,
-        searchQuery: '',//检索条件
+        searchQuery: this.$commonJS.objectToString(this.oldSearchOption),//检索条件
+        customFields:this.customFields,
         orderDTOList: [],//排序信息
       }
       await this.$api.QueryPatent(params).then(res => {

+ 7 - 1
src/views/report/components/allocationTask/index.vue

@@ -1,7 +1,7 @@
 <template>
   <!-- 分配任务 -->
   <div>
-    <allocationTask :projectId="projectId" ></allocationTask>
+    <allocationTask :projectId="projectId" :oldSearchOption="searchOption" :customFields="customFields"></allocationTask>
   </div>
 </template>
 
@@ -20,6 +20,12 @@ export default {
     projectId() {
       return this.$route.query.projectId
     },
+    searchOption() {//检索条件
+      return JSON.parse(this.$route.query.searchOption)
+    },
+    customFields() {//自定义字段检索条件
+      return JSON.parse(this.$route.query.customFields)
+    },
   },
   mounted() {
 

+ 45 - 8
src/views/report/components/checkPatent/checkPatent.vue

@@ -4,13 +4,17 @@
     <el-dialog title="选择专利" :visible.sync="dialogVisible" width="800px" :before-close="handleClose">
 
       <Table :column="column" :tableData="tableData" :queryParams="queryParams" :refresh="refresh"
-        :patentNoList="patentNoList" :projectId="projectId"></Table>
+        :patentNoList="patentNoList" :projectId="projectId" @on-sort="handleSort"></Table>
 
-      <div style="text-align:center;margin-top:10px;">
-        <el-pagination background layout="total, sizes, prev, pager, next, jumper"
+      <div>
+        <div></div>
+        <div>
+          <el-pagination background layout="total, sizes, prev, pager, next, jumper"
           :current-page.sync="queryParams.current" :page-size.sync="queryParams.size"
           @current-change="handleCurrentChange" @size-change="getList" :total="total">
-        </el-pagination>
+          </el-pagination>
+        </div>
+        
       </div>
 
       <span slot="footer" class="dialog-footer">
@@ -27,11 +31,24 @@ export default {
   components: {
     Table
   },
+  props: {
+    customFields: {
+      default: () => {
+        return []
+      }
+    },
+    oldSearchOption: {
+      default: () => {
+        return {}
+      }
+    }
+  },
   data() {
     return {
       projectId: '',
       // 控制弹窗的打开关闭
       dialogVisible: false,
+      searchOption:{},
       // 分页信息
       queryParams: {
         current: 1,
@@ -78,7 +95,9 @@ export default {
       ],
       // 选中的数据
       patentNoList: [],
-      refresh:true
+      refresh: true,
+      //排序
+      sort: [],
     }
   },
   mounted() {
@@ -103,18 +122,36 @@ export default {
       this.refresh = false
       this.dialogVisible = false
     },
-   
+
     // 分页信息
     handleCurrentChange(val) {
       this.queryParams.current = val,
         this.getList()
     },
+    //排序
+    handleSort({ column, prop, order }) {
+      //如需要多个字段排序,则不需要清空
+      var params = {
+        sort: this.sort,
+        column,
+        prop,
+        order,
+      }
+      this.sort = this.$commonJS.getSortData(params)
+      this.queryParams.current = 1
+      this.getList()
+    },
     getList() {
+      var searchOption={
+        ...this.oldSearchOption,
+        ...this.searchOption
+      }
       let params = {
         ...this.queryParams,//分页信息
         projectId: this.projectId,
-        searchQuery: '',//检索条件
-        orderDTOList: [],//排序信息
+        searchQuery: this.$commonJS.objectToString(searchOption) ,//检索条件
+        customFields:this.customFields,
+        orderDTOList: this.sort,//排序信息
       }
       this.$api.QueryPatent(params).then(res => {
         if (res.code == 200) {

+ 1 - 1
src/views/report/components/details/index.vue

@@ -90,7 +90,7 @@ export default {
         {
           label:'对比文件',
           name:'productMessage',
-          path:'report/components/patentList/patentList.vue',
+          path:'report/components/patentList/components/index.vue',
           reportType:[3]
         },
         {

+ 49 - 16
src/views/report/components/dialog/teamwork.vue

@@ -25,8 +25,8 @@
           </el-form-item>
 
           <el-form-item label="抄送人:" prop="people">
-            <el-select v-model="form.people" placeholder="请选择抄送人(可选择多名抄送人)" style="width: 100%;" filterable remote multiple
-              :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson"
+            <el-select v-model="form.people" placeholder="请选择抄送人(可选择多名抄送人)" style="width: 100%;" filterable remote
+              multiple :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson"
               :loading="personnelList.loading">
               <el-option v-for="item in personnelList.data" :key="item.id" :label="item.name + '<' + item.email + '>'"
                 :value="item.id">
@@ -77,17 +77,27 @@
         <el-button type="primary" @click="submitCreated">确定</el-button>
       </div>
     </el-dialog>
+
+    <checkPatent ref="checkPatent" @checkPatentList="checkPatentList"></checkPatent>
   </div>
 </template>
 
 <script>
 import { personnelLoading } from '@/views/patentMining/components/mixins/index2'
+import checkPatent from '../checkPatent/checkPatent.vue'
 export default {
   mixins: [personnelLoading],
   props: {
     // 信息(patentNo,reportId)
-    patentNo:'',
-    projectId:'',
+    patentNo: '',
+    projectId: '',
+    reportType: {
+      type: String,
+      default: 3//默认3fto报告
+    },
+  },
+  components: {
+    checkPatent
   },
   data() {
     //校验协同人是否为空
@@ -150,8 +160,8 @@ export default {
         name: [{ required: true, message: "请输入姓名", trigger: "blur" },],
         email: [{ required: true, validator: isEmail, trigger: "change" },],
       },
-      isEndTime:true,
-      isEndTimes:null,
+      isEndTime: true,
+      isEndTimes: null,
       // 记录从哪里进入创建人员弹窗
       witchOne: null,
       isIf: false
@@ -163,21 +173,30 @@ export default {
   methods: {
     // 打开协同弹窗
     open() {
+      if (this.reportType == 3) {
+        this.$refs.checkPatent.open(this.projectId)
+      } else {
+        this.visibleCollaboration = true
+      }
+    },
+    // 从专利清单子组件传值(专利号的数据)
+    checkPatentList(val) {
       this.visibleCollaboration = true
+      this.form.patentNos = val
     },
     // 协同弹窗的关闭
     close() {
-      this.isEndTime=true
+      this.isEndTime = true
       this.$refs.clientForm.resetFields()
       this.form = {}
       this.visibleCollaboration = false
     },
     // 协同弹窗的确定
     submit() {
-      this.isEndTime=false
+      this.isEndTime = false
       this.$refs.clientForm.validate((valid) => {
         if (valid) {
-          this.form.projectId=this.projectId//项目id
+          this.form.projectId = this.projectId//项目id
           // 判断是否为外部人员
           if (this.form.handler.includes('@')) {//是邮箱为1
             this.form.handlerType = 1
@@ -185,12 +204,26 @@ export default {
             this.form.handlerType = 0
           }
           this.people()
-          this.$api.addTortTask(this.form).then(res => {
-            if (res.code == 200) {
-              this.$message.success('发送协同任务成功')
-              this.close()
-            }
-          })
+          this.form.type = 4 //4为协同任务类型
+          // 协同
+          if (this.reportType == 3) {//fto
+            this.$api.addFTOAssItTask(this.form).then(res => {
+              if (res.code == 200) {
+                this.$message.success('发送协同任务成功')
+                this.close()
+              }
+            })
+          } else {
+            // 侵权分析的协同
+            this.$api.addTortTask(this.form).then(res => {
+              if (res.code == 200) {
+                this.$message.success('发送协同任务成功')
+                this.close()
+              }
+            })
+          }
+
+
         }
       })
     },
@@ -212,7 +245,7 @@ export default {
           this.form.ccPeople.push(obj)
         })
       } else {
-        this.form.ccPeople=[]
+        this.form.ccPeople = []
       }
     },
     // 创建人员弹窗的关闭

+ 2 - 2
src/views/report/components/index.vue

@@ -554,7 +554,7 @@ export default {
         path: "/informationEntry",
         query: {
           patentNo: row.signPatentNo,
-          reportId: row.id,
+          projectId: row.id,
           reportType: row.reportType
         }
       })
@@ -567,7 +567,7 @@ export default {
         path: "/tortIndex",
         query: {
           patentNo: row.signPatentNo,
-          reportId: row.id,
+          projectId: row.id,
           reportType: row.reportType
         }
       })

+ 23 - 8
src/views/report/components/patentList/components/customFields.vue

@@ -30,7 +30,7 @@
                   icon="el-icon-search" circle></el-button>
               </div> -->
               <!-- 日期 -->
-              <div v-if="item.type != 6" style="display:flex">
+              <div v-if="item.type != 6" style="display:flex;margin-bottom: 10px;">
                 <el-input v-if="[0,4,5].includes(item.type)" size="small"
                     placeholder="请输入查询内容"></el-input>
                 <div v-if="[1].includes(item.type)" class="year-data-picker">
@@ -45,18 +45,18 @@
               </div>
               <!-- 数字 -->
               <div v-if="item.type == 0">
-                <!-- <el-input type="textarea" :rows="2" placeholder="请输入内容"></el-input> -->
+                <el-input type="textarea" :rows="2" placeholder="请输入内容"  v-model="valObj.description2" @blur="handleBlur(item,0)"></el-input>
               </div>
               <!-- 文本 -->
               <div v-if="item.type == 2">
-                <el-input type="textarea" :rows="2" v-model="valObj.description" placeholder="请输入内容"></el-input>
+                <el-input type="textarea" :rows="2" v-model="valObj.description" @blur="handleBlur(item,1)" placeholder="请输入内容"></el-input>
               </div>
               <!-- 单选 -->
               <div v-if="item.type == 4">
                 <el-radio v-for="radio in item.options" :key="radio.id" v-model="valObj.radio"
                   @change="radioChange($event, item.id)" :label="radio.id" style="width: 100%;">
                   <span>{{ radio.name }}</span>
-                  <span v-if="isShowNum">({{ radio.count }})</span>
+                  <span v-if="isShowNum">({{ radio.count || 0 }})</span>
                 </el-radio>
               </div>
               <!-- 多选 -->
@@ -64,7 +64,7 @@
                 <div class="source-checkbox">
                   <el-checkbox v-for="source in item.options" :label="source.id" :key="source.id">
                     <span class="source-checkbox-label" :title="source.name">{{ source.name }}</span>
-                    <span v-if="isShowNum" class="source-checkbox-count">({{ source.count }})</span>
+                    <span v-if="isShowNum" class="source-checkbox-count">({{ source.count || 0 }})</span>
                   </el-checkbox>
                 </div>
               </el-checkbox-group>
@@ -117,7 +117,7 @@ export default {
     isShowCustom: {
       type: Boolean,
       default: true,
-    }
+    },
   },
   data() {
     return {
@@ -157,6 +157,7 @@ export default {
         check: [],
         radio: '',
         description: '',
+        description2: '',
       },
       // 总数据
       customFields: [],
@@ -218,7 +219,9 @@ export default {
     },
 
     // 处理树类型的文件数字
-    getCount(rowId, childId) { },
+    getCount(rowId, childId) { 
+      return 0
+    },
     // 加载更多
     // handleLoadMore() { },
     // 全选
@@ -288,9 +291,21 @@ export default {
       } else {
         this.customFields.push(obj)
       }
+      this.$emit('customFields',this.customFields)
+    },
+    // 处理数字、文字
+    handleBlur(item, type) {
+      if (type == 0) {//数字
+        this.customFields[item.id] = [valObj.description2]
+      } else {
+        this.customFields[item.id] = [valObj.description]
+      }
+      this.$emit('customFields',this.customFields)
     },
     // 点击面版
-    handleChange(val) { },
+    handleChange(val) { 
+      
+    },
     // 点击已读、未读、全部
     handleReadQuery(val) { },
 

+ 90 - 35
src/views/report/components/patentList/components/index.vue

@@ -1,8 +1,8 @@
 <template>
   <!-- 任务专利列表页面 -->
   <div class="height_100">
-    <div class="height_100 content" :style="{'flex-direction':(taskId?'row-reverse':'row')}">
-      <div class="height_100  left" :style="{width:showRight?`calc(100% - 300px)`:'100%'}">
+    <div class="height_100 content" :style="{ 'flex-direction': (taskId ? 'row-reverse' : 'row') }">
+      <div class="height_100  left" :style="{ width: showRight ? `calc(100% - 300px)` : '100%' }">
         <el-container>
           <el-header style="padding:0 10px !important;">
             <div style="display: flex;align-items: center;">
@@ -18,7 +18,7 @@
             </div>
             <el-button v-if="taskId" type="primary" size="small" @click="handleFieldManage">显示栏位管理</el-button>
             <div v-else style="display:flex;align-items:center">
-              <el-dropdown  id="step4" trigger="click" split-button type="primary" size="small" @click="handleFieldManage"
+              <el-dropdown id="step4" trigger="click" split-button type="primary" size="small" @click="handleFieldManage"
                 @command="handleCommand($event)">
                 <span v-disabled="false">显示栏位管理</span>
                 <el-dropdown-menu slot="dropdown" class="text-align_center">
@@ -57,7 +57,7 @@
         </el-container>
       </div>
       <div class="height_100 right" v-show="showRight">
-        <customFields :projectId="projectId"></customFields>
+        <customFields :projectId="projectId" @customFields="handleCustomFields"></customFields>
       </div>
     </div>
 
@@ -72,10 +72,19 @@ import customFields from './customFields.vue';
 export default {
   props: {
     taskId: {
-      default:0
+      default: null
     },
-    projectId:{
-      default:0
+    projectId: {
+      default: 0
+    },
+    taskType: {
+      default: 0
+    },
+    reportType: {
+      default: ''
+    },
+    isResult: {//1处理2查看3确认结果
+      default: ''
     },
   },
   components: {
@@ -103,16 +112,13 @@ export default {
       //页大小
       sizeArr: [10, 20, 30, 40, 50, 100],
       //排序
-      sort: [
-        {
-          "orderBy": "createTime",
-          "orderType": 1
-        }
-      ],
+      sort: [],
       //专利列表
       tableData: [],
       // 获取显示自定义栏位
-      fieldList:[],
+      fieldList: [],
+      // 存放自定义栏位的筛选数据
+      customFields:[],
     }
   },
   computed: {},
@@ -121,18 +127,41 @@ export default {
     this.getList()
   },
   methods: {
-    handleClick(row){
-      this.$router.push(
-        {
-          path:'/patentDetails/'+row.patentNo,
-          query:{
-            projectId:this.projectId
+    handleCustomFields(val) {
+      this.customFields=val
+      this.getList()
+    },
+    // 处理任务
+    handleClick(row) {
+      if (this.taskType == 0) {//FTO标引任务
+        this.$router.push(
+          {
+            path: '/patentDetails/' + row.patentNo,
+            query: {
+              projectId: this.projectId,
+              taskId: this.taskId,
+              reportType: this.reportType,
+            }
           }
-        }
-      )
+        )
+      } else {//FTO对比任务
+        this.$router.push(
+          {
+            path: '/tortIndex',
+            query: {
+              projectId: this.projectId,
+              taskId: this.taskId,
+              reportType: this.reportType,
+              patentNo: row.patentNo,
+              isResult:this.isResult
+            }
+          }
+        )
+      }
+
     },
     // 搜索
-    search() {
+    search(val) {
       let params = {}
       val.forEach(item => {
         if (item.type == 3) {
@@ -149,14 +178,15 @@ export default {
       this.queryParams.current = 1
       this.getList()
     },
-   //获取专利列表
-   getList() {
+    //获取专利列表
+    getList() {
       let params = {
         ...this.queryParams,//分页信息
         projectId: this.projectId,
         taskId: this.taskId,
-        searchQuery: '',//检索条件
-        orderDTOList: [],//排序信息
+        searchQuery: this.$commonJS.objectToString(this.searchOption || {}),//检索条件
+        customFields: this.customFields,
+        orderDTOList: this.sort,//排序信息
       }
       this.$api.QueryPatent(params).then(res => {
         if (res.code == 200) {
@@ -190,8 +220,32 @@ export default {
     handleFieldManage() {
       this.$refs.field.open(this.fieldList)
     },
-     //获取显示自定义栏位
-     getFieldList(data) {
+    // 显示管理旁下拉菜单
+    handleCommand(event) {
+      switch (event) {
+        case '1':
+          this.handleAllocation()
+          break;
+
+        default:
+          break;
+      }
+    },
+    // 跳转分配任务页面
+    handleAllocation() {
+      this.$router.push(
+        {
+          path: '/allocationTask',
+          query: {
+            projectId: this.projectId,
+            searchOption: JSON.stringify(this.searchOption),//输入框检索条件
+            customFields:JSON.stringify(this.customFields),//右侧勾选自定义栏位的条件
+          }
+        }
+      )
+    },
+    //获取显示自定义栏位
+    getFieldList(data) {
       this.fieldList = data
     },
   },
@@ -199,15 +253,16 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-.content{
+.content {
   display: flex;
-  max-width:100%;
-  .right{
-    min-width:300px;
+  max-width: 100%;
+
+  .right {
+    min-width: 300px;
   }
-  .left{
+
+  .left {
     width: 100%;
   }
 }
-
 </style>

+ 11 - 2
src/views/report/components/patentList/index.vue

@@ -1,7 +1,7 @@
 <template>
   <!--  -->
   <div>
-    <patentList :projectId="projectId" :taskId="taskId"></patentList>
+    <patentList :projectId="projectId" :taskId="taskId" :taskType="taskType" :reportType="reportType" :isResult="isResult"></patentList>
   </div>
 </template>
 
@@ -21,7 +21,16 @@ export default {
       return this.$route.query.projectId || 0
     },
     taskId() {
-      return this.$route.query.taskId || 0
+      return this.$route.query.taskId
+    },
+    taskType() {
+      return this.$route.query.taskType || 0
+    },
+    reportType() {
+      return this.$route.query.reportType
+    },
+    isResult() {//1处理2查看3确认结果
+      return this.$route.query.isResult
     },
   },
   mounted() {

+ 195 - 93
src/views/report/components/productResult/productResult.vue

@@ -14,7 +14,8 @@
             <el-dropdown-menu slot="dropdown" style="margin-top:0px"
               v-if="dictMessage.REPORT_TYPE && dictMessage.REPORT_TYPE.length > 0">
               <!-- 遍历按钮 -->
-              <el-dropdown-item v-for="item in dictMessage.REPORT_TYPE.filter(item => !['3','5','6'].includes(item.value))"
+              <el-dropdown-item
+                v-for="item in dictMessage.REPORT_TYPE.filter(item => !['3', '5', '6'].includes(item.value))"
                 :key="item.label" @click.native="handleAnalyse(item.value)"
                 v-if="$permission('/pcs/report/add/' + item.permission)">{{ item.label }}</el-dropdown-item>
             </el-dropdown-menu>
@@ -55,7 +56,7 @@
               @click="showRight = !showRight"></i>
           </el-tooltip>
         </div>
-        <div>
+        <div class="height_100">
           <table class="PatentMessage">
             <tr>
               <td>公告号</td>
@@ -77,50 +78,57 @@
           </table>
 
           <!-- 表格专利信息 -->
-          <el-table :data="tableData1" border :span-method="objectSpanMethod" v-loading="loading" height="100%"
-            style="width: 100%; margin-top: 20px;overflow:auto">
-
-            <el-table-column prop="pRightName" label="权要" align="center" >
+          <el-table :data="tableData" border ref="table" :span-method="objectSpanMethod"
+            v-loading="loading" style="width: 100%;overflow: auto;">
+            <el-table-column prop="pRightName" label="权要" align="center">
               <template slot-scope="scope">
+                <!-- <el-tooltip class="item" effect="dark"
+                :content="rightList.length > 0 ? rightList.filter(item => { return item.sort == scope.row.rightSort })[0].content : '暂无数据'"
+                placement="top"> -->
                 <el-tooltip class="item" effect="dark" :content="scope.row.pContent" placement="top">
                   <span>{{ scope.row.pRightName }}</span>
                 </el-tooltip>
               </template>
             </el-table-column>
 
-            <el-table-column prop="content" label="特征" align="center" width="300px">
+            <el-table-column prop="content" label="特征" min-width="300" align="center">
               <template slot-scope="scope">
-                <div style="width:100%;outline: #dcdfe6;white-space:normal; word-break:break-all;text-align:left"
-                  id="preview" v-html="scope.row.content"></div>
+                <div v-if="isEdit">
+                  <el-checkbox-group v-model="checkList">
+                    <el-checkbox :label="scope.row.featureId" @change="getRow(scope)"
+                      style="display: flex;align-items: center;">
+                      <el-input type="textarea" style="width:250px" autosize v-model="scope.row.content">
+                        {{ scope.row.content }}</el-input>
+                    </el-checkbox>
+                  </el-checkbox-group>
+                </div>
+                <div v-else v-html="scope.row.content"> </div>
               </template>
             </el-table-column>
 
-            <el-table-column prop="explainText" align="center" label="解释(可粘贴图片)">
-              <template slot-scope="scope">
-                <div style="width:100%;outline: #dcdfe6;white-space:normal; word-break:break-all;text-align:left"
-                  id="preview" v-html="scope.row.explainText"></div>
-              </template>
-            </el-table-column>
-            <el-table-column prop="targetDescription" align="center" label="标的说明(可粘贴图片)" >
-              <template slot-scope="scope">
-                <div style="width:100%;outline: #dcdfe6;white-space:normal; word-break:break-all;text-align:left"
-                  id="preview" v-html="scope.row.targetDescription"></div>
-              </template>
-            </el-table-column>
-            <el-table-column prop="compareResult" align="center" label="比对结果">
+            <el-table-column prop="explainText" label="解释(可粘贴图片)" align="center">
               <template slot-scope="scope">
-                <div v-if="scope.row">
-                  <span v-if="scope.row.compareResult.toString() != ''">{{
-                    options.filter(item => item.value == scope.row.compareResult)[0].label }}</span>
+                <div v-if="isEdit">
+                  <myRichText style="text-align:left" v-model="scope.row.explainText" placeholder="请输入解释(可粘贴图片)">
+                  </myRichText>
                 </div>
+                <div v-else v-html="scope.row.explainText"></div>
               </template>
             </el-table-column>
-            <el-table-column prop="compareDescription" align="center" label="比对说明(可粘贴图片)" >
+
+
+            <el-table-column v-for="(item, index) in columnList" :key="index" :prop="item.value" :label="item.name"
+              align="center" min-width="160px">
               <template slot-scope="scope">
-                <div style="width:100%;outline: #dcdfe6;white-space:normal; word-break:break-all;text-align:left"
-                  id="preview" v-html="scope.row.compareDescription"></div>
+                <div v-if="item.type == 'String'">
+                  <div v-html="getColumnData(scope.row, item)"></div>
+                </div>
+                <div v-else-if="item.type == 'Array'">
+                  <div v-html="getColumnData(scope.row, item)"></div>
+                </div>
               </template>
             </el-table-column>
+
           </el-table>
         </div>
       </el-aside>
@@ -144,10 +152,8 @@
     <CreateReport ref="ReportForm"></CreateReport>
 
     <!-- 协同任务 -->
-    <teamwork ref="teamwork"></teamwork>
+    <teamwork ref="teamwork" :projectId="projectId" :reportType="reportType"></teamwork>
 
-    <!-- 专利列表弹窗 -->
-    <checkPatent ref="checkPatent" @checkPatentList="checkPatentList"></checkPatent>
 
   </div>
 </template>
@@ -155,20 +161,51 @@
 <script>
 import CreateReport from '@/views/report/components/dialog/addAndEditReport.vue'
 import teamwork from "@/views/report/components/dialog/teamwork.vue"
-import checkPatent from "../checkPatent/checkPatent.vue"
 export default {
   components: {
     CreateReport,
     teamwork,
-    checkPatent,
   },
   props: ['projectId', 'patentNo', "reportType"],
   data() {
     return {
+      // 栏位
+      columnList: [
+        {
+          name: "标的说明(可粘贴图片)",
+          type: "String",
+          value: ['finalRecordVO', 'targetDescription'],
+        },
+        {
+          name: "比对结果",
+          type: "Array",
+          value: ['finalRecordVO', 'compareResult'],
+          options: [
+            {
+              value: 0,
+              label: '字面相同'
+            }, {
+              value: 1,
+              label: '等同'
+            }, {
+              value: 2,
+              label: '不相同'
+            }, {
+              value: 3,
+              label: '待确定'
+            }
+          ],
+        },
+        {
+          name: "比对说明(可粘贴图片)",
+          type: "String",
+          value: ['finalRecordVO', 'compareDescription'],
+        },
+      ],
       // 控制宽度
       width: '0px',
       // 获取数据信息的loading
-      loading:false,
+      loading: false,
       // 控制右侧的显示与隐藏
       showRight: false,
       // 控制专利弹窗显示
@@ -176,8 +213,6 @@ export default {
       patentList: [],
       // 返回的数据
       tableData: [],
-      // 表格数据源
-      tableData1: [],
       // 公告号公告日等信息
       patent: {},
       // 表格合并信息
@@ -204,6 +239,7 @@ export default {
           label: '待确定'
         }
       ],
+      index: 0,
     }
   },
   computed: {
@@ -238,50 +274,146 @@ export default {
     },
   },
   async mounted() {
-    // await this.getPatentList()
-    if (this.patentList.length > 0) {
-      this.patent = this.patentList[0]
-      this.queryCompareMessage(this.patent.patentNo)
-    }
-
+    // this.getList()
   },
   methods: {
     // 处理同族专利
     getPatentFamily() { },
+    // 获取/处理数据
+    getColumnData(row, field) {
+      if (typeof field.value == 'string') {
+        return row[field.value]
+      } else {
+        var str = row
+        if (field.value && field.value.length > 0) {
+          try {
+            field.value.forEach(item => {
+              if (str[item] != 0 && !str[item]) {
+                throw Error();
+              }
+              str = str[item]
+            })
+          }
+          catch (e) {
+            return ''
+          }
+
+        }
+        if (this.isEdit || field.disabled) {
+
+        } else {
+          if (field.options && field.options.length > 0) {
+            let a = field.options.find(item => {
+              return item.value == str
+            })
+            if (a) {
+              return a.label
+            } else {
+              return ''
+            }
+          }
+        }
+        return str
+      }
+
+    },
     // 创建报告
-    handleAnalyse(val) { 
+    handleAnalyse(val) {
       var form = {
         reportType: val,
-        signPatentNo:this.patentNo,
-        matterId:  [],
-        scenarioId:  [],
+        signPatentNo: this.patentNo,
+        matterId: [],
+        scenarioId: [],
       }
       this.$refs.ReportForm.open(form)
     },
     // 工作协同
     taskWork() {
-      if (this.reportType == 4) {
-        //侵权分析
-        this.$refs.teamwork.open()
-      } else {
-        this.$refs.checkPatent.open()//选择专利框打开
-      }
+      this.$refs.teamwork.open()
     },
-    // 子组件传的勾选的值 
-    checkPatentList(val) {
-      console.log(val);
-    },
-    // 选择专利弹窗确定
-    handleSure(){},
-    // 选择专利弹窗关闭
-    handleClose(){},
-    // 选择专利弹窗子组件发送的消息
-    handleChoice(val) { },
     // 显示勾选的信息
     async load() {
       this.queryParams.current += 1
       // await this.getPatentList()
     },
+    // 获取数据
+    getList() {
+      let params = {
+        projectId: this.projectId,
+        patentNo: this.patentNo,
+        // searchQuery:this.$commonJS.objectToString(this.searchOption || {}),//检索条件
+        orderDTOList: [],//排序
+      }
+      this.$api.query(params).then(res => {
+        if (res.code == 200) {
+          this.tableData = res.data.data
+          this.getInterface(this.tableData)
+        }
+      })
+    },
+    // 处理获取的数据
+    getInterface(res) {
+      if (res.data.tortRightVOS.length > 0) {
+        var data = []
+        res.data.tortRightVOS.forEach(RightVosItem => {
+          if (RightVosItem.tortVOS.length > 0) {
+            RightVosItem.tortVOS.forEach(FeaturesItem => {
+              FeaturesItem.pRightName = RightVosItem.rightName
+              FeaturesItem.pSignPatentNo = RightVosItem.signPatentNo
+              FeaturesItem.pPatentNo = RightVosItem.patentNo
+              FeaturesItem.pContentOut = RightVosItem.contentOut
+              FeaturesItem.pContent = RightVosItem.content
+              FeaturesItem.pProjectId = RightVosItem.projectId
+              FeaturesItem.pType = RightVosItem.type
+              FeaturesItem.pSort = RightVosItem.sort
+              this.hasOwn(FeaturesItem)
+              data.push(FeaturesItem)
+            })
+          }
+        })
+        this.getSpanArr(this.tableData)
+        this.tableData = data
+      }
+    },
+    hasOwn(item) {
+      if (!item.hasOwnProperty("explainText")) {
+        item.explainText = ''
+      }
+    },
+    //获取每个元素所需合并的行数
+    getSpanArr(data) {
+      this.mergeArr.forEach((key, index1) => {
+        let count = 0;
+        this.mergeObj[key] = [];
+        data.forEach((item, index) => {
+          if (index === 0) {
+            this.mergeObj[key].push(1);
+          } else {
+            if (item[key] === data[index - 1][key] && item[key] !== 'explainText') {
+              this.mergeObj[key][count] += 1;
+              this.mergeObj[key].push(0);
+            } else {
+              count = index;
+              this.mergeObj[key].push(1);
+            }
+          }
+        })
+      })
+    },
+    //合并行
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      // column.property=“id”  
+      if (this.mergeArr.indexOf(column.property) !== -1) {
+        if (this.mergeObj[column.property][rowIndex]) {
+          return [this.mergeObj[column.property][rowIndex], 1]
+        } else {
+          return [0, 0];
+        }
+      }
+    },
+
+
+
 
 
 
@@ -330,37 +462,7 @@ export default {
         this.loading = false
       })
     },
-    //获取每个元素所需合并的行数
-    getSpanArr(data) {
-      this.mergeArr.forEach((key, index1) => {
-        let count = 0;
-        this.mergeObj[key] = [];
-        data.forEach((item, index) => {
-          if (index === 0) {
-            this.mergeObj[key].push(1);
-          } else {
-            if (item[key] === data[index - 1][key] && item[key] !== 'explainText') {
-              this.mergeObj[key][count] += 1;
-              this.mergeObj[key].push(0);
-            } else {
-              count = index;
-              this.mergeObj[key].push(1);
-            }
-          }
-        })
-      })
-    },
-    //合并行
-    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
-      // column.property=“id”  
-      if (this.mergeArr.indexOf(column.property) !== -1) {
-        if (this.mergeObj[column.property][rowIndex]) {
-          return [this.mergeObj[column.property][rowIndex], 1]
-        } else {
-          return [0, 0];
-        }
-      }
-    },
+
 
   },
 }

+ 1 - 1
src/views/report/tort/components/informationEntry/index.vue

@@ -24,7 +24,7 @@ export default {
       return this.$route.query.patentNo
     },
     projectId() {
-      return this.$route.query.reportId
+      return this.$route.query.projectId
     },
     reportType() {
       return this.$route.query.reportType

+ 142 - 73
src/views/report/tort/components/tortContrast.vue

@@ -38,7 +38,7 @@
 
             <component :is="viewType" style="height: calc(100% - -10px);overflow: auto;" :tableData="tableData"
               :patentNo="patentNo" :projectId="projectId" :reportType="reportType" :columnList="columnList"
-              @splitSelect="splitSelect" @isSave="isSave" :isEdit="taskId ? false : true" :isResult="isResult"
+              @splitSelect="splitSelect" @isSave="isSave" :isEdit="(taskId && (reportType != 3 && isResult)) ? false : true" :isResult="isResult"
               @changeResult="changeResult">
               <div slot="handleRight" v-if="isResult == 3">
                 <el-button type="primary" @click="agree">全部同意</el-button>
@@ -49,12 +49,12 @@
         </el-container>
 
         <div v-show="look" slot="right" style="height: 100%;width:100%;">
-          <patentDetailsPage :projectId="projectId"></patentDetailsPage>
+          <patentDetailsPage :patentNo="patentNo" :projectId="projectId" :taskId="taskId"></patentDetailsPage>
         </div>
       </myView>
     </div>
 
-    <teamwork ref="teamwork" :patentNo="patentNo" :projectId="projectId"></teamwork>
+    <teamwork ref="teamwork" :patentNo="patentNo" :projectId="projectId" :reportType="reportType"></teamwork>
   </div>
 </template>
 
@@ -65,7 +65,7 @@ import informationEntry from './informationEntry/informationEntry.vue'
 import teamwork from '../../components/dialog/teamwork.vue'
 import patentDetailsPage from '@/views/project/patentDetails/components/patentDetails.vue'
 export default {
-  //isTaskLook只有处理或查看协同时传递//isConfirm只有确认协同结果时传递
+  //
   props: ['patentNo', 'projectId', 'reportType', 'taskId', 'isResult'],
   mixins: [patentDetails],
   components: {
@@ -118,11 +118,13 @@ export default {
     }
   },
   mounted() {
-
+    console.log(this.taskId,this.reportType,this.isResult);
+    console.log((this.taskId && (this.reportType != 3 && this.isResult)));
     this.getColumn()
     this.getList()
   },
   methods: {
+    // 处理栏位
     getColumn() {
       var a = {
         1: '处理协同结果',
@@ -243,57 +245,118 @@ export default {
     },
     // 保存结果
     isSave(val) {
-      if (this.taskId && this.isResult == 3) {//确认协同结果保存
-        for (let i = 0; i < val.length; i++) {
-          if (val[i].finalRecordVO) {
-            for (let key in val[i].finalRecordVO) {
-              val[i][key] = val[i].finalRecordVO[key]
+      if (this.reportType == 3) {//FTO
+        if (this.taskId && this.isResult == 3) {//确认协同结果保存
+          for (let i = 0; i < val.length; i++) {
+            if (val[i].finalRecordVO) {
+              for (let key in val[i].finalRecordVO) {
+                val[i][key] = val[i].finalRecordVO[key]
+              }
             }
           }
-        }
-        let params = {
-          taskId: this.taskId,
-          tortDTOS: val,
-        }
-        this.$api.addFinalTortResult(params).then(res => {
-          if (res.code == 200) {
-            this.$message.success('保存成功')
+          let params = {
+            taskId: this.taskId,
+            patentNo: this.patentNo,
+            taskId: this.taskId,
+            tortDTOS: val,
           }
-        })
-      } else if (this.taskId && this.isResult == 1) {//处理或查看协同结果保存
-        for (let i = 0; i < val.length; i++) {
-          if (val[i].currentRecordVO) {
-            for (let key in val[i].currentRecordVO) {
-              val[i][key] = val[i].currentRecordVO[key]
+          this.$api.addFinalAssItResult(params).then(res => {
+            if (res.code == 200) {
+              this.$message.success('保存成功')
+            }
+          })
+        } else if (this.taskId && this.isResult == 1) {//处理协同结果保存或查看协同结果
+          for (let i = 0; i < val.length; i++) {
+            if (val[i].currentRecordVO) {
+              for (let key in val[i].currentRecordVO) {
+                val[i][key] = val[i].currentRecordVO[key]
+              }
             }
           }
-        }
-        let params = {
-          taskId: this.taskId,
-          tortDTOS: val,
-        }
-        this.$api.addTortTaskResult(params).then(res => {
-          if (res.code == 200) {
-            this.$message.success('保存成功')
+          let params = {
+            taskId: this.taskId,
+            patentNo: this.patentNo,
+            taskId: this.taskId,
+            tortDTOS: val,
           }
-        })
-      } else {//侵权报告拆分保存
-        for (let i = 0; i < val.length; i++) {
-          if (val[i].originalRecordVO) {
-            for (let key in val[i].originalRecordVO) {
-              val[i][key] = val[i].originalRecordVO[key]
+          this.$api.addFTOAssItTaskResult(params).then(res => {
+            if (res.code == 200) {
+              this.$message.success('保存成功')
+            }
+          })
+        } else {//拆分保存
+          for (let i = 0; i < val.length; i++) {
+            if (val[i].originalRecordVO) {
+              for (let key in val[i].originalRecordVO) {
+                val[i][key] = val[i].originalRecordVO[key]
+              }
             }
           }
+          let params = {
+            projectId: this.projectId,
+            patentNo: this.patentNo,
+            taskId: this.taskId,
+            tortDTOS: val,
+          }
+          this.$api.addFTOCompareRecord(params).then(res => {
+            if (res.code == 200) {
+              this.$message.success('保存成功')
+            }
+          })
         }
-        let params = {
-          projectId: this.projectId,
-          tortDTOS: val,
-        }
-        this.$api.addTortCompareRecord(params).then(res => {
-          if (res.code == 200) {
-            this.$message.success('保存成功')
+      } else {
+        if (this.taskId && this.isResult == 3) {//确认协同结果保存
+          for (let i = 0; i < val.length; i++) {
+            if (val[i].finalRecordVO) {
+              for (let key in val[i].finalRecordVO) {
+                val[i][key] = val[i].finalRecordVO[key]
+              }
+            }
           }
-        })
+          let params = {
+            taskId: this.taskId,
+            tortDTOS: val,
+          }
+          this.$api.addFinalTortResult(params).then(res => {
+            if (res.code == 200) {
+              this.$message.success('保存成功')
+            }
+          })
+        } else if (this.taskId && this.isResult == 1) {//处理协同结果保存或查看协同结果
+          for (let i = 0; i < val.length; i++) {
+            if (val[i].currentRecordVO) {
+              for (let key in val[i].currentRecordVO) {
+                val[i][key] = val[i].currentRecordVO[key]
+              }
+            }
+          }
+          let params = {
+            taskId: this.taskId,
+            tortDTOS: val,
+          }
+          this.$api.addTortTaskResult(params).then(res => {
+            if (res.code == 200) {
+              this.$message.success('保存成功')
+            }
+          })
+        } else {//侵权报告拆分保存
+          for (let i = 0; i < val.length; i++) {
+            if (val[i].originalRecordVO) {
+              for (let key in val[i].originalRecordVO) {
+                val[i][key] = val[i].originalRecordVO[key]
+              }
+            }
+          }
+          let params = {
+            projectId: this.projectId,
+            tortDTOS: val,
+          }
+          this.$api.addTortCompareRecord(params).then(res => {
+            if (res.code == 200) {
+              this.$message.success('保存成功')
+            }
+          })
+        }
       }
     },
     // 拆分信息
@@ -302,37 +365,43 @@ export default {
     },
     // 获取数据
     getList(split = { splitType: '1', splitBy: '2' }, ifReSplit = false) {
-      let params = {}
+      console.log(11);
+      let params = {
+        taskId:this.taskId
+      }
+      var api = {
+        3: ['getFTOAssItResult', 'getFTOFinalResult', 'getFTOCompareRecord'],
+        4:['getAllTortTaskResult', 'getTortFinalResult', 'getTortCompareRecord']
+      }
       if (this.taskId && this.isResult == 1) {//处理协同
-        params = {
-          taskId: this.taskId
-        }
-        this.$api.getAllTortTaskResult(params).then(res => {
-          if (res.code == 200) {
-            this.getInterface(res)
-          }
-        })
+          console.log(22);
+          this.$api[api[this.reportType][0]](params).then(res => {
+            if (res.code == 200) {
+              this.getInterface(res)
+            }
+          })
       } else if (this.taskId && this.isResult == 3) {//确认协同结果,
-        params = {
-          taskId: this.taskId
-        }
-        this.$api.getTortFinalResult(params).then(res => {
-          if (res.code == 200) {
-            this.getInterface(res)
+        console.log(33);
+          this.$api[api[this.reportType][1]](params).then(res => {
+            if (res.code == 200) {
+              this.getInterface(res)
+            }
+          })
+      } else {//FTO对比结果
+        console.log(44);
+          params = {
+            taskId:this.reportType==3?this.taskId:null,
+            ifReSplit: ifReSplit,
+            projectId: Number(this.projectId),
+            patentNo: this.patentNo,
+            ...split,//拆分条件
           }
-        })
-      } else {//侵权报告拆分
-        params = {
-          ifReSplit: ifReSplit,
-          projectId: Number(this.projectId),
-          ...split,//拆分条件
+          this.$api[api[this.reportType][2]](params).then(res => {
+            if (res.code == 200) {
+              this.getInterface(res)
+            }
+          })
         }
-        this.$api.getTortCompareRecord(params).then(res => {
-          if (res.code == 200) {
-            this.getInterface(res)
-          }
-        })
-      }
     },
     // 处理获取的数据
     getInterface(res) {

+ 4 - 1
src/views/report/tort/components/tortTeamWork/index.vue

@@ -2,7 +2,7 @@
   <!-- 确认结果以及协同人处理结果 -->
   <div>
     <!-- <tortTeamWork :patentNo="patentNo" :projectId="projectId" :taskId="taskId"></tortTeamWork> -->
-    <tortContrast :patentNo="patentNo" :projectId="projectId" :taskId="taskId" :isResult="isResult"></tortContrast>
+    <tortContrast :patentNo="patentNo" :projectId="projectId" :taskId="taskId" :reportType="reportType" :isResult="isResult"></tortContrast>
   </div>
 </template>
 
@@ -30,6 +30,9 @@ export default {
     isResult() {
       return this.$route.query.isResult
     },
+    reportType() {
+      return this.$route.query.reportType
+    },
   },
   async mounted() {
     await this.getPatentNo()

+ 9 - 3
src/views/report/tort/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <tortContrast :patentNo="patentNo" :projectId="projectId" :reportType="reportType"></tortContrast>
+    <tortContrast :patentNo="patentNo" :projectId="projectId" :reportType="reportType" :taskId="taskId" :isResult="isResult"></tortContrast>
   </div>
 </template>
 
@@ -20,10 +20,16 @@ export default {
       return this.$route.query.patentNo
     },
     projectId() {
-      return this.$route.query.reportId
+      return this.$route.query.projectId
     },
     reportType() {
-      return this.$route.query.reportId
+      return this.$route.query.reportType
+    },
+    taskId() {
+      return this.$route.query.taskId
+    },
+    isResult() {
+      return this.$route.query.isResult
     }
   },
   mounted() {

+ 24 - 6
src/views/task/components/index.vue

@@ -305,7 +305,7 @@ export default {
           this.handleProject(row, str)
           break;
         case 3://报告对比任务
-          // this.handleAllocation(row)
+          this.handleAllocation(row)
           break;
         case 4://侵权分析及FTO协同任务
           this.teamworkTask(row, str ? 2 : 1)
@@ -322,13 +322,15 @@ export default {
           break;
       }
     },
-    //报告分配(标引)任务
-    handleAllocation(row, str) {
+    //报告分配(FTO标引、对比)任务
+    handleAllocation(row, val) {
       let router = this.$router.resolve({
         path: '/reportPatentList',
         query: {
           taskId: row.id,
           projectId: row.projectId,
+          taskType: row.type,
+          reportType: row.reportType,
         }
       })
       window.open(router.href, '_blank')
@@ -346,15 +348,31 @@ export default {
     },
     //协同任务(侵权分析及FTO)
     teamworkTask(row, val) {
-      let router = this.$router.resolve({
-        path: '/tortTeamWork',
+      if (row.reportType == 3) {//fto
+        let router = this.$router.resolve({
+        path: '/reportPatentList',
         query: {
           taskId: row.id,
           projectId: row.projectId,
-          isResult: val
+          taskType: row.type,
+          reportType: row.reportType,
+          isResult: val,
         }
       })
       window.open(router.href, '_blank')
+      } else {//侵权
+        let router = this.$router.resolve({
+          path: '/tortTeamWork',
+          query: {
+            taskId: row.id,
+            projectId: row.projectId,
+            isResult: val,
+            reportType: row.reportType,
+          }
+        })
+        window.open(router.href, '_blank')
+      }
+
     },
     //文件及任务审核任务(专利挖掘)
     fileExamine(row) {