Pārlūkot izejas kodu

韶音需求修改

zhuliu 1 gadu atpakaļ
vecāks
revīzija
dc3e76a5e3

+ 25 - 12
src/views/report/InvalidResponse/components/Evidence/evidence.vue

@@ -22,37 +22,38 @@
         <el-main v-DivHeight="getDivHeight">
             <el-progress style="margin-bottom:10px;" v-if="showPercentage" :text-inside="true" :stroke-width="20" :percentage="percentage>100?100:percentage" :color="customColors"></el-progress>
             <el-table :data="tableData" border :maxHeight="tableHeight - 35" style="width: 100%">
-                <el-table-column prop="sysOrder" label="序号" width="80" align="center">
+                <el-table-column prop="sysOrder" label="证据序号" width="80" align="center">
                     <template slot-scope="scope">
                         <div>
-                            <span>D{{ scope.row.sysOrder }}</span>
+                            <el-link type="primary" @click="checkDetails(scope)">D{{ scope.row.sysOrder }}</el-link>
                             <span>
                                 <my-draggable :list="tableData" :check="scope.row.id" @change="changeOrder" @update="updateOrder"></my-draggable>
                             </span>
                         </div>
                     </template>
                 </el-table-column>
-                <el-table-column prop="name" label="专利号/标题" align="center">
+                <el-table-column prop="publicNo" label="公开号" align="center">
                     <template slot-scope="scope">
-                        <el-link type="primary" @click="checkDetails(scope)">
-                            {{scope.row.name}}
-                        </el-link>
+                        <div>
+                            {{scope.row.publicNo}}
+                        </div>
                     </template>
                 </el-table-column>
-                <el-table-column prop="authorName" label="权利人/作者" align="center">
+                <el-table-column prop="name" label="名称" align="center">
                     <template slot-scope="scope">
-                        <div>
-                            {{scope.row.authorName}}
-                        </div>
+                        <span >
+                            {{getEvidenceName(scope.row)}}
+                        </span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="publicNo" label="公开号" align="center">
+                <el-table-column prop="authorName" label="权利人/作者" align="center">
                     <template slot-scope="scope">
                         <div>
-                            {{scope.row.publicNo}}
+                            {{scope.row.authorName}}
                         </div>
                     </template>
                 </el-table-column>
+                
                 <el-table-column prop="publicDate" label="公开日" align="center">
                     <template slot-scope="scope">
                         <div>
