zhuliu 1 年之前
父節點
當前提交
adec304e8c

+ 4 - 39
src/api/index.js

@@ -1,27 +1,8 @@
-// import report from "./report";
-// import template from "./template";
-// // import custom from "./custom";
-// import field from "./field";
-// import data from "./data";
-// // import common from "./common";
-// import oauth2 from "./oauth2";
-// // import project from "./project";
-// import download from "./download";
+
 import client from "./client";
 import user from "./user";
-// import task from "./task";
-// // import patent from "./patent";
 import admin from "./admin";
 import permission from "./permission";
-// import reportManage from "./reportManage";
-// // import product from "./product";
-// import quartz from './quartz';
-// import highlight from './highlight';
-
-// import matters from './matters';
-// import importPatent from './importPatent'
-
-// import InvalidResponse from "./InvalidResponse";
 
 
 // 新系统新接口文件
@@ -39,30 +20,13 @@ import patent from './newApi/patent'
 import custom from "./newApi/custom";
 import otherPatentInformation from "./newApi/otherPatentInformation";
 import translate from "./newApi/translate";
+import noveltySearch from "./newApi/noveltySearch";
 
 export default {
-  // ...report,
-  // ...template,
-  
-  // ...field,
-  // ...data,
-  // ...oauth2,
-  // ...project,
-  // ...download,
   ...client,
   ...user,
-  // ...task,
-  // ...patent,
-  // ...common,
   ...admin,
   ...permission,
-  // ...reportManage,
-  // ...product,
-  // ...quartz,
-  // ...importPatent,
-  // ...highlight,
-  // ...matters,
-  // ...InvalidResponse,
 
   ...event,
   ...product,
@@ -77,5 +41,6 @@ export default {
   ...patent,
   ...custom,
   ...otherPatentInformation,
-  ...translate
+  ...translate,
+  ...noveltySearch
 }

+ 25 - 0
src/api/newApi/noveltySearch.js

@@ -0,0 +1,25 @@
+import axios from "@/utils/axios";
+// 新系统文件新接口
+export default {
+    //添加查新检索报告
+    addNoveltyProject(data){
+        return axios.post('/xiaoshi/noveltyProject/addNoveltyProject', data)
+    },
+    //编辑查新检索报告
+    updateNoveltyProject(data){
+        return axios.post('/xiaoshi/noveltyProject/updateNoveltyProject', data)
+    },
+    //查询查新检索报告
+    queryNoveltyProject(data){
+        return axios.post('/xiaoshi/noveltyProject/queryNoveltyProject', data)
+    },
+
+    //添加或编辑技术方案信息
+    addOrUpdateTechnicalCase(data){
+        return axios.post('/xiaoshi/noveltyProject/addOrUpdateTechnicalCase', data)
+    },
+    //查询技术方案信息
+    queryTechnicalCase(data){
+        return axios.post('/xiaoshi/noveltyProject/queryTechnicalCase', data)
+    },
+};

+ 6 - 3
src/utils/common.js

@@ -528,10 +528,11 @@ treeToArray(data,prop={children:children}){
 
   /**
    * 跳转到导入专利界面
-   * @param {Object} data 参数
+   * @param {Object} data 导入的参数
    * @param {*} type 导入类型
+   * @param {*} params 其他数据
    */
-  toImportParent(data, type) {
+  toImportParent(data, type,params={}) {
     if(!(Permission.FunPermissions('xiaoshi/patentImport'))){
       showPermissionDialog()
       return false
@@ -541,7 +542,9 @@ treeToArray(data,prop={children:children}){
       2: '/PatentNoImport',
       4: '/conditionImport'
     }
-    var query = {}
+    var query = {
+      ...params
+    }
     if(data){
       query.importData = JSON.stringify(data)
     }

+ 1 - 1
src/utils/model/RichText/index.vue

@@ -98,7 +98,7 @@ export default {
       
     })
     window.onkeydown = this.checkKeyPress
-    
+    this.setFocus()
   },
   methods: {
     setFocus(){

+ 1 - 1
src/views/components/import/conditionImport/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div style="background:white">
-    <search :importData="importData" :editData="editData" :noveltySearch='noveltySearch' :projectId="projectId"></search>
+    <search :importData="importData" :editData="editData" :noveltySearch='noveltySearch' :projectId="projectId" :isEdit="isEdit"></search>
   </div>
 </template>
 

+ 38 - 4
src/views/components/import/conditionImport/search.vue

@@ -24,7 +24,7 @@
             </div>  
             <div style="width:15%;height:100%">
                 <!-- <createNoveltySearch ref="createNoveltySearch" width="15%" :show="true" :position="{right:0,top:'120px'}"></createNoveltySearch> -->
-                <inventionPointDialog type="plus" :btns="[1,2,3]" v-if="noveltySearch"></inventionPointDialog>
+                <inventionPointDialog type="plus" :projectId="projectId" :btns="[1,2,3]" v-if="noveltySearch" @getProjectId="getProjectId"></inventionPointDialog>
             </div>
         </div>
         
@@ -49,7 +49,7 @@ export default {
         createNoveltySearch
     },
     mixins:[mixins],
-    props:['importData','editData','noveltySearch','projectId'],
+    props:['importData','editData','noveltySearch','projectId','isEdit'],
     data() {
         return {
             isComponent:'customSearch',
@@ -127,11 +127,18 @@ export default {
         changeComponent(val){
             this.isComponent = val
         },
-        search(val,data){
+        async search(val,data){
             if(val == '' && data.component!='patentNoSearch'){
                 this.$message.error('检索信息不能为空')
                 return false
             }
+            if(this.noveltySearch && !this.projectId){
+                var sign = await this.addNoveltyProject()
+                if(!sign){
+                    this.$message.error('系统发生错误')
+                    return
+                }
+            }
             var a = {
                 ...this.importData,
                 searchCondition:val,
@@ -167,7 +174,34 @@ export default {
             })
             window.open(router.href, '_blank');
         },
-
+        //创建查新检索项目
+        async addNoveltyProject(){
+            var params = {}
+            var sign = true
+            await this.$api.addNoveltyProject(params).then(response=>{
+                if(response.code== 200){
+                    var project = response.data
+                    this.getProjectId(project)
+                }
+            }).catch(error=>{
+                sign = false
+            })
+            return sign
+        },
+        //获取项目id
+        getProjectId(projectId){
+            this.$router.replace(
+                {
+                    path:'/conditionImport',
+                    query:{
+                        'importData':JSON.stringify(this.importData),
+                        'isEdit':this.isEdit,
+                        'noveltySearch':this.noveltySearch,
+                        'projectId':projectId
+                    }
+                }
+            )
+        },
     },
 }
 </script>

+ 53 - 55
src/views/noveltySearch/components/details/components/basicMessage/basicMessage.vue

@@ -35,102 +35,102 @@
                 <el-card shadow="always">
                     <el-form style="width:100%" :model="reportMessage" label-width="140px">
                         <el-form-item label="案件名称:">
-                            <div class="box1" v-html="reportMessage.signPatentNo"></div>
+                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'caseName' })"></div>
                         </el-form-item>
                         <el-form-item label="初步结论:">
-                            <div  v-if="!editField.conclusion" class="flex_center">
-                                <div v-html="reportMessage.conclusion" class="div_MAX_Height" style="color:#000000 !important;"></div>
-                                <span @click="edit(reportMessage,'conclusion')">
+                            <div  v-if="!editField.preliminaryConclusions" class="flex_center">
+                                <div v-html="reportMessage.preliminaryConclusions" class="div_MAX_Height" style="color:#000000 !important;"></div>
+                                <span @click="edit(reportMessage,'preliminaryConclusions')">
                                     <el-link type="primary">
                                         <i class="iconfont icon-bianji" style="font-size:28px"></i>
                                     </el-link>
                                 </span>
                             </div>
                             <div v-else class="width_100 flex_center">
-                                <el-select style="width:100%" v-model="reportMessage.conclusion" placeholder="请选择">
+                                <el-select style="width:100%" v-model="reportMessage.preliminaryConclusions" placeholder="请选择">
                                   <el-option v-for="item in conclusionList" :key="item" :label="item" :value="item"></el-option>
                                 </el-select>
-                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'conclusion')"></el-button>
-                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'conclusion')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'preliminaryConclusions')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'preliminaryConclusions')"></el-button>
                             </div>
                         </el-form-item>
                         <el-form-item label="是否具有专利性:">
-                            <div  v-if="!editField.patentability" class="flex_center">
-                                <div v-html="reportMessage.patentability" class="div_MAX_Height" style="color:#000000 !important;"></div>
-                                <span @click="edit(reportMessage,'patentability')">
+                            <div  v-if="!editField.ifPatentability" class="flex_center">
+                                <div v-html="reportMessage.ifPatentability" class="div_MAX_Height" style="color:#000000 !important;"></div>
+                                <span @click="edit(reportMessage,'ifPatentability')">
                                     <el-link type="primary">
                                         <i class="iconfont icon-bianji" style="font-size:28px"></i>
                                     </el-link>
                                 </span>
                             </div>
                             <div v-else class="width_100 flex_center">
-                                <el-select style="width:100%" v-model="reportMessage.patentability" placeholder="请选择">
+                                <el-select style="width:100%" v-model="reportMessage.ifPatentability" placeholder="请选择">
                                   <el-option v-for="item in patentabilityList" :key="item" :label="item" :value="item"></el-option> 
                                 </el-select>
-                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'patentability')"></el-button>
-                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'patentability')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'ifPatentability')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'ifPatentability')"></el-button>
                             </div>
                         </el-form-item>
                         <el-form-item label="申请建议:">
