Преглед изворни кода

Merge branch 'noveltySearch2' into product

zhuliu пре 7 месеци
родитељ
комит
2ef2604d64
28 измењених фајлова са 3016 додато и 426 уклоњено
  1. 5 1
      src/api/index.js
  2. 35 0
      src/api/newApi/litigation.js
  3. 49 0
      src/api/newApi/reportAffair.js
  4. 12 0
      src/assets/css/main.scss
  5. 11 0
      src/router/index.js
  6. 10 0
      src/utils/constants.js
  7. 10 1
      src/utils/permissions.js
  8. 51 0
      src/utils/personLazy.js
  9. 1451 0
      src/views/components/text.vue
  10. 2 1
      src/views/project/patentDetails/components/patentMessage/history/InvalidHistory.vue
  11. 15 2
      src/views/report/InvalidResponse/components/IPREmail/IPREmail.vue
  12. 26 4
      src/views/report/InvalidResponse/components/IPREmail/components/dialog/addOrEditIPREmail.vue
  13. 9 4
      src/views/report/InvalidResponse/components/dialog/IPREmail.vue
  14. 161 47
      src/views/report/InvalidResponse/components/dialog/editFlowPath.vue
  15. 132 37
      src/views/report/InvalidResponse/components/flowPath/flowPath.vue
  16. 67 0
      src/views/report/InvalidResponse/components/litigation/components/form.vue
  17. 30 0
      src/views/report/InvalidResponse/components/litigation/index.vue
  18. 232 0
      src/views/report/InvalidResponse/components/litigation/litigation.vue
  19. 19 1
      src/views/report/InvalidResponse/components/table/IPREmail.vue
  20. 1 1
      src/views/report/components/details/components/basicMessage.vue
  21. 230 35
      src/views/report/components/details/components/basicMessage_official.vue
  22. 43 28
      src/views/report/components/dialog/addAndEditReport.vue
  23. 346 0
      src/views/report/components/dialog/components/handelPersonTable.vue
  24. 4 4
      src/views/report/components/dialog/cronConclusion.vue
  25. 18 253
      src/views/report/components/dialog/handlePerson.vue
  26. 39 5
      src/views/report/components/index.vue
  27. 1 0
      src/views/report/components/view/table.vue
  28. 7 2
      src/views/task/components/examine/components/projectMessage.vue

+ 5 - 1
src/api/index.js

@@ -23,6 +23,8 @@ import translate from "./newApi/translate";
 import noveltySearch from "./newApi/noveltySearch";
 import examine from "./newApi/examine";
 import IPREmail from "./newApi/IPREmail";
+import litigation from "./newApi/litigation";
+import reportAffair from "./newApi/reportAffair";
 
 export default {
   ...client,
@@ -46,5 +48,7 @@ export default {
   ...translate,
   ...noveltySearch,
   ...examine,
-  ...IPREmail
+  ...IPREmail,
+  ...litigation,
+  ...reportAffair
 }

+ 35 - 0
src/api/newApi/litigation.js

@@ -0,0 +1,35 @@
+import axios from "@/utils/axios";
+// 行诉模块
+export default {
+    /**
+     *添加或更新行政一审
+     * @param {*} data 
+     * {
+            caseNumber:案号,
+            caseFieldTime:立案时间,
+            plaintiff:原告,
+            defendant:被告,
+            thirdPerson:第三人,
+            plaintiffAgent:原代理人,
+            thirdAgent:第三代理人,
+            panelMember:合议庭成员,
+            type:1一审 2二审(必填),
+            projectId:项目id(必填),
+        }
+     * @return {*} 
+     */
+    addOrUpdateLitigation(data){
+        return axios.post('/xiaoshi/litigation/addOrUpdate', data)
+    },
+    /**
+    * 查询行政一审
+    * @param {*} data 
+    * {
+           projectId:项目id(必填),
+       }
+    * @return {*} 
+    */
+    queryLitigation(data){
+       return axios.post('/xiaoshi/litigation/query', data)
+   },
+};

+ 49 - 0
src/api/newApi/reportAffair.js

@@ -0,0 +1,49 @@
+import axios from "@/utils/axios";
+// 官方无效报告案件流程
+export default {
+    /**
+     * 获取可以添加的文档类型
+     * @param {*} data 
+     * @return {*} 
+     */
+    queryAssoCasePhaseList(data){
+        return axios.post('/xiaoshi/reportAffair/queryAssoCasePhaseList', data)
+    },
+    /**
+     * 添加案件文档接口
+     * @param {*} data 
+     * {
+            occurredTime:时间,
+            fileGuids:文件guid列表,
+            description:描述,
+            assoasePhaseId:案件阶段id,
+            caseChildPhase:自定义案件子阶段,
+            ifSendEmail:是否发送邮箱,
+            extraEmailDTOS:自定义邮箱,
+            projectId:项目id(必填),
+        }
+     * @return {*} 
+     */
+    addReportAffairCase(data){
+        return axios.post('/xiaoshi/reportAffair/addReportAffairCase', data)
+    },
+    /**
+     * 添加案件文档接口
+     * @param {*} data 
+     * {
+            id:案件流程id,
+            occurredTime:时间,
+            fileGuids:文件guid列表,
+            description:描述,
+            assoasePhaseId:案件阶段id,
+            caseChildPhase:自定义案件子阶段,
+            ifSendEmail:是否发送邮箱,
+            extraEmailDTOS:自定义邮箱,
+            projectId:项目id(必填),
+        }
+     * @return {*} 
+     */
+    updateReportAffairCase(data){
+        return axios.post('/xiaoshi/reportAffair/updateReportAffairCase', data)
+    },
+};

+ 12 - 0
src/assets/css/main.scss

@@ -203,6 +203,11 @@
     text-align: left;
   }
 }
+.currentCheckbox{
+  .el-checkbox{
+    width: fit-content !important;
+  }
+}
 .noWord{
   .el-checkbox__label{
     width: 0px;
@@ -241,4 +246,11 @@
 .pizhuLightHeigh{
   position: relative;
   background: #409EFF !important;
+}
+
+.textEmpty{
+  &:empty::after{
+    content: "无数据";
+    color:#c2c5c9;
+  }
 }

+ 11 - 0
src/router/index.js

@@ -721,6 +721,17 @@ const routes = [
           },
         ],
       },
+      //标注库
+      {
+        path: "/ceshi",
+        name:'ceshi',
+        meta: {
+          title: '测试',
+          sign: 'ceshi',
+          allowPath:true
+        },
+        component: () => import('@/views/components/text.vue'),
+      },
     ]
   },
 ]

+ 10 - 0
src/utils/constants.js

@@ -260,5 +260,15 @@ taskStatus:{
   4: '缺少资料',
   5: '取消',
   6: '确认结果中',
+},
+
+//法院判决书行诉结果
+litigationResult:{
+  1:"一审驳回原告诉请",
+  2:'一审撤销或部分撤销判决',
+  3:"一审撤销重作判决",
+  4:"二审驳回上诉请求",
+  5:"二审依法改判或撤销或变更",
+  6:"二审查清事实后改判",
 }
 }

+ 10 - 1
src/utils/permissions.js

