|
@@ -1,38 +1,35 @@
|
|
|
<template>
|
|
|
<!-- 无效理由和证据 -->
|
|
|
- <div @click="clickBody">
|
|
|
+ <div>
|
|
|
<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="addCourtOpinion">添加法院意见</el-button>
|
|
|
<el-button type="primary" size="small" @click="openField">显示栏位管理</el-button>
|
|
|
+ <el-button type="primary" size="small" @click="exportInvalid" :loading="btnLoading">导出无效理由</el-button>
|
|
|
</div>
|
|
|
|
|
|
- <el-table border v-if="refreshData" :data="tableData" :span-method="objectSpanMethod" :height="tableHeight" >
|
|
|
- <el-table-column prop="index" label="序号" align="center">
|
|
|
+ <el-table border ref="table" v-if="refreshData" :data="tableData" row-key="id" :expand-row-keys="expands" :span-method="objectSpanMethod" :maxHeight="tableHeight">
|
|
|
+ <el-table-column prop="index" label="序号" align="center" width="80px">
|
|
|
<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">
|
|
|
+ <el-table-column v-for="item in tableField.filter(item => !item.hidden)" :key="item.key" :label="item.name" :prop="item.key" align="center" type>
|
|
|
<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">
|
|
|
+ <!-- <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">
|
|
|
+ <el-popover placement="top-start" width="800" trigger="hover" 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>
|
|
|
+ <Invalid-Evidence ref="invalid" :sign="sign" @evidence="getEvidence" :evidence="showPopover(y,scope.row.content,index)" :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>
|
|
@@ -47,53 +44,58 @@
|
|
|
</span>
|
|
|
</el-popover>
|
|
|
</p>
|
|
|
+ </span> -->
|
|
|
+ <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-link @click="check(item, y)">D{{ y.sort }}</el-link>
|
|
|
+ <span v-if="index1 < i.proofs.length - 1"> + </span>
|
|
|
+ </span>
|
|
|
+ </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>
|
|
|
+ <div v-else-if="item.key == 'court'">{{ getData(scope.row,item.key) }} <span style="margin-left:20px;float:right" v-if="scope.row.invalidName == 3 || scope.row.invalidName == 2"> <el-link type="primary" @click="toogleExpand(scope.row,scope.$index)">详情</el-link> </span></div>
|
|
|
+ <div v-else v-html="getData(scope.row,item.key)"></div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column v-for="item in tableField2.filter(item => item.fieldState)" :key="item.fieldKey" :label="item.fieldName" :prop="item.fieldKey" align="center" type>
|
|
|
+ <template slot="header">
|
|
|
+ <div>
|
|
|
+ <span>{{ item.fieldName }}</span>
|
|
|
+ <span class="margin-left_10">
|
|
|
+ <el-link type="primary" v-if="!item[('edit'+item.fieldKey)]" @click="edit('edit'+item.fieldKey,item)">
|
|
|
+ <el-tooltip class="item" effect="dark" content="编辑" placement="top">
|
|
|
+ <i class="iconfont icon-bianji"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-link>
|
|
|
+ <span v-else>
|
|
|
+ <el-link type="primary" @click="save('edit'+item.fieldKey,item)">
|
|
|
+ <el-tooltip class="item" effect="dark" content="保存" placement="top">
|
|
|
+ <i class="iconfont icon-baocun"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-link>
|
|
|
+ <el-link class="margin-left_10" type="primary" @click="cancelEdit('edit'+item.fieldKey,item)">
|
|
|
+ <el-tooltip class="item" effect="dark" content="取消编辑" placement="top">
|
|
|
+ <i class="iconfont icon-fanhui"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-link>
|
|
|
+ </span>
|
|
|
+
|
|
|
+
|
|
|
</span>
|
|
|
- </div> -->
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="item[('edit'+item.fieldKey)]">
|
|
|
+ <myRich-Text v-model="scope.row[item.fieldKey]" :placeholder="'请输入'+item.fieldName"></myRich-Text>
|
|
|
+ </div>
|
|
|
+ <div v-else v-html="getData1(scope.row,item.fieldKey)"></div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作" align="center" width="180px">
|
|
|
+ <el-table-column label="操作" align="center" width="180px" type>
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
<el-button @click.native.prevent="editRow(scope.row)" type="text" size="small"> 编辑 </el-button>
|
|
@@ -101,15 +103,16 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+
|
|
|
+ <el-table-column type="expand" width="1">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <InvalidDetails :invalidReasonId="scope.row.id" :reportId="reportId" :patentNo="signPatentNo" :rightSort="scope.row.content" :right="rightList.find(item => item.sort == scope.row.content)"></InvalidDetails>
|
|
|
+ </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">
|
|
|
+ <el-dialog :title="title" :visible.sync="visible" width="800px" :before-close="close" :append-to-body="true">
|
|
|
<div>
|
|
|
<el-form :model="form" ref="form" :rules='rules' label-width="100px" label-position="left">
|
|
|
<el-form-item label="无效理由:" prop="invalidName">
|
|
@@ -129,30 +132,22 @@
|
|
|
<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>
|
|
|
+ <rightContent :right="rightList.find(item => item.sort == this.form.content)" :reportId="reportId"></rightContent>
|
|
|
+ <!-- <span >{{ rightList.find(item => item.sort == this.form.content).content }}</span> -->
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
- <el-form-item label="相关证据:" v-if="form.content == 0 || form.content || form.invalidName">
|
|
|
+ <el-form-item label="相关证据:" v-if="form.content == 0 || form.content">
|
|
|
<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="(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">
|
|
|
+ <el-popover placement="top-start" width="800" trigger="hover" 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>
|
|
|
+ <Invalid-Evidence ref="invalid" :patentNo="signPatentNo" :evidence="showPopover(i,null,index)" :reportId="reportId" :sign="sign" @evidence="getEvidence"></Invalid-Evidence>
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-link v-if="i.sort" slot="reference">D{{ i.sort }}</el-link>
|
|
@@ -170,8 +165,25 @@
|
|
|
<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>
|
|
|
+ </span> -->
|
|
|
+ <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">
|
|
|
+ <el-link v-if="i.sort">D{{ i.sort }}</el-link>
|
|
|
+ <el-link v-else>{{ i.sortStr }}</el-link>
|
|
|
+ <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 v-if="!show"><el-link type="primary" @click="showBtn()">添加</el-link></span>
|
|
|
<template v-if="show" >
|
|
|
<div>
|
|
|
<el-table :data="EvidenceList" style="overflow: auto;" height='300'>
|
|
@@ -189,8 +201,10 @@
|
|
|
<template slot-scope="scope">
|
|
|
<!-- 打开证据弹窗,添加证据文献中的证据 -->
|
|
|
<div>
|
|
|
- {{ scope.row.sortStr }} <span style="float:right" @click="openEvidence(scope.row)"><el-link
|
|
|
- type="primary">详情</el-link></span>
|
|
|
+ {{ scope.row.sortStr }}
|
|
|
+ <span style="float:right" @click="openEvidence(scope.row)">
|
|
|
+ <el-link type="primary">选择无效证据</el-link>
|
|
|
+ </span>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -223,23 +237,17 @@
|
|
|
</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> -->
|
|
|
+ <myRich-Text v-model="form.argumentStr" placeholder="请输入陈述意见"></myRich-Text>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-for="item in tableField2" :key="item.fieldKey" :label="item.fieldName+':'">
|
|
|
+ <myRich-Text v-model="form[item.fieldKey]" :placeholder="'请输入'+item.fieldName"></myRich-Text>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="复审委意见:">
|
|
|
+ <!-- <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-item> -->
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
@@ -247,22 +255,35 @@
|
|
|
<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 title="添加证据" :visible.sync="EvidenceVisible" width="1000px" :before-close="closeEvidence" custom-class="addInvalid" append-to-body>
|
|
|
+ <Invalid-Evidence ref="invalid" :reportId="reportId" :patentNo="signPatentNo" ></Invalid-Evidence>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="closeEvidence">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitEvidence">确 定</el-button>
|
|
|
+ </div>
|
|
|
</el-dialog>
|
|
|
+ <AddOrEditField ref="addOrEditField" :reportId="reportId" :tableFields="tableField2" @submit="queryInvalidFields()"></AddOrEditField>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import TableField from './TableField.vue'
|
|
|
import InvalidEvidence from './InvalidEvidence.vue'
|
|
|
import InvalidFeatures from './InvalidFeatures.vue'
|
|
|
+
|
|
|
+import InvalidDetails from './InvalidDetails/InvalidDetails.vue'
|
|
|
+import rightContent from './addFeatures/rightContent.vue'
|
|
|
+import AddOrEditField from './addOrEditField.vue'
|
|
|
+import { downLoad2 } from "@/utils";
|
|
|
export default {
|
|
|
props: ['reportId','signPatentNo','reportType'],
|
|
|
components: {
|
|
|
TableField,
|
|
|
InvalidEvidence,
|
|
|
InvalidFeatures,
|
|
|
- },
|
|
|
+ InvalidDetails,
|
|
|
+ rightContent,
|
|
|
+ AddOrEditField
|
|
|
+},
|
|
|
data() {
|
|
|
const contentRule = (rule, value, callback) => {
|
|
|
if (this.form.invalidName == 1) {
|
|
@@ -277,7 +298,8 @@ export default {
|
|
|
|
|
|
}
|
|
|
return {
|
|
|
- sign: false,
|
|
|
+ btnLoading:false,
|
|
|
+ expands:[],
|
|
|
description: '',
|
|
|
argumentStr: '',
|
|
|
show: false,
|
|
@@ -312,17 +334,18 @@ export default {
|
|
|
name: '陈述意见',
|
|
|
hidden: false
|
|
|
},
|
|
|
- {
|
|
|
- key: 'comOptions',
|
|
|
- name: '复审委意见',
|
|
|
- hidden: true
|
|
|
- },
|
|
|
- {
|
|
|
- key: 'courtOptions',
|
|
|
- name: '法院意见',
|
|
|
- hidden: true
|
|
|
- },
|
|
|
+ // {
|
|
|
+ // key: 'comOptions',
|
|
|
+ // name: '复审委意见',
|
|
|
+ // hidden: true
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // key: 'courtOptions',
|
|
|
+ // name: '法院意见',
|
|
|
+ // hidden: true
|
|
|
+ // },
|
|
|
],//显示栏位管理
|
|
|
+ tableField2:[],
|
|
|
invalidList: [
|
|
|
{
|
|
|
id: 0,
|
|
@@ -356,62 +379,125 @@ export default {
|
|
|
rightFeaturesList: [],
|
|
|
mergeObj: {},
|
|
|
mergeArr: ['invalidName'],//解释
|
|
|
- tableHeight: '',
|
|
|
+ tableHeight: document.getElementsByClassName('el-main')[0].clientHeight - 100,
|
|
|
// tabRowIndex:null,//行角标
|
|
|
// tabColumnIndex:null,//列角标
|
|
|
+ rowData:'',
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
|
|
|
},
|
|
|
async mounted() {
|
|
|
+ this.getHeight()
|
|
|
+ //获取自定义栏位
|
|
|
+ this.queryInvalidFields()
|
|
|
// 请求专利权要
|
|
|
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()
|
|
|
+ //导出无效理由和证据
|
|
|
+ exportInvalid(){
|
|
|
+ this.btnLoading = true
|
|
|
+ this.$api.exportInvalid({reportId:this.reportId}).then(response=>{
|
|
|
+ if(response.code == 200){
|
|
|
+ this.$message.success('导出成功')
|
|
|
+ downLoad2(response.data)
|
|
|
+ this.btnLoading = false
|
|
|
}
|
|
|
- }
|
|
|
+ }).catch(error => {
|
|
|
+ this.$message.error('导出失败,请重试')
|
|
|
+ this.btnLoading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //编辑列数据
|
|
|
+ edit(key,row){
|
|
|
+ this.$set(row,key,true)
|
|
|
+ this.tableData.forEach(item=>{
|
|
|
+ item[row.fieldKey] = this.getData1(item,row.fieldKey)
|
|
|
+ })
|
|
|
+ this.refreshTable()
|
|
|
+ },
|
|
|
+ //保存列数据
|
|
|
+ save(key,row){
|
|
|
+ var params = []
|
|
|
+ this.tableData.forEach(item=>{
|
|
|
+ params.push(
|
|
|
+ {
|
|
|
+ "invalidReasonId": item.id,
|
|
|
+ "fieldId": row.id,
|
|
|
+ "fieldValue": item[row.fieldKey],
|
|
|
+ "fieldKey": row.fieldKey
|
|
|
+ }
|
|
|
+ )
|
|
|
+ })
|
|
|
+ this.$api.addOrUpdateValue(params).then(response=>{
|
|
|
+ if(response.code == 200){
|
|
|
+ this.$message.success('编辑成功')
|
|
|
+ this.$set(row,key,false)
|
|
|
+ this.getInvalidReason()
|
|
|
+ this.refreshTable()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //取消编辑列数据
|
|
|
+ cancelEdit(key,row){
|
|
|
+ this.$set(row,key,false)
|
|
|
+ this.tableData.forEach(item=>{
|
|
|
+ item[row.fieldKey] =''
|
|
|
+ })
|
|
|
+ this.refreshTable()
|
|
|
+ },
|
|
|
+ //添加法院意见
|
|
|
+ addCourtOpinion(){
|
|
|
+ var form = {}
|
|
|
+ this.$refs.addOrEditField.open(form)
|
|
|
+ },
|
|
|
+ //获取自定义栏位
|
|
|
+ queryInvalidFields(){
|
|
|
+ this.$api.queryInvalidFields({reportId:this.reportId}).then(response=>{
|
|
|
+ if(response.code == 200){
|
|
|
+ this.tableField2 = response.data
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
- // 获取点击的单元格位置
|
|
|
- // 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
|
|
|
- },
|
|
|
+ this.tableHeight = document.getElementsByClassName('el-main')[0].clientHeight - 100
|
|
|
+ },
|
|
|
+ //展开行
|
|
|
+ toogleExpand(row,index) {
|
|
|
+ var index1 = this.expands.findIndex(item=>{
|
|
|
+ return item == row.id
|
|
|
+ })
|
|
|
+ if(index1 == -1){
|
|
|
+ var a = []
|
|
|
+ a[0] = this.tableData.slice(0,index+1)
|
|
|
+ a[1]= this.tableData.slice(index+1,this.tableData.length)
|
|
|
+ var invalidName = []
|
|
|
+ a.forEach(item=>{
|
|
|
+ invalidName = invalidName.concat(this.getSpanArr(item))
|
|
|
+ })
|
|
|
+ this.mergeObj.invalidName = invalidName
|
|
|
+ }else{
|
|
|
+ this.getSpanArr(this.tableData)
|
|
|
+ }
|
|
|
+ this.refreshData = false
|
|
|
+ this.$nextTick(()=>{
|
|
|
+ this.refreshData = true
|
|
|
+ if(index1!=-1){
|
|
|
+ this.expands = []
|
|
|
+ }else{
|
|
|
+ this.expands = [row.id]
|
|
|
+ }
|
|
|
+ this.getHeight()
|
|
|
+ })
|
|
|
+ },
|
|
|
// 回显
|
|
|
getData(row,key) {
|
|
|
if (key == 'invalidName') {
|
|
@@ -428,14 +514,28 @@ export default {
|
|
|
return row[key]
|
|
|
}
|
|
|
},
|
|
|
+ getData1(row,key){
|
|
|
+ var index = row.fields.findIndex(item=>item.fieldKey == key)
|
|
|
+ if(index!=-1){
|
|
|
+ return row.fields[index].fieldValue
|
|
|
+ }else{
|
|
|
+ return ''
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ // 请求无效理由和证据
|
|
|
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
|
|
|
+ if(res.data){
|
|
|
+ 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)
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.tableData = []
|
|
|
+ }
|
|
|
+ this.expands = []
|
|
|
this.getSpanArr(this.tableData)
|
|
|
}
|
|
|
})
|
|
@@ -459,6 +559,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
+ return this.mergeObj.invalidName
|
|
|
},
|
|
|
//合并行
|
|
|
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
|
@@ -470,22 +571,6 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- // 划词特征
|
|
|
- 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()
|
|
@@ -500,6 +585,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ //查询所有证据文献
|
|
|
getQueryProofList() {
|
|
|
let params = {
|
|
|
reportId:this.reportId,
|
|
@@ -509,7 +595,10 @@ export default {
|
|
|
}
|
|
|
this.$api.queryProof(params).then((res) => {
|
|
|
if (res.code==200) {
|
|
|
- this.EvidenceList=res.data
|
|
|
+ this.EvidenceList=res.data.map(item=>{
|
|
|
+ item.proofStrIds = []
|
|
|
+ return item
|
|
|
+ })
|
|
|
}
|
|
|
}).catch((error) => {
|
|
|
|
|
@@ -529,22 +618,19 @@ export default {
|
|
|
},
|
|
|
//打开添加证据弹窗
|
|
|
openEvidence(row) {
|
|
|
- // console.log(row, rightList, contentSort);
|
|
|
- let right = this.rightList.find(item => { return item.sort == this.form.content })
|
|
|
+ this.rowData = row
|
|
|
this.EvidenceVisible = true
|
|
|
this.$nextTick(() => {
|
|
|
- this.$refs.invalid.open(row,right)
|
|
|
+ this.$refs.invalid.open(row,this.rightList.find(item => item.sort == this.form.content))
|
|
|
})
|
|
|
},
|
|
|
//关闭添加证据弹窗
|
|
|
closeEvidence() {
|
|
|
+ this.rowData.proofStrIds = []
|
|
|
this.EvidenceVisible = false
|
|
|
- // console.log(this.form,this.proofGroups);
|
|
|
},
|
|
|
- //获取子组件传回来的证据、
|
|
|
- getEvidence(val) {
|
|
|
- // console.log(val);
|
|
|
- // this.proofGroups
|
|
|
+ submitEvidence(){
|
|
|
+ this.EvidenceVisible = false
|
|
|
},
|
|
|
//添加证据组合
|
|
|
submit() {
|
|
@@ -552,15 +638,20 @@ export default {
|
|
|
this.$message.error('请选择后再添加')
|
|
|
return false
|
|
|
}
|
|
|
- this.sign = true
|
|
|
var a = {
|
|
|
description: this.description,
|
|
|
argumentStr: this.argumentStr,
|
|
|
- proofs: this.proofGroups,
|
|
|
+ proofs: this.proofGroups.sort((a,b)=>{
|
|
|
+ return Number(a.sortStr.substring(1,a.sortStr.length)) - Number(b.sortStr.substring(1,b.sortStr.length))
|
|
|
+ }),
|
|
|
proofIds: this.selected,
|
|
|
+ groupDetails:this.proofGroups.map(item=>{
|
|
|
+ return {
|
|
|
+ compareFileId:item.id,
|
|
|
+ proofStrIds:item.proofStrIds
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
- console.log(this.form,this.proofGroups);
|
|
|
-
|
|
|
this.form.proofGroups.push(a)
|
|
|
this.cancel()
|
|
|
},
|
|
@@ -577,7 +668,7 @@ export default {
|
|
|
contentChange() {
|
|
|
this.cancel()
|
|
|
this.form.proofGroups = []
|
|
|
- localStorage.removeItem('patent')
|
|
|
+ // localStorage.removeItem('patent')
|
|
|
},
|
|
|
//选择证据
|
|
|
changeSelect(row) {
|
|
@@ -591,30 +682,10 @@ export default {
|
|
|
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,
|
|
|
-
|
|
|
- // }
|
|
|
+ path: '/fileDetails/' + val.id,
|
|
|
})
|
|
|
let params = this.$s.getSession('params')
|
|
|
params.type=7
|
|
@@ -627,11 +698,16 @@ export default {
|
|
|
},
|
|
|
//打开显示栏位管理弹窗
|
|
|
openField() {
|
|
|
- this.$refs.tableField.open(this.tableField)
|
|
|
+ this.$refs.tableField.open(this.tableField2)
|
|
|
},
|
|
|
//获取表格最新显示栏位
|
|
|
- getTableField(val) {
|
|
|
- this.tableField = val
|
|
|
+ getTableField({val,update}) {
|
|
|
+ if(val){
|
|
|
+ this.tableField2 = val
|
|
|
+ }
|
|
|
+ if(update){
|
|
|
+ this.getInvalidReason()
|
|
|
+ }
|
|
|
this.refreshTable()
|
|
|
},
|
|
|
//重置表格
|
|
@@ -657,25 +733,34 @@ export default {
|
|
|
},
|
|
|
//确认添加无效理由和证据
|
|
|
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
|
|
|
+ this.form.fields = []
|
|
|
+ for(let key in this.form){
|
|
|
+ var index = this.tableField2.findIndex(item=>{
|
|
|
+ return item.fieldKey == key
|
|
|
+ })
|
|
|
+ if(index!=-1){
|
|
|
+ this.form.fields.push(
|
|
|
+ {
|
|
|
+ "invalidReasonId":this.form.id|| 0,
|
|
|
+ "fieldId": this.tableField2[index].id,
|
|
|
+ "fieldValue": this.form[key]
|
|
|
+ }
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
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()
|
|
@@ -692,8 +777,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
sureEdit() {
|
|
|
- console.log(this.form);
|
|
|
- this.$api.updatelnvalidReason(this.form).then((res) => {
|
|
|
+ this.$api.updateInvalidReason(this.form).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.$message.success('更新成功')
|
|
|
this.getInvalidReason()
|
|
@@ -706,26 +790,41 @@ export default {
|
|
|
let id = [
|
|
|
row.id,
|
|
|
]
|
|
|
- this.$api.deleteInvalidReason(id).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- this.$message.success('删除成功')
|
|
|
- this.getInvalidReason()
|
|
|
- }
|
|
|
- })
|
|
|
+ this.$confirm('是否确定删除?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ this.$api.deleteInvalidReason(id).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message.success('删除成功')
|
|
|
+ this.getInvalidReason()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '已取消删除'
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
},
|
|
|
editRow(row) {
|
|
|
this.title="编辑无效理由和证据"
|
|
|
- this.form=row
|
|
|
+ this.form=JSON.parse(JSON.stringify(row))
|
|
|
+ this.form.fields.forEach(item=>{
|
|
|
+ this.form[item.fieldKey] = item.fieldValue
|
|
|
+ })
|
|
|
this.visible = true
|
|
|
- console.log(row);
|
|
|
},
|
|
|
- handleCurrentChange(val) {
|
|
|
- this.queryParams.current = val
|
|
|
- this.getInvalidReason()
|
|
|
- }
|
|
|
},
|
|
|
}
|
|
|
</script>
|
|
|
+<style lang="scss">
|
|
|
+.addInvalid .el-dialog__body{
|
|
|
+ padding-top:5px
|
|
|
+}
|
|
|
+</style>
|
|
|
<style lang="scss" scoped>
|
|
|
// .check:hover::after{
|
|
|
// content:'X'
|