-                            <div  v-if="!editField.applicationSuggestion" class="flex_center">
-                                <div v-html="reportMessage.applicationSuggestion" class="div_MAX_Height" style="color:#000000 !important;"></div>
-                                <span @click="edit(reportMessage,'applicationSuggestion')">
+                            <div  v-if="!editField.applicationAdvice" class="flex_center">
+                                <div v-html="reportMessage.applicationAdvice" class="div_MAX_Height" style="color:#000000 !important;"></div>
+                                <span @click="edit(reportMessage,'applicationAdvice')">
                                     <el-link type="primary">
                                         <i class="iconfont icon-bianji" style="font-size:28px"></i>
                                     </el-link>
                                 </span>
                             </div>
                             <div v-else class="width_100 flex_center">
-                                <el-select style="width:100%" v-model="reportMessage.applicationSuggestion" placeholder="请选择">
+                                <el-select style="width:100%" v-model="reportMessage.applicationAdvice" placeholder="请选择">
                                   <el-option v-for="item in applicationSuggestionList" :key="item" :label="item" :value="item"></el-option>
                                 </el-select>
-                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'applicationSuggestion')"></el-button>
-                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'applicationSuggestion')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'applicationAdvice')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'applicationAdvice')"></el-button>
                             </div>
                         </el-form-item>
                         <el-form-item label="申请描述:">
-                            <div  v-if="!editField.applicationSuggestionDescription" class="flex_center">
-                                <div v-html="reportMessage.applicationSuggestionDescription" class="div_MAX_Height" style="color:#000000 !important;"></div>
-                                <span @click="edit(reportMessage,'applicationSuggestionDescription')">
+                            <div  v-if="!editField.applicationRemark" class="flex_center">
+                                <div v-html="reportMessage.applicationRemark" class="div_MAX_Height" style="color:#000000 !important;"></div>
+                                <span @click="edit(reportMessage,'applicationRemark')">
                                     <el-link type="primary">
                                         <i class="iconfont icon-bianji" style="font-size:28px"></i>
                                     </el-link>
                                 </span>
                             </div>
                             <div v-else class="wdith_100 flex_center">
-                                <myRich-Text style="width:100%" v-model="reportMessage.applicationSuggestionDescription" placeholder="请输入"></myRich-Text>
-                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'applicationSuggestionDescription')"></el-button>
-                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'applicationSuggestionDescription')"></el-button>
+                                <myRich-Text style="width:100%" v-model="reportMessage.applicationRemark" placeholder="请输入"></myRich-Text>
+                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'applicationRemark')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'applicationRemark')"></el-button>
                             </div>
                         </el-form-item>
                         <el-form-item label="需要补充资料:">
-                            <div  v-if="!editField.additionalInformation" class="flex_center">
-                                <div v-html="reportMessage.additionalInformation" class="div_MAX_Height" style="color:#000000 !important;"></div>
-                                <span @click="edit(reportMessage,'additionalInformation')">
+                            <div  v-if="!editField.replenishMeans" class="flex_center">
+                                <div v-html="reportMessage.replenishMeans" class="div_MAX_Height" style="color:#000000 !important;"></div>
+                                <span @click="edit(reportMessage,'replenishMeans')">
                                     <el-link type="primary">
                                         <i class="iconfont icon-bianji" style="font-size:28px"></i>
                                     </el-link>
                                 </span>
                             </div>
                             <div v-else class="wdith_100 flex_center">
-                                <myRich-Text style="width:100%" v-model="reportMessage.additionalInformation" placeholder="请输入"></myRich-Text>
-                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'additionalInformation')"></el-button>
-                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'additionalInformation')"></el-button>
+                                <myRich-Text style="width:100%" v-model="reportMessage.replenishMeans" placeholder="请输入"></myRich-Text>
+                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'replenishMeans')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'replenishMeans')"></el-button>
                             </div>
                         </el-form-item>
                         <el-form-item label="撰写要点建议:">