@@ -34,7 +34,7 @@ export default {
    * 项目权限
    * @param {*} projectId 项目ID
    */
-  async projectPermission(projectId){
+  async projectPermission(projectId,roles){
     const user = Store.state.user.userinfo
     if(user.roleType == 1 || user.roleType == 2){
       return true
@@ -42,6 +42,7 @@ export default {
     if(!projectId){
       return true
     }
+    
     var data = {}
     // if(sessionStorage.getItem('projectPermission')){
     //   data = JSON.parse(sessionStorage.getItem('projectPermission'))
@@ -61,6 +62,14 @@ export default {
     if(!obj){
       return 0
     }
+    if(roles){
+      if(typeof roles == 'string'){
+        roles = [roles]
+      }
+      return roles.some(element1 => 
+        obj.includes(element1)
+      );
+    }
     // 0创建人 1负责人 3被分享人 2参与人
     if(obj.includes('0')||obj.includes('1')||obj.includes('2')){
       return true

+ 51 - 0
src/utils/personLazy.js

@@ -0,0 +1,51 @@
+export default {
+    data() {
+        return {
+            //人员列表懒加载
+            personnelList: {
+                queryParams: {
+                current: 1,
+                size: 10
+                },
+                data: []
+            },
+        }
+    },
+    methods: {
+        /**
+         * 人员
+         */
+        // 人员列表远程搜索
+        remoteMethodPerson(query) {
+            this.personnelList.data = []
+            this.personnelList.queryParams.current = 1
+            this.personnelList.queryParams.name = query
+            this.getPermissionPersonnel(1)
+        },
+        //获取焦点
+        focusPerson(value = ''){
+            if(this.personnelList.data && this.personnelList.data.length){
+                return
+            }
+            this.remoteMethodPerson(value||'')
+        },
+        // 获取所有人员列表懒加载
+        lazyLoadingPerson() {
+            if (this.personnelList.queryParams.current * this.personnelList.queryParams.size >= this.personnelList.queryParams.total) {
+            return false
+            }
+            this.personnelList.queryParams.current += 1
+            this.getPermissionPersonnel()
+        },
+        //获取所有人员列表(修改不要一次性获取,可以使用懒加载加远程搜索 )
+        async getPermissionPersonnel(type) {
+            this.personnelList.loading = true;
+            await this.$api.getPermissionPersonnel(this.personnelList.queryParams).then((response) => {
+            if (response.code == 200) {
+                this.personnelList.loading = false;
+                this.personnelList.data.push(...response.data)
+            }
+            })
+        },
+    },
+}

Разлика између датотеке није приказан због своје велике величине
+ 1451 - 0
src/views/components/text.vue


+ 2 - 1
src/views/project/patentDetails/components/patentMessage/history/InvalidHistory.vue

@@ -36,7 +36,8 @@
                 </el-table-column>
                 <el-table-column label="结果" prop="result" align="center">
                     <template slot-scope="scope">
-                        <span>{{scope.row.result}}</span>
+                        <span v-if="scope.row.flowType == 16 || scope.row.flowType == 26">{{$constants.litigationResult[scope.row.result]}}</span>
+                        <span v-else>{{scope.row.result}}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="附件" prop="reportFiles" align="center">

+ 15 - 2
src/views/report/InvalidResponse/components/IPREmail/IPREmail.vue

@@ -67,6 +67,10 @@ export default {
         addOrEditIPREmailDialog
     },
     props: {
+        type:{
+            type:[String,Number],
+            default:"1"
+        }
     },
     data() {
         return {
@@ -74,6 +78,7 @@ export default {
             queryParams:{
                 current:1,
                 size:10,
+                type:this.type,
                 ...defaultSearchForm,
             },
             total:0,
@@ -84,7 +89,12 @@ export default {
             }
         };
     },
-    watch: {},
+    watch: {
+        type(){
+            this.queryParams.type = this.type
+            this.handleCurrentChange(1)
+        },
+    },
     computed: {
         userinfo(){
             return this.$s.getObj('userinfo')
@@ -136,7 +146,10 @@ export default {
         },
         //添加IPR邮箱
         add(){
-            this.$refs.addOrEditIPREmailDialog.open({},'add')
+            let form = {
+                type:this.type
+            }
+            this.$refs.addOrEditIPREmailDialog.open(form,'add')
         },
         //编辑IPR邮箱
         edit(row){

+ 26 - 4
src/views/report/InvalidResponse/components/IPREmail/components/dialog/addOrEditIPREmail.vue

@@ -2,6 +2,9 @@
   <div>
     <el-dialog  :title="title" :visible.sync="showDialog" width="600px" :close-on-click-modal="false"  :before-close="handleClose" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-position="left" label-width="120px">
+        <el-form-item label="报告类型:" prop="reportTypes">
+            <div>{{ getReportTypeNames() }}</div>
+        </el-form-item>
         <el-form-item label="姓名:" prop="name">
             <el-input v-model="form.name" placeholder="请输入姓名"></el-input>
         </el-form-item>
@@ -9,8 +12,13 @@
         <el-form-item label="邮箱:" prop="email">
             <el-input v-model="form.email" placeholder="请输入邮箱"></el-input>
         </el-form-item>
-        <el-form-item label="报告类型:" prop="reportTypes">
-            <div>{{ getReportTypeNames() }}</div>
+        <el-form-item label="关联账号:" prop="assoAccountId">
+          <el-select style="width:100%" v-model="form.assoAccountId" placeholder="请选择账号" filterable remote  @focus="focusPerson(form.accountName)"
+            :popper-append-to-body="false" :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson"
+            :loading="personnelList.loading">
+            <el-option v-for="item in personnelList.data" :key="parseInt(item.id)" :label="item.name"
+              :value="parseInt(item.id)"></el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="默认发送邮箱:" prop="ifDefault">
           <el-switch
@@ -21,6 +29,9 @@
               :inactive-value="false">
             </el-switch>
         </el-form-item>
+        <el-form-item label="备注:" prop="remark">
+            <el-input v-model="form.remark" placeholder="请输入备注"></el-input>
+        </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
           <el-button size="small" @click="handleClose">取 消</el-button>
@@ -38,9 +49,11 @@ const defaultForm={
   ifDefault:false,
   reportTypes:[7],
 }
+import personLazy from '@/utils/personLazy'
 export default {
   components: {},
   props: {},
+  mixins:[personLazy],
   data() {
     return {
       form:{},
@@ -60,6 +73,7 @@ export default {
       showDialog:false,
       model:'add',
       btnLoading:false,
+      
     };
   },
   watch: {},
@@ -92,10 +106,17 @@ export default {
       }
       return names.join('、')
     },
-    open(form={},model='add'){
+    async open(form={},model='add'){
       this.initData(form)
       this.model = model
-      this.title = model=='add'?'添加IPR邮箱':'修改IPR邮箱'
+      let types = {
+        1:'IPR',
+        2:"代理所"
+      }
+      this.title = model=='add'?`添加${types[this.form.type]}邮箱`:`修改${types[this.form.type]}邮箱`
+      if(form.assoAccountId){
+        this.focusPerson(form.accountName)
+      }
       this.showDialog = true
     },
     //初始化数据
@@ -134,6 +155,7 @@ export default {
           }
       });
     },
+   
   },
 };
 </script>

+ 9 - 4
src/views/report/InvalidResponse/components/dialog/IPREmail.vue

@@ -1,8 +1,12 @@
 <template>
   <div>
-    <el-dialog  title="IPR邮箱" :visible.sync="visible" width="1200px" :close-on-click-modal="false"  :before-close="handleClose" append-to-body>
-      <div style="height:calc(100vh - 250px)">
-        <IPREmail v-if="visible"></IPREmail>
+    <el-dialog  title="联系邮箱" :visible.sync="visible" width="1200px" :close-on-click-modal="false"  :before-close="handleClose" append-to-body>
+      <el-tabs v-model="activeName">
+        <el-tab-pane label="IPR邮箱" name="1"></el-tab-pane>
+        <el-tab-pane label="代理所邮箱" name="2"></el-tab-pane>
+      </el-tabs>
+      <div style="height:calc(100vh - 304px)">
+        <IPREmail v-if="visible" :type="activeName"></IPREmail>
       </div>
     </el-dialog>
   </div>
@@ -17,7 +21,8 @@ export default {
   props: {},
   data() {
     return {
-        visible:false
+        visible:false,
+        activeName:'1'
     };
   },
   watch: {},

+ 161 - 47
src/views/report/InvalidResponse/components/dialog/editFlowPath.vue

@@ -2,10 +2,23 @@
     <div class="responseDialog">
       <el-dialog  :title="(form.id?'编辑':'添加') +type.title" :visible.sync="showDialog" width="700px" :close-on-click-modal="false"  :before-close="handleClose" append-to-body>
         <el-form  :model="form" :rules="rules" ref="form" label-width="120px" label-position="left">
+          <el-form-item label="案件阶段">
+            <span>{{ type.casePhase }}</span>
+          </el-form-item>
+          <template v-if="type.type==17 || type.type==27 ||type.type ==28">
+            <el-form-item label="案件子阶段">
+              <el-input  v-model="form.caseChildPhase" autocomplete="off" placeholder="请输入案件子阶段名称"></el-input>
+            </el-form-item>
+          </template>
+          <template v-else>
+            <el-form-item label="案件子阶段">
+              <span>{{ type.caseChildPhase }}</span>
+            </el-form-item>
+          </template>
           <el-form-item :label="type.time">
             <el-date-picker v-model="form[type.timeField]" value-format="yyyy-MM-dd" type="date"  placeholder="请选择时间" style="width: 100%;"></el-date-picker>
           </el-form-item>
-          <template v-if="type.type==0">
+          <template v-if="type.type==6">
             <el-form-item  label="地点">
               <el-input  v-model="form.position" autocomplete="off" placeholder="请输入地点"></el-input>
             </el-form-item>
@@ -23,7 +36,7 @@
                 </el-form-item>
             </div>
           </template>
-          <template v-if="type.type ==3">
+          <template v-if="type.type ==7">
             <div>
                 <el-form-item label="决定书号码">
                     <el-input v-model="form.fileNo" autocomplete="off" placeholder="请输入决定书号码"></el-input>
@@ -34,17 +47,25 @@
                 <el-form-item label="决定要点">
                     <el-input v-model="form.decisionKey" autocomplete="off" placeholder="请输入决定要点"></el-input>
                 </el-form-item>
-               
+                <el-form-item label="无效结果" prop="cronIds">
+                  <el-checkbox-group v-model="form.cronIds" class="currentCheckbox">
+                      <el-checkbox v-for="item in conclusion" :key="parseInt(item.value)" :label="parseInt(item.value)">{{
+                      item.label }}</el-checkbox>
+                  </el-checkbox-group>
+                </el-form-item>
             </div>
           </template>
-          <template v-if="type.type ==3 || type.type ==5">
+          <template v-if="type.type ==16 || type.type ==26">
             <div>
-              <el-form-item label="结论">
-                    <el-input v-model="form.conclusion" autocomplete="off" placeholder="请输入结论"></el-input>
+              <el-form-item label="行诉结果" prop="conclusion">
+                  <el-radio-group v-model="form.conclusion">
+                      <el-radio v-for="(value,key) in litigationResult[type.type]" :key="key" :label="key">{{
+                        value }}</el-radio>
+                  </el-radio-group>
                 </el-form-item>
             </div>
           </template>
-          <template v-if="type.type ==8">
+          <template v-if="type.type ==17 || type.type ==27 ||type.type ==28">
             <div>
                 <el-form-item label="文档名称">
                   <el-input v-model="form.documentName" autocomplete="off" placeholder="请输入文档名称"></el-input>
@@ -108,7 +129,7 @@
   
 <script>
 import addEmailVue from '../IPREmail/components/dialog/addEmail.vue'
-const defaultSendEmail = ['0','1','3','4','5','7','8']
+const defaultSendEmail = ['6','1','7','8','16','3','17','27','28']
   export default {
     components:{
       addEmailVue
@@ -123,13 +144,23 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
         showDialog: false,
         loading: false,
         form: {},
-        rules: {},
+        rules: {
+          name: [
+            { required: true, message: '请输入案件子阶段名称', trigger: 'blur' }
+          ],
+          cronIds:[
+            { required: true, message: '请选择无效结果', trigger: 'change' }
+          ],
+          conclusion:[
+            { required: true, message: '请选择行诉结果', trigger: 'change' }
+          ]
+        },
         file: [],
         isFinish: false,
         type:{},
         types:{
-            0:{
-                type:'0',
+            6:{
+                type:'6',
                 title:'口审记录',
                 time:'口审时间',
                 timeField:'oralTrailTime'
@@ -140,65 +171,124 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
                 time:'提出无效时间',
                 timeField:'invalidRequestDate'
             },
-            2:{
-                type:'2',
+            5:{
+                type:'5',
                 title:'陈述意见书',
                 time:'陈述答复时间',
                 timeField:'stateReplyTime'
             },
-            3:{
-                type:'3',
+            7:{
+                type:'7',
                 title:'无效决定书',
                 time:'无效决定时间',
                 timeField:'invalidDecisionTime'
             },
-            4:{
-                type:'4',
+            8:{
+                type:'8',
                 title:'行政诉讼书',
                 time:'发起诉讼时间',
                 timeField:'proceedingTime'
             },
-            5:{
-                type:'5',
+            18:{
+                type:'18',
+                title:'行政诉讼书',
+                time:'发起诉讼时间',
+                timeField:'proceedingTime'
+            },
+            16:{
+                type:'16',
                 title:'行政诉讼判决书',
                 time:'法院判决时间',
                 timeField:'judgmentTime'
             },
-            6:{
-                type:'6',
+            26:{
+                type:'26',
+                title:'行政诉讼判决书',
+                time:'法院判决时间',
+                timeField:'judgmentTime'
+            },
+            2:{
+                type:'2',
                 title:'权要修改记录',
                 time:'权要修改时间',
                 timeField:'claimHistoryTime'
             },
-            7:{
-                type:'7',
+            3:{
+                type:'3',
                 title:'补充证据和理由记录',
                 time:'补充证据和理由时间',
                 timeField:'supplyEvidenceTime'
             },
-            8:{
-                type:'8',
+            17:{
+                type:'17',
+                title:'其他文档',
+                time:'文档时间',
+                timeField:'documentTime'
+            },
+            27:{
+                type:'27',
+                title:'其他文档',
+                time:'文档时间',
+                timeField:'documentTime'
+            },
+            28:{
+                type:'28',
                 title:'其他文档',
                 time:'文档时间',
                 timeField:'documentTime'
             },
-        },
-        rules: {
-          fileName:[{required : false , message:'请输入文献名称',trigger:'blur'}]
         },
         sendEmailPerson:[],
         otherPerson:[],
+        litigationResult:{
+          16:{},
+          26:{}
+        }
       }
     },
     watch: {
     },
+    computed:{
+      conclusion() {
+        return this.$store.state.dictMessage.dictMessage.REINVALID_ASSESS
+      },
+    },
+    created() {
+      let litigationResult = this.$constants.litigationResult
+      let r16 = ['1','2','3']
+      let r26 = ['4','5','6']
+      for(let i = 0;i<r16.length;i++){
+        this.litigationResult['16'][r16[i]] = litigationResult[r16[i]]
+      }
+      for(let i = 0;i<r26.length;i++){
+        this.litigationResult['26'][r26[i]] = litigationResult[r26[i]]
+      }
+    },
     mounted() {
   
     },
     methods: {
         open(type,form) {
-            this.type = this.types[type]
+            let type1 = this.types[type.flowType] || {
+              type:type.flowType,
+              time:'发文日',
+              timeField:'occurredTime'
+            }
+            this.type = {
+              ...type1,
+              title : type.flowName,
+              ...type
+            }
+            if(!form.cronIds){
+              form.cronIds = []
+            }
             this.form = JSON.parse(JSON.stringify(form))
+            if(type.id){
+              this.form.assoCasePhaseId = type.id
+            }
+            if(type.flowType){
+              this.form.flowType = type.flowType
+            }
             this.otherPerson = []
             if(this.$permission.FunPermissions('xiaoshi/sendEmail')){
               if(defaultSendEmail.indexOf(type+'')!=-1){
@@ -292,34 +382,41 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
                       return false
                     }
                     this.loading = true
-                    switch(this.type.type){
-                        case '0':
+                    switch(this.type.type + ''){
+                        case '6':
                             this.addOralTrail()
                             break;
                         case '1':
                             this.addInvalidProcess()
                             break;
-                        case '2':
+                        case '5':
                             this.addStateOpinion()
                             break;
-                        case '3':
+                        case '7':
                             this.addInvalidDecisionFile()
                             break;
-                        case '4':
+                        case '8':
+                        case '18':
                             this.addAdminProceed()
                             break;
-                        case '5':
+                        case '16':
+                        case '26':
                             this.addAdminProceedJudgment()
                             break;
-                        case '6':
+                        case '2':
                             this.addPatentClaimHistory()
                             break;
-                        case '7':
+                        case '3':
                             this.addSupplyEvidence()
                             break;
-                        case '8':
+                        case '17':
+                        case '27':
+                        case '28':
                             this.addOtherDocuments()
                             break;
+                        default:
+                            this.addReportAffairCase()
+                          break;
                     }
                 } else {
                     return false;
@@ -327,6 +424,23 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
             });
             
         },
+        //其他文档信息的上传
+        addReportAffairCase(){
+          var api = ''
+          if(this.form.id){
+            api = 'updateReportAffairCase'
+          }else{
+            api = 'addReportAffairCase'
+          }
+          this.$api[api](this.form).then(response=>{
+            if(response.code == 200){
+              this.$emit('save',this.form)
+              this.handleClose()
+            }
+          }).catch(error=>{
+            this.loading = false
+          }) 
+        },
         // 上传无效请求书
         addInvalidProcess() {
           var api = ''
@@ -337,7 +451,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{
@@ -354,7 +468,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{
@@ -371,7 +485,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{
@@ -388,7 +502,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{
@@ -405,7 +519,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{
@@ -422,7 +536,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{
@@ -439,7 +553,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{
@@ -456,7 +570,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{
@@ -473,7 +587,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
           }
           this.$api[api](this.form).then(response=>{
             if(response.code == 200){
-              this.$emit('save',true)
+              this.$emit('save',this.form)
               this.handleClose()
             }
           }).catch(error=>{

+ 132 - 37
src/views/report/InvalidResponse/components/flowPath/flowPath.vue

@@ -3,9 +3,9 @@
     <!-- 无效流程 -->
     <div style="display: flex;justify-content: end;margin-bottom: 10px;" v-if="!taskId">
       <!-- <el-button type="primary" size="small" @click="addOption">添加陈述意见</el-button> -->
-      <el-dropdown @command="handleCommand">
+      <!-- <el-dropdown @command="handleCommand">
         <el-button type="primary" size="small">
-          添加无效请求书<i class="el-icon-arrow-down el-icon--right"></i>
+          上传案件子阶段文件<i class="el-icon-arrow-down el-icon--right"></i>
         </el-button>
         <el-dropdown-menu slot="dropdown" >
           <el-dropdown-item command="1">添加无效请求书</el-dropdown-item>
@@ -18,38 +18,59 @@
           <el-dropdown-item command="5">添加行政诉讼判决书</el-dropdown-item>
           <el-dropdown-item command="8">添加其他文档</el-dropdown-item>
         </el-dropdown-menu>
+      </el-dropdown> -->
+      <el-dropdown trigger="click">
+        <el-button type="primary" size="small">
+          上传案件子阶段文件<i class="el-icon-arrow-down el-icon--right"></i>
+        </el-button>
+        <el-dropdown-menu slot="dropdown" >
+          <template v-for="(menu,index) in menuList">
+            <el-dropdown-item :key="'menu1'+index" v-if="menu.children && menu.children.length">
+              <el-dropdown placement="left-start" >
+                  <span>{{ menu.casePhase }}<i class="el-icon-arrow-right"></i></span>
+                <el-dropdown-menu slot="dropdown" >
+                  <el-dropdown-item v-for="menuItem in menu.children" :key="menuItem.id" :command="menuItem.id" @click.native="handleCommand(menuItem)">添加{{menuItem.flowName}}</el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+            </el-dropdown-item>
+            <el-dropdown-item v-else :key="'menu2'+index" :command="menu.id" @click.native="handleCommand(menu)">添加{{menu.casePhase}}</el-dropdown-item>
+          </template>
+        </el-dropdown-menu>
+        
       </el-dropdown>
+      
     </div>
     <div >
-      <el-timeline>
+      <el-timeline class="flowPath_timeline">
         <el-timeline-item v-for="item in timelineList" :timestamp="item.occurredTime" :key="item.id" placement="top">
+          <div v-if="item.showCasePhase" class="timelinePosition">{{ item.casePhase }}</div>
           <el-card>
             <div>
-              <span>{{ timeType[item.affairType] }}:</span><span>{{ item.occurredTime}}</span>
+              <span>{{ timeType[item.flowType] || '发文日' }}:</span><span>{{ item.occurredTime}}</span>
               <div style="float: right;">
                   <span style="margin-right: 10px;"  @click="edit(item)"><el-link>编辑</el-link></span>
                   <span  @click="dele(item)"><el-link>删除</el-link></span>
               </div>
             </div>
             
-            <div v-if="item.affairType==0">
+            <div v-if="item.flowType==6">
               <p><span>地点:</span><span>{{ item.oralTrailVO.position }}</span></p>
               <p><span>参与人:</span><span>{{ item.oralTrailVO.participator }}</span></p>
               <p><span>口审笔录描述:</span><span>{{ item.oralTrailVO.recordDescription }}</span></p>
             </div>
-            <div v-if="item.affairType==1">
+            <div v-if="item.flowType==1">
               <p><span>发文日:</span><span>{{ item.invalidRequestFileVO.invalidFileSendDate }}</span></p>
             </div>
-            <div v-if="item.affairType==3">
+            <div v-if="item.flowType==7">
               <p><span>决定书号码:</span><span>{{ item.invalidDecisionFileVO.fileNo }}</span></p>
               <p><span>法律依据:</span><span>{{ item.invalidDecisionFileVO.legalBase }}</span></p>
               <p><span>决定要点:</span><span>{{ item.invalidDecisionFileVO.decisionKey }}</span></p>
-              <p><span>结论:</span><span>{{ item.invalidDecisionFileVO.conclusion }}</span></p>
+              <p><span>无效结果:</span><span>{{ item.invalidDecisionFileVO.cronNames?item.invalidDecisionFileVO.cronNames.join('、'):'' }}</span></p>
             </div>
-            <div v-if="item.affairType==5">
-              <p><span>结论:</span><span>{{ item.judgementVO.conclusion }}</span></p>
+            <div v-if="item.flowType==16||item.flowType==26">
+              <p><span>行诉结果:</span><span>{{ litigationResult[item.judgementVO.conclusion] }}</span></p>
             </div>
-            <div v-if="item.affairType==8">
+            <div v-if="item.flowType==17||item.flowType==27||item.flowType==28">
               <p><span>文档名称:</span><span>{{ item.otherDocumentsVO.documentName }}</span></p>
             </div>
             <div>
@@ -68,7 +89,7 @@
       </el-timeline>
     </div>
 
-    <responseDialog ref="responseDialog" :projectId="projectId" @save="getList"></responseDialog>
+    <responseDialog ref="responseDialog" :projectId="projectId" @save="saveFlowPath"></responseDialog>
   </div>
 </template>
 
@@ -89,30 +110,80 @@ export default {
       queryParams: {},
       timeType: {
         '1': '提出无效时间',
-        '2': '陈述答复时间',
-        '0': '口审时间',
-        '3': '无效决定时间',
-        '4': '发起诉讼时间',
-        '5': '法院判决时间',
-        '6':  '权要修改时间',
-        '7':  '补充证据和理由时间',
-        '8':'文档时间'
+        '5': '陈述答复时间',
+        '6': '口审时间',
+        '7': '无效决定时间',
+        '8': '发起诉讼时间',
+        '18': '发起诉讼时间',
+        '16': '法院判决时间',
+        '26': '法院判决时间',
+        '2':  '权要修改时间',
+        '3':  '补充证据和理由时间',
+        '17':' 文档时间',
+        '27':' 文档时间',
+        '28':' 文档时间',
       },
+      menuList:[],
+      currentMenuList:[],
+      litigationResult:this.$constants.litigationResult
     }
   },
   computed: {},
   watch: {},
+  async created() {
+    await this.getMenuList()
+  },
   mounted() {
     this.getList()
   },
   methods: {
-
+    saveFlowPath(form){
+      this.getList()
+      this.$emit('changeFlowPath',form)
+    },
+    async getMenuList(){
+      await this.$api.queryAssoCasePhaseList().then(response=>{
+        if(response.code == 200){
+          var data = response.data.data
+          this.currentMenuList = data
+          let arr = []
+          for(let i = 0;i<data.length;i++){
+            let item = data[i]
+            let obj = arr.find(a=>{
+              return a.casePhase == item.casePhase
+            })
+            if(!obj){
+              obj = {
+                casePhase : item.casePhase,
+                children:[]
+              }
+              arr.push(obj)
+            }
+            obj.children.push(item)
+          }
+          this.menuList = arr
+        }
+      })
+    },
     getList() {
       this.queryParams.projectId = this.projectId
       // 1正序
       this.queryParams.orderBy = 1
       this.$api.queryReportAffair(this.queryParams).then((res) => {
         if (res.code==200) {
+          let data = res.data.data
+          let arr = this.menuList.map(item=>{
+            return item.casePhase
+          })
+          for(let i = 0;i<arr.length;i++){
+            let item = arr[i]
+            let index = data.findIndex(l=>{
+              return l.casePhase == item
+            })
+            if(index!=-1){
+              data[index].showCasePhase = true
+            }
+          }
           this.timelineList = res.data.data
         }
       }).catch((error) => {
@@ -137,25 +208,32 @@ export default {
     // 编辑
     edit(item) {
       var field= {
-        0:'oralTrailVO',
+        6:'oralTrailVO',
         1:'invalidRequestFileVO',
-        2:'stateOpinionVO',
-        3:'invalidDecisionFileVO',
-        4:'adminProceedVO',
-        5:'judgementVO',
-        6:'claimHistoryVO',
-        7:'supplyEvidenceVO',
-        8:'otherDocumentsVO'
+        5:'stateOpinionVO',
+        7:'invalidDecisionFileVO',
+        8:'adminProceedVO',
+        18:'adminProceedVO',
+        16:'judgementVO',
+        26:'judgementVO',
+        2:'claimHistoryVO',
+        3:'supplyEvidenceVO',
+        17:'otherDocumentsVO',
+        27:'otherDocumentsVO',
+        28:'otherDocumentsVO',
       }
       var form = {
-        id:item.id,
-        projectId:item.projectId,
-        affairType:item.affairType,
-        description:item.description,
-        systemFileList:item.systemFileList,
-        ...item[field[item.affairType]]
+        ...item,
+        ...item[field[item.flowType]]
+      }
+      let type = {
+        id:item.assoCasePhaseId,
+        flowName:item.flowName,
+        casePhase:item.casePhase,
+        caseChildPhase:item.caseChildPhase,
+        flowType:item.flowType
       }
-      this.$refs.responseDialog.open(item.affairType,form)
+      this.$refs.responseDialog.open(type,form)
     },
     // 删除
     dele(item) {
@@ -168,6 +246,7 @@ export default {
           this.$api.deleteReportAffair(ids).then((res) => {
             if (res.code==200) {
               this.$message.success('删除成功')
+              this.$emit('changeFlowPath',item)
               this.getList()
             }
           })
@@ -182,10 +261,12 @@ export default {
         this.$showPermissionDialog()
         return false
       }
+      if(!option){
+        return
+      }
       var form = {
         systemFileList:[]
       }
-      form.type = option
       this.$refs.responseDialog.open(option,form)
     },
   },
@@ -197,4 +278,18 @@ export default {
   float: right;
   margin-right: 10px;
 }
+</style>
+<style lang="scss">
+.flowPath_timeline{
+  .timelinePosition{
+    width: 56px;
+    text-align: center;
+    position: absolute;
+    left: -28px;
+    top:-18px;
+    color: red;
+    font-weight: bold;
+  }
+}
+  
 </style>

+ 67 - 0
src/views/report/InvalidResponse/components/litigation/components/form.vue

@@ -0,0 +1,67 @@
+<template>
+    <div>
+        <el-form style="width:100%" :model="form" label-width="140px">
+            <template>
+                <div>
+                    <el-row>
+                        <el-col v-for="(column,index) in columnList" :key="index" :span="column.span || 12">
+                            <el-form-item :label="`${column.label}:`">
+                                <div v-if="model=='view' || column.noEdit" class="box1 textEmpty">
+                                    <div v-if="column.field == 'conclusion'"  v-html="$constants.litigationResult[form[column.field]]"></div>
+                                    <div v-else  v-html="$commonJS.getColumnData(form, { type: 'String', value: column.field })"></div>
+                                </div>
+                                <template v-if="model=='edit' && !column.noEdit">
+                                    <el-date-picker v-if="column.type=='date'"  v-model="form[column.field]" value-format="yyyy-MM-dd" type="date"  placeholder="请选择时间" style="width: 100%;"></el-date-picker>
+                                    <el-input v-else v-model="form[column.field]" autocomplete="off" :placeholder="`请输入${column.label}`"></el-input>
+                                </template>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </div>
+            </template>
+            
+        </el-form>
+    </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {
+    columnList:{
+        type:Array,
+        default:()=>{
+            return []
+        }
+    },
+    form:{
+        type:Object,
+        default:()=>{
+            return {}
+        }
+    },
+    model:{
+        type:String,
+        default:'view'
+    }
+  },
+  data() {
+    return {
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {},
+};
+</script>
+<style lang="scss" scoped>
+.box1{
+    // border: 2px solid var(--color1);
+    // border-radius: 5px;
+    padding: 0px 10px;
+    color: var(--color1);
+    font-size: medium;
+}
+</style>

+ 30 - 0
src/views/report/InvalidResponse/components/litigation/index.vue

@@ -0,0 +1,30 @@
+<template>
+    <div class="height_100">
+      <litigation :projectId="projectId"></litigation>
+    </div>
+</template>
+  
+<script>
+import litigation from './litigation.vue';
+export default {
+    components: {
+        litigation
+    },
+    props: {},
+    data() {
+      return {
+      };
+    },
+    watch: {},
+    computed: {
+      projectId(){
+          return this.$route.query.projectId
+      }
+    },
+    created() {},
+    mounted() {},
+    methods: {},
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 232 - 0
src/views/report/InvalidResponse/components/litigation/litigation.vue

@@ -0,0 +1,232 @@
+<template>
+  <div class="litigation">
+    <div class="item">
+        <div class="title">
+            <div>
+                行诉一审
+                <span>
+                    <i v-if="!show.litigation1" class="el-icon-caret-right" @click="show.litigation1 = !show.litigation1"></i>
+                    <i v-else class="el-icon-caret-bottom" @click="show.litigation1 = !show.litigation1"></i>
+                </span>
+            </div>
+            <div>
+                <el-button v-if="litigation1.model=='view'" type="text" @click="edit('litigation1')">编辑</el-button>
+                <template v-else-if="litigation1.model=='edit'">
+                    <el-button type="text" @click="save('litigation1',1)">保存</el-button>
+                    <el-button type="text" @click="cancel('litigation1')">取消修改</el-button>
+                </template>
+            </div>
+        </div>
+        <div v-show="show.litigation1" class="content">
+            <litigationForm :columnList="litigation1.columnList" :model="litigation1.model" :form="litigation1.data"></litigationForm>
+        </div>
+    </div>
+    <div class="item">
+        <div class="title">
+            <div>
+                行诉二审
+                <span>
+                    <i v-if="!show.litigation2" class="el-icon-caret-right" @click="show.litigation2 = !show.litigation2"></i>
+                    <i v-else class="el-icon-caret-bottom" @click="show.litigation2 = !show.litigation2"></i>
+                </span>
+            </div>
+            <div>
+                <el-button v-if="litigation2.model=='view'" type="text" @click="edit('litigation2')">编辑</el-button>
+                <template v-else-if="litigation2.model=='edit'">
+                    <el-button type="text" @click="save('litigation2',2)">保存</el-button>
+                    <el-button type="text" @click="cancel('litigation2')">取消修改</el-button>
+                </template>
+            </div>
+        </div>
+        <div  v-show="show.litigation2" class="content">
+            <litigationForm :columnList="litigation2.columnList" :model="litigation2.model" :form="litigation2.data"></litigationForm>
+        </div>
+    </div>
+  </div>
+</template>
+
+<script>
+const litigation1 = [
+    {
+        label:'行诉一审案号',
+        field:'caseNumber'
+    },
+    {
+        label:'一审立案时间',
+        field:'caseFieldTime',
+        type:'date'
+    },
+    {
+        label:'一审原告',
+        field:'plaintiff'
+    },
+    {
+        label:'一审被告',
+        field:'defendant'
+    },
+    {
+        label:'第三人',
+        field:'thirdPerson'
+    },
+    {
+        label:'合议庭成员',
+        field:'panelMember'
+    },
+    {
+        label:'原告代理人',
+        field:'plaintiffAgent'
+    },
+    {
+        label:'第三人代理人',
+        field:'thirdAgent'
+    },
+    {
+        label:'一审进展/结果',
+        field:'conclusion',
+        noEdit:true
+    },
+]
+const litigation2 = [
+    {
+        label:'行诉二审案号',
+        field:'caseNumber'
+    },
+    {
+        label:'二审立案时间',
+        field:'caseFieldTime',
+        type:'date'
+    },
+    {
+        label:'二审原告',
+        field:'plaintiff'
+    },
+    {
+        label:'二审被告',
+        field:'defendant'
+    },
+    {
+        label:'第三人',
+        field:'thirdPerson'
+    },
+    {
+        label:'合议庭成员',
+        field:'panelMember'
+    },
+    {
+        label:'原告代理人',
+        field:'plaintiffAgent'
+    },
+    {
+        label:'第三人代理人',
+        field:'thirdAgent'
+    },
+    {
+        label:'二审进展/结果',
+        field:'conclusion',
+        noEdit:true
+    },
+]
+import litigationForm from './components/form.vue'
+export default {
+  components: {
+    litigationForm
+  },
+  props: {
+    projectId:{
+
+    }
+  },
+  data() {
+    return {
+        litigation1:{
+            columnList:litigation1,
+            model:'view',
+            data:{}
+        },
+        litigation2:{
+            columnList:litigation2,
+            model:'view',
+            data:{}
+        },
+        editMessage:{},
+        show:{
+            litigation1:true,
+            litigation2:true
+        }
+    };
+  },
+  watch: {
+    projectId(){
+        this.getData()
+    }
+  },
+  computed: {},
+  created() {},
+  mounted() {
+    this.getData()
+  },
+  methods: {
+    getData(){
+        let params = {
+            projectId:this.projectId
+        }
+        this.$api.queryLitigation(params).then(response=>{
+            if(response.code == 200){
+                if(response.data){
+                    this.litigation1.data = response.data.litigationVO1 || {}
+                    this.litigation2.data = response.data.litigationVO2 || {}
+                }
+            }
+        })
+    },
+    //编辑数据
+    edit(field){
+        this.editMessage[field] = JSON.stringify(this[field].data)
+        this[field].model = 'edit'
+    },
+    //保存数据
+    save(field,type){
+        this[field].data.type = type
+        this[field].data.projectId = this.projectId
+
+        var message = this.$message({
+                message: '信息保存中...',
+                type: 'warning',
+                duration:0
+            });
+        this.$api.addOrUpdateLitigation(this[field].data).then(response=>{
+            if(response.code == 200){
+                message.close()
+                this.$message.success('信息保存成功')
+                this.editMessage[field] = null
+                this[field].model = 'view'
+            }
+        }).catch(error=>{
+            message.close()
+            this.$message.error('信息保存失败')
+        })
+        
+    },
+    // 取消修改
+    cancel(field){
+        if(this.editMessage[field]){
+            this[field].data = JSON.parse(this.editMessage[field])
+            this.editMessage[field] = null
+        }
+        this[field].model = 'view'
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.litigation{
+    .item{
+        .title{
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            font-weight: bold;
+        }
+    }
+}
+</style>

+ 19 - 1
src/views/report/InvalidResponse/components/table/IPREmail.vue

@@ -47,10 +47,28 @@ const defaultColumnList = [
         }
     },
     {
+        field:'assoAccountId',
+        name:'账号',
+        ifSort:false,
+        width:'150px',
+        type:"function",
+        useFunction:(data)=>{
+            if(data.accountName){
+              return `${data.accountName}(${data.accountUserName})`  
+            }
+            return ''
+        }
+    },
+    {
+        field:'remark',
+        name:'备注',
+        ifSort:false,
+    },
+    {
         field:'createName',
         name:'创建人',
         ifSort:false,
-        width:'150px',
+        width:'100px',
     },
     {
         field:'createTime',

+ 1 - 1
src/views/report/components/details/components/basicMessage.vue

@@ -59,7 +59,7 @@
           </el-row>
           <el-row>
             <el-col :span="12">
-              <el-form-item label="发文序号:">
+              <el-form-item label="无效决定号:">
                 <div class="box1" v-html="$commonJS.getColumnData(form, { type: 'String', value: 'issueNumber' })"></div>
               </el-form-item>
             </el-col>

+ 230 - 35
src/views/report/components/details/components/basicMessage_official.vue

@@ -27,7 +27,7 @@
                             </el-col>
                             <el-col :span="12">
                                 <el-form-item label="专利名称:">
-                                    <div class="box1" v-html="getView(patentMessage, 'title')"></div>
+                                    <div class="box1 textEmpty" v-html="getView(patentMessage, 'title')"></div>
                                     <el-link v-if="haveTranslatedText(patentMessage, 'title')" type="primary" @click.native="handleChange(patentMessage, 'title')"
                                         style="margin-left: 10px;margin-top: -3px;">
                                         <span v-if="!patentMessage.change">切换译文</span>
@@ -42,7 +42,7 @@
                                     <div>
                                         <el-form-item label="专利权人:">
                                             <div class="box1">
-                                                <div class="box1" v-html="$commonJS.getColumnData(patentMessage, { type: 'Array', value: 'rightHolder' })"></div>
+                                                <div class="box1 textEmpty" v-html="$commonJS.getColumnData(patentMessage, { type: 'Array', value: 'rightHolder' })"></div>
                                             </div>
                                         </el-form-item>
                                     </div>
@@ -50,7 +50,7 @@
                             </el-col>
                             <el-col :span="12" v-if="patentMessage.simpleStatus">
                                 <el-form-item label="法律状态:">
-                                    <div class="box1" v-html="simpleStatus[patentMessage.simpleStatus]"></div>
+                                    <div class="box1 textEmpty" v-html="simpleStatus[patentMessage.simpleStatus]"></div>
                                     
                                 </el-form-item>
                             </el-col>
@@ -73,7 +73,7 @@
                             </el-col>
                             <el-col :span="24" v-if="patentMessage.abstractStr">
                                 <el-form-item label="摘要:">
-                                    <div class="box1" v-html="getView(patentMessage, 'abstractStr','摘要'+(patentMessage.change2?'译文':'原文'))"></div>
+                                    <div class="box1 textEmpty" v-html="getView(patentMessage, 'abstractStr','摘要'+(patentMessage.change2?'译文':'原文'))"></div>
                                     <span v-if="haveTranslatedText(patentMessage, 'abstractStr')">
                                         <el-link type="primary" @click.native="handleChange(patentMessage, 'abstractStr')" >
                                         <span v-if="!patentMessage.change2">切换译文</span>
@@ -90,7 +90,7 @@
         </div>
         <div class="message">
             <div class="title">
-                案件信息
+                无效信息
                 <span>
                     <i v-if="!show.showCaseMessage" class="el-icon-caret-right" @click="show.showCaseMessage = !show.showCaseMessage"></i>
                     <i v-else class="el-icon-caret-bottom" @click="show.showCaseMessage = !show.showCaseMessage"></i>
@@ -100,7 +100,10 @@
                 <el-card shadow="always">
                     <el-form style="width:100%" :model="reportMessage" label-width="140px">
                         <el-form-item label="专题名称:">
-                            <div class="box1" v-html="reportMessage.name"></div>
+                            <div class="box1 textEmpty" v-html="reportMessage.name"></div>
+                        </el-form-item>
+                        <el-form-item label="结论论述:">
+                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'cronDescription' })"></div>
                         </el-form-item>
                         <el-form-item label="核心结论:" >
                             <div  v-if="!editField.cardingOpinion" style="display:flex;align-items:center">
@@ -118,7 +121,7 @@
                             </div>
                         </el-form-item>
                         <el-form-item label="无效法条:">
-                            <div class="box1">
+                            <div class="box1 textEmpty">
                                 <div v-if="statutes.invalidStatutes1.length>0">
                                    三性法条: {{ statutes.invalidStatutes1.join('、') }}
                                 </div>
@@ -127,11 +130,98 @@
                                 </div>
                             </div>
                         </el-form-item>
+                        <el-form-item label="无效结果:">
+                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'cronNames' })"></div>
+                        </el-form-item>
+                        <el-form-item label="附件:">
+                            <div class="box1 textEmpty">
+                                <el-upload
+                                    class="upload-demo"
+                                    action="#"
+                                    :auto-upload="false"
+                                    :show-file-list="false"
+                                    :on-change="onChangeFile"
+                                    :limit="1">
+                                    <el-button size="small" type="primary">点击上传</el-button>
+                                    <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
+                                </el-upload>
+                                <div v-for="item in reportMessage.systemFileList" style="display:flex;align-items:center" :key="item.guid">
+                                    <div style="margin-right:20px">{{ item.originalName }}</div>
+                                    <my-menu :data="item"  @delFile="delFile"></my-menu>
+                                </div>
+                            </div>
+                        </el-form-item>
+                        <template v-if="reportMessage.reportType == 7">
+                            <div>
+                                <el-row>
+                                    <el-col :span="12">
+                                    <el-form-item label="案件编号:">
+                                        <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseNumber' })"></div>
+                                    </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                    <el-form-item label="无效宣告请求人:">
+                                        <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'invalidApplication' })"></div>
+                                    </el-form-item>
+                                    </el-col>
+                                </el-row>
+                                <el-row>
+                                    <el-col :span="12">
+                                        <el-form-item label="无效决定号:">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'issueNumber' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="发明创造名称:">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'inventionName' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                </el-row>
+
+                                <el-row>
+                                    <el-col :span="12">
+                                        <el-form-item label="案件阶段:" prop="casePhase">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'casePhase' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="案件子阶段:" prop="caseChildPhase">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseChildPhase' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="国知局受理年份:" prop="acceptYear">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'acceptYear' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="负责人:" prop="headId">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'headName' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="请求人代理所:" prop="applicantAgency">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'applicantAgency' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    <el-col :span="12">
+                                        <el-form-item label="专利权人代理所:" prop="rightHolderAgency">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'rightHolderAgency' })"></div>
+                                        </el-form-item>
+                                    </el-col>
+                                    
+                                </el-row>
+                            </div>
+                        </template>
+                        
+                        <el-form-item label="备注:" prop="description">
+                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'description' })"></div>
+                        </el-form-item>
                     </el-form>
                 </el-card>
             </div>
         </div>
-        <div class="message">
+        <!-- <div class="message">
             <div class="title">
                 更多信息
                 <span>
@@ -147,24 +237,24 @@
                                 <el-row>
                                     <el-col :span="12">
                                     <el-form-item label="案件编号:">
-                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseNumber' })"></div>
+                                        <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseNumber' })"></div>
                                     </el-form-item>
                                     </el-col>
                                     <el-col :span="12">
                                     <el-form-item label="无效宣告请求人:">
-                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'invalidApplication' })"></div>
+                                        <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'invalidApplication' })"></div>
                                     </el-form-item>
                                     </el-col>
                                 </el-row>
                                 <el-row>
                                     <el-col :span="12">
-                                        <el-form-item label="发文序号:">
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'issueNumber' })"></div>
+                                        <el-form-item label="无效决定号:">
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'issueNumber' })"></div>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="12">
                                         <el-form-item label="发明创造名称:">
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'inventionName' })"></div>
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'inventionName' })"></div>
                                         </el-form-item>
                                     </el-col>
                                 </el-row>
@@ -172,51 +262,51 @@
                                 <el-row>
                                     <el-col :span="12">
                                         <el-form-item label="案件阶段" prop="caseStage">
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseStage' })"></div>
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseStage' })"></div>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="12">
                                         <el-form-item label="国知局受理年份" prop="acceptYear">
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'acceptYear' })"></div>
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'acceptYear' })"></div>
                                         </el-form-item>
                                     </el-col>
                                 </el-row>
                                 <el-row>
                                     <el-col :span="12">
                                         <el-form-item label="请求人代理所" prop="applicantAgency">
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'applicantAgency' })"></div>
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'applicantAgency' })"></div>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="12">
                                         <el-form-item label="专利权人代理所" prop="rightHolderAgency">
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'rightHolderAgency' })"></div>
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'rightHolderAgency' })"></div>
                                         </el-form-item>
                                     </el-col>
                                 </el-row>
                             </div>
                         </template>
                         <el-form-item label="是否完成:">
-                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'status' })==3?'是':'否'"></div>
+                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'status' })==3?'是':'否'"></div>
                         </el-form-item>
                         <template>
                             <div>
