zhuhao 1 سال پیش
والد
کامیت
60485cf4f1

+ 9 - 8
src/router/index.js

@@ -506,14 +506,15 @@ const routes = [
       //     },
       //   ]
       // },
-
-      // {
-      //   path: "custom",
-      //   component: () => import('@/views/analyse/custom'),
-      //   meta: {
-      //     title: '自定义分析列表'
-      //   }
-      // },
+      //图表分析
+      {
+        path: "customChart",
+        component: () => import('@/views/analyse/custom'),
+        meta: {
+          sign: 'customChart',
+          title: '自定义分析列表'
+        }
+      },
       // {
       //   path: "report",
       //   component: () => import('@/views/analyse/report/create'),

+ 9 - 7
src/views/patentMining/components/dialog/createTask.vue

@@ -1,8 +1,8 @@
 <template>
   <!-- 创建挖掘任务弹窗 -->
   <div class="createTask">
-    <el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="handleClose" :append-to-body="true"
-      :close-on-click-modal="false">
+    <el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="handleClose"
+      :append-to-body="true" :close-on-click-modal="false">
       <el-form :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-ruleForm">
         <el-form-item label="任务名称:" prop="name">
           <el-input v-model="form.name" placeholder="请输入任务名称" :disabled="form.id ? true : false"></el-input>
@@ -43,7 +43,7 @@ import { personnelLoading, optionsData } from '../mixins/index2'
 export default {
   mixins: [personnelLoading, optionsData],
   components: {},
-  props: ['projectId','processId'],
+  props: ['projectId', 'processId'],
   data() {
     return {
       dialogVisible: false,
@@ -66,11 +66,13 @@ export default {
   methods: {
     //打开弹窗
     async open(data) {
-      if (data.type == 6 || data.type == 5 || data.type == 1) {//文件分配任务//文件分配审核任务
+      if (data.type == 6 || data.type == 5 || data.type == 1 || data.type == 7) {
         if (data.type == 6) {
           this.title = '编辑文件分配任务'
-        } else if(data.type == 5) {
-          this.title = '编辑文件分配审核任务'
+        } else if (data.type == 5) {
+          this.title = '编辑任务审核任务'
+        } else if (data.type == 7) {
+          this.title = '编辑文件审核任务'
         } else {
           this.title = '编辑项目开卷审核任务'
         }
@@ -84,7 +86,7 @@ export default {
       } else {//创建分配任务
         this.title = '创建文件分配任务'
         this.form.projectId = this.projectId//项目id
-        this.form.processId=this.processId
+        this.form.processId = this.processId
         this.form.type = 6//分配任务
         this.form.handlerType = 0//0内部人员1外部人员
       }

+ 18 - 15
src/views/project/patentCollection/components/export/components/patent.vue

@@ -1,12 +1,12 @@
 <template>
   <div class="patent-export">
     <el-container class="">
-      <el-header>
-        <span class="title">选择导出字段</span>
+      <el-header >
+        <span style="padding-left:20px;" class="title">选择导出字段</span>
       </el-header>
       <el-container>
         <el-aside width="650px">
-          <div style="padding:20px;">
+          <div style="padding:20px 0px 0px 40px;">
             <el-transfer v-model="selected" :titles="['未选择', '已选择']" :props="{ key: 'value', label: 'name' }"
               :data="field" @change="handleChange" @right-check-change="rightCheckChange" filterable
               :filter-method="filterMethod">
@@ -19,12 +19,12 @@
             </el-transfer>
           </div>
           <div class="button">
-            <el-button type="primary" :loading="btnLoading" @click="handleExport">导出</el-button>
+            <el-button type="primary" style="margin-top:20px;width: 200px;" :loading="btnLoading" @click="handleExport">导出</el-button>
           </div>
         </el-aside>
         <!-- 列表 -->
         <el-main>
-          <systemTask ref="systemTask"></systemTask>
+          <systemTask ref="systemTask" :importToId="projectId"></systemTask>
         </el-main>
       </el-container>
     </el-container>
@@ -32,7 +32,7 @@
 </template>
 
 <script>
-import systemTask from "@/views/components/import/task/index.vue"
+import systemTask from "@/views/components/import/task/components/index.vue"
 export default {
   components: {
     systemTask
@@ -72,18 +72,21 @@ export default {
         this.$message.error('请选择导出字段')
         return false
       }
+      this.field.map(item => item.selected = this.selected.indexOf(item.value) !== -1)
       let params = {
         projectId: this.projectId,
-        ...this.condition
+        ...this.condition,//检索条件、自定义字段筛选条件、选择专利条件
+        selected:this.field,
       }
-      // this.btnLoading = true
-      // this.$api.exportPatentList(data).then(response => {
-      //   this.btnLoading = false
-      //   this.$message.success('请求成功')
-      //   //调用查询任务的方法
-      // }).catch(error => {
-      //   this.btnLoading = false
-      // })
+      console.log(params);
+      this.btnLoading = true
+      this.$api.exportPatentList(data).then(response => {
+        this.btnLoading = false
+        this.$message.success('请求成功')
+        //调用查询任务的方法
+      }).catch(error => {
+        this.btnLoading = false
+      })
     },
     rightCheckChange(data) {
       this.rightSelect = data

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

@@ -78,6 +78,26 @@ export const handleData = {
   },
   data() {
     return {
+      //专利类型
+      patent_type: {
+        1: '发明',
+        8: '发明',
+        2: '实用新型',
+        9: '实用新型',
+        3: '外观',
+      },
+      // 专利状态
+      simple_status: {
+        1: '有效',
+        2: '无效',
+        3: '审中',
+      },
+      // 法律状态(暂定)
+      legal_status: {
+        1: '有效',
+        2: '无效',
+        3: '审中',
+      },
     }
   },
   mounted() {
@@ -144,7 +164,7 @@ export const handleData = {
               }
             }
             break;
-          case "mipc":
+          case "mipc"://ipc
             let ipcArr=[]
             for (let k in row[key]) {
               ipcArr.push(row[key][k])
@@ -154,6 +174,12 @@ export const handleData = {
             obj.type = 'Array'
             var text = this.$commonJS.getColumnData(row, obj,prop,data)
             break;
+          case 'legal_status'://法律状态
+            break;
+          case 'simple_status'://专利状态
+            break;
+          case 'patent_type'://专利类型
+            break;
           default:
             var text = this.$commonJS.getColumnData(row, obj,prop,data)
             break

+ 55 - 42
src/views/project/patentCollection/index.vue

@@ -42,7 +42,7 @@
               </el-tooltip>
             </el-button-group>
             <el-dropdown trigger="click" split-button type="primary" size="small">
-              <span @click="handleFieldManage" >显示栏位管理</span>
+              <span @click="handleFieldManage">显示栏位管理</span>
               <el-dropdown-menu slot="dropdown" class="text-align_center">
                 <el-dropdown-item @click.native="handleFile">报告文档</el-dropdown-item>
                 <!-- <el-dropdown-item @click.native="handleQuestion" v-if="$permission('/workspace/event')">事
@@ -97,8 +97,9 @@
                     </el-dropdown-menu>
                   </el-dropdown>
                 </el-dropdown-item>
-                <el-dropdown-item @click.native="handleAnalyse('custom')"
-                  :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis') && $r(projectId, [1, 2, 4]))">图表分析</el-dropdown-item>
+                <!-- <el-dropdown-item @click.native="handleAnalyse('custom')"
+                  :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis') && $r(projectId, [1, 2, 4]))">图表分析</el-dropdown-item> -->
+                <el-dropdown-item @click.native="handleAnalyses">图表分析</el-dropdown-item>
               </el-dropdown-menu>
             </el-dropdown>
           </div>
@@ -531,14 +532,60 @@ export default {
         searchQuery: this.searchStr,
         customFields: this.customFields
       }
-      let router=this.$router.resolve({
+      let router = this.$router.resolve({
         path: '/exportPatent',
         query: {
           projectId: this.projectId,
-          condition:JSON.stringify(obj)
+          condition: JSON.stringify(obj)
         }
       })
-      window.open(router.href,'_blank')
+      window.open(router.href, '_blank')
+    },
+    //PDF首页导出
+    exportPDF() {
+      let params = {
+        projectId: this.projectId,
+        searchQuery: this.searchStr || '',//检索条件
+        customFields: this.customFields || [],//自定义字段的检索
+      }
+      this.$api.pdfFirstPage(params).then(res => {
+        if (res.code == 200) {
+          
+        }
+      })
+      // let params = JSON.parse(JSON.stringify(this.queryParams))
+      // params.tree.map(tree => {
+      //   let field = params.field.filter(item => item.key === tree.key)
+      //   if (field.length === 0) {
+      //     params.field.push(tree)
+      //   }
+      // })
+      // params.tree = undefined
+      // this.$api.pdfFirstPage(params).then(response => {
+      //   if (response.code == 200) {
+      //     const router = this.$router.resolve({
+      //       path: '/taskList',
+      //       query: {
+      //         projectId: this.projectId,
+      //       }
+      //     })
+      //     window.open(router.href, '_blank')
+      //   }
+      // })
+    },
+    //图表分析
+    async handleAnalyses() {
+      // this.chartLoading = true
+      // const key = await this.saveSelectPatent(false)
+      // this.chartLoading = false
+      const router = this.$router.resolve({
+        path: '/customChart',
+        query: {
+          projectId: this.projectId,
+          // key: key
+        }
+      })
+      window.open(router.href, '_blank');
     },
 
 
@@ -556,28 +603,7 @@ export default {
 
 
 
-    //PDF首页导出
-    exportPDF() {
-      let params = JSON.parse(JSON.stringify(this.queryParams))
-      params.tree.map(tree => {
-        let field = params.field.filter(item => item.key === tree.key)
-        if (field.length === 0) {
-          params.field.push(tree)
-        }
-      })
-      params.tree = undefined
-      this.$api.pdfFirstPage(params).then(response => {
-        if (response.code == 200) {
-          const router = this.$router.resolve({
-            path: '/taskList',
-            query: {
-              projectId: this.projectId,
-            }
-          })
-          window.open(router.href, '_blank')
-        }
-      })
-    },
+
 
 
     //合并申请人
@@ -589,20 +615,7 @@ export default {
       this.$refs.patentInventorMergeDrawer.open(this.projectId)
     },
 
-    //图表分析
-    async handleAnalyse(path) {
-      this.chartLoading = true
-      const key = await this.saveSelectPatent(false)
-      this.chartLoading = false
-      const router = this.$router.resolve({
-        path: '/analyse/' + path,
-        query: {
-          id: this.projectId,
-          key: key
-        }
-      })
-      window.open(router.href, '_blank');
-    },
+
     //下载PDF
     async handleDownload(patent) {
       const { data } = await this.$api.getPatentInstructionList({ current: 1, size: 9999, patentNo: patent.patentNo })

+ 2 - 2
src/views/project/patentDetails/components/PatentField.vue

@@ -52,7 +52,7 @@
                 @change="(val) => onChange(option, item, val)">{{ option.name }}</el-checkbox>
             </el-checkbox-group>
           </template>
-          <template v-if="item.type === 6 && !item.showField">
+          <template v-if="[6,7,8,9].includes(item.type) && !item.showField">
             <div class="showValue">
               <div>
                 <div v-for="fieldValue in item.selected" :key="fieldValue.valueId" class="value">{{ fieldValue.value }}
@@ -418,7 +418,7 @@ export default {
       }
       this.$api.queryTreeNodeTree(params).then(res => {
         if (res.code == 200) {
-          this.$set(item, 'option', response.data.data)
+          this.$set(item, 'option', res.data.data)
         }
       }).catch(err => {
         this.$set(item, 'option', [])

+ 21 - 19
src/views/project/patentDetails/components/patentDetails.vue

@@ -6,17 +6,19 @@
           <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="" />
-                
+              <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="" />
+
               <!-- </div> -->
-             
+
             </div>
             <div>
               <div>
                 <span v-html="getViewDom(patent.patentNo)"></span>
                 <el-tag type="primary" effect="dark" size="mini" class="margin-left_10" v-if="patent.simpleStatus">{{
-                  patent.simpleStatus }}</el-tag>
+                  simple_status[patent.simpleStatus] }}</el-tag>
               </div>
               <div style="color: #6b6868; font-size: 15px;padding-bottom: 5px;">
                 <span v-html="getView(patent, 'title')"></span>
@@ -82,12 +84,13 @@
             <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" :evidence="evidence"
-                  :project-id="projectId" :patent="patent" :patentNo="[patent.patentNo]" :domId="patent.patentNo + '1'"
-                  @refresh="getPatent()"></component>
+                <component :activeName="activeMenu" style="width:100%;padding-right: 10px;" :is="activeMenu"
+                  :evidence="evidence" :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" :evidence="evidence"></component>
+                <component :is="activeMenu2" :project-id="projectId" :patent="patent" :sign="true" :evidence="evidence">
+                </component>
               </div>
             </my-view>
           </div>
@@ -104,7 +107,8 @@
               </el-header>
               <el-main>
                 <keep-alive>
-                  <component :is="activeOption" :project-id="projectId" :patentNo="patent.patentNo" :taskId="taskId"></component>
+                  <component :is="activeOption" :project-id="projectId" :patentNo="patent.patentNo" :taskId="taskId">
+                  </component>
                 </keep-alive>
               </el-main>
             </el-container>
@@ -147,10 +151,10 @@ export default {
       type: String
     },
     taskId: {
-      default:null,
+      default: null,
     },
-    evidence:{
-      
+    evidence: {
+
     }
   },
   data() {
@@ -206,7 +210,7 @@ export default {
         },
         {
           value: 'PatentStatus',
-          label: '法律状态'
+          label: '法律事务'
         },
         {
           value: 'PatentPDF',
@@ -260,7 +264,7 @@ export default {
       activeMenu: 'PatentBasic',
       activeMenu2: '',
       value: false,
-      patent: {}
+      patent: {},
     };
   },
   watch: {
@@ -273,8 +277,7 @@ export default {
   computed: {},
   created() { },
   mounted() {
-    console.log(123);
-    
+
     this.getPatent()
   },
   methods: {
@@ -342,5 +345,4 @@ export default {
   .el-link {
     margin-right: 20px;
   }
-}
-</style>
+}</style>

+ 49 - 38
src/views/project/patentDetails/components/patentMessage/PatentStatus.vue

@@ -2,22 +2,32 @@
   <div class="patent-articles-patent-status height_100">
 
     <div v-if="projectId">
-      <div> <h3 class="patent-articles-patent-status-event">当前状态</h3></div>
-    <el-button type="success" size="mini">{{patent.affair&& patent.affair.length>0?patent.affair[0].createSimpleStatus:''}}</el-button>
-    <div> <h3 class="patent-articles-patent-status-event">法律状态/事件</h3></div>
-    <el-button type="primary" size="mini">{{patent.affair&& patent.affair.length>0?patent.affair[0].status:''}}</el-button  >
+      <!-- <div> <h3 class="patent-articles-patent-status-event">当前状态</h3></div>
+    <el-button type="success" size="mini">{{simple_status[patent.simpleStatus]}}</el-button> -->
+      <div>
+        <h3 class="patent-articles-patent-status-event">法律状态/事件</h3>
+      </div>
+      <!-- <el-button type="primary" size="mini">{{patent.legal_status&& patent.affair.length>0?patent.affair[0].status:''}}</el-button  > -->
+      <!-- 后端没考虑好,暂时先不返 -->
+      <el-button type="primary" size="mini">{{ legal_status[patent.legal_status] }}</el-button>
+    </div>
+    <div>
+      <h3 class="patent-articles-patent-status-event">事务数据</h3>
     </div>
-    <div> <h3 class="patent-articles-patent-status-event">事务数据</h3></div>
     <div class="block" style="width:100%">
-      <el-timeline v-if="patent.affair&& patent.affair.length>0">
-        <el-timeline-item v-for="(item,index1) in patent.affair[0].inpadoc" :key="index1" :timestamp="item.inpadocData[0].content+'('+ item.inpadocData[1].content +')'" placement="top">
-          <el-card >
-            <div v-for="(i,index) in item.inpadocData" :key="i.content"  style="padding:5px 0;">
-              <span v-if="index!=0 && index!=1 && i.content" v-html="getViewDom(i.content)" ></span>
-            </div>
+      <el-timeline v-if="patent.legalEvents && patent.legalEvents.length > 0">
+        <el-timeline-item v-for="(item, index1) in patent" :key="index1"
+          :timestamp="item.eventDate" placement="top">
+          <el-card>
+            <span>申请号:{{ item.appNo }}</span>
+            <span>公开号:{{ item.publicNo }}</span>
+            <span>授权号:{{ item.grantNo }}</span>
+            <!-- <div v-for="(i, index) in item.inpadocData" :key="i.content" style="padding:5px 0;">
+              <span v-if="index != 0 && index != 1 && i.content" v-html="getViewDom(i.content)"></span>
+            </div> -->
           </el-card>
         </el-timeline-item>
-      
+
       </el-timeline>
     </div>
   </div>
@@ -30,15 +40,15 @@ export default {
   data() {
     return {
       tableData: [],
-      tableDataList:[]
+      tableDataList: []
     }
   },
   watch: {
     patentId() {
       this.tableData = this.patent.affair
     },
-    patentNo(){
-      if(!this.projectId){
+    patentNo() {
+      if (!this.projectId) {
         this.getData()
       }
     }
@@ -50,52 +60,53 @@ export default {
     // for(var i in this.tableData[0].inpadoc[0]){
     //   console.log(i)
     // }
-    if(!this.projectId){
-        this.getData()
-      }
+    if (!this.projectId) {
+      this.getData()
+    }
   },
   methods: {
-    getData(){
+    getData() {
       var params = {
-            patentCell:6,
-            patentNo:this.patent.publicNo,
-            appNo:this.patent.applicationNo,
-          }
-        this.$api.getPatentPart(params).then(response=>{
-            if(response.code == 200){
-              this.$set(this.patent,'affair',response.data.affair)
-            }
-        })
+        patentCell: 6,
+        patentNo: this.patent.publicNo,
+        appNo: this.patent.applicationNo,
+      }
+      this.$api.getPatentPart(params).then(response => {
+        if (response.code == 200) {
+          this.$set(this.patent, 'affair', response.data.affair)
+        }
+      })
     },
   }
 }
 </script>
 
 <style lang="scss" scope="this api replaced by slot-scope in 2.5.0+">
-*{
+* {
   box-sizing: border-box;
 }
-.el-table__body{
+
+.el-table__body {
   margin-top: 10px;
 }
-.patent-articles-patent-status-event{
+
+.patent-articles-patent-status-event {
   font-weight: 800;
   font-size: 16px;
 }
-.el-button--mini{
+
+.el-button--mini {
   margin-left: 50px;
 }
+
 // .legal-status{
 //   color: #515a6e;
 //   font-size: 13px;
 //   font-weight: 800;
 // }
 // .yyyy{
-  // border:1px solid rgb(235, 238, 245);
-  // border:1px solid skyblue
- 
-
-// }
+// border:1px solid rgb(235, 238, 245);
+// border:1px solid skyblue
 
 
-</style>
+// }</style>