-                            <div  v-if="!editField.writingSuggestions" class="flex_center">
-                                <div v-html="reportMessage.writingSuggestions" class="div_MAX_Height" style="color:#000000 !important;"></div>
-                                <span @click="edit(reportMessage,'writingSuggestions')">
+                            <div  v-if="!editField.writeAdvice" class="flex_center">
+                                <div v-html="reportMessage.writeAdvice" class="div_MAX_Height" style="color:#000000 !important;"></div>
+                                <span @click="edit(reportMessage,'writeAdvice')">
                                     <el-link type="primary">
                                         <i class="iconfont icon-bianji" style="font-size:28px"></i>
                                     </el-link>
                                 </span>
                             </div>
                             <div v-else class="wdith_100 flex_center">
-                                <myRich-Text style="width:100%" v-model="reportMessage.writingSuggestions" placeholder="请输入"></myRich-Text>
-                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'writingSuggestions')"></el-button>
-                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'writingSuggestions')"></el-button>
+                                <myRich-Text style="width:100%" v-model="reportMessage.writeAdvice" placeholder="请输入"></myRich-Text>
+                                <el-button type="primary" class="margin-left_10" icon="el-icon-check" circle style="font-size:15px" @click="submit(reportMessage,'writeAdvice')"></el-button>
+                                <el-button type="primary" class="margin-left_10" icon="iconfont icon-fanhui" circle style="font-size:15px" @click="cancel(reportMessage,'writeAdvice')"></el-button>
                             </div>
                         </el-form-item>
                     </el-form>
@@ -199,24 +199,14 @@ export default {
     },
     //获取报告信息
     getReportMessage(){
-      this.reportMessage = {
-          reportType:8,
-          signPatentNo:'一种技术',
-          name:'查新报告',
-          clientNo:'123',
-          volumeNumber:'235',
-          appCompany:'华为',
-          inventor:'z',
-          IPR:'ws',
-          interfaceName:'',
-          entrustName:'华为',
-          departmentName:'君龙',
-          searchUnit:'威世博',
-          headName:'管理员',
-          reviewer:'s',
-          status:2,
-          conclusion:'未检索到影响其专利性的对比文件'
+      var params = {
+        projectId:this.projectId
+      }
+      this.$api.queryNoveltyProject(params).then(response=>{
+        if(response.code == 200){
+            this.reportMessage = response.data.data[0] || {}
         }
+      })
     },
     //编辑报告基本信息
     editReportMessage(){
@@ -227,7 +217,15 @@ export default {
     },
     //保存修改
     saveReportMessage(){
-        this.editMessage.edit = false
+        this.$api.updateNoveltyProject(this.reportMessage).then(response=>{
+            if(response.code == 200){
+                this.$message.success('编辑成功')
+                this.editMessage.edit = false
+            }
+        }).catch(error=>{
+            this.$message.error('编辑失败')
+        })
+        
     },
     //取消编辑
     cancelEditMessage(){

+ 20 - 20
src/views/noveltySearch/components/details/components/basicMessage/components/basicMessage/basicMessageDetails.vue

@@ -4,20 +4,20 @@
         <template>
             <el-row>
                 <el-col :span="12">
-                <el-form-item label="客户案号" prop="clientNo">
-                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'clientNo' })"></div>
+                <el-form-item label="客户案号" prop="customCaseNumber">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'customCaseNumber' })"></div>
                 </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                <el-form-item label="内部案号" prop="volumeNumber">
-                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'volumeNumber' })"></div>
+                <el-form-item label="内部案号" prop="innerCaseNumber">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'innerCaseNumber' })"></div>
                 </el-form-item>
                 </el-col>
             </el-row>
             <el-row>
                 <el-col :span="12">
-                <el-form-item label="申请单位" prop="appCompany">
-                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'appCompany' })"></div>
+                <el-form-item label="申请单位" prop="applicants">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'applicants' })"></div>
                 </el-form-item>
                 </el-col>
                 <el-col :span="12">
@@ -28,13 +28,13 @@
             </el-row>
             <el-row>
                 <el-col :span="12">
-                <el-form-item label="IPR" prop="IPR">
-                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'IPR' })"></div>
+                <el-form-item label="IPR" prop="ipr">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'ipr' })"></div>
                 </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                <el-form-item label="技术接口人" prop="interfaceName">
-                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'interfaceName' })"></div>
+                <el-form-item label="技术接口人" prop="technicalContact">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'technicalContact' })"></div>
                 </el-form-item>
                 </el-col>
             </el-row>
@@ -42,18 +42,18 @@
                 <el-col :span="12">
                 <template>
                     <div>
-                        <el-form-item label="委托方:" prop="entrustId" v-if="userinfo.tenantType == 1">
+                        <el-form-item label="委托方:" prop="entrustName" v-if="userinfo.tenantType == 1">
                             <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'entrustName' })"></div>
                         </el-form-item>
-                        <el-form-item label="委托部门:" prop="departmentId" v-else>
-                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
+                        <el-form-item label="委托部门:" prop="entrustName" v-else>
+                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'entrustName' })"></div>
                         </el-form-item>
                     </div>
                 </template>
             </el-col>
                 <el-col :span="12">
-                    <el-form-item label="承担部门:" prop="departmentId">
-                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
+                    <el-form-item label="承担部门:" prop="departmentName">
+                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
                     </el-form-item>
                 </el-col>
             </el-row>
@@ -64,20 +64,20 @@
                 </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                <el-form-item label="负责人" prop="searchPerson">
+                <el-form-item label="负责人" prop="headName">
                     <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'headName' })"></div>
                 </el-form-item>
                 </el-col>
             </el-row>
             <el-row>
                 <el-col :span="12">
-                <el-form-item label="检索员联系方式" prop="searchPersonNumber">
-                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'searchPersonNumber' })"></div>
+                <el-form-item label="检索员联系方式" prop="searchUnitContact">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'searchUnitContact' })"></div>
                 </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                <el-form-item label="检索审核人" prop="reviewer">
-                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'reviewer' })"></div>
+                <el-form-item label="检索审核人" prop="searchReviewer">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'searchReviewer' })"></div>
                 </el-form-item>
                 </el-col>
             </el-row>

+ 18 - 18
src/views/noveltySearch/components/details/components/basicMessage/components/basicMessage/basicMessageEdit.vue

@@ -4,20 +4,20 @@
             <template>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="客户案号" prop="clientNo">
-                            <el-input v-model="reportMessage.clientNo" placeholder="请输入客户案号"></el-input>
+                        <el-form-item label="客户案号" prop="customCaseNumber">
+                            <el-input v-model="reportMessage.customCaseNumber" placeholder="请输入客户案号"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="内部案号" prop="volumeNumber">
-                            <el-input v-model="reportMessage.volumeNumber" placeholder="请输入内部案号"></el-input>
+                        <el-form-item label="内部案号" prop="innerCaseNumber">
+                            <el-input v-model="reportMessage.innerCaseNumber" placeholder="请输入内部案号"></el-input>
                         </el-form-item>
                     </el-col>
                 </el-row>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="申请单位" prop="appCompany">