-                                <el-form-item label="报告结果:">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'cronNames' })"></div>
+                                <el-form-item label="无效结果:">
+                                    <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'cronNames' })"></div>
                                 </el-form-item>
                                 <el-form-item label="结论论述:">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'cronDescription' })"></div>
+                                    <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'cronDescription' })"></div>
                                 </el-form-item>
                             </div>
                         </template>
                         <el-row>
                             <el-col :span="12">
                                 <el-form-item label="承担部门:" prop="departmentId">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
+                                    <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
                                 </el-form-item>
                             </el-col>
                             <el-col :span="12">
                                 <el-form-item label="负责人:" prop="headId">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'headName' })"></div>
+                                    <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'headName' })"></div>
                                 </el-form-item>
                             </el-col>
                         </el-row>
@@ -225,31 +315,31 @@
                                 <template>
                                     <div>
                                         <el-form-item label="委托方:" prop="entrustId" v-if="userinfo.tenantType == 1">
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'entrustName' })"></div>
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'entrustName' })"></div>
                                         </el-form-item>
                                         <el-form-item label="委托部门:" prop="departmentId" v-else>
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
+                                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
                                         </el-form-item>
                                     </div>
                                 </template>
                             </el-col>
                             <el-col :span="12">
                                 <el-form-item label="卷号:" prop="volumeNumber">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'volumeNumber' })"></div>
