|
@@ -0,0 +1,750 @@
|
|
|
+<template>
|
|
|
+ <!-- 无效理由和证据 -->
|
|
|
+ <div @click="clickBody">
|
|
|
+ <div style="display:flex;justify-content: flex-end;margin-bottom:10px">
|
|
|
+ <el-button type="primary" size="small" @click="addInvalid">添加无效证据</el-button>
|
|
|
+ <el-button type="primary" size="small" @click="openField">显示栏位管理</el-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-table border v-if="refreshData" :data="tableData" :span-method="objectSpanMethod" :height="tableHeight" >
|
|
|
+ <el-table-column prop="index" label="序号" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ {{ scope.$index + 1 }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column v-for="item in tableField.filter(item => !item.hidden)" :key="item.key" :label="item.name" :prop="item.key" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <!-- <el-input v-model='scope.row[item.key]' type="textarea"
|
|
|
+ v-if='(scope.row.index == tabRowIndex && scope.column.index == tabColumnIndex) && ["proofStr","argumentStr","comOptions","courtOptions"].includes(scope.column.property)'
|
|
|
+ @blur='inputBlur(scope.row)' size="mini" ></el-input> -->
|
|
|
+ <div v-if="item.key == 'proofStr'">
|
|
|
+ <span v-if="scope.row.proofGroups.length > 0">
|
|
|
+ <p v-for="(i, index) in scope.row.proofGroups" :key="index">
|
|
|
+ <span v-for="(y, index1) in i.proofs" :key="y.label">
|
|
|
+ <el-popover placement="top-start" width="800" trigger="hover" :close-delay="100000" ref="popoverHover">
|
|
|
+ <div>
|
|
|
+ <p><span>描述:</span><span>{{ y.description }}</span></p>
|
|
|
+ <div>
|
|
|
+ <Invalid-Evidence ref="invalid" :sign="sign" @evidence="getEvidence" :evidence="showPopover(y,scope.row.content)" :reportId="reportId" :patentNo="signPatentNo"></Invalid-Evidence>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-link @click="check(item, y)" slot="reference">D{{ y.sort }}</el-link>
|
|
|
+ <!-- <i class="el-icon-arrow-down el-icon--right"></i> -->
|
|
|
+ <!-- <i class="el-icon-edit" @click.stop="visibleIcons"></i> -->
|
|
|
+ </el-popover>
|
|
|
+ <span v-if="index1 < i.proofs.length - 1"> + </span>
|
|
|
+ </span>
|
|
|
+ <el-popover placement="top-start" width="200" trigger="hover">
|
|
|
+ <div>
|
|
|
+ <p><span>描述:</span><span>{{ i.description }}</span></p>
|
|
|
+ <p><span>陈述意见:</span><span>{{ i.argumentStr }}</span></p>
|
|
|
+ </div>
|
|
|
+ <span class="check" slot="reference">
|
|
|
+ <i class="el-icon-view chakan"></i>
|
|
|
+ <i class="el-icon-circle-close guanbi" @click="delCompose(scope.row.proofGroups, index,scope.row)"></i>
|
|
|
+ </span>
|
|
|
+ </el-popover>
|
|
|
+ </p>
|
|
|
+ </span>
|
|
|
+ <span>
|
|
|
+ {{ scope.row[item.key] }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div v-else>{{ getData(scope.row,item.key) }}</div>
|
|
|
+ <!-- invalidName -->
|
|
|
+ <!-- <div v-if="scope.row.invalidName == 1 || scope.row.invalidName == 2">
|
|
|
+ <span v-if="item.key == 'invalidName'">{{ invalidList.find(item => item.value == scope.row.invalidName).label }}</span>
|
|
|
+ <span v-else v-html="scope.row[item.key]"></span>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ <span v-if="item.key != 'proofStr' || scope.row.proofGroups.length == 0">
|
|
|
+ <span v-if="item.key == 'invalidName'">{{ invalidList.find(item => item.value == scope.row.invalidName).label }}</span>
|
|
|
+ <span v-else v-html="scope.row[item.key]"></span>
|
|
|
+ </span>
|
|
|
+ <span v-else-if="scope.row.proofGroups.length > 0">
|
|
|
+ <p v-for="(i, index) in scope.row.proofGroups" :key="index">
|
|
|
+ <span v-for="(y, index1) in i.proofGroups" :key="y.label">
|
|
|
+ <el-popover placement="top-start" width="800" trigger="hover">
|
|
|
+ <div>
|
|
|
+ <p><span>描述:</span><span>{{ y.description }}</span></p>
|
|
|
+ <div>
|
|
|
+ <Invalid-Evidence ref="invalid" :sign="sign" @evidence="getEvidence"
|
|
|
+ :evidenceData="y.evidence"></Invalid-Evidence>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-link @click="check(item, y)" slot="reference">{{ y.label }}</el-link>
|
|
|
+ </el-popover>
|
|
|
+ <span v-if="index1 < i.proofGroups.length - 1"> + </span>
|
|
|
+ </span>
|
|
|
+ <el-popover placement="top-start" width="200" trigger="hover">
|
|
|
+ <div>
|
|
|
+ <p><span>描述:</span><span>{{ i.description }}</span></p>
|
|
|
+ <p><span>陈述意见:</span><span>{{ i.argumentStr }}</span></p>
|
|
|
+ </div>
|
|
|
+ <span class="check" slot="reference">
|
|
|
+ <i class="el-icon-view chakan"></i>
|
|
|
+ <i class="el-icon-circle-close guanbi" @click="delCompose(scope.row.proofGroups, index)"></i>
|
|
|
+ </span>
|
|
|
+ </el-popover>
|
|
|
+ </p>
|
|
|
+ </span>
|
|
|
+ </div> -->
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" align="center" width="180px">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <el-button @click.native.prevent="editRow(scope.row)" type="text" size="small"> 编辑 </el-button>
|
|
|
+ <el-button @click.native.prevent="deleteRow(scope.row)" type="text" size="small" style="color: red;"> 删除 </el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <!-- <div style="text-align: center;margin-top: 10px;">
|
|
|
+ <el-pagination background layout="total, prev, pager, next, jumper" :current-page.sync="queryParams.current"
|
|
|
+ :page-size.sync="queryParams.size" @current-change="handleCurrentChange" :total="queryParams.total">
|
|
|
+ </el-pagination>
|
|
|
+ </div> -->
|
|
|
+ <Table-Field ref="tableField" :reportId="reportId" @update="getTableField"></Table-Field>
|
|
|
+
|
|
|
+ <el-dialog :title="title" :visible.sync="visible" width="800px" :before-close="close">
|
|
|
+ <div>
|
|
|
+ <el-form :model="form" ref="form" :rules='rules' label-width="100px" label-position="left">
|
|
|
+ <el-form-item label="无效理由:" prop="invalidName">
|
|
|
+ <el-select v-model="form.invalidName" placeholder="请选择" style="width:100%">
|
|
|
+ <el-option v-for="item in invalidList" :key="item.value" :label="item.label" :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="涉及内容:" prop="content">
|
|
|
+ <!-- 说明书为0,权要为权要id,字段coutent -->
|
|
|
+ <span v-if="form.invalidName == 1">说明书</span>
|
|
|
+ <el-select v-else v-model="form.content" placeholder="请选择" style="width:100%" @change="contentChange">
|
|
|
+ <el-option v-for="item in rightList" :key="item.sort" :label="item.rightName" :value="item.sort">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <template v-if="form.invalidName == 0 && (form.content == 0 || form.content) ">
|
|
|
+ <!-- features -->
|
|
|
+ <el-form-item label="选择特征:">
|
|
|
+ <span v-for="item in form.features" :key="item.id" style="margin-right:10px">{{ item.features }}</span>
|
|
|
+ <span v-if="rightFeaturesList && rightFeaturesList.length > 0"><el-link type="primary" @click="showFeatures = true">添加</el-link></span>
|
|
|
+ <div v-else>
|
|
|
+ <span >{{ rightList.find(item => item.sort == this.form.content).content }}</span>
|
|
|
+ </div>
|
|
|
+ <div v-if="showFeatures">
|
|
|
+ <InvalidFeatures :patentNo="signPatentNo" :rightFeaturesList="rightFeaturesList" @checkFeatures="checkFeatures" @closeFeatures="closeFeatures"></InvalidFeatures>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ <el-form-item label="相关证据:" v-if="form.content == 0 || form.content || form.invalidName">
|
|
|
+ <span v-if="form.invalidName == 0 || form.invalidName == 1">
|
|
|
+ <el-input type="text" v-model="form.proofStr" placeholder="请输入相关证据" style="width:100%"></el-input>
|
|
|
+ </span>
|
|
|
+ <div v-else>
|
|
|
+ <span v-for="(item, index) in form.proofGroups" :key="index" style="margin-right:10px">
|
|
|
+ <span v-for="(i, index1) in (item.proofs)" :key="i.label">
|
|
|
+ <!-- {{ i }} -->
|
|
|
+ <el-popover placement="top-start" width="800" trigger="hover" :close-delay="100000" ref="popoverHover">
|
|
|
+ <div>
|
|
|
+ <p><span>描述:</span><span>{{ i.description }}</span></p>
|
|
|
+ <div>
|
|
|
+ <!-- -->
|
|
|
+ <Invalid-Evidence ref="invalid" :patentNo="signPatentNo" :evidence="showPopover(i)" :reportId="reportId" :sign="sign" @evidence="getEvidence"></Invalid-Evidence>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-link v-if="i.sort" slot="reference">D{{ i.sort }}</el-link>
|
|
|
+ <el-link v-else slot="reference">{{ i.sortStr }}</el-link>
|
|
|
+ </el-popover>
|
|
|
+ <span v-if="index1 < item.proofs.length - 1">+</span>
|
|
|
+ </span>
|
|
|
+ <el-popover placement="top-start" width="200" trigger="hover">
|
|
|
+ <div>
|
|
|
+ <p><span>描述:</span><span>{{ item.description }}</span></p>
|
|
|
+ <p><span>陈述意见:</span><span>{{ item.argumentStr }}</span></p>
|
|
|
+ </div>
|
|
|
+ <span class="check" slot="reference">
|
|
|
+ <i class="el-icon-view chakan"></i>
|
|
|
+ <i class="el-icon-circle-close guanbi" @click="delCompose(form.proofGroups, index)"></i>
|
|
|
+ </span>
|
|
|
+ </el-popover>
|
|
|
+
|
|
|
+ </span><span><el-link type="primary" @click="showBtn()">添加</el-link></span>
|
|
|
+ <template v-if="show" >
|
|
|
+ <div>
|
|
|
+ <el-table :data="EvidenceList" style="overflow: auto;" height='300'>
|
|
|
+ <el-table-column prop="index" label="#" width="50px" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <el-checkbox :label="scope.row.id" @change="changeSelect(scope.row)"
|
|
|
+ :checked="selected.indexOf(scope.row.id) !== -1">
|
|
|
+ <span>{{ (scope.$index + 1) }}</span>
|
|
|
+ </el-checkbox>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sortStr" label="证据" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <!-- 打开证据弹窗,添加证据文献中的证据 -->
|
|
|
+ <div>
|
|
|
+ {{ scope.row.sortStr }} <span style="float:right" @click="openEvidence(scope.row)"><el-link
|
|
|
+ type="primary">详情</el-link></span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="description" label="描述" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <el-input type="textarea" :rows="1" v-model="scope.row.description"></el-input>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div style="display:flex;align-items:center">
|
|
|
+ <p style="margin:0">描述:</p>
|
|
|
+ <div style="flex:1">
|
|
|
+ <el-input type="textarea" :rows="1" v-model="description"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="display:flex;align-items:center">
|
|
|
+ <p style="margin:0">陈述意见:</p>
|
|
|
+ <div style="flex:1">
|
|
|
+ <el-input type="textarea" :rows="1" v-model="argumentStr"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="display:flex;justify-content: flex-end;margin-top:10px">
|
|
|
+ <el-button type="primary" size="small" @click="submit">确定</el-button>
|
|
|
+ <el-button type="primary" size="small" @click="cancel">取消</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="陈述意见:">
|
|
|
+ <el-input type="textarea" :rows="1" v-model="form.argumentStr"></el-input>
|
|
|
+ <!-- <div style="width:100%;outline: #dcdfe6;border:1px solid #DCDFE6;border-radius:5px;min-height:50px;background:white" id="preview" contenteditable="true"
|
|
|
+ v-html="form.argumentStr" @input="saveValue($event.target.innerHTML)" @click="saveValue($event.target.innerHTML)">
|
|
|
+ </div> -->
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="复审委意见:">
|
|
|
+ <el-input type="textarea" :rows="1" v-model="form.comOptions"></el-input>
|
|
|
+ <!-- <div style="width:100%;outline: #dcdfe6;border:1px solid #DCDFE6;border-radius:5px;min-height:50px;background:white" id="preview" contenteditable="true"
|
|
|
+ v-html="form.comOptions" @input="saveValue($event.target.innerHTML)" @click="saveValue($event.target.innerHTML)">
|
|
|
+ </div> -->
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="法院意见:">
|
|
|
+ <el-input type="textarea" :rows="1" v-model="form.courtOptions"></el-input>
|
|
|
+ <!-- <div style="width:100%;outline: #dcdfe6;border:1px solid #DCDFE6;border-radius:5px;min-height:50px;background:white" id="preview" contenteditable="true"
|
|
|
+ v-html="form.courtOptions" @input="saveValue($event.target.innerHTML)" @click="saveValue($event.target.innerHTML)">
|
|
|
+ </div> -->
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="close">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="sure">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog title="添加证据" :visible.sync="EvidenceVisible" width="1000px" :before-close="closeEvidence" append-to-body>
|
|
|
+ <Invalid-Evidence ref="invalid" :reportId="reportId" :patentNo="signPatentNo" :sign="sign" @evidence="getEvidence"></Invalid-Evidence>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import TableField from './TableField.vue'
|
|
|
+import InvalidEvidence from './InvalidEvidence.vue'
|
|
|
+import InvalidFeatures from './InvalidFeatures.vue'
|
|
|
+export default {
|
|
|
+ props: ['reportId','signPatentNo','reportType'],
|
|
|
+ components: {
|
|
|
+ TableField,
|
|
|
+ InvalidEvidence,
|
|
|
+ InvalidFeatures,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ const contentRule = (rule, value, callback) => {
|
|
|
+ if (this.form.invalidName == 1) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ if (value === '') {
|
|
|
+ callback(new Error('请选择涉及内容'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ sign: false,
|
|
|
+ description: '',
|
|
|
+ argumentStr: '',
|
|
|
+ show: false,
|
|
|
+ showFeatures: false,
|
|
|
+ selected: [],
|
|
|
+ form: {
|
|
|
+ proofGroups: []
|
|
|
+ },
|
|
|
+ visible: false,
|
|
|
+ title:'',
|
|
|
+ EvidenceVisible: false,
|
|
|
+ refreshData: true,
|
|
|
+ tableData: [],
|
|
|
+ tableField: [
|
|
|
+ {
|
|
|
+ key: 'invalidName',
|
|
|
+ name: '无效理由',
|
|
|
+ hidden: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'court',
|
|
|
+ name: '涉及内容',
|
|
|
+ hidden: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'proofStr',
|
|
|
+ name: '相关证据',
|
|
|
+ hidden: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'argumentStr',
|
|
|
+ name: '陈述意见',
|
|
|
+ hidden: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'comOptions',
|
|
|
+ name: '复审委意见',
|
|
|
+ hidden: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'courtOptions',
|
|
|
+ name: '法院意见',
|
|
|
+ hidden: true
|
|
|
+ },
|
|
|
+ ],//显示栏位管理
|
|
|
+ invalidList: [
|
|
|
+ {
|
|
|
+ id: 0,
|
|
|
+ label: '权利要求不清楚',
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 1,
|
|
|
+ label: '说明书公开不充分',
|
|
|
+ value: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 2,
|
|
|
+ label: '不具备创造性',
|
|
|
+ value: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 3,
|
|
|
+ label: '不具备新颖性',
|
|
|
+ value: 3
|
|
|
+ },
|
|
|
+ ],//无效理由数组
|
|
|
+ rightList: [],//权要数组
|
|
|
+ proofGroups: [],//子组件新增的数据
|
|
|
+ EvidenceList: [],//新增证据数组
|
|
|
+ rules: {
|
|
|
+ invalidName:[ { required: true, message: '请选择无效理由', trigger: 'change' }],
|
|
|
+ content:[{ required: true,validator:contentRule, trigger: 'change' }],
|
|
|
+ },
|
|
|
+ showBtnRight: {},
|
|
|
+ rightFeaturesList: [],
|
|
|
+ mergeObj: {},
|
|
|
+ mergeArr: ['invalidName'],//解释
|
|
|
+ tableHeight: '',
|
|
|
+ // tabRowIndex:null,//行角标
|
|
|
+ // tabColumnIndex:null,//列角标
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+
|
|
|
+ },
|
|
|
+ async mounted() {
|
|
|
+ // 请求专利权要
|
|
|
+ await this.getPatentByPatentNo()
|
|
|
+ // 请求证据文献
|
|
|
+ this.getQueryProofList()
|
|
|
+ // 请求无效理由和证据
|
|
|
+ await this.getInvalidReason()
|
|
|
+ // 请求划词特征
|
|
|
+ // this.getFeaturesList()
|
|
|
+ this.getHeight()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ clickBody(event) {
|
|
|
+ if (event.target === document.body || document.body.contains(event.target)) {
|
|
|
+ for (let i = 0; i < this.$refs.popoverHover.length; i++){
|
|
|
+ this.$refs.popoverHover[i].doClose()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 获取点击的单元格位置
|
|
|
+ // getCell(row, column, cell, event) {
|
|
|
+ // this.tabRowIndex = row.index
|
|
|
+ // this.tabColumnIndex = column.index
|
|
|
+ // },
|
|
|
+ // 把角标赋值给行和列,赋值后可以直接拿到点击位置的坐标
|
|
|
+ // getRowColumn({ row, column, rowIndex, columnIndex }) {
|
|
|
+ // row.index = rowIndex
|
|
|
+ // column.index = columnIndex
|
|
|
+ // },
|
|
|
+ // inputBlur(val) {
|
|
|
+ // // 把输入框隐藏
|
|
|
+ // this.tabRowIndex = null
|
|
|
+ // this.tabColumnIndex = null
|
|
|
+ // val.reportId=this.reportId
|
|
|
+ // this.$api.updatelnvalidReason(val).then((res) => {
|
|
|
+ // if (res.code == 200) {
|
|
|
+ // this.$message.success('更新成功')
|
|
|
+ // this.getInvalidReason()
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // // 发请求把修改的数据发送给后台
|
|
|
+ // // this.subForm()
|
|
|
+ // },
|
|
|
+ // table高度
|
|
|
+ getHeight() {
|
|
|
+ let a = document.body.clientHeight
|
|
|
+ this.tableHeight=a-300
|
|
|
+ },
|
|
|
+ // 回显
|
|
|
+ getData(row,key) {
|
|
|
+ if (key == 'invalidName') {
|
|
|
+ return this.invalidList.find(item => item.value ==row.invalidName).label
|
|
|
+ }else if (key == 'court') {
|
|
|
+ if (row.content == -1) {
|
|
|
+ return '说明书'
|
|
|
+ } else if (row.content != 0 && !row.content) {
|
|
|
+ return '说明书'
|
|
|
+ } else {
|
|
|
+ return '权要'+(row.content + 1)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return row[key]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getInvalidReason() {
|
|
|
+ await this.$api.queryInvalidReason({reportId:this.reportId}).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ var a = [...new Set(res.data.map(item => item.invalidName))]
|
|
|
+ this.tableData=res.data.sort((x,y)=>{
|
|
|
+ return a.indexOf(x.invalidName) - a.indexOf(y.invalidName)
|
|
|
+ })
|
|
|
+ // this.tableData=res.data
|
|
|
+ this.getSpanArr(this.tableData)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //获取每个元素所需合并的行数
|
|
|
+ getSpanArr(data) {
|
|
|
+ this.mergeArr.forEach((key, index1) => {
|
|
|
+ let count = 0;
|
|
|
+ this.mergeObj[key] = [];
|
|
|
+ data.forEach((item, index) => {
|
|
|
+ if (index === 0) {
|
|
|
+ this.mergeObj[key].push(1);
|
|
|
+ } else {
|
|
|
+ if (item[key] === data[index - 1][key] && item[key] !== 'evidence') {
|
|
|
+ this.mergeObj[key][count] += 1;
|
|
|
+ this.mergeObj[key].push(0);
|
|
|
+ } else {
|
|
|
+ count = index;
|
|
|
+ this.mergeObj[key].push(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //合并行
|
|
|
+ objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
|
|
+ if (this.mergeArr.indexOf(column.property) !== -1) {
|
|
|
+ if (this.mergeObj[column.property][rowIndex]) {
|
|
|
+ return [this.mergeObj[column.property][rowIndex], 1]
|
|
|
+ } else {
|
|
|
+ return [0, 0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 划词特征
|
|
|
+ getFeaturesList() {
|
|
|
+ this.rightFeaturesList = [
|
|
|
+ // {features:'特征1',id:0},
|
|
|
+ // {features:'特征2',id:1},
|
|
|
+ // {features:'特征3',id:2},
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ checkFeatures({proofGroups,close}) {
|
|
|
+ this.form.features = proofGroups
|
|
|
+ this.showFeatures=close
|
|
|
+ console.log(proofGroups,close);
|
|
|
+ },
|
|
|
+ closeFeatures(val) {
|
|
|
+ this.showFeatures=val
|
|
|
+ },
|
|
|
+ // 证据组合hover
|
|
|
+ showBtn() {
|
|
|
+ this.getQueryProofList()
|
|
|
+ this.show=true
|
|
|
+ },
|
|
|
+ // 查询专利权要
|
|
|
+ async getPatentByPatentNo() {
|
|
|
+ let params = {patentNo: this.signPatentNo,}
|
|
|
+ await this.$api.getFeatureRights(params).then((res) => {
|
|
|
+ if (res.code==200) {
|
|
|
+ this.rightList=res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getQueryProofList() {
|
|
|
+ let params = {
|
|
|
+ reportId:this.reportId,
|
|
|
+ signPatentNo:this.signPatentNo,
|
|
|
+ size: 99,
|
|
|
+ current: 1,
|
|
|
+ }
|
|
|
+ this.$api.queryProof(params).then((res) => {
|
|
|
+ if (res.code==200) {
|
|
|
+ this.EvidenceList=res.data
|
|
|
+ }
|
|
|
+ }).catch((error) => {
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //删除证据组合
|
|
|
+ delCompose(data, index,row) {
|
|
|
+ if (row && row.id) {
|
|
|
+ row.proofGroups.splice(index, 1)
|
|
|
+ this.form = row
|
|
|
+ this.form.isEdit=true
|
|
|
+ this.sure()
|
|
|
+ } else {
|
|
|
+ data.splice(index, 1)
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ //打开添加证据弹窗
|
|
|
+ openEvidence(row) {
|
|
|
+ // console.log(row, rightList, contentSort);
|
|
|
+ let right = this.rightList.find(item => { return item.sort == this.form.content })
|
|
|
+ this.EvidenceVisible = true
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.invalid.open(row,right)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //关闭添加证据弹窗
|
|
|
+ closeEvidence() {
|
|
|
+ this.EvidenceVisible = false
|
|
|
+ // console.log(this.form,this.proofGroups);
|
|
|
+ },
|
|
|
+ //获取子组件传回来的证据、
|
|
|
+ getEvidence(val) {
|
|
|
+ // console.log(val);
|
|
|
+ // this.proofGroups
|
|
|
+ },
|
|
|
+ //添加证据组合
|
|
|
+ submit() {
|
|
|
+ if (this.proofGroups.length == 0) {
|
|
|
+ this.$message.error('请选择后再添加')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ this.sign = true
|
|
|
+ var a = {
|
|
|
+ description: this.description,
|
|
|
+ argumentStr: this.argumentStr,
|
|
|
+ proofs: this.proofGroups,
|
|
|
+ proofIds: this.selected,
|
|
|
+ }
|
|
|
+ console.log(this.form,this.proofGroups);
|
|
|
+
|
|
|
+ this.form.proofGroups.push(a)
|
|
|
+ this.cancel()
|
|
|
+ },
|
|
|
+ //取消
|
|
|
+ cancel() {
|
|
|
+ this.EvidenceList = [],
|
|
|
+ this.selected = []
|
|
|
+ this.proofGroups = []
|
|
|
+ this.description = ''
|
|
|
+ this.argumentStr = ''
|
|
|
+ this.show = false
|
|
|
+ },
|
|
|
+ // 涉及内容的change
|
|
|
+ contentChange() {
|
|
|
+ this.cancel()
|
|
|
+ this.form.proofGroups = []
|
|
|
+ localStorage.removeItem('patent')
|
|
|
+ },
|
|
|
+ //选择证据
|
|
|
+ changeSelect(row) {
|
|
|
+ // this.showBtnRight = this.rightList.find(item => { return item.sort == this.form.content })
|
|
|
+ const index = this.selected.indexOf(row.id)
|
|
|
+ if (index === -1) {
|
|
|
+ this.selected.push(row.id)
|
|
|
+ this.proofGroups.push(row)
|
|
|
+ } else {
|
|
|
+ this.selected.splice(index, 1)
|
|
|
+ this.proofGroups.splice(index, 1)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // popover
|
|
|
+ showPopover(val,id) {
|
|
|
+ // console.log(val,this.rightList,id);
|
|
|
+
|
|
|
+ return {
|
|
|
+ row: val,
|
|
|
+ right:this.rightList.find(item => { return item.sort == id }) || this.rightList.find(item => { return item.sort == this.form.content })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //下拉框隐藏时获取证据
|
|
|
+ getEvidence(val) {
|
|
|
+ if (!val) {
|
|
|
+ this.form.proofStr = this.form.proofGroups.join('+')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //查看证据文献
|
|
|
+ check(item,val) {
|
|
|
+ // console.log('11', item, val);
|
|
|
+ var router = this.$router.resolve({
|
|
|
+ path: '/ContrastIndex/' + val.id,
|
|
|
+ // query: {
|
|
|
+ // patentNo: val.patentNo,
|
|
|
+
|
|
|
+ // }
|
|
|
+ })
|
|
|
+ let params = this.$s.getSession('params')
|
|
|
+ params.type=7
|
|
|
+ params.reportType=7
|
|
|
+ params.aid=val.id
|
|
|
+ params.signPatentNo=this.signPatentNo
|
|
|
+ params.reportId=this.reportId
|
|
|
+ this.$s.setSession('params', params)
|
|
|
+ window.open(router.href, '_blank');
|
|
|
+ },
|
|
|
+ //打开显示栏位管理弹窗
|
|
|
+ openField() {
|
|
|
+ this.$refs.tableField.open(this.tableField)
|
|
|
+ },
|
|
|
+ //获取表格最新显示栏位
|
|
|
+ getTableField(val) {
|
|
|
+ this.tableField = val
|
|
|
+ this.refreshTable()
|
|
|
+ },
|
|
|
+ //重置表格
|
|
|
+ refreshTable() {
|
|
|
+ this.refreshData = false
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.refreshData = true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //打开添加无效理由和证据弹窗
|
|
|
+ addInvalid() {
|
|
|
+ this.title='添加无效理由和证据'
|
|
|
+ this.visible = true
|
|
|
+ },
|
|
|
+ //关闭添加无效理由和证据弹窗
|
|
|
+ close() {
|
|
|
+ this.form = {
|
|
|
+ proofGroups: []
|
|
|
+ },
|
|
|
+ this.cancel()
|
|
|
+ this.$refs.form.resetFields()
|
|
|
+ this.visible = false
|
|
|
+ },
|
|
|
+ //确认添加无效理由和证据
|
|
|
+ sure() {
|
|
|
+ // this.form.features = this.rightList.find(item => { return item.id == this.form.content }).content
|
|
|
+ // console.log(this.form);
|
|
|
+ // 为说明书时content为-1
|
|
|
+ if (this.form.invalidName == 1) {
|
|
|
+ this.form.content == -1
|
|
|
+ }
|
|
|
+ this.form.reportId = this.reportId
|
|
|
+ if (this.form.isEdit) {
|
|
|
+ this.sureEdit()
|
|
|
+ } else {
|
|
|
+ this.$refs.form.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ // this.tableData.push(this.form)
|
|
|
+ // this.tableData[0].reportId=this.reportId
|
|
|
+ // console.log(this.form);
|
|
|
+ if (!this.form.id) {
|
|
|
+ this.$api.addInvalidReason(this.form).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ // console.log(this.tableData,this.form);
|
|
|
+ this.getInvalidReason()
|
|
|
+ this.refreshTable()
|
|
|
+ this.close()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.sureEdit()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$message.error('请填写信息')
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ sureEdit() {
|
|
|
+ console.log(this.form);
|
|
|
+ this.$api.updatelnvalidReason(this.form).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message.success('更新成功')
|
|
|
+ this.getInvalidReason()
|
|
|
+ this.refreshTable()
|
|
|
+ this.close()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ deleteRow(row) {
|
|
|
+ let id = [
|
|
|
+ row.id,
|
|
|
+ ]
|
|
|
+ this.$api.deleteInvalidReason(id).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message.success('删除成功')
|
|
|
+ this.getInvalidReason()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ editRow(row) {
|
|
|
+ this.title="编辑无效理由和证据"
|
|
|
+ this.form=row
|
|
|
+ this.visible = true
|
|
|
+ console.log(row);
|
|
|
+ },
|
|
|
+ handleCurrentChange(val) {
|
|
|
+ this.queryParams.current = val
|
|
|
+ this.getInvalidReason()
|
|
|
+ }
|
|
|
+ },
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+// .check:hover::after{
|
|
|
+// content:'X'
|
|
|
+// }
|
|
|
+.check:hover {
|
|
|
+ .chakan {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ .guanbi {
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.check {
|
|
|
+ margin-left: 5px;
|
|
|
+
|
|
|
+ .guanbi {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|