-                            <el-input v-model="reportMessage.appCompany" placeholder="请输入申请单位"></el-input>
+                        <el-form-item label="申请单位" prop="applicants">
+                            <el-input v-model="reportMessage.applicants" placeholder="请输入申请单位"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
@@ -28,13 +28,13 @@
                 </el-row>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="IPR" prop="IPR">
-                            <el-input v-model="reportMessage.IPR" placeholder="请输入IPR"></el-input>
+                        <el-form-item label="IPR" prop="ipr">
+                            <el-input v-model="reportMessage.ipr" placeholder="请输入IPR"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="技术接口人" prop="interfaceName">
-                            <el-input v-model="reportMessage.interfaceName" placeholder="请输入技术接口人"></el-input>
+                        <el-form-item label="技术接口人" prop="technicalContact">
+                            <el-input v-model="reportMessage.technicalContact" placeholder="请输入技术接口人"></el-input>
                         </el-form-item>
                     </el-col>
                 </el-row>
@@ -42,13 +42,13 @@
                     <el-col :span="12">
                     <template>
                         <div>
-                            <el-form-item label="委托方:" prop="entrustId" v-if="userinfo.tenantType == 1">
+                            <el-form-item label="委托方:" prop="entrustName" v-if="userinfo.tenantType == 1">
                                 <el-autocomplete style="width:100%" v-model="reportMessage.entrustName" ref="client" value-key="name" :fetch-suggestions="querySearch" v-SelectLazyLoading="loadClient"
                                     @input="input" placeholder="请输入内容" :trigger-on-focus="false" @select="handleChange">
                                 </el-autocomplete>
                             </el-form-item>
-                            <el-form-item label="委托部门:" prop="departmentId" v-else>
-                                <mySelectTree style="width:100%" v-model="reportMessage.departmentId" :options="departmentList">
+                            <el-form-item label="委托部门:" prop="entrustId" v-else>
+                                <mySelectTree style="width:100%" v-model="reportMessage.entrustId" :options="departmentList">
                                 </mySelectTree>
                             </el-form-item>
                         </div>
@@ -68,7 +68,7 @@
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="负责人" prop="searchPerson">
+                        <el-form-item label="负责人" prop="headId">
                             <el-select style="width:100%" v-model="reportMessage.headId" filterable remote clearable placeholder="请选择"
                                 :loading="personnelList.loading" v-SelectLazyLoading="loadHead" :remote-method="remoteMethod">
                                 <el-option v-for="item in personnelList.data" :key="item.id" :label="item.name" :value="item.id">
@@ -79,13 +79,13 @@
                 </el-row>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="检索员联系方式" prop="searchPersonNumber">
-                            <el-input v-model="reportMessage.searchPersonNumber" placeholder="请输入检索员联系方式"></el-input>
+                        <el-form-item label="检索员联系方式" prop="searchUnitContact">
+                            <el-input v-model="reportMessage.searchUnitContact" placeholder="请输入检索员联系方式"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="检索审核人" prop="reviewer">
-                            <el-input v-model="reportMessage.reviewer" placeholder="请输入检索审核人"></el-input>
+                        <el-form-item label="检索审核人" prop="searchReviewer">
+                            <el-input v-model="reportMessage.searchReviewer" placeholder="请输入检索审核人"></el-input>
                         </el-form-item>
                     </el-col>
                 </el-row>

+ 231 - 108
src/views/noveltySearch/components/details/components/contrastFile/contrastFile.vue

@@ -20,11 +20,19 @@
               
           </el-header>
           <el-main v-DivHeight="getDivHeight">
-              <el-table :data="tableData" border :maxHeight="tableHeight - 35" style="width: 100%">
+              <el-table :data="tableData" border :maxHeight="tableHeight - 35" style="width: 100%" @cell-dblclick="cellDblclick" @cell-click="cellClick">
                   <el-table-column prop="sysOrder" label="序号" width="80" align="center">
                       <template slot-scope="scope">
                           <div v-if="!choose">
                               <el-link type="primary" @click="checkDetails(scope)">D{{ scope.$index+1 }}</el-link>
+                              <span>
+                                <my-draggable :list="tableData" :check="scope.row.id" @change="changeOrder" @update="updateOrder">
+                                    <template v-slot:default="data">
+                                        D{{ data.data.sysOrder }}-{{ data.data.name }}
+                                    </template>
+                                    
+                                </my-draggable>
+                            </span>
                           </div>
                           <div v-else>
                             <el-checkbox-group v-model="checkList">
@@ -33,80 +41,22 @@
                           </div>
                       </template>
                   </el-table-column>
-                  <el-table-column prop="patentNo" label="专利号" align="center">
-                      <template slot-scope="scope">
-                          <div>
-                              {{scope.row.patentNo}}
-                          </div>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="name" label="名称" align="center">
-                      <template slot-scope="scope">
-                          <span >
-                              {{scope.row.name}}
-                          </span>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="publicNo" label="公开/公告号" align="center">
-                      <template slot-scope="scope">
-                          <div>
-                              {{scope.row.publicNo}}
-                          </div>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="publicDate" label="公开/公告日" align="center">
-                      <template slot-scope="scope">
-                          <div>
-                              {{scope.row.publicDate}}
-                          </div>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="appDate" label="申请日" align="center">
-                      <template slot-scope="scope">
-                          <div>
-                              {{scope.row.appDate}}
-                          </div>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="appPerson" label="申请人" align="center">
-                      <template slot-scope="scope">
-                          <div v-if="scope.row.applicant && scope.row.applicant.length>0">
-                              {{scope.row.applicant.join('、')}}
-                          </div>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="description" label="标注" align="center">
-                      <template slot-scope="scope">
+                  <el-table-column  v-for="item in column.filter(item=>!item.ifHidden)" :key="item.field" :prop="item.field" :label="item.name" :width="item.width || 'auto'"
+                        align="center">
+                        <template slot-scope="scope">
                           <div>
-                              {{scope.row.description}}
-                          </div>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="relevance" label="相关度" align="center">
-                      <template slot-scope="scope">
-                          <div>
-                              {{scope.row.relevance}}
-                          </div>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="innovate" label="影响新创新" align="center">
-                      <template slot-scope="scope">
-                          <div>
-                              {{scope.row.innovate}}
-                          </div>
-                      </template>
-                  </el-table-column>
-                  <el-table-column prop="remark" label="备注" align="center">
-                      <template slot-scope="scope">
-                          <div>
-                              {{scope.row.remark}}
+                            <div v-if="editedMessage.field && editedMessage.field == item.field && editedMessage.data.id == scope.row.id">
+                                <my-RichText :autoFocus="true" :value="$commonJS.getColumnData(scope.row,item)" @blur="(value)=>changeMessage(item,scope.row,value)"></my-RichText>
+                            </div>
+                            <div v-else v-html="$commonJS.getColumnData(scope.row,item)"></div>
                           </div>
                       </template>
                   </el-table-column>
+
                   <el-table-column label="操作" align="center" v-if="!choose">
                       <template slot-scope="scope">
                           <div>