+                                    <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'volumeNumber' })"></div>
                                 </el-form-item>
                             </el-col>
                         </el-row>
                         <el-row>
                             <el-col :span="24">
                                 <el-form-item label="产品/技术:">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'productOrTech' })"></div>
+                                    <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'productOrTech' })"></div>
                                 </el-form-item>
                             </el-col>
                         </el-row>
                         <el-row>
                             <el-col :span="24">
                                 <el-form-item label="关联报告:">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'associateReportName' })"></div>
+                                    <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'associateReportName' })"></div>
                                 </el-form-item>
                             </el-col>
                         </el-row>
@@ -258,21 +348,21 @@
                             <el-row>
                                 <el-col :span="24">
                                     <el-form-item label="事件:">
-                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'eventNames' })"></div>
+                                        <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'eventNames' })"></div>
                                     </el-form-item>
                                 </el-col>
                             </el-row>
                             <el-row>
                                 <el-col :span="24">
                                     <el-form-item label="调查类型:" prop="matterIds">
-                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'matterNames' })"></div>
+                                        <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'matterNames' })"></div>
                                     </el-form-item>
                                 </el-col>
                             </el-row>
                             </div>
                         </template>
                         <el-form-item label="附件:">
-                            <div class="box1">
+                            <div class="box1 textEmpty">
                                 <div v-for="item in reportMessage.systemFileList" style="display:flex;align-items:center" :key="item.guid">
                                     <div style="margin-right:20px">{{ item.originalName }}</div>
                                     <my-menu :data="item" :deleted="false"></my-menu>
