Bladeren bron

修改无效应对报告

zhuliu 1 jaar geleden
bovenliggende
commit
c979740af8

+ 10 - 0
RMS-FrontEnd/src/App.vue

@@ -157,6 +157,16 @@ export default {
 .div_MAX_Height{
   max-height: 300px;
   overflow-y: auto;
+  background: none !important;
+  font-size: 14px !important;
+  // color: #606266 !important;
+  font-family: "Microsoft YaHei" !important;
+}
+.div_MAX_Height>*{
+  background: none !important;
+  font-size: 14px !important;
+  // color: #606266 !important;
+  font-family: "Microsoft YaHei" !important;
 }
 .opinion .el-form-item{
   margin-bottom: 10px;

+ 8 - 2
RMS-FrontEnd/src/main.js

@@ -63,8 +63,14 @@ Vue.prototype.$reportPermission = reportPermission
 Vue.use(Particles)
 Vue.use(Element)
 // console.log(process.env.NODE_ENV)
-new Vue({
+
+//挂载在窗体上的事件
+import vmFunction from './utils/window'
+Vue.use(vmFunction)
+
+const vm = new Vue({
   router,
   store,
-  render: h => h(App)
+  render: (h) => h(App)
 }).$mount('#app')
+window.vm = vm 

+ 5 - 0
RMS-FrontEnd/src/router/index.js

@@ -15,6 +15,11 @@ const routes = [
     name:'/',
     component: () => import('@/views/index'),
   },
+  {
+    path: "/demo",
+    name:'demo',
+    component: () => import('@/views/components/common/RichText/index3.vue'),
+  },
 
   {
     path:'/admin/login',

+ 42 - 1
RMS-FrontEnd/src/utils/constants.js

@@ -83,9 +83,10 @@ export default {
         label:'文本',
         value:'text',
         children:[
+          {label: '标题/主权利要求/摘要', value: 'TX',type:3,dataType:1,placeholder:'请输入标题/主权利要求/摘要,例:石墨烯 OR "computer and phone"'},
           {label: '发明名称/标题', value: 'TI',type:3,dataType:1,placeholder:'请输入发明名称/标题,例:计算机 OR "computer and phone"'},
           {label: '主权利要求', value: 'CL',type:1,dataType:1,placeholder:'请输入主权利要求,例:加煤系统 OR "computer and phone"'},
-          {label: '关键词', value: 'TX',type:3,dataType:1,placeholder:'请输入关键词,例:石墨烯 OR "computer and phone"'},
+          // {label: '关键词', value: 'TX',type:3,dataType:1,placeholder:'请输入关键词,例:石墨烯 OR "computer and phone"'},
           {label: '摘要', value: 'AB',type:3,dataType:1,placeholder:'请输入摘要或简要说明,例:外喷放热气 OR "computer and phone"'},
         ]
       },
@@ -224,4 +225,44 @@ export default {
         value:3
       },
     ],
+    //无效理由(type:1为输入相关证据,2为选择相关证据,3为不需要权要并输入相关证据)
+    invalidList:[
+      {
+        id: 3,
+        label: '不具备新颖性',
+        value: 3,
+        type:'2'
+      },
+      {
+        id: 2,
+        label: '不具备创造性',
+        value: 2,
+        type:'2'
+      },
+      {
+        id: 0,
+        label: '权利要求不清楚',
+        value: 0,
+        type:'1'
+      },
+      {
+        id: 1,
+        label: '说明书公开不充分',
+        value: 1,
+        type:'3'
+      },
+      
+      {
+        id: 4,
+        label: '重复授权',
+        value: 4,
+        type:'2'
+      },
+      {
+        id: 5,
+        label: '权利要求缺少必要技术特征',
+        value: 5,
+        type:'3'
+      },
+    ],
 }

+ 1 - 3
RMS-FrontEnd/src/utils/model/svg/Popover.vue

@@ -203,6 +203,4 @@ export default {
   },
 }
 </script>
-<style>.a {
-  position: absolute;
-}</style>
+<style></style>

+ 28 - 0
RMS-FrontEnd/src/utils/window.js

@@ -0,0 +1,28 @@
+exports.install = function (Vue) {
+
+  Vue.prototype.checkImg = function (val) {
+    const component = findComponentDownward(this, 'myRichText')
+    component.checkImg(val)
+  }
+
+
+}
+
+function findComponentDownward(context, componentName) {
+  const childrens = context.$children
+  let children = null
+
+  if (childrens.length) {
+    for (const child of childrens) {
+      const name = child.$options.name
+      if (name === componentName) {
+        children = child
+        break
+      } else {
+        children = findComponentDownward(child, componentName)
+        if (children) break
+      }
+    }
+  }
+  return children
+}

+ 71 - 6
RMS-FrontEnd/src/views/components/common/RichText/index.vue

@@ -1,14 +1,19 @@
 <template>
   <div>
-    <div class="edit-box div_MAX_Height" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
+    <div class="edit-box div_MAX_Height" ref="myEditBox" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
         @blur="saveValue($event)" @click="getFocus($event)" v-on:paste="handlePaste($event)">
     </div>
+    <!-- 方法图 -->
+    <el-image-viewer v-if="showImg" :on-close="closeViewer" :src="imgSrc" :url-list="pictureUrlList"/>
   </div>
 </template>
 
 <script>
+import ElImageViewer from '@/views/product/components/jsMind/components/imageViewer/index.vue'
 export default {
-  components: {},
+  components: {
+    ElImageViewer
+  },
   props:{
         value:{
             type:String,
@@ -39,6 +44,9 @@ export default {
   data() {
     return {
         content: this.value||"", // 内容
+        showImg:false,
+        imgSrc:'',
+        pictureUrlList:[]
     };
   },
   watch: {
@@ -69,6 +77,19 @@ export default {
           this.setCursor(event,text2,1)
           break;
         }
+        // if(items[i].type.indexOf("text/html") !== -1){
+        //   var string = (event.originalEvent || event).clipboardData.getData('text/html')
+
+				// const srcRegex = /<img\s+(?:[^>]*?\s+)?src\s*=\s*(["'])((?:[^\1"]|\\\1|.)*?)\1/g
+				// const result = [...string.matchAll(srcRegex)]
+				// var src = result.map(v => v[2])[0]
+        // console.log(src)
+        // var reader  = new FileReader()
+        // var srcBase64 = reader.readAsDataURL(src)
+        // // var srcBase64 =await this.urlToBase64(src)
+        //   console.log(srcBase64)
+        //   continue;
+        // }
         if (items[i].type.indexOf("image") !== -1) {
           var e = event || window.event
           e.preventDefault();
@@ -81,8 +102,8 @@ export default {
       }
       var str = await this.fileToBase64(file)
       var randNum=Math.floor(Math.random()*(9999-1000))+1000;;
-      var new_img = '<img key="'+ randNum +'" src="' + str + '" style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle">';
-
+      // var new_img = '<img key="'+ randNum +'" src="' + str + '" onClick="vm.checkImg(' + str + ')" style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle">';
+      var new_img = `<img key="${randNum}" src="${str}" onClick="vm.checkImg(event)" style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle;cursor: pointer;">`;
       // 创建新的光标对象
 //       var range = document.createRange();
 //                 // 将光标对象的范围界定为新建的表情节点
@@ -130,6 +151,34 @@ export default {
       // console.log(window.getSelection().getRangeAt(0))
      
     },
+    /**
+ * 根据图片的url转换对应的base64值
+ * @param { String } imageUrl 如:http://xxxx/xxx.png
+ * @returns base64取值
+ */
+async urlToBase64(imageUrl) {
+    return new Promise((resolve, reject) => {
+      let canvas = document.createElement('canvas')
+      const ctx = canvas.getContext('2d')
+      let img = new Image()
+      img.crossOrigin = 'Anonymous' // 解决Canvas.toDataURL 图片跨域问题
+      img.src = imageUrl
+      img.onload = function() {
+        canvas.height = img.height
+        canvas.width = img.width
+        ctx.fillStyle = '#fff' // canvas背景填充颜色默认为黑色
+        // ctx.fillRect(0,0,img.width,img.height)
+        ctx.drawImage(img, 0, 0,img.width,img.height) // 参数可自定义
+        const dataURL = canvas.toDataURL('image/jpeg', 1) // 获取Base64编码
+        resolve(dataURL)
+        canvas = null // 清除canvas元素
+        img = null // 清除img元素
+      }
+      img.onerror = function() {
+        reject(new Error('Could not load image at ' + imageUrl))
+      }
+    })
+},
     //设置光标位置
     setCursor(event,str,type){
           var content = event.target.innerHTML
@@ -139,10 +188,14 @@ export default {
           var childNodes = event.target.childNodes
           if(!content){
             if(event.target.nodeName == 'BR'){
-              event.target.parentNode.innerHTML = str
+              const span = document.createElement('span');
+              span.innerHTML = str;
+              event.target.parentNode.insertBefore(span,event.target)
               var selectedRange = document.createRange();
               selectedRange.setStart(event.target,index2);
               return false
+            }else{
+              event.target.innerHTML = str
             }
           }else{
             content = content.replace(/&nbsp;/g,'\r')
@@ -238,7 +291,18 @@ export default {
     saveValue(event){
         var a  = event.target.innerHTML
         this.$emit('input',a)
-    }
+    },
+
+    //查看图片
+    checkImg(e){
+      this.imgSrc = e.target.src
+      this.pictureUrlList = [this.imgSrc]
+    	this.showImg = true
+    },
+    //关闭图片弹窗
+    closeViewer(){
+      this.showImg = false
+    },
   },
 };
 </script>
@@ -256,6 +320,7 @@ export default {
       height:30px !important;
       line-height: 30px !important;
     }
+    
 }
 .edit-box:empty::before {
     content: attr(placeholder);

+ 1 - 1
RMS-FrontEnd/src/views/components/import/conditionImport/FormSearch.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="formSearch">
-        <el-form :model="form" label-width="120px" size="small" label-position="right">
+        <el-form :model="form" label-width="165px" size="small" label-position="right">
             <template  v-for="item in constants.searchField" >
                 <div :key="item.label" v-if="(dbType ==2 && item.value!='typeAndStatus')||dbType !=2 ">
                     <div>

+ 9 - 109
RMS-FrontEnd/src/views/report/InvalidResponse/components/FileDetails/addOpinions.vue

@@ -70,7 +70,8 @@
         <p style="margin-top:0">陈述意见:</p>
         <el-button type="primary" size="small" @click="submit">保存</el-button>
       </div>
-      <myRich-Text placeholder="请输入陈述意见" v-model="argumentStr"></myRich-Text>
+      <editField type="2" v-model="argumentStr"></editField>
+      <!-- <myRich-Text placeholder="请输入陈述意见" v-model="argumentStr"></myRich-Text> -->
     </div>
 
     <el-dialog title="无效理由和证据" :visible.sync="visible" width="1200px" :before-close="close"> 
@@ -84,12 +85,15 @@
 <script>
 import InvalidIndex from '../InvalidIndex.vue'
 import InvalidDetails from '../InvalidDetails/InvalidDetails.vue';
+import editField from '../editFields/index.vue'
+import {getInvalidType} from '../mixins'
 export default {
   components: {
     InvalidIndex,
-    InvalidDetails
+    InvalidDetails,
+    editField
   },
-  mixins:[],
+  mixins:[getInvalidType],
   props: ['reportId','signPatentNo'],
   data() {
     return {
@@ -105,28 +109,7 @@ export default {
         },
         options:[],
         argumentStr:'',
-        invalidList:[
-        {
-          id: 0,
-          label: '权利要求不清楚',
-          value: 0
-        },
-        {
-          id: 1,
-          label: '说明书公开不充分',
-          value: 1
-        },
-        {
-          id: 2,
-          label: '不具备创造性',
-          value: 2
-        },
-        {
-          id: 3,
-          label: '不具备新颖性',
-          value: 3
-        },
-      ],
+        invalidList:this.$constants.invalidList,
       rightList:[],
       rights:[],
       proofGroups:[],
@@ -206,40 +189,12 @@ export default {
         this.rightSort = rightList[0].content
         this.form.content = rightList[0].id
         this.argumentStr = rightList[0].argumentStr || ''
-        // if(rightList.length>0){
-        //   this.rightList = [...new Set(rightList.map(item1=>item1.content))].map(item1=>{
-        //     return {
-        //       label : item1!=-1?('权要'+(item1+1)):'说明书',
-        //       value :item1
-        //     }
-        //     item1.
-        //     item1.value = item1
-        //     return item1
-        //   })
-        // }
     },
     //修改权要选项
     changeContent(val){
       var a = this.rightList.find(item=>{return item.id == val})
       this.rightSort = a.content
       this.argumentStr = a.argumentStr || ''
-      // this.form.proofGroups = ''
-      // this.form.proofs = ''
-      // this.form.features = ''
-      //   if(val == -1 ){
-      //     return false
-      //   }
-      //   this.proofGroups = []
-      // var proofGroups = this.options.filter(item=>{return item.invalidName = this.form.invalidName && item.content == val})
-      // if(proofGroups.length>0){
-      //   proofGroups.forEach(item=>{
-      //     item.proofGroups.forEach(item1=>{
-      //       item1.label = item1.proofs.map(i=>'D'+i.sort).join('+')
-      //       item1.value = item1.proofs.map(i=>'D'+i.sort).join('+')
-      //       this.proofGroups.push(item1)
-      //     })
-      //   })
-      // }
     },
     //修改证据组合选项
     changeProofGroups(val){
@@ -267,68 +222,13 @@ export default {
         if (res.code == 200) {
           if(res.data){
             this.options = res.data
-            // this.arrangeData(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.options = []
           }
         }
       })
     },
-    //整理无效理由和证据数据
-    arrangeData(data){
-        var invalidList=[
-        {
-          id: 0,
-          label: '权利要求不清楚',
-          value: 0
-        },
-        {
-          id: 1,
-          label: '说明书公开不充分',
-          value: 1
-        },
-        {
-          id: 2,
-          label: '不具备创造性',
-          value: 2
-        },
-        {
-          id: 3,
-          label: '不具备新颖性',
-          value: 3
-        },
-      ]
-      invalidList.forEach(item=>{
-        var rightList = data.filter(item1=>{return item1.invalidName == item.value})
-        if(rightList.length>0){
-         
-          item.children = [...new Set(rightList.map(item1=>item1.content))].map(item1=>{
-            return {
-              label:item1 != -1?'权要'+item1:'说明书',
-              value:item1
-            }
-          })
-          if(item.children.length>0){
-            item.children.forEach(item1=>{
-              item1.children = rightList.filter(item2=>{return item2.content == item1.value}).map(item2=>{
-                if(item2.proofGroups>0){
-                  item2.proofGroups.forEach(i=>{
-                    
-                  })
-                }
-              })
-            })
-          }
-        }else{
-          item.children = []
-        }
-        
-      })
-    },
+
   },
 };
 </script>

+ 31 - 4
RMS-FrontEnd/src/views/report/InvalidResponse/components/InvalidDetails/InvalidDetails.vue

@@ -13,13 +13,25 @@
               <Table :tableData="item.proofDetails" @submit="submitInvalid" :reportId="reportId"  v-bind="$attrs" v-on="$listeners" :proofs="item.proofs" :proofGroup="item"></Table>
             </div>
             <div style="display:flex;align-items:center;" v-if="!item.show">
-              <p style="min-width:80px !important">陈述意见:</p>
+              <p style="min-width:100px !important">无效证据总结:</p>
+                <div  v-if="!item.editDescription" style="display:flex;align-items:center">
+                  <div v-html="item.description" class="div_MAX_Height" style="border:1px solid #DCDFE6"></div>
+                  <span @click="editDescription(item)" v-if=" $reportPermission(reportId,[0,1])"><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="item.description" placeholder="请输入无效证据总结"></myRich-Text>
+                  <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="saveArgumentStr(item,1)"></el-button>
+                  <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancelDescription(item)"></el-button>
+                </div>
+            </div>
+            <div style="display:flex;align-items:center;" v-if="!item.show">
+              <p style="min-width:100px !important">无效理由详情:</p>
                 <div  v-if="!item.editArgumentStr" style="display:flex;align-items:center">
                   <div v-html="item.argumentStr" class="div_MAX_Height" style="border:1px solid #DCDFE6"></div>
                   <span @click="editArgumentStr(item)" v-if=" $reportPermission(reportId,[0,1])"><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="item.argumentStr" placeholder="请输入陈述意见"></myRich-Text>
+                  <myRich-Text style="width:100%" v-model="item.argumentStr" placeholder="请输入无效理由详情"></myRich-Text>
                   <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="saveArgumentStr(item)"></el-button>
                   <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancelArgumentStr(item)"></el-button>
                   <!-- <span class="margin-left_10" @click="saveArgumentStr(item)"><el-link type="primary"><i class="el-icon-check" style="font-size:28px"></i></el-link></span> -->
@@ -94,15 +106,30 @@ export default {
     this.$set(row,'editArgumentStr',!row.editArgumentStr)
     this.$set(row,'argumentStr1',row.argumentStr)
    },
+   //编辑组合描述
+   editDescription(row){
+    this.$set(row,'editDescription',!row.editDescription)
+    this.$set(row,'description1',row.description)
+   },
+    //取消证据组合描述
+    cancelDescription(row){
+    this.$set(row,'editDescription',!row.editDescription)
+    this.$set(row,'description',row.description1)
+   },
    //保存证据组合陈述意见
-   saveArgumentStr(row){
+   saveArgumentStr(row,type){
     var params = {
       ...row,
     }
     this.$api.updateProofGroup(params).then(response=>{
       if(response.code == 200){
         this.$message.success('陈述意见更新成功')
-        this.editArgumentStr(row)
+        if(type){
+          this.editDescription(row)
+        }else{
+          this.editArgumentStr(row)
+        }
+        
       }
     }).catch(error=>{
       this.$message.error('陈述意见更新失败')

+ 558 - 125
RMS-FrontEnd/src/views/report/InvalidResponse/components/InvalidIndex.vue

@@ -22,7 +22,8 @@
       </el-table-column>
       <el-table-column v-for="item in tableField.filter(item => !item.hidden)"  :key="item.key" :label="item.name" :prop="['court','argumentStr'].indexOf(item.key)!=-1?'id':item.key" align="center" type>
         <template slot-scope="scope">
-            <div v-if="item.key == 'proofStr'"  class="div_MAX_Height">
+          <!-- 相关证据 -->
+            <div v-if="item.key == 'proofStr'" class="div_MAX_Height">
               <!-- <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">
@@ -49,44 +50,122 @@
                   </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)" v-if="y.id!=0">D{{ y.sort }}</el-link>
-                    <span v-else>{{y.fileName}}</span>
-                    <span v-if="index1 < i.proofs.length - 1"> + </span>
+              <div v-if="scope.row.proofGroups && scope.row.proofGroups.length>0" style="display:flex;align-items:center;justify-content:space-between">
+                <div v-if="scope.row.proofGroups.length > 0" style="flex:1">
+                  <p v-for="(i, index) in scope.row.proofGroups" :key="index">
+                    <span v-for="(y, index1) in i.proofs" :key="y.label">
+                      <el-tooltip v-if="y.id!=0" class="item" effect="dark" :content="y.fileName" placement="top">
+                        <el-link @click="check(item, y)" >D{{ y.sort }}</el-link>
+                      </el-tooltip>
+                      <span v-else>{{y.fileName}}</span>
+                      <span v-if="index1 < i.proofs.length - 1"> + </span>
+                    </span>
+                  </p>
+                </div>
+                <div v-if="scope.row.proofGroups.length > 0" style="width:16px">
+                  <span> 
+                    <i v-if="expands.indexOf(scope.row.pId)!=-1 && chooseField == item.key" class="iconfont icon-yanjing_xianshi" @click="checkDetails(scope.row,item.key,scope.$index+'')"></i>
+                    <i v-else class="iconfont icon-yanjing_yincang" @click="checkDetails(scope.row,item.key,scope.$index+'')"></i>
                   </span>
-                </p>
-              </span>
-              <span v-else>
-                {{ scope.row[item.key] }}
-              </span>
-
-              <div style="position: relative;">
-                <span style="margin-left:40px;position:absolute;right:10px;bottom: 15px;" v-if="![0,1].includes(scope.row.invalidName)"> 
-                  <i v-if="!scope.row.iconShow" class="iconfont icon-yanjing_yincang" @click="toogleExpand(scope.row,scope.$index)"></i>
-                  <i v-else class="iconfont icon-yanjing_xianshi" @click="toogleExpand(scope.row,scope.$index)"></i>
-                </span>
+                </div>
               </div>
-
+              
+              <div v-else class="langHtml" style="text-align:left" v-html="scope.row[item.key]"  @click.prevent="showDetails($event,scope.row[item.key])"></div>
             </div>
-            <!-- <div v-else-if="item.key == 'court'" style="position:relative"><span >{{ getData(scope.row,item.key) }} </span>
-              <span style="margin-left:20px;position:absolute;right:0" 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-if="item.key=='argument_str'" class="div_MAX_Height">
               <span  v-if="scope.row.proofGroups && scope.row.proofGroups.length!=0" v-html="scope.row.proofGroups[0].argument_str"></span>
             </div>
+            <!-- 陈述意见 -->
+            <div v-else-if="item.key=='argumentStr'" style="display:flex;align-items:center;justify-content:space-between">
+              <div v-html="getData(scope.row,item.key)[0]" class="langHtml div_MAX_Height" @click.stop="showDetails($event,scope.row[item.key])"></div>
+              <div style="width:16px" v-if="getData(scope.row,item.key)[1]">
+                <span> 
+                  <i v-if="scope.row.iconShow && chooseField == item.key" class="iconfont icon-yanjing_xianshi" @click="checkDetails(scope.row,item.key)"></i>
+                  <i v-else class="iconfont icon-yanjing_yincang" @click="checkDetails(scope.row,item.key)"></i>
+                </span>
+              </div>
+            </div>
+            <!-- 涉及内容 -->
             <el-tooltip class="item" effect="dark" :content="scope.row.rightContent" placement="top" v-else-if="item.key == 'court' && (scope.row.content == 0 || scope.row.content)">
               <div v-html="getData(scope.row,item.key)"></div>
             </el-tooltip>
-            
             <div v-else v-html="getData(scope.row,item.key)" class="div_MAX_Height"></div>
         </template>
       </el-table-column>
       <el-table-column v-for="item in tableField2.filter(item => item.fieldState)"  :key="item.fieldKey" :label="item.fieldName" prop="id"  align="center" type>
-        <template slot="header">
+        <template v-if="item.fieldKey.indexOf('courtOptions')!=-1">
+          <div>
+            <el-table-column
+                label="法院意见"
+                align="center"
+                prop="id">
+                <template slot-scope="scope">
+                  <div style="display:flex;align-items:center;justify-content:space-between">
+                    <div v-html="getData1(scope.row,item.fieldKey,'court')[0]" class="langHtml div_MAX_Height"  @click.prevent="showDetails($event,scope.row,item.fieldKey)"></div>
+                    <div style="width:16px" v-if="getData1(scope.row,item.fieldKey,'court')[1]">
+                      <span> 
+                        <i v-if="scope.row.iconShow && chooseField == item.fieldKey+'court'" class="iconfont icon-yanjing_xianshi" @click="checkDetails(scope.row,'court',0,item.fieldKey)"></i>
+                        <i v-else class="iconfont icon-yanjing_yincang" @click="checkDetails(scope.row,'court',0,item.fieldKey)"></i>
+                      </span>
+                    </div>
+                  </div>
+                </template>
+              </el-table-column>
+             <el-table-column
+                label="起诉人意见"
+                align="center"
+                prop="id">
+                <template slot-scope="scope">
+                  <div style="display:flex;align-items:center;justify-content:space-between">
+                    <div v-html="getData1(scope.row,item.fieldKey,'prosecutor')[0]" class="langHtml div_MAX_Height"  @click.prevent="showDetails($event,scope.row,item.fieldKey)"></div>
+                    <div style="width:16px" v-if="getData1(scope.row,item.fieldKey,'prosecutor')[1]">
+                      <span> 
+                        <i v-if="scope.row.iconShow && chooseField == item.fieldKey+'prosecutor'" class="iconfont icon-yanjing_xianshi" @click="checkDetails(scope.row,'prosecutor',0,item.fieldKey)"></i>
+                        <i v-else class="iconfont icon-yanjing_yincang" @click="checkDetails(scope.row,'prosecutor',0,item.fieldKey)"></i>
+                      </span>
+                    </div>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="被诉人意见"
+                align="center"
+                prop="id">
+                <template slot-scope="scope">
+                  <div style="display:flex;align-items:center;justify-content:space-between">
+                    <div v-html="getData1(scope.row,item.fieldKey,'respondent')[0]" class="langHtml div_MAX_Height"  @click.prevent="showDetails($event,scope.row,item.fieldKey)"></div>
+                    <div style="width:16px" v-if="getData1(scope.row,item.fieldKey,'respondent')[1]">
+                      <span> 
+                        <i v-if="scope.row.iconShow && chooseField == item.fieldKey+'respondent'" class="iconfont icon-yanjing_xianshi" @click="checkDetails(scope.row,'respondent',0,item.fieldKey)"></i>
+                        <i v-else class="iconfont icon-yanjing_yincang" @click="checkDetails(scope.row,'respondent',0,item.fieldKey)"></i>
+                      </span>
+                    </div>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="第三方机构意见"
+                align="center"
+                prop="id">
+                <template slot-scope="scope">
+                  <div style="display:flex;align-items:center;justify-content:space-between">
+                    <div v-html="getData1(scope.row,item.fieldKey,'institution')[0]" class="langHtml div_MAX_Height"  @click.prevent="showDetails($event,scope.row,item.fieldKey)"></div>
+                    <div style="width:16px" v-if="getData1(scope.row,item.fieldKey,'institution')[1]">
+                      <span> 
+                        <i v-if="scope.row.iconShow && chooseField == item.fieldKey+'institution'" class="iconfont icon-yanjing_xianshi" @click="checkDetails(scope.row,'institution',0,item.fieldKey)"></i>
+                        <i v-else class="iconfont icon-yanjing_yincang" @click="checkDetails(scope.row,'institution',0,item.fieldKey)"></i>
+                        
+                      </span>
+                    </div>
+                  </div>
+                </template>
+              </el-table-column>
+              
+          </div>
+        </template>
+       
+        <!-- <template slot="header">
           <div>
             <span>{{ item.fieldName }}</span>
             <span class="margin-left_10">
@@ -107,16 +186,22 @@
                   </el-tooltip>
                 </el-link>
               </span>
-              
-              
             </span>
           </div>
-        </template>
+        </template> -->
         <template slot-scope="scope">
-          <div v-if="item[('edit'+item.fieldKey)]">
+          <!-- <div v-if="item[('edit'+item.fieldKey)]">
             <myRich-Text v-model="scope.row[item.fieldKey]" :placeholder="'请输入'+item.fieldName"></myRich-Text>
+          </div> -->
+          <div style="display:flex;align-items:center;justify-content:space-between">
+            <div v-html="getData1(scope.row,item.fieldKey,0)[0]" class="langHtml div_MAX_Height"  @click.prevent="showDetails($event,scope.row,item.fieldKey)"></div>
+            <div style="width:16px" v-if="getData1(scope.row,item.fieldKey,0)[1]">
+              <span> 
+                <i v-if="scope.row.iconShow && chooseField == item.fieldKey" class="iconfont icon-yanjing_xianshi" @click="checkDetails(scope.row,item.fieldKey)"></i>
+                <i v-else class="iconfont icon-yanjing_yincang" @click="checkDetails(scope.row,item.fieldKey)"></i>
+              </span>
+            </div>
           </div>
-          <div v-else v-html="getData1(scope.row,item.fieldKey)" class="div_MAX_Height"></div>
         </template>
       </el-table-column>
       <el-table-column  label="操作" align="center" width="180px" type prop="id" v-if=" $reportPermission(reportId,[0,1])">
@@ -129,18 +214,48 @@
       </el-table-column>
       
       <el-table-column type="expand" width="1">
-      <template slot-scope="scope">
-        <InvalidDetails :invalidReasonId="scope.row.id" :proofGroupId="scope.row.proofGroups[0].id" :reportId="reportId" :patentNo="signPatentNo" :rightSort="scope.row.content" :right="rightList.find(item => item.sort == scope.row.content)"></InvalidDetails>
-      </template>
-    </el-table-column>
+        <template slot-scope="scope">
+          <InvalidDetails v-if="chooseField == 'proofStr'" :invalidReasonId="scope.row.id" :proofGroupId="scope.row.proofGroups[0].id" :reportId="reportId" :patentNo="signPatentNo" :rightSort="scope.row.content" :right="rightList.find(item => item.sort == scope.row.content)"></InvalidDetails>
+          <div v-else style="width:100%;padding:10px">
+            <div style="display:flex;align-items:center;width:100%">
+              <div>{{chooseField=='court'?'法院意见':field.find(item=>{return chooseField.indexOf(item.label)!=-1}).value }}结论:</div>
+              <div style="flex:1">
+                <div v-if="editFieldIs.indexOf('conclusion')==-1" style="display:flex;align-items:center;width:100%">
+                  <div v-html="fieldValue[0]" class="div_MAX_Height" style="border:1px solid #DCDFE6;min-height:30px;width:100%;line-height:30px"></div>
+                  <span @click="editContents('conclusion')" v-if=" $reportPermission(reportId,[0,1])"><el-link type="primary"><i class="iconfont icon-bianji" style="font-size:28px"></i></el-link></span>
+                </div>
+                <div v-if="editFieldIs.indexOf('conclusion')!=-1" style="display:flex;align-items:center;width:100%">
+                  <myRich-Text v-model="fieldValue[0]" :placeholder="'请输入'+field.find(item=>{return chooseField.indexOf(item.label)!=-1}).value+'结论'" style="width:100%"></myRich-Text> 
+                  <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submitContents('conclusion')"></el-button>
+                  <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancelContents('conclusion')"></el-button>
+                </div>
+              </div>
+            </div>
+            <div style="display:flex;align-items:center;width:100%;margin-top:10px;">
+              <div>{{ chooseField=='court'?'法院意见':field.find(item=>{return chooseField.indexOf(item.label)!=-1}).value }}详情:</div>
+              <div style="flex:1">
+                <div v-if="editFieldIs.indexOf('details')==-1" style="display:flex;align-items:center;width:100%">
+                  <div v-html="fieldValue[1]" class="div_MAX_Height" style="border:1px solid #DCDFE6;min-height:30px;width:100%;line-height:30px"></div>
+                  <span @click="editContents('details')" v-if=" $reportPermission(reportId,[0,1])"><el-link type="primary"><i class="iconfont icon-bianji" style="font-size:28px"></i></el-link></span>
+                </div>
+                <div v-if="editFieldIs.indexOf('details')!=-1" style="width:100%;display:flex;align-items:center;width:100%">
+                  <myRich-Text v-model="fieldValue[1]" :placeholder="'请输入'+field.find(item=>{return chooseField.indexOf(item.label)!=-1}).value+'详情'" style="width:100%"></myRich-Text> 
+                  <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submitContents('details')"></el-button>
+                  <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancelContents('details')"></el-button>
+                </div>
+              </div>
+            </div>
+          </div>
+        </template>
+      </el-table-column>
     </el-table>
     <Table-Field ref="tableField" :reportId="reportId" @update="getTableField"></Table-Field>
 
-    <el-dialog :title="title" :visible.sync="visible" width="800px" :before-close="close" :append-to-body="true" :close-on-click-modal="false">
-      <div>
-        <el-form :model="form" ref="form" :rules='rules' label-width="100px" label-position="left">
+    <el-dialog :title="title" :visible.sync="visible" width="800px" custom-class="invalid" :before-close="close" :append-to-body="true" :close-on-click-modal="false">
+      <div v-if="visible" style="height: 100%;overflow-y:auto;padding:0 10px;">
+        <el-form :model="form" ref="form" :rules='rules' label-width="120px" label-position="left">
           <el-form-item label="无效理由:" prop="invalidName">
-            <el-select v-model="form.invalidName" placeholder="请选择" style="width:100%">
+            <el-select v-model="form.invalidName" @change="changeInvalid" placeholder="请选择" style="width:100%">
               <el-option v-for="item in invalidList" :key="item.value" :label="item.label" :value="item.value">
               </el-option>
             </el-select>
@@ -148,48 +263,23 @@
           <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-select v-else v-model="form.content" :multiple="isMore" 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) ">
+          <template v-if="invalidType == 1 && (form.content == 0 || form.content) ">
             <!-- features -->
             <el-form-item label="选择特征:">
               <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 == 1">
-            <span v-if="form.invalidName == 0 || form.invalidName == 1">
-              <el-input type="text" v-model="form.proofStr" placeholder="请输入相关证据" style="width:100%"></el-input>
+          <el-form-item label="相关证据:" v-if="form.content == 0 || form.content || invalidType == 3">
+            <span v-if="['1','3'].indexOf(invalidType) !=-1">
+              <myRich-Text  v-model="form.proofStr" placeholder="请输入相关证据" style="width:100%"></myRich-Text>
             </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">
-                  <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,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>
-                    <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 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 && i.id!=0">D{{ i.sort }}</el-link>
@@ -242,15 +332,15 @@
                     </el-table-column>
                   </el-table>
                   <div style="display:flex;align-items:center">
-                    <p style="margin:0">描述:</p>
+                    <p style="margin:0">无效理由总结:</p>
                     <div style="flex:1">
-                      <el-input type="textarea" :rows="1" v-model="description" placeholder="请输入描述"></el-input>
+                      <el-input type="textarea" :rows="1" v-model="description" placeholder="请输入无效理由总结"></el-input>
                     </div>
                   </div>
                   <div style="display:flex;align-items:center;margin-top:10px">
-                    <p style="margin:0">陈述意见:</p>
+                    <p style="margin:0">无效理由详情:</p>
                     <div style="flex:1">
-                      <myRich-Text v-model="argumentStr" placeholder="请输入陈述意见"></myRich-Text>
+                      <myRich-Text v-model="argumentStr" placeholder="请输入无效理由详情"></myRich-Text>
                     </div>
                   </div>
                   <div style="display:flex;justify-content: flex-end;margin-top:10px">
@@ -261,18 +351,14 @@
               </template>
             </div>
           </el-form-item>
-          <el-form-item label="陈述意见:">
-            <myRich-Text v-model="form.argumentStr" placeholder="请输入陈述意见"></myRich-Text>
+          <el-form-item label="权利人答辩意见:">
+            <!-- <myRich-Text v-model="form.argumentStr" placeholder="请输入陈述意见"></myRich-Text> -->
+            <editField type="2" v-model="form.argumentStr"></editField>
           </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-input type="textarea" :rows="1" v-model="form.comOptions"></el-input>
+            <!-- <myRich-Text v-model="form[item.fieldKey]" :placeholder="'请输入'+item.fieldName"></myRich-Text> -->
+            <editField :type="item.fieldKey.indexOf('courtOptions')!=-1?'1':'2'" v-model="form[item.fieldKey]"></editField>
           </el-form-item>
-          <el-form-item label="法院意见:">
-            <el-input type="textarea" :rows="1" v-model="form.courtOptions"></el-input>
-          </el-form-item> -->
         </el-form>
       </div>
       <div slot="footer" class="dialog-footer">
@@ -299,15 +385,21 @@ import InvalidDetails from './InvalidDetails/InvalidDetails.vue'
 import rightContent from './addFeatures/rightContent.vue'
 import AddOrEditField from './addOrEditField.vue'
 import { downLoad2 } from "@/utils";
+
+import editField from './editFields/index.vue'
+import {getInvalidType} from './mixins'
+
 export default {
   props: ['reportId','signPatentNo','reportType'],
+  mixins:[getInvalidType],
   components: {
     TableField,
     InvalidEvidence,
     InvalidFeatures,
     InvalidDetails,
     rightContent,
-    AddOrEditField
+    AddOrEditField,
+    editField
 },
   data() {
     const contentRule = (rule, value, callback) => {
@@ -323,6 +415,37 @@ export default {
       
     }
     return {
+      isMore:false,
+      windowHeight:window.screen.height - 400,
+      field:[
+        {
+          label:'prosecutor',
+          value:'起诉人意见'
+        },
+        {
+          label:'respondent',
+          value:'被诉人意见'
+        },
+        {
+          label:'institution',
+          value:'第三方机构意见'
+        },
+        {
+          label:'court',
+          value:'法院意见'
+        },
+        {
+          label:'comOptions',
+          value:'复审委意见'
+        },
+        {
+          label:'argumentStr',
+          value:'陈述意见'
+        }
+      ],
+      chooseField:'',
+      editFieldIs:[],
+      fieldValue:[],
       btnLoading:false,
       tableLoading:false,
       expands:[],
@@ -362,7 +485,7 @@ export default {
         // },
         {
           key: 'argumentStr',
-          name: '陈述意见',
+          name: '权利人答辩意见',
           hidden: false
         },
         // {
@@ -377,33 +500,7 @@ export default {
         // },
       ],//显示栏位管理
       tableField2:[],
-      invalidList: [
-        {
-          id: 0,
-          label: '权利要求不清楚',
-          value: 0
-        },
-        {
-          id: 1,
-          label: '说明书公开不充分',
-          value: 1
-        },
-        {
-          id: 2,
-          label: '不具备创造性',
-          value: 2
-        },
-        {
-          id: 3,
-          label: '不具备新颖性',
-          value: 3
-        },
-        {
-          id: 4,
-          label: '重复授权',
-          value: 4
-        },
-      ],//无效理由数组
+      invalidList: this.$constants.invalidList,//无效理由数组
       rightList: [],//权要数组
       proofGroups: [],//子组件新增的数据
       EvidenceList: [],//新增证据数组
@@ -419,6 +516,7 @@ export default {
       // tabRowIndex:null,//行角标
       // tabColumnIndex:null,//列角标
       rowData: '',
+      scrollTop:0
     }
   },
   watch: {
@@ -533,6 +631,217 @@ export default {
     getHeight() {
       this.tableHeight = document.getElementsByClassName('el-main')[0].clientHeight - 100
     },
+    //编辑单元格详情数据
+    editContents(field){
+      this.editFieldIs.push(field)
+      var fieldValue = JSON.parse(JSON.stringify(this.fieldValue))
+      if(field == 'conclusion'){
+        this.fieldValue[2] = fieldValue[0]
+      }else{
+        this.fieldValue[3] = fieldValue[1]
+      }
+      
+    },
+    //提交单元格详情数据
+    submitContents(field){
+      var fieldValue = JSON.parse(JSON.stringify(this.fieldValue))
+      var value = []
+      if(this.editFieldIs.length>1){
+        if(field == 'conclusion'){
+          value = [fieldValue[0],fieldValue[3]]
+        }else{
+          value = [fieldValue[2],fieldValue[1]]
+        }
+      }else{
+        value = [fieldValue[0],fieldValue[1]]
+      }
+      if(this.chooseField == 'argumentStr'){
+        // var arr = this.getData(this.form,'argumentStr')
+        this.form[this.chooseField] = JSON.stringify(value)
+      }else if(this.chooseField == 'comOptions'){
+        // var arr = this.getFieldData(this.form,'comOptions')
+        this.form[this.chooseField] = JSON.stringify(value)
+      }else{
+        var key = this.field.find(item=>{return this.chooseField.indexOf(item.label)!=-1}).label
+        var a = this.chooseField.replace(key,'')
+        var arr = this.getFieldData(this.form,a,key)
+        arr[key] = value
+        this.form[a] = JSON.stringify(arr)
+      }
+      var form = JSON.parse(JSON.stringify(this.form))
+      if (form.invalidName == 1) {
+        form.content == -1
+      }
+      form.reportId = this.reportId
+      form.fields = []
+      for(let key in this.form){
+        var index = this.tableField2.findIndex(item=>{
+          return item.fieldKey == key
+        })
+        if(index!=-1){
+          form.fields.push(
+            {
+              "invalidReasonId":form.id|| 0,
+              "fieldId": this.tableField2[index].id,
+              "fieldValue": form[key]
+            }
+          )
+        }
+      }
+      this.$api.updateInvalidReason(form).then(async (res) => {
+        if (res.code == 200) {
+          this.$message.success('更新成功')
+          var index = this.editFieldIs.indexOf(field) 
+          this.editFieldIs.splice(index,1)
+         await this.getInvalidReason()
+
+         var a = []
+          a[0] = this.tableData.slice(0,this.expands[0])
+          a[1]= this.tableData.slice(this.expands[0],this.tableData.length)
+          var arr = {
+            invalidName: [],
+            id:[]
+          }
+          a.forEach(item => {
+            var splitArr=this.getSpanArr(item)
+            arr.invalidName = arr.invalidName.concat(splitArr.invalidName)
+            arr.id = arr.id.concat(splitArr.id)
+          })
+          this.mergeObj=arr
+          var scrollTop = document.querySelector('.el-table__body-wrapper').scrollTop
+          this.refreshData = false
+          this.$nextTick(()=>{
+            this.refreshData = true
+            this.expands = JSON.parse(JSON.stringify(this.expands))
+            this.getHeight()
+            this.$nextTick(() => {
+              document.getElementsByClassName('el-table__body-wrapper')[0].scrollTop = scrollTop
+            })
+            
+          })
+        }
+      })
+    },
+    getFieldData(row,key,type){
+      var index = row.fields.findIndex(item=>item.fieldKey == key)
+        if(index!=-1){
+            try {
+              var obj=JSON.parse(row.fields[index].fieldValue);
+              if(typeof obj == 'object' && obj ){
+                  return obj;
+              }else{
+                if(key == 'comOptions'){
+                  return []
+                }else{
+                  return {}
+                }
+              }
+            } catch(e) {
+                  if(key == 'comOptions'){
+                    return [row.fields[index].fieldValue]
+                  }else{
+                    return {
+                      court:[row.fields[index].fieldValue]
+                    }
+                  }
+               
+            }
+        
+        }else{
+          if(key == 'comOptions'){
+            return []
+          }else{
+            return {}
+          }
+        }
+      
+    },
+    //取消单元格详情数据
+    cancelContents(field){
+      var index = this.editFieldIs.indexOf(field) 
+      this.editFieldIs.splice(index,1)
+      var fieldValue = JSON.parse(JSON.stringify(this.fieldValue))
+      if(field == 'conclusion'){
+        this.fieldValue[0] = fieldValue[2]
+      }else{
+        this.fieldValue[1] = fieldValue[3]
+      }
+    },
+    //查看单元格详情
+    checkDetails(row1,field, index,fieldKey){
+      var row = JSON.parse(JSON.stringify(row1))
+      var scrollTop = document.querySelector('.el-table__body-wrapper').scrollTop
+      this.editFieldIs=[]
+      this.fieldValue=[]
+      if(index){
+        var num = row.pId
+      }else{
+        var num = this.tableData.findLastIndex(item=>{
+          return item.id == row.id
+        })
+        row.pId = this.tableData[num].pId
+        num =  row.pId
+      }
+      if(this.chooseField == (fieldKey?(fieldKey+field):field) && row.pId == this.expands[0]){
+        this.chooseField = ''
+        this.getSpanArr(this.tableData)
+        row1.iconShow = false
+        this.refreshData = false
+          this.$nextTick(()=>{
+            this.refreshData = true
+            this.expands = []
+            this.getHeight()
+            this.$nextTick(() => {
+              document.getElementsByClassName('el-table__body-wrapper')[0].scrollTop = scrollTop
+            })
+            
+          })
+        return false
+      }
+      
+      row1.iconShow = true
+      this.getForm(row)
+      if(field != 'proofStr'){
+        if(field == 'argumentStr'){
+          this.fieldValue = this.getData(row,field)
+        }else if(field == 'comOptions'){
+          this.fieldValue = this.getData1(row,field,'0')
+        }else{
+          this.fieldValue = this.getData1(row,fieldKey,field)
+        }
+      }
+      var index1 = this.expands.findIndex(item=>{
+            return item == row.pId
+        })
+      this.chooseField = fieldKey?(fieldKey+field):field
+      if(index1!=-1){
+        
+      }else{
+        var a = []
+          a[0] = this.tableData.slice(0,num)
+          a[1]= this.tableData.slice(num,this.tableData.length)
+          var arr = {
+            invalidName: [],
+            id:[]
+          }
+          a.forEach(item => {
+            var splitArr=this.getSpanArr(item)
+            arr.invalidName = arr.invalidName.concat(splitArr.invalidName)
+            arr.id = arr.id.concat(splitArr.id)
+          })
+          this.mergeObj=arr
+          this.refreshData = false
+          this.$nextTick(()=>{
+            this.refreshData = true
+            this.expands = [row.pId]
+            this.getHeight()
+            this.$nextTick(() => {
+              document.getElementsByClassName('el-table__body-wrapper')[0].scrollTop = scrollTop
+            })
+            
+          })
+      }
+    },
     //展开行
     toogleExpand(row, index) {
       row.iconShow = !row.iconShow
@@ -577,7 +886,7 @@ export default {
     getData(row,key) {
       if (key == 'invalidName') {
         return this.invalidList.find(item => item.value ==row.invalidName).label
-      }else if (key == 'court') {
+      }else if (key == 'court') {//设计内容
         if (row.content == -1) {
           return '说明书'
         } else if (row.content != 0 && !row.content) {
@@ -585,19 +894,89 @@ export default {
         } else {
           return '权要'+(row.content + 1)
         }
-      } else {
+      }else if(key == 'argumentStr'){
+        if(row[key]){
+          // var a = row[key]
+          // console.log(a,1,row[key].replace('<p','<span').replace('</p>','</span>'))
+          // return row[key].replace(/<p/g,'<span').replace(/<\/p>/g,'</span>').replace(/<div/g,'<span').replace(/<\/div>/g,'</span>')
+          // return row[key]
+          try {
+            var obj=JSON.parse(row[key]);
+            if(typeof obj == 'object' && obj ){
+                return obj;
+            }else{
+                return [];
+            }
+ 
+          } catch(e) {
+               return [row[key]]
+          }
+        }else{
+          return ''
+        }
+        
+      }
+       else {
         return row[key]
       }
     },
-    getData1(row,key){
+    getData1(row,key,type){
       var index = row.fields.findIndex(item=>item.fieldKey == key)
-      if(index!=-1){
-        return row.fields[index].fieldValue
-      }else{
-        return ''
-      }
+        if(index!=-1){
+            try {
+              var obj=JSON.parse(row.fields[index].fieldValue);
+              if(typeof obj == 'object' && obj ){
+                if(type == 0){
+                  return obj
+                }else{
+                  if(obj[type]){
+                    return obj[type];
+                  }else{
+                    return [];
+                  }
+                  
+                }
+                  
+              }else{
+                  return [];
+              }
+  
+            } catch(e) {
+                if(type == 'court' || type == 0){
+                  return [row.fields[index].fieldValue]
+                }else{
+                  return []
+                }
+            }
+        
+        }else{
+          return []
+        }
       
     },
+
+    //查看信息详情
+    showDetails(e,row,key){
+      return false
+      // console.log(e.currentTarget,e.currentTarget.clientWidth,e.currentTarget.scrollWidth)
+      if(e.currentTarget.clientWidth<e.currentTarget.scrollWidth){
+        if(key){
+          var text = this.getData1(row,key)
+        }else{
+          var text = row
+        }
+        
+        this.$msgbox( {
+                dangerouslyUseHTMLString: true,
+                title:'详情',
+                message:text,
+                confirmButtonText: '关闭',
+                closeOnClickModal: true,
+                showCancelButton: false
+            } );
+
+      }
+    },
     // 请求无效理由和证据
    async getInvalidReason() {
     this.tableLoading = true
@@ -623,9 +1002,12 @@ export default {
           }else{
             this.tableData = []
           }
-          this.expands = []
+          // this.expands = []
           this.tableLoading = false
           this.getSpanArr(this.tableData) 
+          this.$nextTick(() => {
+            document.getElementsByClassName('el-table__body-wrapper')[0].scrollTop = this.scrollTop
+          })
         }
       }).catch(error=>{
         this.tableLoading = false
@@ -841,7 +1223,13 @@ export default {
       this.refreshTable()
     },
     //重置表格
-    refreshTable() {
+    refreshTable(val) {
+      if(val){
+        this.scrollTop = document.querySelector('.el-table__body-wrapper').scrollTop
+      }else{
+        this.scrollTop = 0
+      }
+      
       this.refreshData = false
       this.$nextTick(() => {
         this.refreshData = true
@@ -849,7 +1237,10 @@ export default {
     },
     //打开添加无效理由和证据弹窗
     addInvalid() {
-      this.title='添加无效理由和证据'
+      this.title='添加无效理由'
+      this.form =  {
+        proofGroups: []
+      },
       this.visible = true
     },
     //关闭添加无效理由和证据弹窗
@@ -889,6 +1280,28 @@ export default {
         this.$refs.form.validate((valid) => {
           if (valid) {
             if (!this.form.id) {
+              // if(this.isMore){
+              //   console.log(this.form)
+              //   var a = JSON.parse(JSON.stringify(this.form))
+              //  var that = this
+              //   a.content.forEach( item=>{
+              //     async function setMore(item){
+              //       var form = JSON.parse(JSON.stringify(that.form))
+              //       form.content = item
+              //       console.log(form)
+              //       await that.$api.addInvalidReason(form).then((res) => {
+              //         if (res.code == 200) {
+                        
+              //         }
+              //       })
+              //     }
+              //     setMore(item)
+              //   })
+              //   this.getInvalidReason()
+              //   this.refreshTable()
+              //   this.close()
+              //   return false
+              // }
               this.$api.addInvalidReason(this.form).then((res) => {
                 if (res.code == 200) {
                   this.getInvalidReason()
@@ -911,11 +1324,12 @@ export default {
         if (res.code == 200) {
           this.$message.success('更新成功')
           this.getInvalidReason()
-          this.refreshTable()
+          this.refreshTable(1)
           this.close()
         }
       })
     },
+
     deleteRow(row) {
       let id = [
         row.id,
@@ -929,6 +1343,7 @@ export default {
             if (res.code == 200) {
               this.$message.success('删除成功')
               this.getInvalidReason()
+              this.refreshTable(1)
             }
           })
         }).catch(() => {
@@ -941,6 +1356,11 @@ export default {
     },
     editRow(row) {
       this.title = "编辑无效理由和证据"
+      this.getForm(row)
+      this.changeInvalid(row.invalidName)
+      this.visible = true
+    },
+    getForm(row){
       var a = this.tableData.filter(item => {
         return item.id == row.id
       })
@@ -960,12 +1380,24 @@ export default {
       this.form.fields.forEach(item=>{
         this.form[item.fieldKey] = item.fieldValue
       })
-      this.visible = true
-    },
+    }
   },
 }
 </script>
 <style lang="scss">
+.invalid{
+    position: absolute;
+    right: 0;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    height: calc(100% - 100px);
+    min-height: 750px;
+    margin: auto !important;
+    .el-dialog__body{
+      height: calc(100% - 180px);
+    }
+}
 .addInvalid .el-dialog__body{
   padding-top:5px
 }
@@ -991,4 +1423,5 @@ export default {
     display: none;
   }
 }
+
 </style>

+ 189 - 0
RMS-FrontEnd/src/views/report/InvalidResponse/components/editFields/index.vue

@@ -0,0 +1,189 @@
+<template>
+  <div>
+    <div v-if="type==1">
+        <el-form :model="form" ref="form" class="demo-ruleForm">
+            <el-form-item label="起诉人意见:">
+                <div class="item">
+                    <div>结论:</div>
+                    <div class="item1">
+                        <myRich-Text v-model="form.prosecutor[0]" placeholder="请输入起诉人意见结论"></myRich-Text>
+                    </div>
+                </div>
+                <div class="item">
+                    <span>详情:</span>
+                    <span  class="item1">
+                        <myRich-Text v-model="form.prosecutor[1]" placeholder="请输入起诉人意见详情"></myRich-Text>
+                    </span>
+                </div>
+            </el-form-item>
+            <el-form-item label="被诉人意见:">
+                <div class="item">
+                    <span>结论:</span>
+                    <span  class="item1">
+                        <myRich-Text v-model="form.respondent[0]" placeholder="请输入被诉人意见结论"></myRich-Text>
+                    </span>
+                </div>
+                <div class="item">
+                    <span>详情:</span>
+                    <span class="item1">
+                        <myRich-Text v-model="form.respondent[1]" placeholder="请输入被诉人意见详情"></myRich-Text>
+                    </span>
+                </div>
+            </el-form-item>
+            <el-form-item label="第三方机构意见:">
+                <div class="item">
+                    <span>结论:</span>
+                    <span  class="item1">
+                        <myRich-Text v-model="form.institution[0]" placeholder="请输入第三方机构意见结论"></myRich-Text>
+                    </span>
+                </div>
+                <div class="item">
+                    <span>详情:</span>
+                    <span  class="item1">
+                        <myRich-Text v-model="form.institution[1]" placeholder="请输入第三方机构意见详情"></myRich-Text>
+                    </span>
+                </div>
+            </el-form-item>
+            <el-form-item label="法院意见:">
+                <div class="item">
+                    <span>结论:</span>
+                    <span class="item1">
+                        <myRich-Text v-model="form.court[0]" placeholder="请输入法院意见结论"></myRich-Text>
+                    </span>
+                </div>
+                <div class="item">
+                    <span>详情:</span>
+                    <span  class="item1">
+                        <myRich-Text v-model="form.court[1]" placeholder="请输入法院意见详情"></myRich-Text>
+                    </span>
+                </div>
+            </el-form-item>
+        </el-form>
+    </div>
+    <div v-if="type == 2">
+            <div class="item">
+                <span>结论:</span>
+                <span class="item1">
+                    <myRich-Text v-model="arr[0]" placeholder="请输入结论"></myRich-Text>
+                </span>
+            </div>
+            <div class="item">
+                <span>详情:</span>
+                <span  class="item1">
+                    <myRich-Text v-model="arr[1]" placeholder="请输入详情"></myRich-Text>
+                </span>
+            </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {
+    value:{
+
+    },
+    type:{
+
+    }
+  },
+  data() {
+    return {
+        form:{
+            prosecutor:[],
+            respondent:[],
+            institution:[],
+            court:[]
+        },
+        arr:[]
+    };
+  },
+  watch: {
+    form: {
+        handler(val) {
+            this.$emit('input',JSON.stringify(this.form))
+        },
+        deep: true,// 深度监听
+    },
+    arr(){
+        this.$emit('input',JSON.stringify(this.arr))
+    },
+    type(){
+        this.getValue()
+    },
+    value(){
+        this.getValue()
+    }
+  },
+  computed: {},
+  created() {},
+  mounted() {
+    this.getValue()
+  },
+  methods: {
+    getValue(){
+        try {
+            var obj=JSON.parse(this.value);
+            if(typeof obj == 'object' && obj ){
+                if(this.type == 1){
+                    this.form=obj
+                }
+                if(this.type == 2){
+                    this.arr=obj
+                }
+            }else{
+                return false;
+            }
+          } catch(e) {
+              if(this.type == 1){
+               this.form.court=[this.value,'']
+              }
+               if(this.type == 2){
+                this.arr=[this.value,'']
+              }
+          }
+    }
+  },
+  beforeDestroy(){
+    this.form={
+            prosecutor:[],
+            respondent:[],
+            institution:[],
+            court:[]
+        }
+        this.arr=[]
+  },
+};
+</script>
+<style lang="scss" scoped>
+.item{
+    display:flex;
+    align-items: center;
+    width: 100%;
+    padding: 5px 0;
+}
+.item1{
+    flex: 1;
+}
+.item1>*{
+  font-size: inherit !important;
+  color:#606266 !important;
+  font-family: "Microsoft YaHei" !important;
+}
+.item1 span{
+  font-size: inherit !important;
+  color:#606266 !important;
+  font-family: "Microsoft YaHei" !important;
+}
+.item1 font{
+  font-size: inherit !important;
+  color:#606266 !important;
+  font-family: "Microsoft YaHei" !important;
+  span{
+    font-size: inherit !important;
+    color:#606266 !important;
+    font-family: "Microsoft YaHei" !important;
+  }
+}
+</style>

+ 21 - 0
RMS-FrontEnd/src/views/report/InvalidResponse/components/mixins/index.js

@@ -0,0 +1,21 @@
+export const getInvalidType = {
+    data() {
+        return {
+            invalidType:null
+        }
+    },
+    methods: {
+        changeInvalid(val){
+            this.invalidType = this.invalidList.find(item=>{
+                return item.value == val
+            }).type
+            // if(val == '5'){
+            //     this.isMore = true
+            //     this.$set(this.form,'content',[])
+            // }else{
+            //     this.isMore = false
+            //     this.$set(this.form,'content','')
+            // }
+        }
+    },
+}

+ 5 - 5
RMS-FrontEnd/src/views/report/InvalidResponse/components/responseDialog.vue

@@ -96,7 +96,7 @@ export default {
     },
     // 弹窗确定
     finish() {
-      if (['0','5'].includes(this.form.processType)  ||(this.file && this.file.length > 0)) {
+      // if (['0','5'].includes(this.form.processType)  ||(this.file && this.file.length > 0)) {
         var formData = new FormData()
         this.form.reportId=this.reportId
         if (this.form.processType != 5) {
@@ -125,10 +125,10 @@ export default {
           // 上传非专利文献
           this.ProofByFile(formData)
         }
-      } else {
-        this.$message.error('请上传文件')
-        return false
-      }
+      // } else {
+      //   this.$message.error('请上传文件')
+      //   return false
+      // }
      
     },
     // 上传无效请求书

+ 43 - 2
RMS-FrontEnd/src/views/report/InvalidResponse/index.vue

@@ -111,6 +111,47 @@ export default {
 }
 </script>
 
-<style lang="scss" scoped>
-
+<style lang="scss">
+.MsoNormal{
+  font-size: inherit !important;
+  font-family: "Microsoft YaHei" !important;
+  color:#606266 !important;
+  font{
+   font-size: inherit !important; 
+   color:#606266 !important;
+  }
+}
+.MsoNormal>*{
+  font-family: "Microsoft YaHei" !important;
+  font-size: inherit !important;
+  color:#606266 !important;
+}
+.langHtml{
+  // overflow:hidden;
+  // text-overflow: ellipsis ;
+  // white-space: nowrap;
+  // cursor: pointer;
+  text-align: center;
+  width: calc(100% - 16px);
+}
+.langHtml>*{
+  font-size: inherit !important;
+  color:#606266 !important;
+  font-family: "Microsoft YaHei" !important;
+}
+.langHtml span{
+  font-size: inherit !important;
+  color:#606266 !important;
+  font-family: "Microsoft YaHei" !important;
+}
+.langHtml font{
+  font-size: inherit !important;
+  color:#606266 !important;
+  font-family: "Microsoft YaHei" !important;
+  span{
+    font-size: inherit !important;
+    color:#606266 !important;
+    font-family: "Microsoft YaHei" !important;
+  }
+}
 </style>

+ 24 - 19
RMS-FrontEnd/src/views/report/components/CreateReport.vue

@@ -18,7 +18,7 @@
             <el-form-item label="报告名称" prop="name">
               <el-input v-model="form.name" autocomplete="off" placeholder="请输入报告名称"></el-input>
             </el-form-item>
-            <el-form-item label="是否完成" v-if="!form.id"> 
+            <el-form-item label="是否完成" prop="status"  v-if="!form.id"> 
               <el-switch
                 v-model="form.status"
                 active-color="#13ce66"
@@ -28,15 +28,15 @@
                 :inactive-value="1">
               </el-switch>
             </el-form-item> 
-            <el-form-item label="核心结论" v-if="!form.id && form.status == 3">
+            <el-form-item label="核心结论" prop="conclusionIds" v-if="!form.id && form.status == 3">
               <el-checkbox-group v-model="form.conclusionIds">
                 <el-checkbox v-for="item in conclusion" :key="item.dictChildValue" :label="item.dictChildValue">{{ item.dictChildLabel }}</el-checkbox>
               </el-checkbox-group>
             </el-form-item>
-            <el-form-item label="结论论述" v-if="!form.id &&form.status == 3">
+            <el-form-item label="结论论述" prop="cronConclusion" v-if="!form.id &&form.status == 3">
               <el-input v-model="form.cronConclusion" type="textarea" placeholder="请输入结论论述"></el-input>
             </el-form-item>
-            <el-form-item label="后续跟进事项" v-if="!form.id &&form.status == 3 && $permission('/rms/matter')">
+            <el-form-item label="后续跟进事项" prop="followUps" v-if="!form.id &&form.status == 3 && $permission('/rms/matter')">
              <span v-if="form.followUps"><span v-for="item in form.followUps" :key="item.followUpName" style="margin-right:10px">{{ item.followUpName}}</span></span> 
               <span>
                 <el-popover
@@ -71,41 +71,41 @@
                 <el-option v-for="item in clientList" :key="item.id" :label="item.name" :value="item.id"></el-option>
               </el-select>
             </el-form-item> -->
-            <el-form-item label="产品/技术">
+            <el-form-item label="产品/技术"  prop="proTec">
               <el-input v-model="form.proTec" autocomplete="off" placeholder="请输入产品/技术"></el-input>
             </el-form-item>
-            <el-form-item label="应用场景">
+            <el-form-item label="应用场景" prop="scenarioList">
               <el-select v-model="form.scenarioList" multiple clearable placeholder="请选择应用场景" :popper-append-to-body="false">
                 <el-option v-for="item in dictsFromPASList" :key="item.id" :label="item.label" :value="item.value"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="关联报告">
+            <el-form-item label="关联报告" prop="associateReportName">
               <el-input v-model="form.associateReportName" autocomplete="off" placeholder="请输入关联报告"></el-input>
             </el-form-item>
-            <el-form-item label="需要复制的选项" v-show="form.track">
+            <el-form-item label="需要复制的选项" v-show="form.track" prop="copyIds">
               <el-select v-model="form.copyIds" multiple clearable placeholder="请选择需要复制的选项" :popper-append-to-body="false" @change="changeCopyIds">
                 <el-option v-for="item in copyList" :key="item.dictChildValue" :label="item.dictChildLabel" :value="item.dictChildValue"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="案件编号" v-if="form.type==7">
+            <el-form-item label="案件编号" v-if="form.type==7" prop="caseNumber">
               <el-input v-model="form.caseNumber" autocomplete="off" placeholder="请输入案件编号"></el-input>
             </el-form-item>
-            <el-form-item label="发文序号"  v-if="form.type==7">
+            <el-form-item label="发文序号"  v-if="form.type==7"  prop="issueNumber">
               <el-input v-model="form.issueNumber" autocomplete="off" placeholder="请输入发文序号"></el-input>
             </el-form-item>
-            <el-form-item label="发明创造名称"  v-if="form.type==7">
+            <el-form-item label="发明创造名称"  v-if="form.type==7" prop="inventionName">
               <el-input v-model="form.inventionName" autocomplete="off" placeholder="请输入发明创造名称"></el-input>
             </el-form-item>
-            <el-form-item label="专利权人"  v-if="form.type==7">
+            <el-form-item label="专利权人"  v-if="form.type==7" prop="currentApplication">
               <el-input v-model="form.currentApplication" autocomplete="off" placeholder="请输入专利权人"></el-input>
             </el-form-item>
-            <el-form-item label="无效宣告请求人"  v-if="form.type==7">
+            <el-form-item label="无效宣告请求人"  v-if="form.type==7" prop="invalidApplication">
               <el-input v-model="form.invalidApplication" autocomplete="off" placeholder="请输入无效宣告请求人"></el-input>
             </el-form-item>
             <el-form-item label="卷号" prop="volumeNumber" >
               <el-input v-model="form.volumeNumber" autocomplete="off" placeholder="请输入卷号"></el-input>
             </el-form-item>
-            <el-form-item :label="(!form.id &&form.status==3)?'上传报告文档':'上传附件'">
+            <el-form-item :label="(!form.id &&form.status==3)?'上传报告文档':'上传附件'"  prop="reportFiles" >
               <div v-if="form.reportFiles" class="upload-file">
                 <div v-for="item in form.reportFiles" style="margin:0;display:flex;justify-content:space-around;">
                   <p style="margin:0;width:calc(100% - 40px);overflow: hidden;white-space: nowrap;text-overflow:ellipsis;cursor: pointer">{{item.name?item.name+'.'+item.suffix:item.fileName}}</p> 
@@ -671,12 +671,16 @@ export default {
         var arr = this.copyList?this.copyList.map(item=>{return item.dictChildValue}):[]
         this.$set(this.form,'copyIds',arr)
       }
-      if(this.form.signPatentNo && !row.track){
-        this.$set(this.form,'name',this.form.signPatentNo + reportType)
+      if(!this.form.id){
+        if(this.form.signPatentNo && !row.track){
+          this.$set(this.form,'name',this.form.signPatentNo + reportType)
+        }
       }
+      
       this.showDialog = true
-      if(this.$refs.reportForm)
-      this.$refs.reportForm.resetFields();
+      // if(this.$refs.reportForm)
+      // this.$refs.reportForm.resetFields();
+
     },
     //获取专利号且填入报告名称
     getPatentNo(){
@@ -862,6 +866,7 @@ export default {
         this.$s.setSession('params', {})
         this.reportId=val
       }
+      
       this.copyIndex = {}
       this.matterType = null
       if (this.$refs.uploads) {
@@ -872,7 +877,7 @@ export default {
       }
       this.file = []
       if(this.$refs.reportForm){
-        this.$refs.reportForm.resetFields();
+          this.$refs.reportForm.resetFields();
       }
       
       this.showDialog = false

+ 11 - 2
RMS-FrontEnd/src/views/report/index.vue

@@ -435,8 +435,17 @@ export default {
       })
     },
     //追踪报告
-    trackReport(row){
-      var form = JSON.parse(JSON.stringify(row))
+   async trackReport(row){
+      if(row.type == 7){
+        var form = {}
+       await this.$api.reReportDetail({reportId:row.id}).then(response=>{
+          if(response.code == 200){
+            form = response.data
+          }
+        })
+      }else{
+        var form = JSON.parse(JSON.stringify(row))
+      }
       this.$set(form,'associateReportName',row.volumeNumber?row.volumeNumber:row.name)
       this.$set(form,'associateReportId',row.id)
       this.$set(form,'conclusionIds',[])

+ 27 - 1
RMS-FrontEnd/src/views/report/reportDetails/components/basicMessage.vue

@@ -17,6 +17,19 @@
                 <el-form-item label="核心结论论述:" prop="cronConclusion" v-if="form.status==3 && form.cronConclusion">
                   <span >{{ form.cronConclusion }} </span>
                 </el-form-item>
+
+                <el-form-item label="案件梳理意见:" prop="suggestion" v-if="form.type==7">
+                  <div  v-if="!form.editSuggestion" style="display:flex;align-items:center">
+                    <div v-html="form.suggestion" class="div_MAX_Height" style="color:#000000 !important;"></div>
+                    <span @click="editSuggestion(form)" v-if=" $reportPermission(reportId,[0,1])"><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="form.suggestion" placeholder="请输入案件梳理意见"></myRich-Text>
+                    <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit"></el-button>
+                    <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancelSuggestion(form)"></el-button>
+                  </div>
+                </el-form-item>
+
                 <el-form-item label="报告名称:" prop="name">
                     <span>{{form.name}}</span>
                 </el-form-item>
@@ -126,6 +139,19 @@ export default {
         this.getList()
     },
     methods: {
+
+      //编辑案件梳理意见
+      editSuggestion(row){
+        this.$set(row,'editSuggestion',!row.editSuggestion)
+        this.$set(row,'suggestion1',row.suggestion)
+      },
+      //取消案件梳理意见
+      cancelSuggestion(row){
+        this.$set(row,'editSuggestion',!row.editSuggestion)
+        this.$set(row,'suggestion',row.suggestion1)
+      },
+
+
       checkFile(item){
         return false;
         var arr = ['png','jpeg','bmp','jpg']
@@ -257,7 +283,7 @@ export default {
             this.$api.UpdateReport(formData).then(response=>{
               if(response.code == 200){
                 this.file = []
-                this.$message.success('附件修改成功')
+                this.$message.success('信息更新成功')
                 this.$refs.upload.clearFiles()
                 this.getList()
               }