Bläddra i källkod

专利布局可视化

zhuliu 1 år sedan
förälder
incheckning
5d3073487a

+ 4 - 2
src/utils/common.js

@@ -1,6 +1,8 @@
 import api from '@/api'
 import router from '../router'
 import { Message } from 'element-ui'
+import Permission from '@/utils/permissions'
+import showPermissionDialog from "@/utils/model/noPermission/index";
 export default {
   /**
    * 防抖
@@ -346,8 +348,8 @@ export default {
    * @param {*} type 导入类型
    */
   toImportParent(data, type) {
-    if(!(this.$permission.FunPermissions('xiaoshi/patentImport'))){
-      this.$showPermissionDialog()
+    if(!(Permission.FunPermissions('xiaoshi/patentImport'))){
+      showPermissionDialog()
       return false
     }
     var types = {

+ 25 - 18
src/views/product/components/jsMind/components/mind.vue

@@ -263,6 +263,7 @@ export default {
                 </div>
                 `;
       } else if (modelInfo.MindType == 2) {//产品
+        console.log(modelInfo)
         return `
                 <div class="model-edit-card">
                   <div class="img" onclick="vm.checkImg('${ (modelInfo.systemFileList && modelInfo.systemFileList.length > 0)? this.$commonJS.checkViewer(modelInfo.systemFileList[0].guid): ""}')">
@@ -737,33 +738,36 @@ export default {
         await this.$api.queryProduct(params).then(response=>{
           if(response.code == 200){
             if(response.data.data.length>0){
+              currentData.hasChildren = true
               currentData.children = response.data.data.map(item=>{
                 item.MindId = `产品${item.id}`
                 item.MindType = 2
                 item.expanded = false
                 item.topic = this.getModelCardDom(item)
-                this.jm.enable_edit();
-                this.jm.update_node(item.MindId,this.getModelCardDom(item) )
-                this.jm.disable_edit();
+                // this.jm.enable_edit();
+                // this.jm.update_node(item.MindId,this.getModelCardDom(item) )
+                // this.jm.disable_edit();
                 return item
               })
-              currentData.hasChildren = true
+              
               
             }
           }
         })
       }else if(currentData.MindType == 2){
         var params = {
-          type: 1,
+          type: currentData.MindType,
           typeId: currentData.id
         }
         await this.$api.queryTreeNodeTree(params).then(res => {
           if (res.code == 200) {
             var data = res.data.data
-            var data = this.deepChildren(data,currentData)
-            console.log(data)
+            if(data.length>0){
+              currentData.hasChildren = true
+              var data = this.deepChildren(data,currentData)
+              console.log(data)
+            }
             currentData.children = data
-            currentData.hasChildren = true
           }
         })
       }else if(currentData.MindType == 0){
@@ -773,17 +777,18 @@ export default {
         await this.$api.queryProductCategory(params).then(response=>{
           if(response.code == 200){
             if(response.data.data.length>0){
+              currentData.hasChildren = true
               currentData.children = response.data.data.map(item=>{
                 item.MindId = `产品类别${item.id}`
                 item.MindType = 1
                 item.expanded = false
                 item.topic = this.getModelCardDom(item)
-                this.jm.enable_edit();
-                this.jm.update_node(item.MindId,this.getModelCardDom(item) )
-                this.jm.disable_edit();
+                // this.jm.enable_edit();
+                // this.jm.update_node(item.MindId,this.getModelCardDom(item) )
+                // this.jm.disable_edit();
                 return item
               })
-              currentData.hasChildren = true
+             
             }
           }
         })
@@ -797,20 +802,22 @@ export default {
         data[i].MindId = `架构${data[i].id}`
         data[i].MindType = 3
         data[i].expanded = false
-        data[i].topic = this.getModelCardDom(data[i])
+        
         data[i].currentName = currentData.name
         data[i].currentId = currentData.id
         data[i].currentType = currentData.MindType
-        this.jm.enable_edit();
-        this.jm.update_node(item.MindId,this.getModelCardDom(item) )
-        this.jm.disable_edit();
+        // this.jm.enable_edit();
+        // this.jm.update_node(item.MindId,this.getModelCardDom(item) )
+        // this.jm.disable_edit();
         if(data[i].child && data[i].child.length>0){
           data[i].hasChildren = true
+          data[i].topic = this.getModelCardDom(data[i])
           data[i].children = data[i].child
           this.deepChildren(data[i].child,currentData)
         }else{
           data[i].hasChildren = false
           data[i].children = []
+          data[i].topic = this.getModelCardDom(data[i])
         }
       }
       return data
@@ -822,7 +829,6 @@ export default {
     await this.getData()
     await this.initData(this.currentData)
     this.mind.data = this.currentData
-
     this.jm = jsMind.show(this.options, this.mind);
 
         // 自定义拖拽完成事件
@@ -852,10 +858,11 @@ export default {
   padding: 10px;
   border: 1px solid black;
   display: flex;
+  justify-content: flex-start;
   align-items: center;
   .img{
     cursor: crosshair;
-    width: 100px;
+    min-width: 100px;
     height: 100px;
   }
   .icon{

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

@@ -110,6 +110,13 @@ export const handleData = {
 
   },
   methods: {
+    getCustomView(row,field){
+      var data = row.customFields
+      if(data && data.length>0){
+
+      }
+      return ''
+    },
     getView(row, key, type, prop, data) {
 
 

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

@@ -51,7 +51,7 @@
           </div>
           <template v-else-if="item.ifPersonal">
             <div>
-              {{ scope.row.customFields }}
+              <span v-html="getCustomView(scope.row,item)"></span>
             </div>
           </template>
           <template v-else-if="item.value === 'title'">

+ 0 - 2
src/views/project/patentCollection/index.vue

@@ -457,10 +457,8 @@ export default {
             })
             if(index){
               this.$set(this.tableData[index],'customFields',data[i].innerClassFields)
-              patentNos.splice(index,1)
             }
           }
-          console.log(this.tableData)
         }
       })
     },

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

@@ -134,6 +134,8 @@ import licenseHistory from './patentMessage/history/licenseHistory.vue'
 import litigationHistory from './patentMessage/history/litigationHistory.vue'
 import reviewHistory from './patentMessage/history/reviewHistory.vue'
 import otherReferences from './patentMessage/history/otherReferences.vue'
+import InvalidHistory from './patentMessage/history/InvalidHistory.vue'
+import HistoryOfInvalidEvidence from './patentMessage/history/HistoryOfInvalidEvidence.vue'
 
 
 import { projectData, handleData } from '../../patentCollection/components/mixins/index'
@@ -155,7 +157,8 @@ export default {
     litigationHistory,
     reviewHistory,
     otherReferences,
-
+    InvalidHistory,
+    HistoryOfInvalidEvidence,
 
     PatentField,
     addAndEditReport,
@@ -278,7 +281,7 @@ export default {
           label: '审查历史'
         },
         {
-          value: 'Invalid',
+          value: 'InvalidHistory',
           label: '被无效历史'
         },
         {

+ 215 - 0
src/views/project/patentDetails/components/patentMessage/history/HistoryOfInvalidEvidence.vue

@@ -0,0 +1,215 @@
+<template>
+    <!-- 作为无效证据使用历史 -->
+  <div class="height_100">
+    <el-container>
+        <el-header>
+            <div class="head">
+                <el-button size="small" @click="add">添加</el-button>
+            </div>
+        </el-header>
+        <el-main>
+            <el-table :data="tableData" v-loading="loading" border style="width: 100%">
+                <el-table-column label="无效案号" prop="invalidCaseNum" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.invalidCaseNum}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="被无效专利" prop="invalidedPatent" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.invalidedPatent}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="无效时间" prop="invalidTime" align="center">
+                    <template slot-scope="scope">
+                        <span v-if="scope.row.invalidTime">{{scope.row.invalidTime.substring(0,10)}}</span>
+                        <span v-else></span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="无效理由" prop="invalidReason" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.invalidReason}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="是否被审查员认可" prop="ifApproved" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.ifApproved?'是':'否'}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="附件" prop="reportFiles" align="center">
+                    <template slot-scope="scope">
+                        <span>
+                          <span v-if="scope.row.systemFileList">
+                            <div v-for="item in scope.row.systemFileList" :key="item.guid" class="fileList">
+                                <myTooltip :content="item.originalName">
+                                    <div class="noWrap">{{ item.originalName }}</div>
+                                </myTooltip>
+                                <myMenu :data="item" @delFile="delFile(scope.row,item)"></myMenu>
+                            </div>
+                            </span>
+                             <span v-else><i class="el-icon-minus"></i></span>
+                        </span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" width="160" align="center">
+                    <template slot-scope="scope">
+                        <div class="special">
+                            <el-button type="text" size="small" @click="edit(scope.row)">编辑</el-button>
+                            <el-button type="text" size="small" @click="del(scope.row)">删除</el-button>
+                        </div>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-main>
+        <el-footer class="pagination">
+            <el-pagination  background layout="total,prev,sizes, pager, next,jumper" :total="total" @current-change="handleCurrentChange" :current-page="queryParams.current" :page-size="queryParams.size"></el-pagination>
+        </el-footer>
+    </el-container>
+    <addMessage ref="addMessage" @save="save"></addMessage>
+  </div>
+</template>
+
+<script>
+import mixins from './mixins/index';
+export default {
+    mixins:[mixins],
+    components: {},
+    props: {},
+    data() {
+        return {
+            field:[
+                {
+                    field:'invalidCaseNum',
+                    label:'无效案号',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'invalidedPatent',
+                    label:'被无效专利',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'invalidTime',
+                    label:'无效时间',
+                    components:'el-date-picker',
+                    type:'date'
+                },
+                {
+                    field:'invalidReason',
+                    label:'无效理由',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'ifApproved',
+                    label:'是否被审查员认可',
+                    components:'el-select',
+                    type:'select',
+                    options:[
+                        {
+                            label:'是',
+                            value:1
+                        },
+                        {
+                            label:'否',
+                            value:0
+                        },
+                    ]
+                },
+                {
+                    field:'systemFileList',
+                    label:'附件',
+                    components:'myUpload',
+                    type:'upload',
+                },
+            ],
+        };
+    },
+    watch: {},
+    computed: {},
+    created() {},
+    mounted() {},
+    methods: {
+        getList(){
+            this.loading = true
+            this.$api.queryReviewHistory(this.queryParams).then(response=>{
+                if(response.code == 200){
+                    this.tableData = response.data.data
+                    this.total = response.data.total
+                    this.loading = false
+                }
+            }).catch(error=>{
+                this.tableData = []
+                this.total = 0
+                this.loading = false
+            })
+        },
+        add(){
+            var form = {}
+            var title = '添加作为无效证据使用历史'
+            this.$refs.addMessage.open(this.field,form,title)
+        },
+        edit(row){
+            var title = '编辑作为无效证据使用历史'
+            this.$refs.addMessage.open(this.field,row,title)
+        },
+        del(row){
+            this.deletes([row.id])
+        },
+        deletes(ids){
+            this.$confirm('是否删除', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.$api.deleteReviewHistory(ids).then(response=>{
+                    if(response.code == 200){
+                        this.$message.success('删除成功')
+                        this.getList()
+                    }
+                }).catch(error=>{
+
+                })
+            })
+        },
+        save(val){
+            this.$refs.addMessage.changeBtnLoading(true)
+            var form = {
+                ...val,
+                patentNo:this.patent.patentNo
+            }
+            var a = ''
+            if(form.id){
+                a='编辑'
+            }else{
+                a='添加'
+            }
+            this.$api.addReviewHistory(form).then(response=>{
+                if(response.code == 200){
+                    this.$message.success(a+'成功')
+                    this.$refs.addMessage.changeBtnLoading(false)
+                    this.$refs.addMessage.close()
+                    this.getList()
+                }
+            }).catch(error=>{
+                this.$message.error(a+'失败')
+                this.$refs.addMessage.changeBtnLoading(false)
+            })
+        },
+        
+    },
+};
+</script>
+<style lang="scss" scoped>
+.head{
+    width: 100%;
+    display: flex;
+    justify-content: flex-end;
+}
+.fileList{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
+</style>

+ 204 - 0
src/views/project/patentDetails/components/patentMessage/history/InvalidHistory.vue

@@ -0,0 +1,204 @@
+<template>
+    <!-- 被无效历史 -->
+  <div class="height_100">
+    <el-container>
+        <el-header>
+            <div class="head">
+                <el-button size="small" @click="add">添加</el-button>
+            </div>
+        </el-header>
+        <el-main>
+            <el-table :data="tableData" v-loading="loading" border style="width: 100%">
+                <el-table-column label="无效案号" prop="newPatentNo" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.newPatentNo}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="无效申请人" prop="person" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.person}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="无效时间" prop="invalidTime" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.invalidTime}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="判决时间" prop="judgmentTime" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.judgmentTime}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="结果" prop="result" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.result}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="附件" prop="reportFiles" align="center">
+                    <template slot-scope="scope">
+                        <span>
+                          <span v-if="scope.row.systemFileList">
+                            <div v-for="item in scope.row.systemFileList" :key="item.guid" class="fileList">
+                                <myTooltip :content="item.originalName">
+                                    <div class="noWrap">{{ item.originalName }}</div>
+                                </myTooltip>
+                                <myMenu :data="item" @delFile="delFile(scope.row,item)"></myMenu>
+                            </div>
+                            </span>
+                             <span v-else><i class="el-icon-minus"></i></span>
+                        </span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" width="160" align="center">
+                    <template slot-scope="scope">
+                        <div class="special">
+                            <el-button type="text" size="small" @click="edit(scope.row)">编辑</el-button>
+                            <el-button type="text" size="small" @click="del(scope.row)">删除</el-button>
+                        </div>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-main>
+        <el-footer class="pagination">
+            <el-pagination  background layout="total,prev,sizes, pager, next,jumper" :total="total" @current-change="handleCurrentChange" :current-page="queryParams.current" :page-size="queryParams.size"></el-pagination>
+        </el-footer>
+    </el-container>
+    <addMessage ref="addMessage" @save="save"></addMessage>
+  </div>
+</template>
+
+<script>
+import mixins from './mixins/index';
+export default {
+    mixins:[mixins],
+    components: {},
+    props: {},
+    data() {
+        return {
+            field:[
+                {
+                    field:'newPatentNo',
+                    label:'无效案号',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'person',
+                    label:'无效申请人',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'invalidTime',
+                    label:'无效时间',
+                    components:'el-date-picker',
+                    type:'date'
+                },
+                {
+                    field:'judgmentTime',
+                    label:'判决时间',
+                    components:'el-date-picker',
+                    type:'date'
+                },
+                {
+                    field:'result',
+                    label:'结果',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'systemFileList',
+                    label:'附件',
+                    components:'myUpload',
+                    type:'upload',
+                },
+            ],
+        };
+    },
+    watch: {},
+    computed: {},
+    created() {},
+    mounted() {},
+    methods: {
+        getList(){
+            this.loading = true
+            this.$api.queryReviewHistory(this.queryParams).then(response=>{
+                if(response.code == 200){
+                    this.tableData = response.data.data
+                    this.total = response.data.total
+                    this.loading = false
+                }
+            }).catch(error=>{
+                this.tableData = []
+                this.total = 0
+                this.loading = false
+            })
+        },
+        add(){
+            var form = {}
+            var title = '添加被无效历史'
+            this.$refs.addMessage.open(this.field,form,title)
+        },
+        edit(row){
+            var title = '编辑被无效历史'
+            this.$refs.addMessage.open(this.field,row,title)
+        },
+        del(row){
+            this.deletes([row.id])
+        },
+        deletes(ids){
+            this.$confirm('是否删除', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.$api.deleteReviewHistory(ids).then(response=>{
+                    if(response.code == 200){
+                        this.$message.success('删除成功')
+                        this.getList()
+                    }
+                }).catch(error=>{
+
+                })
+            })
+        },
+        save(val){
+            this.$refs.addMessage.changeBtnLoading(true)
+            var form = {
+                ...val,
+                patentNo:this.patent.patentNo
+            }
+            var a = ''
+            if(form.id){
+                a='编辑'
+            }else{
+                a='添加'
+            }
+            this.$api.addReviewHistory(form).then(response=>{
+                if(response.code == 200){
+                    this.$message.success(a+'成功')
+                    this.$refs.addMessage.changeBtnLoading(false)
+                    this.$refs.addMessage.close()
+                    this.getList()
+                }
+            }).catch(error=>{
+                this.$message.error(a+'失败')
+                this.$refs.addMessage.changeBtnLoading(false)
+            })
+        },
+        
+    },
+};
+</script>
+<style lang="scss" scoped>
+.head{
+    width: 100%;
+    display: flex;
+    justify-content: flex-end;
+}
+.fileList{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
+</style>