@@ -280,11 +370,25 @@
                             </div>
                         </el-form-item>
                         <el-form-item label="备注:" prop="description">
-                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'description' })"></div>
+                            <div class="box1 textEmpty" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'description' })"></div>
                         </el-form-item>
                     </el-form>
                 </el-card>
             </div>
+        </div> -->
+        <div class="message">
+            <div class="title">
+                行政诉讼
+                <span>
+                    <i v-if="!show.showLitigation" class="el-icon-caret-right" @click="show.showLitigation = !show.showLitigation"></i>
+                    <i v-else class="el-icon-caret-bottom" @click="show.showLitigation = !show.showLitigation"></i>
+                </span>
+            </div>
+            <div v-show="show.showLitigation">
+                <el-card shadow="always" v-if="show.ifLitigation">
+                    <litigationVue :projectId="projectId"></litigationVue>
+                </el-card>
+            </div>
         </div>
         <div class="message">
             <div class="title">
@@ -296,7 +400,7 @@
             </div>
             <div v-show="show.showFlowPath">
                 <el-card shadow="always">
-                    <flow-Path :projectId="projectId"></flow-Path>
+                    <flow-Path :projectId="projectId" @changeFlowPath="changeFlowPath"></flow-Path>
                 </el-card>
             </div>
         </div>
@@ -307,9 +411,11 @@
 import { mapGetters } from 'vuex';
 import flowPath from '@/views/report/InvalidResponse/components/flowPath/flowPath.vue';
 import { handleData } from '@/views/project/patentCollection/components/mixins/index'
