瀏覽代碼

其他参考资料

zhuliu 1 年之前
父節點
當前提交
3e333590cb

+ 1 - 1
src/utils/model/menu/mixins.js

@@ -55,7 +55,7 @@ export const File = {
     //     window.open(router.href, '_blank');
     // },
     delFile(item) {
-      this.$emit('delFile', item.id)
+      this.$emit('delFile', item)
     }
   },
 }

+ 3 - 1
src/views/product/components/view/categoryTable.vue

@@ -103,7 +103,9 @@ export default {
       }
     },
     //选择
-    isChoose:false
+    isChoose:{
+      default:null
+    }
   },
   data() {
     return {

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

@@ -130,6 +130,8 @@ import PatentPDF from './patentMessage/PatentPDF.vue'
 import pageProduct from './patentMessage/pageProduct.vue'
 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 { projectData, handleData } from '../../patentCollection/components/mixins/index'
@@ -149,6 +151,8 @@ export default {
     pageProduct,
     licenseHistory,
     litigationHistory,
+    reviewHistory,
+    otherReferences,
 
 
     PatentField,
@@ -268,7 +272,7 @@ export default {
           label: '价值曲线'
         },
         {
-          value: 'Examination',
+          value: 'reviewHistory',
           label: '审查历史'
         },
         {
@@ -288,7 +292,7 @@ export default {
           label: '诉讼历史'
         },
         {
-          value: 'Other',
+          value: 'otherReferences',
           label: '其他参考资料'
         },
       ],

+ 2 - 2
src/views/project/patentDetails/components/patentMessage/history/dialog/form.vue

@@ -55,9 +55,9 @@ export default {
     submitForm(){
         this.$refs.form.validate((valid) => {
             if (valid) {
-                if(this.form.systemFile && this.form.systemFile.length>0){
+                if(this.form.systemFileList && this.form.systemFileList.length>0){
                     // 判断文件是否都上传完毕
-                    var guids = this.$commonJS.checkUploadFile(this.form.systemFile)
+                    var guids = this.$commonJS.checkUploadFile(this.form.systemFileList)
                     if(!guids){
                         return false
                     }

+ 67 - 18
src/views/project/patentDetails/components/patentMessage/history/litigationHistory.vue

@@ -1,5 +1,5 @@
 <template>
-    <!-- 许可历史 -->
+    <!-- 诉讼历史 -->
   <div class="height_100">
     <el-container>
         <el-header>
@@ -8,15 +8,27 @@
             </div>
         </el-header>
         <el-main>
-            <el-table :data="tableData" v-loading="loading" border style="width: 100%">
+            <el-table :data="tableData" v-loading="loading" border style="width: 100%" row-key="id" >
                 <el-table-column type="expand">
                     <template slot-scope="scope">
-                        <el-form label-position="left"  class="demo-table-expand" style="padding:0 30px">
-                            <el-form-item label="案件详情:">
-                                <span v-if="scope.row.vVisible">{{scope.row.caseDetails}}</span>
-                                <el-input type="textarea" v-else v-model="scope.row.caseDetails"></el-input>
-                            </el-form-item>
-                        </el-form>
+                        <div class="details">
+                            <div class="details_item">
+                                <div>案件详情:</div>
+                                <div>
+                                    <div v-if="scope.row.visible">
+                                        <el-button type="text" size="small" @click="cancel(scope.row)">取消</el-button>
+                                        <el-button type="text" size="small" @click="saveDetails(scope.row)">保存</el-button>
+                                    </div>
+                                    <el-button v-else type="text" size="small" @click="editDetails(scope.row)">编辑</el-button>
+                                    
+                                </div>
+                            </div>
+                            <div class="details_item1">
+                                <el-input type="textarea" v-if="scope.row.visible" v-model="scope.row.caseDetails_copy"></el-input>
+                                <span v-else>{{scope.row.caseDetails}}</span>  
+                            </div>
+                        </div>
+                        
                     </template>
                 </el-table-column>
                 <el-table-column label="原告" prop="plaintiff" align="center">
@@ -54,13 +66,15 @@
                         <span>{{scope.row.remark}}</span>
                     </template>
                 </el-table-column>
-                <el-table-column label="附件" prop="reportFiles" align="center">
+                <el-table-column label="附件" prop="systemFileList" align="center">
                     <template slot-scope="scope">
                         <span>
-                          <span v-if="scope.row.reportFiles">
-                            <div v-for="item in scope.row.reportFiles" style="margin:0;display:flex;justify-content:space-around;align-items:center;">
-                              <p style="margin:0;width:calc(100% - 40px);overflow: hidden;white-space: nowrap;text-overflow:ellipsis;cursor: pointer">{{item.name?item.name+'.'+item.suffix:item.fileName}}</p> 
-                              <Menu :data="item" @delFile="delFile1(scope.row,item.id,scope.$index)"></Menu>
+                          <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>
@@ -137,7 +151,7 @@ export default {
                     type:'text',
                 },
                 {
-                    field:'fileGuids',
+                    field:'systemFileList',
                     label:'附件',
                     components:'myUpload',
                     type:'upload',
@@ -157,6 +171,28 @@ export default {
     created() {},
     mounted() {},
     methods: {
+        editDetails(row){
+            this.$set(row,'caseDetails_copy',row.caseDetails)
+            this.$set(row,'visible',true)
+        },
+        cancel(row){
+            this.$set(row,'caseDetails_copy',null)
+            this.$set(row,'visible',false)
+        },
+        saveDetails(row){
+            var form = JSON.parse(JSON.stringify(row))
+            form.caseDetails = row.caseDetails_copy
+            this.$api.addLitigationHistory(form).then(response=>{
+                if(response.code == 200){
+                    this.$message.success('编辑成功')
+                    this.$set(row,'caseDetails',row.caseDetails_copy)
+                    this.$set(row,'visible',false)
+                }
+            }).catch(error=>{
+                this.$message.error('编辑失败')
+            })
+        },
+        
         getList(){
             this.loading = true
             this.$api.queryLitigationHistory(this.queryParams).then(response=>{
@@ -172,10 +208,7 @@ export default {
             })
         },
         add(){
-
-            var form = {
-                
-            }
+            var form = {}
             var title = '添加诉讼历史'
             this.$refs.addMessage.open(this.field,form,title)
         },
@@ -236,4 +269,20 @@ export default {
     display: flex;
     justify-content: flex-end;
 }
+.details{
+    width: 100%;
+    padding:5px 20px;
+    .details_item{
+        width: 100%;
+        display: flex;
+        justify-content: space-between;
+        align-items: center; 
+    }
+    
+}
+.fileList{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
 </style>

+ 16 - 1
src/views/project/patentDetails/components/patentMessage/history/mixins/index.js

@@ -33,6 +33,21 @@ export default{
         handleCurrentChange(val){
             this.queryParams.current = val
             this.getList()
-        }
+        },
+        delFile(row,file){
+            this.$confirm('是否删除该文件', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                var index = row.fileGuids.findIndex(item=>{
+                    return item == file.guid
+                })
+                if(index != -1){
+                    row.fileGuids.splice(index,1)
+                }
+                this.save(row)
+            })
+        },
     },
 }

+ 182 - 0
src/views/project/patentDetails/components/patentMessage/history/otherReferences.vue

@@ -0,0 +1,182 @@
+<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="referenceName" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.referenceName}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="说明" prop="remark" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.remark}}</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="URL" prop="referenceUrl" align="center">
+                    <template slot-scope="scope">
+                        <a :href="scope.row.referenceUrl"  target="_blank">{{scope.row.referenceUrl}}</a>
+                    </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:'referenceName',
+                    label:'名称',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'remark',
+                    label:'说明',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'systemFileList',
+                    label:'附件',
+                    components:'myUpload',
+                    type:'upload',
+                },
+                {
+                    field:'referenceUrl',
+                    label:'URL',
+                    components:'el-input',
+                    type:'text'
+                },
+            ],
+        };
+    },
+    watch: {},
+    computed: {},
+    created() {},
+    mounted() {},
+    methods: {
+        getList(){
+            this.loading = true
+            this.$api.queryOtherReferences(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.deleteOtherReferences(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.addOtherReferences(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>

+ 182 - 0
src/views/project/patentDetails/components/patentMessage/history/reviewHistory.vue

@@ -0,0 +1,182 @@
+<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="reviewTime" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.reviewTime}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="事件" prop="reviewEvent" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.reviewEvent}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="说明" prop="reviewExplain" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.reviewExplain}}</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:'reviewTime',
+                    label:'时间',
+                    components:'el-date-picker',
+                    type:'date'
+                },
+                {
+                    field:'reviewEvent',
+                    label:'事件',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'reviewExplain',
+                    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>

+ 67 - 5
src/views/project/patentDetails/components/patentMessage/pageProduct.vue

@@ -5,12 +5,26 @@
             <div id="step1">
                 <mySearch style="width: 500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption"></mySearch>
             </div>
+            <div>
+              <el-button type="primary" size="small" @click="saveCheckList" v-if="isChoose">保存</el-button>
+              <el-button type="primary" size="small" @click="choseProduct" v-else>添加</el-button>
+            </div>
         </el-header>
         <el-main v-DivHeight="getDivHeight">
-            <el-table :data="data" header-row-class-name="custom-table-header"  v-if="showTable" :maxHeight="tableHeight" @sort-change="sortChange" border>
+            <el-table :data="tableData" header-row-class-name="custom-table-header"  v-if="showTable" v-loading="loading" :maxHeight="tableHeight - 35" @sort-change="sortChange" border>
                 <el-table-column label="#" width="60" type="index" align="center">
                     <template slot-scope="scope">
-                    <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
+                      <div v-if="isChoose">
+                        <el-checkbox-group v-model="checkList">
+                          <el-checkbox :label="scope.row.id">
+                            <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
+                          </el-checkbox>
+                        </el-checkbox-group>
+                          
+                        </div>
+                        <div v-else>
+                          <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
+                        </div>
                     </template>
                 </el-table-column>
 
@@ -49,6 +63,13 @@
             </el-pagination>
         </el-footer>
     </el-container>
+
+    <el-dialog title="选择产品或产品类别" :visible.sync="productVisible" width="1000px" :append-to-body="true" :close-on-click-modal="false" destroy-on-close :before-close="closeProduct">
+      <div style="height:550px">
+        <productManage :isChoose="true" @chooseList="chooseList"></productManage>
+      </div>
+    </el-dialog>
+
     <marketing ref="marketing"></marketing>
     <addEditProduct ref="addEditProduct" @getMessage="getList"></addEditProduct>
     <myImageViewer v-if="showImg" :on-close="closeViewer" :src="imgSrc"></myImageViewer>
@@ -64,16 +85,21 @@ import product from '@/views/product/components/mixins/product'
 import marketing from '@/views/product/components/dialog/marketing.vue'
 import addEditProduct from '@/views/product/components/dialog/addEditProduct.vue'
 export default {
+  name:'productManage',
   components: {
     marketing,
-    addEditProduct
+    addEditProduct,
   },
   props: {
-    patentNo:{}
+    patentNo:{},
+    isChoose:{
+      default:null
+    }
   },
   mixins:[getTableHeight,mixins,fun,product],
   data() {
     return {
+        loading:false,
         showTable:true,
         column:[
           {
@@ -128,6 +154,8 @@ export default {
             "orderType": 1
             }
         ],
+        productVisible:false,
+        checkList:[]
     };
   },
   watch: {
@@ -141,6 +169,20 @@ export default {
     this.getList()
   },
   methods: {
+    saveCheckList(){
+      this.$emit('chooseList',this.checkList)
+    },
+    chooseList(val){
+      this.closeProduct()
+    },
+    //打开选择产品或产品类别弹窗
+    choseProduct(){
+      this.productVisible = true
+    },
+    //关闭弹窗
+    closeProduct(){
+      this.productVisible = false
+    },
     //获取检索条件检索
     search(val) {
         let params = {}
@@ -160,7 +202,27 @@ export default {
         this.getList()
     },
     getList(){
-
+      var str = this.$commonJS.objectToString(this.searchOption)
+      if(!this.isChoose){
+        str = str + `patentNo=${this.patentNo}`
+      }
+      var params = {
+        ...this.queryParams,
+        searchQuery: str,
+        orderDTOList: this.sort,
+      }
+      this.loading = true
+      this.$api.queryProduct(params).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
+      })
     },
     handleCurrentChange(val){
         this.queryParams.current = val

+ 1 - 1
src/views/report/InvalidResponse/components/flowPath/flowPath.vue

@@ -51,7 +51,7 @@
               <div v-if="item.systemFileList" class="upload-file">
                 <div v-for="(file, index) in item.systemFileList" :key="index" style="margin:0;display:flex;justify-content:space-around;">
                   <p style="margin:0;width:calc(100% - 40px);overflow: hidden;white-space: nowrap;text-overflow:ellipsis;cursor: pointer;">{{file.originalName}}</p> 
-                  <myMenu :data="file" @delFile="delFile(file,item)" :isDelete="true" ></myMenu>
+                  <myMenu :data="file" @delFile="delFile(file,item)" :deleted="false" ></myMenu>
                 </div>
               </div>
             </div>