-                              <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
+                              <!-- <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button> -->
                               <el-button @click="remove(scope)" type="text" size="small">删除</el-button>
                           </div>
                       </template>
@@ -121,10 +71,76 @@
 <script>
   import { mapGetters } from "vuex";
   import { getTableHeight } from '@/views/components/mixins'
+  import {tableEdit} from './mixins'
+  import myDraggable from '@/views/report/InvalidResponse/components/draggable/index.vue'
+
+  const column = [
+    {
+        field:'patentNo',
+        type:'string',
+        name:'专利号',
+        editable:false,
+    },
+    {
+        field:'name',
+        type:'string',
+        name:'名称',
+        editable:false,
+    },
+    {
+        field:'publicNo',
+        type:'string',
+        name:'公开/公告号',
+        editable:false,
+    },
+    {
+        field:'publicDate',
+        type:'string',
+        name:'公开/公告日',
+        editable:false,
+    },
+    {
+        field:'appDate',
+        type:'string',
+        name:'申请日',
+        editable:false,
+    },
+    {
+        field:'appPerson',
+        type:'string',
+        name:'申请人',
+        editable:false,
+    },
+    {
+        field:'description',
+        type:'string',
+        name:'标注',
+        editable:true,
+    },
+    {
+        field:'relevance',
+        type:'string',
+        name:'相关度',
+        editable:true,
+    },
+    {
+        field:'innovate',
+        type:'string',
+        name:'影响新创新',
+        editable:true,
+    },
+    {
+        field:'remark',
+        type:'string',
+        name:'备注',
+        editable:true,
+    },
+  ]
   export default {
     components: {
+        myDraggable
     },
-    mixins:[getTableHeight],
+    mixins:[getTableHeight,tableEdit],
     props: {
       projectId:{
           default:null
@@ -155,6 +171,7 @@
           queryParams:{
               projectId:this.projectId,
           },
+          column:column
       };
     },
     watch: {},
@@ -189,6 +206,8 @@
       getList(){
         this.tableData = [
             {
+                id:1,
+                sysOrder:1,
                 "patentNo": "CN202421185429.8",
                 name:'A SOLID STATE BATTERY HAVING A DISORDERED HYDROGENATED CARBON NEGATIVE ELECTRODE',
                 "publicNo": "WO9719481A1",
@@ -267,52 +286,156 @@
           importToType:1,
           type:type,
         }
+        var params = {}
         if(type == 4){
           form.reportType = this.reportType
+          params = {
+            projectId:this.projectId,
+            noveltySearch:true
+          }
         }
-        this.$commonJS.toImportParent(form,type)
+        this.$commonJS.toImportParent(form,type,params)
       },
 
       //删除
-      remove(scope){
-          var row = scope.row
-          var index = scope.$index
-          var ids=[row.id]
-          this.$confirm('确认删除本条数据吗?', '提示', {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
-            type: 'warning'
-          }).then(() => {
-              this.$api.deleteCompareLiterature(ids).then(response=>{
-                  if(response.code == 200){
-                      this.$message.success('删除成功')
-                      this.deleteUpdateOrder(index)
-                  }
-              }).catch(error=>{
-                  this.$message.error('删除失败')
-              })
-          })
-          
-      },
-      //删除后更新排序
-      deleteUpdateOrder(index){
-          var data = []
-          for(var i = index+1;i<this.tableData.length;i++){
-              var order = this.tableData[i].sysOrder
-              data.push(
-                  {
-                      id:this.tableData[i].id,
-                      sysOrder:Number(order) - 1
-                  }
-              )
-          }
-          this.updateLiteratureOrder(data,true)
-      },
-      //编辑?编辑的内容是什么?
-      edit(row){
-        var data = row
+    remove(scope){
+        var row = scope.row
+        var index = scope.$index
+        var ids=[row.id]
+        this.$confirm('确认删除本条数据吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+            this.$api.deleteCompareLiterature(ids).then(response=>{
+                if(response.code == 200){
+                    this.$message.success('删除成功')
+                    this.deleteUpdateOrder(index)
+                }
+            }).catch(error=>{
+                this.$message.error('删除失败')
+            })
+        })
         
-      },
+    },
+    //删除后更新排序
+    deleteUpdateOrder(index){
+        var data = []
+        for(var i = index+1;i<this.tableData.length;i++){
+            var order = this.tableData[i].sysOrder
+            data.push(
+                {
+                    id:this.tableData[i].id,
+                    sysOrder:Number(order) - 1
+                }
+            )
+        }
+        this.updateLiteratureOrder(data,true)
+    },
+    //编辑
+    edit(row){
+        this.addLiterature(row)
+    },
+    changeMessage(field,row,value){
+        this.cancelEdit()
+    },
+    /**
+     * 交换位置
+     * @param {*} now 和谁交换,交换后的排序
+     * @param {*} old 交换前的
+     */
+    changeOrder(now,old){
+        var nowIndex = this.tableData.findIndex(item=>{
+            return item.id == now
+        })
+        var oldIndex = this.tableData.findIndex(item=>{
+            return item.id == old
+        })
+        if(nowIndex == -1 || oldIndex == -1){
+            return
+        }
+        // var order = this.tableData[nowIndex].sysOrder
+        // this.tableData[nowIndex].sysOrder = this.tableData[oldIndex].sysOrder
+        // this.tableData[oldIndex].sysOrder = order
+        var data = [
+            {
+                id:now,
+                sysOrder:this.tableData[oldIndex].sysOrder
+            },
+            {
+                id:old,
+                sysOrder:this.tableData[nowIndex].sysOrder
+            }
+        ]
+        this.updateLiteratureOrder(data)
+    },
+    /**
+     * 拖动排序
+     * @param {*} now 拖动后的位置
+     * @param {*} old 拖动前的位置
+     */
+    updateOrder(now,old){
+        if(now == old){
+            return
+        }
+        var min = 0,
+        max = 0,
+        type=true,
+        currentOrder = null
+        if(now<old){//上移
+            min = now
+            max = old
+        }else{//下移
+            min = old
+            max = now
+            type = false
+        }
+        currentOrder = this.tableData[now].sysOrder
+        var data = []
+        for(var i = min;i<= max;i++){
+            // var order = this.tableData[i].sysOrder
+            var obj = {
+                id:this.tableData[i].id
+            }
+            if(type){
+                if(i == max){
+                    obj.sysOrder = currentOrder
+                }else{
+                   
+                    // obj.sysOrder = Number(order)+1
+                    obj.sysOrder = this.tableData[i+1].sysOrder
+                }
+            }else{
+                if(i == min){
+                    obj.sysOrder = currentOrder
+                }else{
+                    // obj.sysOrder = Number(order)-1
+                    obj.sysOrder = this.tableData[i-1].sysOrder
+                }
+            }
+            data.push(obj)
+        }
+        this.updateLiteratureOrder(data)
+    },
+    //更新排序
+    async updateLiteratureOrder(dtoList,type){
+        if(!(await this.$permission.projectPermission(this.projectId)) && !type){
+            this.$showPermissionDialog()
+            return false
+        }
+        this.$api.updateLiteratureOrder(dtoList).then(response=>{
+            if(response.code == 200){
+                if(!type){
+                 this.$message.success('更新排序成功')   
+                }
+                this.getList()
+            }
+        }).catch(error=>{
+            if(!type){
+                this.$message.error('更新排序失败') 
+            }
+        })
+    }
      
     },
   };