+import litigationVue from '@/views/report/InvalidResponse/components/litigation/litigation.vue';
 export default {
   components: {
-    flowPath
+    flowPath,
+    litigationVue
   },
   mixins:[handleData],
   props: {
@@ -332,7 +438,9 @@ export default {
             showPatentMessage:true,
             showCaseMessage:true,
             showOtherMessage:false,
-            showFlowPath:true
+            showFlowPath:true,
+            showLitigation:true,
+            ifLitigation:true
         },
         statutes:{
             invalidStatutes1:[],
@@ -359,6 +467,84 @@ export default {
     this.queryInvalidStatutes()
   },
   methods: {
+    //删除文件
+    delFile(file){
+        let guids = []
+        if( this.reportMessage.systemFileList){
+            guids = this.reportMessage.systemFileList.filter(item=>{
+                return item.guid != file.guid
+            }).map(item=>{
+                return item.guid
+            })
+        }
+        this.reportMessage.fileGuids = guids
+        this.submit2('文件删除')
+    },
+    //上传文件
+    onChangeFile(file){
+        let formData = new FormData()
+        formData.append('sourceId',this.$constants.sourceId)
+        formData.append('files',file.raw)
+        this.$api.uploadFile(formData).then(response=>{
+            if(response.code == 200){
+                let guid = response.data[0]
+                let guids = []
+                if( this.reportMessage.systemFileList){
+                    guids = this.reportMessage.systemFileList.map(item=>{
+                        return item.guid
+                    })
+                }
+                guids.push(guid)
+                this.reportMessage.fileGuids = guids
+                this.submit2('文件上传')
+            }
+        })
+    },
+    submit2(message) {
+        this.reportMessage.type = 2//项目类型(1专利数据库 2报告 3专利挖掘项目)
+
+        // 事件及调查类型处理
+        if (this.reportMessage.scenarioIds && this.reportMessage.scenarioIds.length > 0) {
+            var scenarioIds = JSON.parse(JSON.stringify(this.form.scenarioIds))
+        }
+        if (this.reportMessage.eventId) {
+            this.reportMessage.events = []
+            this.reportMessage.scenarioIds = []
+            this.reportMessage.matterIds.forEach(item => {
+                this.reportMessage.events.push(
+                {
+                    matterId: item,
+                    scenarioId: scenarioIds[0],
+                    eventId: this.reportMessage.eventId
+                }
+                )
+            })
+        }
+        let formData = this.reportMessage
+        this.$api.updateReportProject(formData).then(response => {
+            if (response.code == 200) {
+                this.$message.success(message+'成功')
+                this.$emit('refreshData')
+            }
+        })
+         
+       
+    },
+    //修改了案件流程
+    changeFlowPath(form){
+        if(!form){
+            return
+        }
+        if(!form.id || form.flowType == 7){
+          this.$emit('refreshData')  
+        }
+        if(form.flowType == 16 || form.flowType == 26){
+            this.show.ifLitigation = false
+            this.$nextTick(()=>{
+                this.show.ifLitigation = true
+            })
+        }
+    },
     //查询无效发条
     queryInvalidStatutes(){
         var params = {
@@ -565,4 +751,13 @@ export default {
     color: var(--color1);
     font-size: medium;
 }
+</style>
+<style lang="scss">
+    .upload-demo{
+        display: flex;
+        align-items: center;
+        &>*:first-child{
+            margin-right: 10px;
+        }
+    }
 </style>

+ 43 - 28
src/views/report/components/dialog/addAndEditReport.vue

@@ -48,28 +48,20 @@
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="12">
-                <el-form-item label="发文序号" prop="issueNumber">
-                  <el-input v-model="form.issueNumber" autocomplete="off" placeholder="请输入发文序号"></el-input>
-                </el-form-item>
-              </el-col>
+             
               <el-col :span="12">
                 <el-form-item label="发明创造名称" prop="inventionName">
                   <el-input v-model="form.inventionName" autocomplete="off" placeholder="请输入发明创造名称"></el-input>
                 </el-form-item>
               </el-col>
-            </el-row>
-
-            <!-- 新增 -->
-            <el-row>
-              <el-col :span="12">
+              <!-- <el-col :span="12">
                 <el-form-item label="案件阶段" prop="caseStage">
                   <el-select v-model="form.caseStage" placeholder="请选择案件阶段" clearable  style="width:100%">
                     <el-option label="无效" value="无效"></el-option>
                     <el-option label="行诉状态" value="行诉状态"></el-option>
                   </el-select>
                 </el-form-item>
-              </el-col>
+              </el-col> -->
               <el-col :span="12">
                 <el-form-item label="国知局受理年份" prop="acceptYear">
                   <el-date-picker
@@ -84,11 +76,23 @@
             </el-row>
             <el-row>
               <el-col :span="12">
+                <el-form-item label="主被动类型" prop="actType">
+                  <el-select v-model="form.actType" @change="changeActType" placeholder="请选择" style="width:100%">
+                    <el-option
+                      v-for="item in actTypes "
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12" v-if="form.actType == 0">
                 <el-form-item label="请求人代理所" prop="applicantAgency">
                   <el-input v-model="form.applicantAgency" autocomplete="off" placeholder="请输入请求人代理所"></el-input>
                 </el-form-item>
               </el-col>
-              <el-col :span="12">
+              <el-col :span="12" v-if="form.actType == 1">
                 <el-form-item label="专利权人代理所" prop="rightHolderAgency">
                   <el-input v-model="form.rightHolderAgency" autocomplete="off" placeholder="请输入专利权人代理所"></el-input>
                 </el-form-item>
@@ -98,15 +102,8 @@
         </template>
         <el-row>
               <el-col :span="12" v-if="form.reportType == 7">
-                <el-form-item label="主被动类型" prop="actType">
-                  <el-select v-model="form.actType" placeholder="请选择" style="width:100%">
-                    <el-option
-                      v-for="item in actTypes "
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value">
-                    </el-option>
-                  </el-select>
+                <el-form-item label="无效决定号" prop="issueNumber">
+                  <el-input v-model="form.issueNumber" autocomplete="off" placeholder="请输入无效决定号"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
@@ -116,16 +113,19 @@
                   </el-switch>
                 </el-form-item>
               </el-col>
+              <el-col :span="24">
+                <el-form-item :label="form.reportType == '7'?'无效结果':'报告结果'" prop="cronIds">
+                  <el-checkbox-group v-model="form.cronIds" class="reportCheckbox">
+                    <el-checkbox v-for="item in conclusion" :key="parseInt(item.value)" :label="parseInt(item.value)">{{
+                      item.label }}</el-checkbox>
+                  </el-checkbox-group>
+                </el-form-item>
+              </el-col>
             </el-row>
         
         <template>
           <div>
-            <el-form-item label="报告结果" prop="cronIds">
-              <el-checkbox-group v-model="form.cronIds">
-                <el-checkbox v-for="item in conclusion" :key="parseInt(item.value)" :label="parseInt(item.value)">{{
-                  item.label }}</el-checkbox>
-              </el-checkbox-group>
-            </el-form-item>
+            
             <el-form-item label="结论论述" prop="cronDescription">
               <el-input v-model="form.cronDescription" type="textarea" placeholder="请输入结论论述"></el-input>
             </el-form-item>
@@ -160,7 +160,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
+        <el-row v-if="userinfo.roleType == 1 || userinfo.roleType == 2 || userinfo.id == form.created || userinfo.id == form.headId">
           <el-col :span="24">
             <el-form-item label="处理人:">
               <div class="manage">
@@ -398,6 +398,9 @@ export default {
         signPatentNo: [{ required: true, validator: isExist, trigger: 'blur' },],//专利
         headId: [{ required: true, message: '请选择负责人', trigger: 'change' },],
         entrustId: [{ required: true, message: '请选择委托方', trigger: 'change' },],
+        actType:[
+          { required: true, message: '请选择主被动类型', trigger: 'change' }
+        ]
       },
       patentLoading:false,
       taskId:null,
@@ -526,6 +529,12 @@ export default {
     this.initTask()
   },
   methods: {
+    //切换主被动类型
+    changeActType(value){
+      let str = this.form.applicantAgency//请求人代理所
+      this.$set(this.form,'applicantAgency',this.form.rightHolderAgency)
+      this.$set(this.form,'rightHolderAgency',str)
+    },
     // 打开处理人 人员弹窗
     showHeadDialog() {
       this.$refs.choosePerson.open(this.form.adminIds, this.form.adminPersons)
@@ -807,6 +816,7 @@ export default {
         }
 
       } else {
+        this.$set(this.form,'actType',1)
         this.$set(this.form, 'matterIds', form.matterId)
         this.form.scenarioIds = form.scenarioId
         this.$set(this.form, 'systemFileList', [])
@@ -1381,4 +1391,9 @@ export default {
   // .el-input__inner:empty{
   //   content:'--'
   // }
+  .reportCheckbox{
+    .el-checkbox{
+      width: fit-content;
+    }
+  }
 </style>

+ 346 - 0
src/views/report/components/dialog/components/handelPersonTable.vue

@@ -0,0 +1,346 @@
+<template>
+    <div>
+        <div class="header">
+          <div class="title">{{title}}</div>
+          <el-button type="primary" size="small" @click="add">添加</el-button>
+        </div>
+        <el-table 
+            ref="table"
+            border
+            :data="tableData"
+            row-key="id"
+            style="width: 100%"
+            v-loading="loading">
+            <el-table-column prop="name" label="姓名" min-width="220">
+                <template slot-scope="scope">
+                    <div>
+                        <div v-if="scope.row.id  && editMessage.id!=scope.row.id">
+                            {{ scope.row.name }}
+                        </div>
+                        <div v-else>
+                            <el-autocomplete
+                              style="width: 100%;"
+                                class="inline-input"
+                                v-model="scope.row.name"
+                                v-SelectLazyLoading="IPREmailLoad"
+                                :fetch-suggestions="querySearchByName"
+                                placeholder="请输入内容"
+                                @input="handleInput"
+                                @select="(item)=>handleSelect(item,scope.row,'name')"
+                                :disabled="currentEditField && currentEditField!='name'"
+                            >
+                            <template slot-scope="{ item }">
+                                <div style="padding: 5px 0;">
+                                  <div style="text-overflow: ellipsis;overflow: hidden;line-height: normal;">{{ item.name }}</div>
+                                  <div style="font-size: 12px;color: #b4b4b4;line-height: normal;">{{ item.email }}</div>
+                                </div>
+                              </template>
+                            </el-autocomplete>
+                        </div>
+                    </div>
+                </template>
+            </el-table-column>
+            <el-table-column prop="email" label="邮箱" min-width="220">
+                <template slot-scope="scope">
+                    <div>
+                        <div v-if="scope.row.id  && editMessage.id!=scope.row.id">
+                            {{ scope.row.email }}
+                        </div>
+                        <div v-else>
+                            <el-autocomplete
+                              style="width: 100%;"
+                                class="inline-input"
+                                v-model="scope.row.email"
+                                v-SelectLazyLoading="IPREmailLoad"
+                                :fetch-suggestions="querySearchByEmail"
+                                placeholder="请输入内容"
+                                @input="handleInput"
+                                @select="(item)=>handleSelect(item,scope.row,'email')"
+                                :disabled="currentEditField && currentEditField!='email'"
+                            >
+                              <template slot-scope="{ item }">
+                                <div style="padding: 5px 0;">
+                                  <div style="text-overflow: ellipsis;overflow: hidden;line-height: normal;">{{ item.email }}</div>
+                                  <div style="font-size: 12px;color: #b4b4b4;line-height: normal;">{{ item.name }}</div>
+                                </div>
+                              </template>
+                            </el-autocomplete>
+                        </div>
+                    </div>
+                </template>
+            </el-table-column>
+            <el-table-column prop="email" label="账号" min-width="220">
+                <template slot-scope="scope">
+                    <div>
+                        <div v-if="scope.row.id  && editMessage.id!=scope.row.id">
+                            <span v-if="scope.row.accountName">{{ scope.row.accountName + '('+ scope.row.accountUserName +')' }}</span>
+                        </div>
+                        <div v-else>
+                            <el-select style="width:100%" v-model="scope.row.assoAccountId" placeholder="请选择账号" filterable remote @focus="focusPerson(scope.row.accountName)"
+                                :popper-append-to-body="false" :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson" :disabled="currentEditField && currentEditField!='assoAccountId'"
+                                :loading="personnelList.loading">
+                                <el-option v-for="item in personnelList.data" :key="parseInt(item.id)" :label="item.name"
+                                :value="parseInt(item.id)"></el-option>
+                            </el-select>
+                        </div>
+                    </div>
+                </template>
+            </el-table-column>
+            <el-table-column label="操作" width="180px">
+                <template slot-scope="scope">
+                    <div>
+                        <div v-if="scope.row.id  && editMessage.id!=scope.row.id">
+                            <el-button type="text" size="small" @click="edit(scope.row)">修改</el-button>
+                            <el-button type="text" size="small" @click="remove(scope.row)">移除</el-button>
+                        </div>
+                        <div v-else>
+                            <el-button type="text" size="small" @click="save(scope.row)">保存</el-button>
+                            <el-button type="text" size="small" @click="cancel(scope.row,scope.$index)">取消</el-button>
+                        </div>
+                    </div>
+                </template>
+            </el-table-column>
+        </el-table>
+    </div>
+</template>
+
+<script>
+import personLazy from '@/utils/personLazy'
+export default {
+  components: {},
+  mixins:[personLazy],
+  props: {
+    reportId:{
+        type:[Number,String],
+        default:0
+    },
+    title:{
+        type:String,
+        default:'IPR'
+    },
+    type:{
+        type:[Number,String],
+        default:1
+    }
+  },
+  data() {
+    return {
+        model:'list',
+        IPREmailList:{
+            queryParams:{
+                current:0,
+                size:10,
+                total:1,
+                name:null,
+                email:null,
+                type:this.type
+            },
+            data:[]
+        },
+        editMessage:{},
+        tableData:[],
+        loading:false,
+        currentEditField:null
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {
+    this.init()
+  },
+  methods: {
+    init(){
+        this.editMessage = {}
+        this.getList()
+    },
+    getList(){
+      var params = {
+        reportId:this.reportId,
+        type:this.type
+      }
+      this.model = 'list'
+      this.loading = true
+      var api = 'matchCasePersonQuery'
+      this.$api[api](params).then(response=>{
+        if(response.code == 200){
+          this.tableData = response.data
+          this.loading = false
+        }
+      }).catch(error=>{
+          this.tableData = []
+          this.loading = false
+      })
+    },
+    //添加
+    add(){
+      if(this.model != 'list' ){
+        this.$message.warning('已有数据正在编辑,请先保存修改的数据')
+        return
+      }
+      this.currentEditField = null
+      this.tableData.push({})
+      this.model = 'add'
+    },
+    //编辑
+    edit(row){
+        if(this.model != 'list' ){
+            this.$message.warning('已有数据正在编辑,请先保存修改的数据')
+            return
+        }
+        this.currentEditField = null
+        if(row.assoAccountId){
+            this.focusPerson(row.accountName)
+        }
+        this.editMessage = JSON.parse(JSON.stringify(row))
+        this.model = 'edit'
+    },
+    //移除配案人员
+    remove(row){
+      this.$confirm('确认删除选择的数据吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+      }).then(() => {
+          this.loading = true
+          this.$api.matchCasePersonDelete([row.id]).then(response => {
+              this.$message.success('移除成功')
+              this.loading = false
+              this.getList()
+              this.$emit('isUpdate',true)
+              this.IPREmailList={
+                queryParams:{
+                  current:0,
+                  size:10,
+                  total:1,
+                  name:null,
+                  email:null,
+                  type:this.type
+                },
+                data:[]
+              }
+          }).catch(error => {
+              this.loading = false
+          })
+      })
+    },
+    //取消编辑
+    cancel(row,index){
+      if(this.model == 'add'){
+        this.tableData.splice(index,1)
+      }else{
+        this.$set(this.tableData,index,JSON.parse(JSON.stringify(this.editMessage)))
+        this.editMessage = {}
+      }
+      this.model = 'list'
+        
+    },
+    //保存
+    save(row){
+      if(!row.name){
+        this.$message.warning('姓名不能为空')
+        return
+      }
+      if(!row.email){
+        this.$message.warning('邮箱不能为空')
+        return
+      }
+      var regx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\.\-])+\.)+([a-zA-Z0-9]{2,4})+$/
+      if(!regx.test(row.email)){
+        this.$message.warning('邮箱格式不正确')
+        return
+      }
+      var a = '添加'
+      if(row.id){
+        a = '修改'
+      }
+      this.loading = true
+      row.reportId = this.reportId
+      row.type = this.type
+      this.$api.matchCasePersonUpdate(row).then(response=>{
+        if(response.code == 200){
+          this.$message.success(a+'成功')
+          this.loading = false
+          this.getList()
+          if(row.id){
+            this.editMessage = {}
+          }
+          this.$emit('isUpdate',true)
+        }
+      }).catch(error=>{
+        this.loading = false
+      })
+    },
+
+     /**
+    * IPR邮箱
+    */
+    // 懒加载IPR邮箱方法
+    IPREmailLoad() {
+      if (this.IPREmailList.queryParams.current * this.IPREmailList.queryParams.size >= this.IPREmailList.queryParams.total) {
+        return false
+      }
+      this.IPREmailList.queryParams.current++
+      this.getIPREmailList()
+    },
+    // 查询IPR邮箱
+    async getIPREmailList() {
+      let params = {
+        ...this.IPREmailList.queryParams,
+      }
+      await this.$api.iprPersonQuery(params).then(res => {
+        if (res.code == 200) {
+          this.IPREmailList.data.push(...res.data.data)
+          this.IPREmailList.queryParams.total = res.data.total
+          this.IPREmailList.cb(this.IPREmailList.data);
+        }
+      })
+    },
+    //获取下拉建议IPR邮箱数据
+    async querySearchByEmail(queryString, cb) {
+      this.IPREmailList.queryParams.current = 1
+      this.IPREmailList.queryParams.email = queryString
+      this.IPREmailList.data = []
+      this.IPREmailList.cb = cb
+      await this.getIPREmailList()
+    },
+    async querySearchByName(queryString, cb) {
+      this.IPREmailList.queryParams.current = 1
+      this.IPREmailList.queryParams.name = queryString
+      this.IPREmailList.data = []
+      this.IPREmailList.cb = cb
+      await this.getIPREmailList()
+    },
+    handleSelect(item,row,field){
+        this.$set(row,'name',item.name)
+        this.$set(row,'email',item.email)
+        this.$set(row,'iprPersonId',item.id)
+        this.$set(row,'assoAccountId',item.assoAccountId)
+        this.$set(row,'accountName',item.accountName)
+        if(item.assoAccountId){
+            this.focusPerson(item.accountName)
+        }
+        this.currentEditField = field
+    },
+    handleInput(){
+        if(this.currentEditField){
+            this.currentEditField =null
+        }
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.header{
+  height: 50px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  .title{
+    font-family: 微软雅黑;
+    color: var(--color1);
+    // font-weight: bold;
+    font-size: 22px;
+  }
+}
+</style>

+ 4 - 4
src/views/report/components/dialog/cronConclusion.vue

@@ -1,8 +1,8 @@
 <template>
     <div>
-        <el-dialog width="800px" title="添加报告结果" :visible.sync="showDialog" :before-close="resetForm">
+        <el-dialog width="800px" :title="form.reportType==7?'添加无效结果':'添加报告结果'" :visible.sync="showDialog" :before-close="resetForm">
             <el-form :model="form" label-width="120px">
-                <el-form-item label="报告结果">
+                <el-form-item :label="form.reportType==7?'无效结果':'报告结果'">
                 <el-checkbox-group v-model="form.cronIds">
                     <el-checkbox v-for="item in conclusion" :key="parseInt(item.value)" :label="parseInt(item.value)">{{ item.label }}</el-checkbox>
                 </el-checkbox-group>
@@ -126,12 +126,12 @@ export default {
           let formData = this.form
             this.$api.updateReportProject(formData).then(response=>{
                 if(response.code == 200){
-                    this.$message.success('报告结果添加成功')
+                    this.$message.success('请求成功')
                     this.resetForm()
                     this.$emit('save',true)
                 }
             }).catch(error=>{
-                this.$message.error('报告结果添加失败')
+                this.$message.error('请求失败')
             })
         },
         //关闭弹窗

+ 18 - 253
src/views/report/components/dialog/handlePerson.vue

@@ -1,117 +1,29 @@
 <template>
   <div>
-    <el-dialog  title="配案人员" :visible.sync="visible" width="800px" :close-on-click-modal="false"  :before-close="handleClose" append-to-body>
-      <div style="height:calc(100vh - 250px)">
-        <div class="header">
-          <el-button type="primary" size="small" @click="add">添加</el-button>
+    <el-dialog  title="配案人员" :visible.sync="visible" width="1000px" :close-on-click-modal="false"  :before-close="handleClose" append-to-body>
+      <div style="height:calc(100vh - 250px)" v-if="visible">
+        <handelPersonTable :reportId="reportId" title="IPR" :type="1" @isUpdate="isUpdate"></handelPersonTable>
+        <div style="margin-top:25px">
+          <handelPersonTable :reportId="reportId" title="代理所" :type="2" @isUpdate="isUpdate"></handelPersonTable>
         </div>
-        <el-table 
-            ref="table"
-            border
-            :data="tableData"
-            row-key="id"
-            style="width: 100%"
-            height="calc(100% - 50px)"
-            v-loading="loading">
-            <el-table-column prop="name" label="姓名" min-width="220">
-                <template slot-scope="scope">
-                    <div>
-                        <div v-if="scope.row.id  && editMessage.id!=scope.row.id">
-                            {{ scope.row.name }}
-                        </div>
-                        <div v-else>
-                            <el-autocomplete
-                              style="width: 100%;"
-                                class="inline-input"
-                                v-model="scope.row.name"
-                                v-SelectLazyLoading="IPREmailLoad"
-                                :fetch-suggestions="querySearchByName"
-                                placeholder="请输入内容"
-                                @select="(item)=>handleSelect(item,scope.row)"
-                            >
-                            <template slot-scope="{ item }">
-                                <div style="padding: 5px 0;">
-                                  <div style="text-overflow: ellipsis;overflow: hidden;line-height: normal;">{{ item.name }}</div>
-                                  <div style="font-size: 12px;color: #b4b4b4;line-height: normal;">{{ item.email }}</div>
-                                </div>
-                              </template>
-                            </el-autocomplete>
-                        </div>
-                    </div>
-                </template>
-            </el-table-column>
-            <el-table-column prop="email" label="邮箱" min-width="220">
-                <template slot-scope="scope">
-                    <div>
-                        <div v-if="scope.row.id  && editMessage.id!=scope.row.id">
-                            {{ scope.row.email }}
-                        </div>
-                        <div v-else>
-                            <el-autocomplete
-                              style="width: 100%;"
-                                class="inline-input"
-                                v-model="scope.row.email"
-                                v-SelectLazyLoading="IPREmailLoad"
-                                :fetch-suggestions="querySearchByEmail"
-                                placeholder="请输入内容"
-                                @select="(item)=>handleSelect(item,scope.row)"
-                            >
-                              <template slot-scope="{ item }">
-                                <div style="padding: 5px 0;">
-                                  <div style="text-overflow: ellipsis;overflow: hidden;line-height: normal;">{{ item.email }}</div>
-                                  <div style="font-size: 12px;color: #b4b4b4;line-height: normal;">{{ item.name }}</div>
-                                </div>
-                              </template>
-                            </el-autocomplete>
-                        </div>
-                    </div>
-                </template>
-            </el-table-column>
-            <el-table-column label="操作" width="180px">
-                <template slot-scope="scope">
-                    <div>
-                        <div v-if="scope.row.id  && editMessage.id!=scope.row.id">
-                            <el-button type="text" size="small" @click="edit(scope.row)">修改</el-button>
-                            <el-button type="text" size="small" @click="remove(scope.row)">移除</el-button>
-                        </div>
-                        <div v-else>
-                            <el-button type="text" size="small" @click="save(scope.row)">保存</el-button>
-                            <el-button type="text" size="small" @click="cancel(scope.row,scope.$index)">取消</el-button>
-                        </div>
-                    </div>
-                </template>
-            </el-table-column>
-        </el-table>
+        
       </div>
     </el-dialog>
   </div>
 </template>
 
 <script>
-
+import handelPersonTable from './components/handelPersonTable.vue';
 export default {
   components: {
-    
+    handelPersonTable
   },
   props: {},
   data() {
     return {
         visible:false,
-        tableData:[],
-        loading:false,
-        model:'list',
-        IPREmailList:{
-            queryParams:{
-                current:0,
-                size:10,
-                total:1,
-                name:null,
-                email:null
-            },
-            data:[]
-        },
-        editMessage:{},
-        reportId:null
+        reportId:null,
+        update:false
     };
   },
   watch: {},
@@ -121,170 +33,23 @@ export default {
   methods: {
     open(reportId){
       this.reportId =reportId
-      this.editMessage = {}
-      this.getList()
+      this.update = false
       this.visible = true
     },
-    getList(){
-      var params = {
-        reportId:this.reportId
-      }
-      this.model = 'list'
-      this.loading = true
-      var api = 'matchCasePersonQuery'
-      this.$api[api](params).then(response=>{
-        if(response.code == 200){
-          this.tableData = response.data
-          this.loading = false
-        }
-      }).catch(error=>{
-          this.tableData = []
-          this.loading = false
-      })
-    },
     handleClose(){
         this.visible = false
-    },
-    //添加
-    add(){
-      this.tableData.push({})
-      this.model = 'add'
-    },
-    //编辑
-    edit(row){
-      if(this.model != 'list' ){
-        this.$message.warning('已有数据正在编辑,请先保存修改的数据')
-        return
-      }
-        this.model = 'edit'
-        this.editMessage = JSON.parse(JSON.stringify(row))
-    },
-    //移除配案人员
-    remove(row){
-      this.$confirm('确认删除选择的数据吗?', '提示', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-      }).then(() => {
-          this.loading = true
-          this.$api.matchCasePersonDelete([row.id]).then(response => {
-              this.$message.success('移除成功')
-              this.loading = false
-              this.getList()
-              this.IPREmailList={
-                queryParams:{
-                  current:0,
-                  size:10,
-                  total:1,
-                  name:null,
-                  email:null
-                },
-                data:[]
-              }
-          }).catch(error => {
-              this.loading = false
-          })
-      })
-    },
-    //取消编辑
-    cancel(row,index){
-      if(this.model == 'add'){
-        this.tableData.splice(index,1)
-        return
-      }else{
-        row = JSON.parse(JSON.stringify(this.editMessage))
-        this.editMessage = {}
-      }
-      this.model = 'list'
-        
-    },
-    //保存
-    save(row){
-      if(!row.name){
-        this.$message.warning('姓名不能为空')
-        return
-      }
-      if(!row.email){
-        this.$message.warning('邮箱不能为空')
-        return
-      }
-      var regx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\.\-])+\.)+([a-zA-Z0-9]{2,4})+$/
-      if(!regx.test(row.email)){
-        this.$message.warning('邮箱格式不正确')
-        return
-      }
-      var a = '添加'
-      if(row.id){
-        a = '修改'
-      }
-      this.loading = true
-      row.reportId = this.reportId
-      this.$api.matchCasePersonUpdate(row).then(response=>{
-        if(response.code == 200){
-          this.$message.success(a+'成功')
-          this.loading = false
-          this.getList()
-          if(row.id){
-            this.editMessage = {}
-          }
-        }
-      }).catch(error=>{
-        this.loading = false
-      })
-    },
-
-     /**
-    * IPR邮箱
-    */
-    // 懒加载IPR邮箱方法
-    IPREmailLoad() {
-      if (this.IPREmailList.queryParams.current * this.IPREmailList.queryParams.size >= this.IPREmailList.queryParams.total) {
-        return false
-      }
-      this.IPREmailList.queryParams.current++
-      this.getIPREmailList()
-    },
-    // 查询IPR邮箱
-    async getIPREmailList() {
-      let params = {
-        ...this.IPREmailList.queryParams,
-      }
-      await this.$api.iprPersonQuery(params).then(res => {
-        if (res.code == 200) {
-          this.IPREmailList.data.push(...res.data.data)
-          this.IPREmailList.queryParams.total = res.data.total
-          this.IPREmailList.cb(this.IPREmailList.data);
+        if(this.update){
+         this.$emit('updateHandlePerson',this.reportId) 
         }
-      })
-    },
-    //获取下拉建议IPR邮箱数据
-    async querySearchByEmail(queryString, cb) {
-      this.IPREmailList.queryParams.current = 1
-      this.IPREmailList.queryParams.email = queryString
-      this.IPREmailList.data = []
-      this.IPREmailList.cb = cb
-      await this.getIPREmailList()
-    },
-    async querySearchByName(queryString, cb) {
-      this.IPREmailList.queryParams.current = 1
-      this.IPREmailList.queryParams.name = queryString
-      this.IPREmailList.data = []
-      this.IPREmailList.cb = cb
-      await this.getIPREmailList()
+        
     },
-    handleSelect(item,row){
-        this.$set(row,'name',item.name)
-        this.$set(row,'email',item.email)
-        this.$set(row,'iprPersonId',item.id)
+    isUpdate(val){
+      this.update = true
     }
+    
   },
 };
 </script>
 <style lang="scss" scoped>
-.header{
-  height: 50px;
-  display: flex;
-  flex-direction: row-reverse;
-  align-items: center;
-}
+
 </style>

+ 39 - 5
src/views/report/components/index.vue

@@ -32,7 +32,7 @@
               </el-dropdown-menu>
             </el-dropdown>
             <el-button type="primary" class="margin-left_10 margin-right_10" size="small" @click="showField">显示栏位管理</el-button>
-            <el-button v-if="$permission.FunPermissions('xiaoshi/IPREmail')" type="primary" class="margin-right_10" size="small" @click="IPREmail">IPR邮箱</el-button>
+            <el-button v-if="$permission.FunPermissions('xiaoshi/IPREmail')" type="primary" class="margin-right_10" size="small" @click="IPREmail">联系邮箱</el-button>
           </div>
 
         </div>
@@ -66,10 +66,10 @@
     <!-- 项目分享 -->
     <patentShare ref="patentShare"></patentShare>
 
-    <!-- IPR邮箱 -->
+    <!-- 联系邮箱 -->
     <IPREmailDialog ref="IPREmailDialog"></IPREmailDialog>
     <!-- 配案人员/实际处理人 -->
-    <handlePersonDialog ref="handlePersonDialog"></handlePersonDialog>
+    <handlePersonDialog ref="handlePersonDialog" @updateHandlePerson="updateHandlePerson"></handlePersonDialog>
   </div>
 </template>
 
@@ -260,7 +260,29 @@ export default {
     this.showViews()
   },
   methods: {
-    //IPR邮箱
+    //更新配案人员
+    updateHandlePerson(projectId){
+      let index = this.dataList.findIndex(item=>{
+        return item.id == projectId
+      })
+      if(index==-1){
+        return
+      }
+      let params = {
+        searchQuery: `id=${projectId}`,//检索条件
+        orderDTOList: [],
+      }
+      this.$api.queryReportProject(params).then(res => {
+        if (res.code == 200) {
+          if (res.data.data.length > 0) {
+            this.$set(this.dataList,index,res.data.data[0])
+          } 
+        }
+      }).catch(error => {
+        
+      })
+    },
+    //联系邮箱
     IPREmail(){
       this.$refs.IPREmailDialog.open()
     },
@@ -507,6 +529,14 @@ export default {
         order,
       }
       this.sort = this.$commonJS.getSortData(params)
+      if(!this.sort || this.sort.length == 0){
+        this.sort = [
+          {
+            "orderBy": "createTime",
+            "orderType": 1
+          }
+        ]
+      }
       this.queryParams.current = 1
       this.isGrouping()
     },
@@ -588,7 +618,11 @@ export default {
     },
     //操作列
     async handleOption({ option, row, isLast }) {
-      if(!(await this.$permission.projectPermission(row.id))){
+      let roles = null
+      if(option == 7){
+        roles = ['0','1']
+      }
+      if(!(await this.$permission.projectPermission(row.id,roles))){
         this.$showPermissionDialog()
         return false
       }

+ 1 - 0
src/views/report/components/view/table.vue

@@ -34,6 +34,7 @@
                   </el-link>
                 </div>
                 <div v-else-if="['eventNames','cronNames'].includes(item.value)" v-html="$commonJS.getColumnData(scope.row,item)"></div>
+                <div v-else-if="['conclusion'].includes(item.value)" v-html="$constants.litigationResult[scope.row.conclusion]"></div>
                 <div v-else v-html="$commonJS.getColumnData(scope.row,item)"></div>
               </template>
             </el-table-column>

+ 7 - 2
src/views/task/components/examine/components/projectMessage.vue

@@ -10,7 +10,8 @@
             <template v-for="fieldIndex in 3" v-if="columnList[getFileProperty(item,fieldIndex)]" >
                 <el-col :key="fieldIndex+'a'"><div>{{columnList[getFileProperty(item,fieldIndex)].name}}:</div></el-col>
                 <el-col :key="fieldIndex+'b'">
-                <div v-html="$commonJS.getColumnData(projectMessage,columnList[getFileProperty(item,fieldIndex)])"></div>
+                    <div v-if="['conclusion'].includes(columnList[getFileProperty(item,fieldIndex)].field)" v-html="$constants.litigationResult[projectMessage.conclusion]"></div>
+                    <div v-else v-html="$commonJS.getColumnData(projectMessage,columnList[getFileProperty(item,fieldIndex)])"></div>
                 </el-col>
             </template>
         </el-row>
@@ -164,7 +165,11 @@ export default {
             2:'reportProject',
             3:'patentDigProject'
         }
-        this.columnList = await this.$commonJS.getCustomField(projectType[this.taskMessage.projectType])
+        let columnType = projectType[this.taskMessage.projectType]
+        if(this.taskMessage.projectType == 2 && this.taskMessage.reportType == 7){
+            columnType = 'invalidReportProject'
+        }
+        this.columnList = await this.$commonJS.getCustomField(columnType)
     },
     //获取所属项目信息
     getProjectMessage(){