@@ -164,6 +165,18 @@ export default {
     this.getList()
   },
   methods: {
+    getEvidenceName(row){
+        if(row.type == 1){
+            return row.name
+        }
+        var name = row.name.trim()
+        name = name.replace(row.publicNo.trim(),'')
+        if(name.length>1){
+            return name.slice(1,-1)
+        }
+        return ''
+
+    },
     initTask() {
           this.webSocket.onmessage = (e) => {
             if(e.data.indexOf('{') == -1){

+ 512 - 0
src/views/report/components/details/components/basicMessage_official.vue

@@ -0,0 +1,512 @@
+<template>
+  <div>
+        <div class="message">
+            <div class="title">
+                专利信息
+                <span>
+                    <i v-if="!show.showPatentMessage" class="el-icon-caret-right" @click="show.showPatentMessage = !show.showPatentMessage"></i>
+                    <i v-else class="el-icon-caret-bottom" @click="show.showPatentMessage = !show.showPatentMessage"></i>
+                </span>
+            </div>
+            <div v-show="show.showPatentMessage">
+                <el-card shadow="always">
+                    <el-form style="width:100%" :model="patentMessage" label-width="140px">
+                        <el-row>
+                            <el-col :span="12">
+                                <template>
+                                    <div>
+                                        <el-form-item label="被无效的专利:">
+                                            <div class="box1">
+                                                <el-link type="primary" @click="$commonJS.checkPatentDetails(reportMessage.signPatentNo,projectId)">
+                                                    <span v-html="reportMessage.signPatentNo"></span>
+                                                </el-link>
+                                            </div>
+                                        </el-form-item>
+                                    </div>
+                                </template>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="专利名称:">
+                                    <div class="box1" v-html="getView(patentMessage, 'title')"></div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col :span="12">
+                                <template>
+                                    <div>
+                                        <el-form-item label="专利权人:">
+                                            <div class="box1">
+                                                <div class="box1" v-html="$commonJS.getColumnData(patentMessage, { type: 'Array', value: 'rightHolder' })"></div>
+                                            </div>
+                                        </el-form-item>
+                                    </div>
+                                </template>
+                            </el-col>
+                            <el-col :span="12" v-if="patentMessage.simpleStatus">
+                                <el-form-item label="法律状态:">
+                                    <div class="box1" v-html="simpleStatus[patentMessage.simpleStatus]"></div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-form-item label="专利附图:" v-if="patentMessage.pictureGuid">
+                            <div style="height: 120px;" class="picture">
+                                <el-image  :src="$commonJS.checkViewer(patentMessage.pictureGuid)" :preview-src-list="[$commonJS.checkViewer(patentMessage.pictureGuid)]" style="height:120px">
+                                    <div slot="error" class="image-slot">
+                                        <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" >
+                                    </div>
+                                </el-image>
+                            </div>
+                        </el-form-item>
+                    </el-form>
+                </el-card>
+            </div>
+        </div>
+        <div class="message">
+            <div class="title">
+                案件信息
+                <span>
+                    <i v-if="!show.showCaseMessage" class="el-icon-caret-right" @click="show.showCaseMessage = !show.showCaseMessage"></i>
+                    <i v-else class="el-icon-caret-bottom" @click="show.showCaseMessage = !show.showCaseMessage"></i>
+                </span>
+            </div>
+            <div v-show="show.showCaseMessage">
+                <el-card shadow="always">
+                    <el-form style="width:100%" :model="reportMessage" label-width="140px">
+                        <el-form-item label="专题名称:">
+                            <div class="box1" v-html="reportMessage.name"></div>
+                        </el-form-item>
+                        <el-form-item label="核心结论:" >
+                            <div  v-if="!editField.cardingOpinion" style="display:flex;align-items:center">
+                                <div v-html="reportMessage.cardingOpinion" class="div_MAX_Height" style="color:#000000 !important;"></div>
+                                <span @click="editSuggestions(reportMessage)">
+                                    <el-link type="primary">
+                                        <i class="iconfont icon-bianji" style="font-size:28px"></i>
+                                    </el-link>
+                                </span>
+                            </div>
+                            <div v-else style="width:100%;display:flex;align-items:center">
+                                <myRich-Text style="width:100%" v-model="reportMessage.cardingOpinion" placeholder="请输入核心结论"></myRich-Text>
+                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit('cardingOpinion')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancelSuggestion(reportMessage)"></el-button>
+                            </div>
+                        </el-form-item>
+                        <el-form-item label="无效法条:">
+                            <div class="box1">
+                                <div v-if="statutes.invalidStatutes1.length>0">
+                                   三性法条: {{ statutes.invalidStatutes1.join('、') }}
+                                </div>
+                                <div v-if="statutes.invalidStatutes2.length>0">
+                                    非三性法条: {{ statutes.invalidStatutes2.join('、') }}
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-form>
+                </el-card>
+            </div>
+        </div>
+        <div class="message">
+            <div class="title">
+                更多信息
+                <span>
+                    <i v-if="!show.showOtherMessage" class="el-icon-caret-right" @click="show.showOtherMessage = !show.showOtherMessage"></i>
+                    <i v-else class="el-icon-caret-bottom" @click="show.showOtherMessage = !show.showOtherMessage"></i>
+                </span>
+            </div>
+            <div v-show="show.showOtherMessage">
+                <el-card shadow="always">
+                    <el-form style="width:100%" :model="reportMessage" label-width="140px">
+                        <template v-if="reportMessage.reportType == 7">
+                            <div>
+                                <el-row>
+                                    <el-col :span="12">
+                                    <el-form-item label="案件编号:">
+                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseNumber' })"></div>
+                                    </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                    <el-form-item label="无效宣告请求人:">
+                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'invalidApplication' })"></div>
+                                    </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="12">
+                                        <el-form-item label="发文序号:">
+                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'issueNumber' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="发明创造名称:">
+                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'inventionName' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+
+                                <el-row>
+                                    <el-col :span="12">
+                                        <el-form-item label="案件阶段" prop="caseStage">
+                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseStage' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="国知局受理年份" prop="acceptanceYear">
+                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'acceptanceYear' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="12">
+                                        <el-form-item label="请求人代理所" prop="requestorAgency">
+                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'requestorAgency' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="专利权人代理所" prop="holderAgency">
+                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'holderAgency' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+                            </div>
+                        </template>
+                        <el-form-item label="是否完成:">
+                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'status' })==3?'是':'否'"></div>
+                        </el-form-item>
+                        <template v-if="reportMessage.status == 3">
+                            <div>
+                                <el-form-item label="报告结果:">
+                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'cronNames' })"></div>
+                                </el-form-item>
+                                <el-form-item label="结果论述:">
+                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'cronDescription' })"></div>
+                                </el-form-item>
+                            </div>
+                        </template>
+                        <el-row>
+                            <el-col :span="12">
+                                <el-form-item label="承担部门:" prop="departmentId">
+                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="负责人:" prop="headId">
+                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'headName' })"></div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col :span="12">
+                                <template>
+                                    <div>
+                                        <el-form-item label="委托方:" prop="entrustId" v-if="userinfo.tenantType == 1">
+                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'entrustName' })"></div>
+                                        </el-form-item>
+                                        <el-form-item label="委托部门:" prop="departmentId" v-else>
+                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
+                                        </el-form-item>
+                                    </div>
+                                </template>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="卷号:" prop="volumeNumber">
+                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'volumeNumber' })"></div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col :span="24">
+                                <el-form-item label="产品/技术:">
+                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'productOrTech' })"></div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col :span="24">
+                                <el-form-item label="关联报告:">
+                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'associateReportName' })"></div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <template>
+                            <div>
+                            <el-row>
+                                <el-col :span="24">
+                                    <el-form-item label="事件:">
+                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'eventNames' })"></div>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="24">
+                                    <el-form-item label="调查类型:" prop="matterIds">
+                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'matterNames' })"></div>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            </div>
+                        </template>
+                        <el-form-item label="附件:">
+                            <div class="box1">
+                                <div v-for="item in reportMessage.systemFileList" style="display:flex;align-items:center" :key="item.guid">
+                                    <div style="margin-right:20px">{{ item.originalName }}</div>
+                                    <my-menu :data="item" :deleted="false"></my-menu>
+                                </div>
+                            </div>
+                        </el-form-item>
+                        <el-form-item label="备注:" prop="description">
+                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'description' })"></div>
+                        </el-form-item>
+                    </el-form>
+                </el-card>
+            </div>
+        </div>
+        <div class="message">
+            <div class="title">
+                案件流程
+                <span>
+                    <i v-if="!show.showFlowPath" class="el-icon-caret-right" @click="show.showFlowPath = !show.showFlowPath"></i>
+                    <i v-else class="el-icon-caret-bottom" @click="show.showFlowPath = !show.showFlowPath"></i>
+                </span>
+            </div>
+            <div v-show="show.showFlowPath">
+                <el-card shadow="always">
+                    <flow-Path :projectId="projectId"></flow-Path>
+                </el-card>
+            </div>
+        </div>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex';
+import flowPath from '@/views/report/InvalidResponse/components/flowPath/flowPath.vue';
+import { handleData } from '@/views/project/patentCollection/components/mixins/index'
+export default {
+  components: {
+    flowPath
+  },
+  mixins:[handleData],
+  props: {
+    projectId:{
+      default:0
+    },
+    reportMessage:{
+
+    }
+  },
+  data() {
+    return {
+        editMessage:{},
+        editField:{},
+        patentMessage:{},
+        loading:{
+            patentLoading:false
+        },
+        show:{
+            showPatentMessage:true,
+            showCaseMessage:true,
+            showOtherMessage:false,
+            showFlowPath:true
+        },
+        statutes:{
+            invalidStatutes1:[],
+            invalidStatutes2:[]
+        }
+        
+    };
+  },
+  watch: {},
+  computed: {
+    ...mapGetters(['userinfo']),
+    provisions(){
+        return this.$store.state.dictMessage.dictMessage.STATUTE || []
+    },
+    patentNo(){
+        return this.reportMessage.signPatentNo
+    }
+  },
+  created() {},
+  mounted() {
+    this.getPatentDetails()
+    this.queryInvalidStatutes()
+  },
+  methods: {
+    //查询无效发条
+    queryInvalidStatutes(){
+        var params = {
+            projectId:this.projectId
+        }
+        this.$api.queryInvalidStatutes(params).then(response=> {
+            if(response.code == 200){
+                var a = response.data.data
+                var invalidStatutes = [2,3,4]
+                var arr = []
+                var invalidStatutes1 = []
+                var invalidStatutes2 = []
+                for(var i = 0;i<a.length;i++){
+                    var statute = a[i].statutesId
+                    if(invalidStatutes.indexOf(statute) !=-1 ){
+                        if(arr.indexOf(statute)==-1){
+                            arr.push(statute)
+                            invalidStatutes1.push(this.getStatuteName(statute))
+                        } 
+                    }else{
+                        if(arr.indexOf(statute)==-1){
+                            arr.push(statute)
+                            invalidStatutes2.push(this.getStatuteName(statute))
+                        } 
+                    }
+                }
+                this.statutes = {
+                    invalidStatutes1:invalidStatutes1,
+                    invalidStatutes2:invalidStatutes2
+                }
+            }
+        })
+    },
+    getStatuteName(value){
+        var obj = this.provisions.find(item=>{
+            return item.value == value
+        })
+        if(obj){
+            var label = obj.label
+            const regex = /\b(?![\({\[])\d+(?![\)}\]])\b/g
+            const matches = [...label.matchAll(regex)]
+            var arr = matches.map(match => Number(match[0]))
+
+            // const results = label.match(/\((.*?)\)|\((.*?)\)/)
+            // console.log(results)
+            // const text = results ? `(${results[1]})` : ''
+
+            var newLabel = this.getTextInsideParentheses(label)
+            const text = newLabel.length>0?`(${newLabel[newLabel.length -1]})`:''
+
+            var zimu = ''
+            if(label.trim()[0] == '法'){
+                zimu = 'A'
+            }else{
+                zimu = 'R'
+            }
+            return `${zimu}${arr.join('.')}${text}`
+        }
+        return ''
+    },
+    getTextInsideParentheses(str) {  
+        const stack = [];  
+        const results = [];  
+        let current = '';  
+    
+        for (let i = 0; i < str.length; i++) {  
+            if (str[i] === '(' || str[i] === '(') {  
+                stack.push(i);  
+                if (current) {  
+                    // 如果之前已经有内容,说明遇到了新的括号对,开始新的捕获  
+                    results.push(current);  
+                    current = '';  
+                }  
+            } else if (str[i] === ')'|| str[i] === ')') {  
+                if (stack.length === 0) {  
+                    // 不匹配的右括号,可能是错误的输入,可以选择忽略或抛出错误  
+                    continue;  
+                }  
+                const startIndex = stack.pop();  
+                results.push(str.substring(startIndex + 1, i));  
+                current = '';  
+            } else {  
+                // 如果不在括号内,则忽略  
+                if (stack.length === 0) {  
+                    continue;  
+                }  
+                current += str[i];  
+            }  
+        }  
+    
+        // 处理字符串末尾可能还剩下的内容(如果最后一个括号后还有内容)  
+        if (current) {  
+            results.push(current);  
+        }  
+    
+        // 通常,我们只关心括号内的内容,所以返回这些结果  
+        return results.filter(result => result !== '');  
+    } ,
+    getPatentDetails() {
+        if(!this.patentNo){
+            return
+        }
+        var params = {
+            patentNo: this.patentNo
+        }
+        var api = 'selectPatentDetail'
+        this.loading.patentLoading = true
+        this.$api[api](params).then(response => {
+            if (response.code == 200) {
+                this.patentMessage = response.data
+                this.loading.patentLoading = false
+            }
+        }).catch(error => {
+            this.loading.patentLoading = false
+        })
+    },
+    //编辑核心结论
+    editSuggestions(row){
+        this.$set(this.editField,'cardingOpinion',true)
+        this.$set(this.editMessage,'cardingOpinion',row.cardingOpinion)
+    },
+    //取消核心结论
+    cancelSuggestion(row){
+        this.$set(this.editField,'cardingOpinion',false)
+        this.$set(row,'cardingOpinion',this.editMessage.cardingOpinion)
+    },
+    //提交填写的信息
+    submit(field) {
+          this.reportMessage.type = 2//项目类型(1专利数据库 2报告 3专利挖掘项目)
+          // 判断文件是否都上传完毕
+          var guids = this.$commonJS.checkUploadFile(this.reportMessage.systemFileList)
+            if(!guids){
+                return false
+            }
+            this.reportMessage.fileGuids = guids
+          // this.$commonJS.allUploadFile(this.form)
+          // 事件及调查类型处理
+          if (this.reportMessage.scenarioIds && this.reportMessage.scenarioIds.length > 0) {
+            var scenarioIds = JSON.parse(JSON.stringify(this.reportMessage.scenarioIds))
+          }
+          if (this.reportMessage.eventId) {
+            this.reportMessage.events = []
+            this.reportMessage.scenarioIds = []
+            this.reportMessage.matterIds.forEach(item => {
+              this.reportMessage.events.push(
+                {
+                  matterId: item,
+                  scenarioId: scenarioIds[0],
+                  eventId: this.form.eventId
+                }
+              )
+            })
+          }
+          let formData = this.reportMessage
+          this.$api.updateReportProject(formData).then(response => {
+            if (response.code == 200) {
+              this.$message.success('报告更新成功')
+              this.$set(this.editField,field,false)
+            }
+          })
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.message{
+    margin: 20px 0;
+    .title{
+        margin-bottom: 10px;
+    }
+}
+.box1{
+    // border: 2px solid var(--color1);
+    // border-radius: 5px;
+    padding: 0px 10px;
+    color: var(--color1);
+    font-size: medium;
+}
+</style>

+ 36 - 14
src/views/report/components/details/index.vue

@@ -6,14 +6,14 @@
           {{ isCollapse ? '收起' : '展开' }}
         </div>
         <el-menu class="theme-dark" :default-active="activeMenu" @select="changeComponent" :collapse="!isCollapse">
-          <el-menu-item v-for="item in menuList" :key="item.name" :index="item.name" v-if="!item.show">
+          <el-menu-item v-for="item in menuList" :key="item.name" :index="item.name" >
             <i class="el-icon-film"></i>
             <span slot="title">{{ item.label }}</span>
           </el-menu-item>
         </el-menu>
       </el-aside>
       <el-main>
-        <component :is='componentName' :projectId="projectId" :projectType="projectType" :isOnly="activeMenu=='splitPatent'?true:false" :projectName="projectName" :patentNo="patentNo" :reportType="reportType" :patentType="reportMessage.patentType" :ifSecondInvalid="reportMessage.ifSecondInvalid" @refreshData="getReportMessage"></component>
+        <component :is='componentName' :projectId="projectId" :reportMessage="reportMessage" :projectType="projectType" :isOnly="activeMenu=='splitPatent'?true:false" :projectName="projectName" :patentNo="patentNo" :reportType="reportType" :patentType="reportMessage.patentType" :ifSecondInvalid="reportMessage.ifSecondInvalid" @refreshData="getReportMessage"></component>
       </el-main>
     </el-container>
 
@@ -35,16 +35,16 @@ export default {
       activeMenu: 'Table',
       componentName: '',
       menuList: [
-        {
-          label: '基本信息',
-          name: 'Table',
-          path: 'report/components/details/components/basicMessage.vue'
-        },
-        {
-          label: '任务清单',
-          name: 'task',
-          path: 'task/components/index.vue'
-        }
+        // {
+        //   label: '基本信息',
+        //   name: 'Table',
+        //   path: 'report/components/details/components/basicMessage.vue'
+        // },
+        // {
+        //   label: '任务清单',
+        //   name: 'task',
+        //   path: 'task/components/index.vue'
+        // }
       ],
       comments: {},
       isCollapse: true,
@@ -105,6 +105,19 @@ export default {
       //0:无效分析;1:第三方意见;2:稳定性分析;3:FTO;4:侵权;5:回避;7:无效应对
       var menus = [
         {
+          label: '基本信息',
+          name: 'Table',
+          path: 'report/components/details/components/basicMessage.vue',
+          reportType: [1,2,3,4,5]
+        },
+        {
+          label: '基本信息',
+          name: 'Table',
+          path: 'report/components/details/components/basicMessage_official.vue',
+          reportType: [7]
+        },
+
+        {
           label: '标的专利特征拆分',
           name: 'splitPatent',
           path: 'report/components/details/components/splitDetails.vue',
@@ -217,7 +230,7 @@ export default {
           label: '报告文档',
           name: "reportFile",
           path: 'report/components/reportFile/reportFileTable.vue',
-          reportType: [0, 1, 2, 3, 4, 5,7]
+          reportType: [0, 1, 2, 3, 4, 5]
         },
 
       ]
@@ -232,6 +245,14 @@ export default {
         ]
         menus = menus.concat(arr)
       }
+      menus.push(
+        {
+          label: '任务清单',
+          name: 'task',
+          path: 'task/components/index.vue',
+          reportType: [0, 1, 2, 3, 4, 5]
+        }
+      )
       var menu = menus.filter(item => {
         if(item.ifWaiGuan){
           if(this.reportMessage.patentType == 3){
@@ -242,7 +263,8 @@ export default {
         }
         return item.reportType.indexOf(Number(this.reportType)) != -1
       })
-      this.menuList.splice(1, 0, ...menu)
+      // this.menuList.splice(1, 0, ...menu)
+      this.menuList = menu
       this.getComponents()
     },
     getComponents() {

+ 38 - 3
src/views/report/components/dialog/addAndEditReport.vue

@@ -59,6 +59,41 @@
                 </el-form-item>
               </el-col>
             </el-row>
+
+            <!-- 新增 -->
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="案件阶段" prop="caseStage">
+                  <el-select v-model="form.caseStage" placeholder="请选择案件阶段" style="width:100%">
+                    <el-option label="无效" value="无效"></el-option>
+                    <el-option label="行诉状态" value="行诉状态"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="国知局受理年份" prop="acceptanceYear">
+                  <el-date-picker
+                    style="width:100%"
+                    value-format="yyyy-MM-dd"
+                    v-model="form.acceptanceYear"
+                    type="year"
+                    placeholder="请选择国知局受理年份">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="请求人代理所" prop="requestorAgency">
+                  <el-input v-model="form.requestorAgency" autocomplete="off" placeholder="请输入请求人代理所"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="专利权人代理所" prop="holderAgency">
+                  <el-input v-model="form.holderAgency" autocomplete="off" placeholder="请输入专利权人代理所"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
           </div>
         </template>
         <el-row>
@@ -85,14 +120,14 @@
         
         <template v-if="!form.id && form.status == 3">
           <div>
-            <el-form-item label="核心结论" prop="cronIds">
+            <el-form-item label="报告结果" prop="cronIds">
               <el-checkbox-group v-model="form.cronIds">
                 <el-checkbox v-for="item in conclusion" :key="item.value" :label="item.value">{{
                   item.label }}</el-checkbox>
               </el-checkbox-group>
             </el-form-item>
-            <el-form-item label="结论述" prop="cronDescription">
-              <el-input v-model="form.cronDescription" type="textarea" placeholder="请输入结论述"></el-input>
+            <el-form-item label="结论述" prop="cronDescription">
+              <el-input v-model="form.cronDescription" type="textarea" placeholder="请输入结论述"></el-input>
             </el-form-item>
             <el-form-item label="后续跟进事项" prop="followUps">
               <span v-if="form.followUps"><span v-for="item in form.followUps" :key="item.name"

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

@@ -37,7 +37,7 @@
         </div>
       </el-header>
       <el-main id="patent-list-container" class="main" v-loading="loading">
-        <component :is="viewType" v-bind="$attrs" v-on="$listeners" :isOperate="isOperate" :tableData="dataList"
+        <component :is="viewType" v-bind="$attrs" v-on="$listeners" :isOperate="isOperate" :tableData="dataList" @tabChange="tabChange"
           :state="state" :queryParams="queryParams" @option="handleOption" @on-sort="handleSort" :groupBy="groupingValue"
           :groupingOption="groupingOption" :commonData="commonData" :searchOption="searchOption" :column="columnList" @params="getParams"></component>
       </el-main>
@@ -149,6 +149,8 @@ export default {
       commonData: [],
       // 栏位信息数组
       columnList: [],
+      columnType:{},
+      fixedSearch:{},
       // 子组件新增、编辑报告成功发送的字符串
       handleMessage: '',
       showView: false,
@@ -235,6 +237,15 @@ export default {
   async mounted() {
     // 获取table栏位
     this.columnList = await this.$commonJS.getCustomField('reportProject')
+    this.columnList.forEach(item=>{
+            if(item.name == '核心结论'){
+              item.name = '报告结果'
+            }
+            if(item.name == '结论论述'){
+              item.name = '结果论述'
+            }
+          })
+    this.columnType.columnList1 = this.columnList
     // 获取搜索/分组
     await this.getColumn()
     //获取报告清单
@@ -242,6 +253,259 @@ export default {
     this.showViews()
   },
   methods: {
+    //标签页点击
+    tabChange(name){
+      var type = Number(name)
+      switch(type){
+        case 1:
+         this.fixedSearch={}
+          break;
+        case 2:
+          if(!this.columnType['columnList' + 2]){
+            this.columnType.columnList2 = [
+              {
+                    "name": "报告名称",
+                    "type": "String",
+                    "value": "name",
+                    "field": "name",
+                    "order": 0,
+                    "ifShow": true,
+                    "ifHidden": false,
+                    "defaultHidden": false
+              },
+              {
+                    "name": "专利号",
+                    "type": "String",
+                    "value": "signPatentNo",
+                    "field": "signPatentNo",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": false
+                },
+                {
+                    "name": "专利名称",
+                    "type": "String",
+                    "value": "inventionName",
+                    "field": "inventionName",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": false
+                },
+                {
+                    "name": "无效案号",
+                    "type": "String",
+                    "value": "caseNumber",
+                    "field": "caseNumber",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": false
+                },
+                {
+                    "name": "案件阶段",
+                    "type": "String",
+                    "value": "caseStage",
+                    "field": "caseStage",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": false
+                },
+                {
+                    "name": "报告结果",
+                    "type": "String",
+                    "value": "conclusion",
+                    "field": "conclusion",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": false
+                },
+                {
+                    "name": "请求人",
+                    "type": "String",
+                    "value": "invalidApplication",
+                    "field": "invalidApplication",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": false
+                },
+                {
+                    "name": "专利权人",
+                    "type": "String",
+                    "value": "invalidApplication1",
+                    "field": "invalidApplication1",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": false
+                },
+                {
+                    "name": "国知局受理年份",
+                    "type": "String",
+                    "value": "acceptanceYear",
+                    "field": "acceptanceYear",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": false
+                },
+                {
+                    "name": "请求人代理所",
+                    "type": "String",
+                    "value": "requestorAgency",
+                    "field": "requestorAgency",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": true
+                },
+                {
+                    "name": "专利权人代理所",
+                    "type": "String",
+                    "value": "holderAgency",
+                    "field": "holderAgency",
+                    "order": 2,
+                    "ifShow": true,
+                    "ifHidden": true
+                },
+
+                {
+                    "name": "负责人名称",
+                    "type": "String",
+                    "value": "headName",
+                    "field": "headName",
+                    "order": 1,
+                    "ifShow": true,
+                    "ifHidden": true,
+                    "defaultHidden": true
+                },
+                
+                {
+                    "name": "报告类型",
+                    "type": "String",
+                    "value": "reportTypeName",
+                    "field": "reportTypeName",
+                    "order": 3,
+                    "ifShow": true,
+                    "ifHidden": true
+                },
+                {
+                    "name": "报告状态",
+                    "type": "String",
+                    "value": "statusName",
+                    "field": "statusName",
+                    "order": 4,
+                    "ifShow": true,
+                    "ifHidden": true
+                },
+                {
+                    "name": "委托方",
+                    "type": "String",
+                    "value": "entrustName",
+                    "field": "entrustName",
+                    "order": 5,
+                    "ifShow": true,
+                    "ifHidden": true,
+                    "defaultHidden": true
+                },
+                {
+                    "name": "产品/技术",
+                    "type": "String",
+                    "value": "productOrTech",
+                    "field": "productOrTech",
+                    "order": 7,
+                    "ifShow": true,
+                    "ifHidden": true,
+                    "defaultHidden": true
+                },
+                {
+                    "name": "创建时间",
+                    "type": "DateTime",
+                    "value": "createTime",
+                    "field": "createTime",
+                    "order": 8,
+                    "ifShow": true,
+                    "ifHidden": true
+                },
+                {
+                    "name": "创建人",
+                    "type": "String",
+                    "value": "createName",
+                    "field": "createName",
+                    "order": 9,
+                    "ifShow": true,
+                    "ifHidden": true,
+                    "defaultHidden": true
+                },
+                {
+                    "name": "负责部门",
+                    "type": "String",
+                    "value": "departmentName",
+                    "field": "departmentName",
+                    "ifShow": true,
+                    "ifHidden": true,
+                    "defaultHidden": true
+                },
+                {
+                    "name": "结论论述",
+                    "type": "Integer",
+                    "value": "cronDescription",
+                    "field": "cronDescription",
+                    "ifShow": true,
+                    "ifHidden": true
+                },
+                {
+                    "name": "描述",
+                    "type": "String",
+                    "value": "description",
+                    "field": "description",
+                    "ifShow": true,
+                    "ifHidden": true
+                },
+                {
+                    "name": "相关事件",
+                    "type": "Array",
+                    "value": "eventNames",
+                    "field": "eventNames",
+                    "ifShow": true,
+                    "ifHidden": true
+                },
+                {
+                    "name": "内部卷号",
+                    "type": "String",
+                    "value": "volumeNumber",
+                    "field": "volumeNumber",
+                    "ifShow": true,
+                    "ifHidden": true,
+                    "defaultHidden": true
+                },
+                {
+                    "name": "调查类型",
+                    "type": "Array",
+                    "value": "matterNames",
+                    "field": "matterNames",
+                    "ifShow": true,
+                    "ifHidden": true,
+                    "defaultHidden": true
+                },
+                {
+                    "name": "应用场景",
+                    "type": "Array",
+                    "value": "scenarioNames",
+                    "field": "scenarioNames",
+                    "ifShow": true,
+                    "ifHidden": true
+                }
+            ]
+            this.columnType.columnList2.forEach((item,index)=>{
+              item.order = index
+            })
+          }
+          this.fixedSearch = {
+            reportType:[7]
+          }
+          break;
+      }
+      this.columnList = this.columnType['columnList' + type]
+      this.queryParams.current = 1
+      this.getList()
+    },
+
     //显示视图?
     showViews() {
       this.showView = false
@@ -266,6 +530,14 @@ export default {
       await this.$api.getParamsCommon(params).then(res => {
         if (res.code == 200) {
           let conditionDTOList = JSON.parse(JSON.stringify(res.data[0].conditionDTOList))
+          conditionDTOList.forEach(item=>{
+            if(item.name == '核心结论'){
+              item.name = '报告结果'
+            }
+            if(item.name == '结论论述'){
+              item.name = '结果论述'
+            }
+          })
           // 分组字段
           this.groupingOption = this.$commonJS.getField(conditionDTOList, (u) => u.ifGroup == true, {
             name: 'name',
@@ -277,6 +549,13 @@ export default {
             value: 'value',
             type: 'type',
           })
+          this.searchFiled.push(
+            {
+                "label": "证据库",
+                "type": "String",
+                "field": "evidence"
+            }
+          )
           //先获取报告类型,报告状态,相关事件,再为报告类型,报告状态,相关事件添加选项
           let arr = ['reportType', 'status', 'cronNames','scenarioNames','matterNames']
           arr.forEach(item => {
@@ -388,6 +667,14 @@ export default {
         searchQuery: this.$commonJS.objectToString(this.searchOption),//检索条件
         orderDTOList: this.sort,//排序信息
       }
+      if(this.fixedSearch.reportType){
+        if(params.searchQuery){
+          params.searchQuery = params.searchQuery + ' and reportType=7'
+        }else{
+          params.searchQuery ='reportType=7'
+        }
+        
+      }
       this.loading = true
       this.$api.queryReportProject(params).then(res => {
         if (res.code == 200) {

+ 68 - 51
src/views/report/components/view/table.vue

@@ -1,59 +1,69 @@
 <template>
   <div class="height_100">
     <div class="height_100" v-DivHeight="getDivHeight">
-      <el-table :data="tableData" border style="width: 100%" header-row-class-name="custom-table-header"
-      @sort-change="sortChange" v-if="showTable" :height="tableHeight" v-el-table-infinite-scroll="getList" :infinite-scroll-distance="10" 
-    :infinite-scroll-disabled="disabled"
-        >
-        <el-table-column label="#" width="60" type="index" align="center">
-          <template slot-scope="scope">
-            <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
-          </template>
-        </el-table-column>
+      <el-container>
+        <el-aside width="95px">
+          <el-tabs v-model="tab" tab-position="left" @tab-click="tabClick">
+            <el-tab-pane label="总表" name="1"></el-tab-pane>
+            <el-tab-pane label="官方无效" name='2'></el-tab-pane>
+          </el-tabs>
+        </el-aside>
+        <el-main style="padding:0 0 0 10px !important">
+          <el-table :data="tableData" border style="width: 100%" header-row-class-name="custom-table-header"
+          @sort-change="sortChange" v-if="showTable" :height="tableHeight" v-el-table-infinite-scroll="getList" :infinite-scroll-distance="10" 
+        :infinite-scroll-disabled="disabled"
+            >
+            <el-table-column label="#" width="60" type="index" align="center">
+              <template slot-scope="scope">
+                <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
+              </template>
+            </el-table-column>
 
-        <el-table-column v-for="item in column.filter(item=>!item.ifHidden)" :key="item.value" :prop="item.value" :render-header=" $commonJS.renderHeaderMethods" :label="item.name" sortable="custom" align="center">
-          <template slot-scope="scope">
-            <div v-if="['name'].includes(item.value)">
-              <el-link type="primary" @click="handleItem(scope.row,item.value)">
-                <span  v-html="$commonJS.getColumnData(scope.row,item)"></span>
-              </el-link>
-            </div>
-            <div v-else-if="['signPatentNo'].includes(item.value)">
-              <el-link type="primary" @click="checkPatentDetails(scope.row)">
-                <span  v-html="$commonJS.getColumnData(scope.row,item)"></span>
-              </el-link>
-            </div>
-            <div v-else-if="['eventNames','cronNames'].includes(item.value)" v-html="$commonJS.getColumnData(scope.row,item)"></div>
-            <div v-else v-html="$commonJS.getColumnData(scope.row,item)"></div>
-          </template>
-        </el-table-column>
+            <el-table-column v-for="item in column.filter(item=>!item.ifHidden)" :key="item.value" :prop="item.value" :render-header=" $commonJS.renderHeaderMethods" :label="item.name" sortable="custom" align="center">
+              <template slot-scope="scope">
+                <div v-if="['name'].includes(item.value)">
+                  <el-link type="primary" @click="handleItem(scope.row,item.value)">
+                    <span  v-html="$commonJS.getColumnData(scope.row,item)"></span>
+                  </el-link>
+                </div>
+                <div v-else-if="['signPatentNo'].includes(item.value)">
+                  <el-link type="primary" @click="checkPatentDetails(scope.row)">
+                    <span  v-html="$commonJS.getColumnData(scope.row,item)"></span>
+                  </el-link>
+                </div>
+                <div v-else-if="['eventNames','cronNames'].includes(item.value)" v-html="$commonJS.getColumnData(scope.row,item)"></div>
+                <div v-else v-html="$commonJS.getColumnData(scope.row,item)"></div>
+              </template>
+            </el-table-column>
 
-        <el-table-column v-if="[1].indexOf(isOperate) == -1" label="操作" align="center" width="150px">
-        <template slot-scope="scope">
-          <el-dropdown @command="handleCommand($event, scope.row)" split-button type="primary" size="small"  @click="handleCommand('e',scope.row)">
-            <span>编辑</span>
-            <el-dropdown-menu slot="dropdown" class="text-align_center">
-              <el-dropdown-item command="0">分享</el-dropdown-item>
-              <el-dropdown-item command="1" v-if="[2,3].includes(scope.row.status)">导出报告</el-dropdown-item>
-              <el-dropdown-item command="2" v-if="[2,3].includes(scope.row.status)">报告文档</el-dropdown-item>
-              <el-dropdown-item command="16" v-if="[1,2].includes(scope.row.reportType)">检索记录</el-dropdown-item>
-              <el-dropdown-item command="3" v-if="[2].includes(scope.row.status)&&[0,1,2,3].includes(scope.row.reportType)">自定义字段</el-dropdown-item>
-              <!-- <el-dropdown-item command="5" v-if="[2].includes(scope.row.status) && [0,1,2].includes(scope.row.reportType)">拆分特征</el-dropdown-item> -->
-              <el-dropdown-item command="15" v-if="[2].includes(scope.row.status) && [3,4].includes(scope.row.reportType)">产品信息录入</el-dropdown-item>
-              <el-dropdown-item command="8" v-if="(scope.row.reportType == 4 && [2].includes(scope.row.status))">专利与产品关联比对</el-dropdown-item>
-              <el-dropdown-item command="9" v-if="(scope.row.reportType == 5 && [2].includes(scope.row.status))"> 规避方案填写</el-dropdown-item>
-              <el-dropdown-item command="10" v-if="[3].includes(scope.row.reportType)&&[2,3].includes(scope.row.status)"> 相关对比文件</el-dropdown-item>
-              <el-dropdown-item command="11" v-if="[2].includes(scope.row.status)"> 完成报告</el-dropdown-item>
-              <el-dropdown-item command="12" v-if="[3].includes(scope.row.status)">添加追踪报告</el-dropdown-item>
-              <!-- <el-dropdown-item command="13" v-if="(scope.row.reportType == 7 && [2,3].includes(scope.row.status))">添加无效理由和证据</el-dropdown-item> -->
-              <el-dropdown-item command="14" v-if="(scope.row.reportType == 7 && [2,3].includes(scope.row.status))">证据文献</el-dropdown-item>
-              <el-dropdown-item command="17" v-if="([1,2,3,7].includes(scope.row.reportType) && [2,3].includes(scope.row.status))">导入导出历史</el-dropdown-item>
-              <el-dropdown-item command="7" divided style="color: red;">删除 </el-dropdown-item>
-            </el-dropdown-menu>
-          </el-dropdown>
-        </template>
-      </el-table-column>
-      </el-table>
+            <el-table-column v-if="[1].indexOf(isOperate) == -1" label="操作" align="center" width="150px">
+            <template slot-scope="scope">
+              <el-dropdown @command="handleCommand($event, scope.row)" split-button type="primary" size="small"  @click="handleCommand('e',scope.row)">
+                <span>编辑</span>
+                <el-dropdown-menu slot="dropdown" class="text-align_center">
+                  <el-dropdown-item command="0">分享</el-dropdown-item>
+                  <el-dropdown-item command="1" v-if="[2,3].includes(scope.row.status)">导出报告</el-dropdown-item>
+                  <el-dropdown-item command="2" v-if="[2,3].includes(scope.row.status)">报告文档</el-dropdown-item>
+                  <el-dropdown-item command="16" v-if="[1,2].includes(scope.row.reportType)">检索记录</el-dropdown-item>
+                  <el-dropdown-item command="3" v-if="[2].includes(scope.row.status)&&[0,1,2,3].includes(scope.row.reportType)">自定义字段</el-dropdown-item>
+                  <!-- <el-dropdown-item command="5" v-if="[2].includes(scope.row.status) && [0,1,2].includes(scope.row.reportType)">拆分特征</el-dropdown-item> -->
+                  <el-dropdown-item command="15" v-if="[2].includes(scope.row.status) && [3,4].includes(scope.row.reportType)">产品信息录入</el-dropdown-item>
+                  <el-dropdown-item command="8" v-if="(scope.row.reportType == 4 && [2].includes(scope.row.status))">专利与产品关联比对</el-dropdown-item>
+                  <el-dropdown-item command="9" v-if="(scope.row.reportType == 5 && [2].includes(scope.row.status))"> 规避方案填写</el-dropdown-item>
+                  <el-dropdown-item command="10" v-if="[3].includes(scope.row.reportType)&&[2,3].includes(scope.row.status)"> 相关对比文件</el-dropdown-item>
+                  <el-dropdown-item command="11" v-if="[2].includes(scope.row.status)"> 完成报告</el-dropdown-item>
+                  <el-dropdown-item command="12" v-if="[3].includes(scope.row.status)">添加追踪报告</el-dropdown-item>
+                  <!-- <el-dropdown-item command="13" v-if="(scope.row.reportType == 7 && [2,3].includes(scope.row.status))">添加无效理由和证据</el-dropdown-item> -->
+                  <el-dropdown-item command="14" v-if="(scope.row.reportType == 7 && [2,3].includes(scope.row.status))">证据文献</el-dropdown-item>
+                  <el-dropdown-item command="17" v-if="([1,2,3,7].includes(scope.row.reportType) && [2,3].includes(scope.row.status))">导入导出历史</el-dropdown-item>
+                  <el-dropdown-item command="7" divided style="color: red;">删除 </el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+            </template>
+          </el-table-column>
+          </el-table>
+      </el-main>
+      </el-container>
     </div>
   </div>
 </template>
@@ -83,6 +93,7 @@ export default {
   },
   data() {
     return {
+      tab:'1',
       // 报告类型
       reportTypeName: {
         '0':'无效分析报告',
@@ -141,6 +152,12 @@ export default {
     }
   },
   methods: {
+    //左侧标签点击
+    tabClick(tab, event){
+      var name = tab.name
+      this.$emit('tabChange',name)
+    },
+
      //更新数据
     updateData() {
       if(this.action.type == 1){