+ 34 - 0
src/views/noveltySearch/components/details/components/contrastFile/mixins.js

@@ -0,0 +1,34 @@
+export const tableEdit = {
+    data() {
+        return {
+            editedMessage:{}
+        }
+    },
+    methods: {
+         //双击单元格进行编辑
+      cellDblclick(row, column, cell, event){
+        var key = column.property
+        if(row){
+            if(this.editedMessage.field){
+              return
+            }
+            this.cell={
+              rowId:row.id,
+              columnId:column.id
+            }
+            this.editedMessage = {
+              field:key,
+              data: JSON.parse(JSON.stringify(row))
+            }
+            return
+          }
+      },
+      cellClick(row, column, cell, event){
+        
+      },
+      cancelEdit(){
+        this.editedMessage={}
+      },
+      
+    },
+}

+ 2 - 1
src/views/noveltySearch/components/details/components/contrastRecords/contrastRecords.vue

@@ -45,7 +45,8 @@ export default {
         default:()=>{
             return []
         }
-    }
+    },
+    projectId:{}
   },
   data() {
     return {

+ 38 - 20
src/views/noveltySearch/components/details/components/signMessage/signMessage.vue

@@ -8,18 +8,18 @@
       <div style="width: 500px;margin: auto;">
         <el-form v-if="edit" :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-form">
   
-          <el-form-item label="IPC类号:" prop="IPC">
-            <el-input v-model="form.IPC" placeholder="请输入IPC类号"></el-input>
+          <el-form-item label="IPC类号:" prop="ipc">
+            <el-input v-model="form.ipc" placeholder="请输入IPC类号"></el-input>
           </el-form-item>
-          <el-form-item label="解决的问题:" prop="question">
-            <myRich-Text style="width:100%" v-model="form.productDescription" placeholder="请输入解决的问题"></myRich-Text>
+          <el-form-item label="解决的问题:" prop="solvedProblem">
+            <myRich-Text style="width:100%" v-model="form.solvedProblem" placeholder="请输入解决的问题"></myRich-Text>
           </el-form-item>
   
-          <el-form-item label="方案技术领域:" prop="surveyArea">
-            <el-input v-model="form.surveyArea" placeholder="请输入方案技术领域"></el-input>
+          <el-form-item label="方案技术领域:" prop="technicalField">
+            <el-input v-model="form.technicalField" placeholder="请输入方案技术领域"></el-input>
           </el-form-item>
-          <el-form-item label="技术方案概述:" prop="overview">
-            <myRich-Text style="width:100%" v-model="form.overview" placeholder="请输入技术方案概述"></myRich-Text>
+          <el-form-item label="技术方案概述:" prop="remark">
+            <myRich-Text style="width:100%" v-model="form.remark" placeholder="请输入技术方案概述"></myRich-Text>
           </el-form-item>
           <el-form-item label="代表图:">
             <el-upload ref="upload" action="#" :auto-upload="false" multiple :on-change="handleChange" list-type="picture" :show-file-list="false">
@@ -46,16 +46,16 @@
   
         <el-form v-else :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-form">
           <el-form-item label="IPC类号:">
-            <span>{{ form.IPC  || '--' }}</span>
+            <span>{{ form.ipc  || '--' }}</span>
           </el-form-item>
           <el-form-item label="解决的问题:">
-            <span v-html="form.productDescription || '--'"></span>
+            <span v-html="form.solvedProblem || '--'"></span>
           </el-form-item>
           <el-form-item label="方案技术领域:">
-            <span v-html="form.surveyArea  || '--'"></span>
+            <span v-html="form.technicalField  || '--'"></span>
           </el-form-item>
           <el-form-item label="技术方案概述:">
-            <span v-html="form.overview  || '--'"></span>
+            <span v-html="form.remark  || '--'"></span>
           </el-form-item>
           <el-form-item label="代表图:">
             <span style="display:flex;flex-direction:row;flex-wrap:wrap;" v-if="form.systemFileList && form.systemFileList.length>0">
@@ -105,14 +105,21 @@ export default {
   methods: {
     //获取数据
     getList(){
-      this.form = {
-        IPC:'IPC号',
-        productDescription:'要解决的问题',
-        surveyArea:'技术领域',
-        overview:'技术方案概述:',
-        systemFileList:[],
-        inventionPoint:'发明点'
+      var params = {
+        projectId:this.projectId
       }
+      this.$api.queryTechnicalCase(params).then(response=>{
+        if(response.code == 200){
+          this.form = response.data || {}
+          if(!this.form.systemFileList){
+            this.form.systemFileList = []
+          }
+        }
+      }).catch(error=>{
+        this.form={
+          systemFileList:[],
+        }
+      })
     },
     // 编辑
     handleEdit() {
@@ -120,7 +127,18 @@ export default {
     },
     //保存
     isSave(){
-      this.edit = !this.edit
+      if(this.projectId){
+        this.form.projectId = this.projectId
+      }
+      this.$api.addOrUpdateTechnicalCase(this.form).then(response=>{
+        if(response.code == 200){
+          this.$message.success("编辑成功")
+          this.edit = !this.edit
+        }
+      }).catch(error=>{
+        this.$message.error('编辑失败')
+      })
+      
     },
     // 图片变化的change事件
     handleChange(file, fileList) {

+ 61 - 5
src/views/noveltySearch/components/dialog/inventionPoint/inventionPoint.vue

@@ -18,7 +18,7 @@
           </div>
         </div>
         <div class="main_input">
-          <el-input  type="textarea" v-model="inventionPoint"  resize="none"  :rows="10"  placeholder="请输入发明点"></el-input>
+          <el-input  type="textarea" v-model="technicalCase.inventionPoint"  resize="none"  :rows="10"  placeholder="请输入发明点"></el-input>
         </div>
         <div class="main_result" v-if="showResult">
           <div class="description">{{description[clickType]}}</div>
@@ -87,6 +87,9 @@
           <div class="foot" v-if="clickType == 1">
             <el-button type="primary" size="mini">检索</el-button>
           </div>
+          <div class="foot" v-if="clickType == 3">
+            <el-button type="primary" size="mini" @click="saveInventionPoint">保存</el-button>
+          </div>
         </div>
 
         <!-- 对比文件 -->
@@ -188,7 +191,9 @@ export default {
       show2:true,
       show: this.type == 'mini'?false:true,
       text: this.title,
-      inventionPoint:'发明点',
+      technicalCase:{
+        inventionPoint:'发明点',
+      },
       tableData:[],
       loading: false,
       showResult: false,
@@ -201,7 +206,7 @@ export default {
       description:{
         1:"以下是提炼的关键词:",
         2:'以下是相似案件:',
-        3:'以下是根据您输入的发明点找到的可能相同的案件,您确认一下是否是相同案件,如果是请相同案件的点击“进入”按钮,如果没有相同的案件就点击“直接进入”按钮进行检索'
+        3:'以下是根据您输入的发明点找到的可能相同的案件,您确认一下是否是相同案件,如果是请相同案件的点击“进入”按钮,如果没有相同的案件就点击“保存”按钮保存输入的发明点'
       },
       chooseContrastFile:[],
       cWidth:document.body.clientWidth
@@ -210,7 +215,10 @@ export default {
   watch: {
     position(){
       this.domPosition = this.position
-    }
+    },
+    projectId(){
+      this.getData()
+    },
   },
   computed: {},
   created() {},
@@ -221,6 +229,7 @@ export default {
   },
   mounted() {
     this.setPosition(this.type)
+    this.getData()
     window.addEventListener('resize',()=>{
       this.cWidth = document.body.clientWidth
     })
@@ -285,6 +294,26 @@ export default {
       })
       
     },
+    getData(){
+      if(!this.projectId){
+        this.technicalCase={
+          inventionPoint:'',
+        }
+        return
+      }
+      var params = {
+        projectId:this.projectId
+      }
+      this.$api.queryTechnicalCase(params).then(response=>{
+        if(response.code == 200){
+          this.technicalCase = response.data || {}
+        }
+      }).catch(error=>{
+        this.technicalCase={
+          inventionPoint:'',
+        }
+      })
+    },
     //选择关键词
     chooseKeyword(item) {
       var index = this.checkList.indexOf(item);
@@ -297,7 +326,14 @@ export default {
     //确定
     submit(type) {
       this.clickType = type
-      if(type!= 1){
+      if(type == 3){
+        if(this.projectId){
+          this.saveInventionPoint()
+          return
+        }
+      }
+      if(type == 1){}
+      else{
         this.tableData = [
                 {
                   id:1,
@@ -330,6 +366,25 @@ export default {
       this.showResult = true;
     },
     clickItem(){},
+    // 保存发明点
+    saveInventionPoint(){
+      var params = this.technicalCase
+      if(this.projectId){
+        params.projectId = this.projectId
+      }
+      this.$api.addOrUpdateTechnicalCase(params).then(response=>{
+        if(response.code == 200){
+          this.$message.success('保存成功')
+          if(!this.technicalCase.projectId){
+            this.$emit('getProjectId',response.data.projectId)
+          }
+          this.technicalCase.technicalCaseId = response.data.technicalCaseId
+          this.technicalCase.projectId = response.data.projectId
+        }
+      }).catch(error=>{
+        this.$message.error('保存失败')
+      })
+    },
   },
 };
 </script>
@@ -400,6 +455,7 @@ export default {
         .foot {
           display: flex;
           justify-content: flex-end;
+          margin-top:10px;
         }
       }
     }

+ 52 - 20
src/views/noveltySearch/components/exportReport/components/dahua.vue

@@ -7,38 +7,47 @@
         <table>
             <tr>
                 <td>提案编号:</td>
-                <td @dblclick="edit('basicMessage','number')">
-                    <div v-if="isEdit('basicMessage','number')">
-                        <myRichText v-model="dataObj.basicMessage.number" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                <td @dblclick="edit('basicMessage','customCaseNumber')">
+                    <div v-if="isEdit('basicMessage','customCaseNumber')">
+                        <myRichText v-model="dataObj.basicMessage.customCaseNumber" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                     </div>
-                    <div v-else>{{dataObj.basicMessage.number}}</div>
+                    <div v-else v-html="dataObj.basicMessage.customCaseNumber"></div>
                 </td>
             </tr>
             <tr>
                 <td>提案名称:</td>
-                <td @dblclick="edit('basicMessage','name')">
-                    <div v-if="isEdit('basicMessage','name')">
-                        <myRichText v-model="dataObj.basicMessage.name" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                <td @dblclick="edit('basicMessage','caseName')">
+                    <div v-if="isEdit('basicMessage','caseName')">
+                        <myRichText v-model="dataObj.basicMessage.caseName" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                     </div>
-                    <div v-else>{{dataObj.basicMessage.name}}</div>
+                    <div v-else>{{dataObj.basicMessage.caseName}}</div>
                 </td>
             </tr>
             <tr>
                 <td>技术接口人:</td>
-                <td>
-                    <span></span>
+                <td @dblclick="edit('basicMessage','technicalContact')">
+                    <div v-if="isEdit('basicMessage','technicalContact')">
+                        <myRichText v-model="dataObj.basicMessage.technicalContact" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                    </div>
+                    <div v-else v-html="dataObj.basicMessage.technicalContact"></div>
                 </td>
             </tr>
             <tr>
                 <td>检索机构/检索员:</td>
-                <td>
-                    <span></span>
+                <td @dblclick="edit('basicMessage','searchUnit')">
+                    <div v-if="isEdit('basicMessage','searchUnit')">
+                        <myRichText v-model="dataObj.basicMessage.searchUnit" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                    </div>
+                    <div v-else v-html="dataObj.basicMessage.searchUnit"></div>
                 </td>
             </tr>
             <tr>
                 <td>检索员联系方式:</td>
-                <td>
-                    <span></span>
+                <td @dblclick="edit('basicMessage','searchUnitContact')">
+                    <div v-if="isEdit('basicMessage','searchUnitContact')">
+                        <myRichText v-model="dataObj.basicMessage.searchUnitContact" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                    </div>
+                    <div v-else v-html="dataObj.basicMessage.searchUnitContact"></div>
                 </td>
             </tr>
             <tr>
@@ -53,20 +62,43 @@
         <div class="title">一、技术方案的分析</div>
         <div>
             <div class="title2">1、方案概述</div>
-            <div class="content" @dblclick="edit('signMessage','description')">
-                <div v-if="isEdit('signMessage','description')">
-                    <myRichText v-model="dataObj.signMessage.description" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+            <div class="content" @dblclick="edit('signMessage','remark')">
+                <div v-if="isEdit('signMessage','remark')">
+                    <myRichText v-model="dataObj.signMessage.remark" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                 </div>
-                <div v-else>{{dataObj.signMessage.description}}</div>
+                <div v-else v-html="dataObj.signMessage.remark"></div>
             </div>
         </div>
         <div>
             <div class="title2">2、主要附图(如有必要)</div>
-            <div class="content"></div>
+            <div class="content" @dblclick="edit('signMessage','systemFileList')">
+                <el-upload v-if="isEdit('signMessage','remark')" ref="upload" action="#" :auto-upload="false" multiple :on-change="handleChange" list-type="picture" :show-file-list="false">
+                    <span style="display:flex;flex-direction:row;flex-wrap:wrap;">
+                        <span class="avatar" v-for="(item) in dataObj.signMessage.systemFileList" :key="item.guid || item.uid"   style="margin-left:10px">
+                            <el-image fit="contain" ref="image" class="img" :src="item.guid ? $commonJS.checkViewer(item.guid) : item.url"
+                                :preview-src-list="dataObj.signMessage.systemFileList ? dataObj.signMessage.systemFileList.map(item => { return  $commonJS.checkViewer(item.guid)  }) : []"></el-image>
+                        </span>
+                        <i class="el-icon-plus avatar-uploader-icon"></i>
+                    </span>
+                </el-upload>
+                <div  v-else>
+                    <span style="display:flex;flex-direction:row;flex-wrap:wrap;" v-if="dataObj.signMessage.systemFileList && dataObj.signMessage.systemFileList.length>0">
+                        <span v-for="(item) in dataObj.signMessage.systemFileList" :key="item.guid || item.uid" style="margin-left:10px">
+                            <img style="width:120px;height:120px" :src="$commonJS.checkViewer(item.guid)" alt="" fit="contain">
+                        </span>
+                    </span>
+                </div>
+                
+            </div>
         </div>
         <div>
             <div class="title2">3、主要发明点</div>
-            <div class="content"></div>
+            <div class="content" @dblclick="edit('signMessage','inventionPoint')">
+                <div v-if="isEdit('signMessage','inventionPoint')">
+                    <myRichText v-model="dataObj.signMessage.inventionPoint" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                </div>
+                <div v-else v-html="dataObj.signMessage.inventionPoint"></div>
+            </div>
         </div>
     </div>
     <div class="mainContent">

+ 38 - 1
src/views/noveltySearch/components/exportReport/components/mixins.js

@@ -66,6 +66,43 @@ export default{
             }
             //执行保存
             this.clearEdit()
-        }
+        },
+
+        // 图片变化的change事件
+        handleChange(file, fileList) {
+            file.raw.url = file.url
+            this.form.systemFileList.push(file.raw)
+            this.uploadFile(file)
+        },
+        // 点击已上传的文件//showViewer是图片显示查看器
+        handlePictureCardPreview(file) {
+            
+            this.$refs.image.showViewer = true
+        },
+        // 文件列表移除文件
+        handleRemove(file) {
+            let index = this.form.systemFileList.findIndex(item => {
+            if (file.guid) {
+                return item.guid == file.guid
+            } else {
+                return item.uid == file.uid
+            }
+            })
+            if (index != -1) {
+            this.form.systemFileList.splice(index, 1)
+            }
+        },
+        //上传附件
+        uploadFile(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) {
+                file.guid = response.data[0]
+                file.raw.guid = response.data[0]
+            }
+            })
+        },
     },
 }

+ 23 - 23
src/views/noveltySearch/components/noveltySearchCard.vue

@@ -1,25 +1,25 @@
 <template>
     <div class="height_100">
       <el-container>
-          <el-header>
+          <!-- <el-header>
               <div class="head">
                   <div class="head_left">
-                      <!-- <el-form :inline="true" class="project-file-header-form">
+                      <el-form :inline="true" class="project-file-header-form">
                           <el-form-item label="案号">
                               <el-input v-model="queryParams.number" size="small" placeholder="请输入案号"></el-input>
                           </el-form-item>
                           <el-form-item>
                               <el-button type="" size="small" @click="search">查询</el-button>
                           </el-form-item>
-                      </el-form> -->
+                      </el-form>
                   </div>
                   <div class="head_right">
                       <el-button type="primary" size="small" @click="createNoveltySearch">新建查新检索</el-button>
                   </div>
               </div>
-          </el-header>
+          </el-header> -->
           <el-main class="height_100" v-DivHeight="getDivHeight">
-            <div v-if="showTable"  :style="`height:${tableHeight - 20}px`">
+            <div v-if="showTable" class="content" :style="`height:${tableHeight - 20}px`">
                 <myCard class="box-card" v-for="(item,index) in tableData" :key="item.id">
                     <div slot="head">
                         <div>
@@ -93,7 +93,6 @@ import createNoveltySearch from './dialog/createNoveltySearch.vue';
           queryParams:{
               current:1,
               size:10,
-              number:''
           },
           total:0,
           tableData:[],
@@ -114,23 +113,15 @@ import createNoveltySearch from './dialog/createNoveltySearch.vue';
       },
       //获取数据
       getList(){
-          this.tableData = [
-              {
-                  id:1,
-                  number:'5W262525',
-                  inventionPoint:'发明点',
-                  createName:'管理员',
-                  createTime:'2024-09-06 17:04'
-              },
-              {
-                  id:2,
-                  number:'5W131553',
-                  inventionPoint:'发明点',
-                  createName:'管理员',
-                  createTime:'2024-09-06 17:04'
-              }
-          ]
-          this.total = 2
+          this.$api.queryNoveltyProject(this.queryParams).then(response=>{
+            if(response.code == 200){
+                this.tableData = response.data.data
+                this.total = response.data.total
+            }
+          }).catch(error=>{
+            this.tableData = []
+            this.total = 0
+          })
       },
       //切换分页
       handleCurrentChange(val){
@@ -206,6 +197,15 @@ import createNoveltySearch from './dialog/createNoveltySearch.vue';
       align-items: center;
       justify-content: space-between;
   }
+  .content:empty{
+    text-align: center;
+    width: 100%;
+  }
+  .content:empty::after{
+    content: '暂无数据';
+    color: #958b8b8c;
+    font-size: 20px;
+  }
   </style>
   <style lang="scss">
     .box-card{

+ 8 - 5
src/views/report/InvalidResponse/components/draggable/index.vue

@@ -5,7 +5,7 @@
         title="排序"
         width="200"
         ref="draggablePopover"
-        trigger="click"
+        v-model="show"
     > 
     <div style="max-height:400px;overflow-y:auto;">
         <!-- <el-radio-group v-model="radio" @input="change"> -->
@@ -25,8 +25,8 @@
     </div>
     
     <span slot="reference">
-        <i class="el-icon-arrow-right" v-if="show" @click="show = !show"></i>
-        <i class="el-icon-arrow-down" v-else @click="show = !show"></i>
+        <i class="el-icon-arrow-right" v-if="!show" @click="changeShow(false)"></i>
+        <i class="el-icon-arrow-down" v-else @click="changeShow(true)"></i>
     </span>
   </el-popover>
     
@@ -50,7 +50,7 @@ export default {
   },
   data() {
     return {
-        show:true,
+        show:false,
         tableData:JSON.parse(JSON.stringify(this.list)),
         radio:this.check
     };
@@ -81,7 +81,10 @@ export default {
     closePopover(){
         this.$refs.draggablePopover.doClose()
         this.show = true
-    }
+    },
+    changeShow(val){
+        this.$set(this,'show',val)
+    },
   },
 };
 </script>