zhuliu 1 year ago
parent
commit
f4129654be

+ 70 - 0
public/reportTemplate/weixinnuo/weixinnuo.css

@@ -0,0 +1,70 @@
+.weixinnuo{
+    width: 800px;
+    margin: 0px auto;
+    font-size: 15px black; 
+}
+.weixinnuo .reportTitle{
+    font-size: 25px;
+    padding: 20px;
+}
+.weixinnuo .content{
+    border: 1px solid black;
+    border-bottom: 0;
+}
+.weixinnuo .content_title{
+    background-color: rgb(190, 190, 190);
+    font-weight: bolder;
+    padding: 10px;
+    border-bottom: 1px solid black;
+}
+.weixinnuo table{
+    width: 100%;
+    border-collapse: collapse;
+}
+.weixinnuo table tr>td{
+    padding: 10px;
+    height: 23px;
+    border-right: 1px solid black;
+    border-bottom: 1px solid black;
+}
+.weixinnuo table>tr>td:last-child{
+    border-right:0
+}
+.weixinnuo .patentContent{
+    padding: 5px 10px;
+    border-bottom:1px solid black ;
+}
+.weixinnuo .content_input{
+    min-height: 150px;
+}
+.weixinnuo .text-indent {
+    text-indent: 2em;
+}
+.weixinnuo .red-text {
+    color: red;
+}
+.weixinnuo .italic-text{
+    font-style: italic; /* 设置斜体字体样式 */
+}
+.weixinnuo .width_50{
+    width: 50px;
+}
+.weixinnuo .width_70{
+    width: 70px;
+}
+.weixinnuo .width_98{
+    width: 98px;
+}
+.weixinnuo .width_150{
+    width: 150px;
+}
+.weixinnuo .width_300{
+    width: 300px;
+}
+.weixinnuo .highlight-text{
+    background-color: yellow;
+}
+.weixinnuo .center{
+    text-align: center !important;
+    justify-content:center;
+}

+ 45 - 0
public/reportTemplate/weixinnuo/weixinnuo.json

@@ -0,0 +1,45 @@
+{
+    "baseMessage":{
+        "caseName":"思路名称",
+        "customCaseNumber":"提案编号",
+        "searchTime":"检索日期",
+        "inventor":"发明人",
+        "ipr":"IPR",
+        "searchName":"检索人",
+        "searchUnit":"代理结构",
+        "ifPatentability":"是否具备专利性",
+        "applicationAdvice":"建议申请类型",
+        "analysisAndConclusion":"分析与结论",
+        "suggestion":"建议",
+        "detentDirection":"卡位方向",
+        "remark":"备注"
+    },
+    "technicalCase":{
+        "picture":[
+            {
+                "url":"本思路图guid"
+            }
+        ],
+        "solvedProblem":"问题",
+        "inventionPoint":"具体方案"
+    },
+    "compareLiterature":[],
+    "compareRecord":[
+        {
+            "index":"序号",
+            "rightHolder":"专利权人",
+            "publicNo":"公开公告号",
+            "technicalPoints":"现有技术要点",
+            "excuteCase":"实施方案",
+            "beneficialEffect":"有益效果"
+        }
+    ],
+    "searchRecord":[
+        {
+            "area":"地区",
+            "dbType":"数据库",
+            "conditions":"关键词",
+            "totalNum":"数量"
+        }
+    ]
+}

+ 270 - 0
public/reportTemplate/weixinnuo/weixinnuo.txt

@@ -0,0 +1,270 @@
+ <div class="weixinnuo">
+        <div class="reportTitle center"><strong>专利新思路委外检索报告</strong></div>
+        <div class="content">
+            <div>
+                <div class="content_title">基本信息</div>
+                <div>
+                    <table>
+                        <tr>
+                            <td class="width_150">思路名称</td>
+                            <td colspan="3" @click="edit('baseMessage','caseName')">
+                                <div v-if="isEdit('baseMessage','caseName')">
+                                    <myRichText v-model="reportData.baseMessage.caseName" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','caseName',dataObj.baseMessage.caseName)"></div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>提案编号(维信诺)</td>
+                            <td class="width_300" @click="edit('baseMessage','customCaseNumber')">
+                                <div v-if="isEdit('baseMessage','customCaseNumber')">
+                                    <myRichText v-model="reportData.baseMessage.customCaseNumber" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','customCaseNumber',dataObj.baseMessage.customCaseNumber)"></div>
+                            </td>
+                            <td>检索日期</td>
+                            <td @click="edit('baseMessage','searchTime')">
+                                <div v-if="isEdit('baseMessage','searchTime')">
+                                    <myRichText v-model="reportData.baseMessage.searchTime" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','searchTime',dataObj.baseMessage.searchTime)"></div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>发明人</td>
+                            <td @click="edit('baseMessage','inventor')">
+                                <div v-if="isEdit('baseMessage','inventor')">
+                                    <myRichText v-model="reportData.baseMessage.inventor" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','inventor',dataObj.baseMessage.inventor)"></div>
+                            </td>
+                            <td>IPR</td>
+                            <td @click="edit('baseMessage','ipr')">
+                                <div v-if="isEdit('baseMessage','ipr')">
+                                    <myRichText v-model="reportData.baseMessage.ipr" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','ipr',dataObj.baseMessage.ipr)"></div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>检索人</td>
+                            <td @click="edit('baseMessage','searchName')">
+                                <div v-if="isEdit('baseMessage','searchName')">
+                                    <myRichText v-model="reportData.baseMessage.searchName" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','searchName',dataObj.baseMessage.headName)"></div>
+                            </td>
+                            <td>代理机构</td>
+                            <td @click="edit('baseMessage','searchUnit')">
+                                <div v-if="isEdit('baseMessage','searchUnit')">
+                                    <myRichText v-model="reportData.baseMessage.searchUnit" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','searchUnit',dataObj.baseMessage.searchUnit)"></div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>是否具备专利性</td>
+                            <td colspan="3"> 是 否 公开不充分(与发明人沟通后仍无法达到公开充分标准而驳回)</td>
+                        </tr>
+                        <tr>
+                            <td>建立申请类型</td>
+                            <td colspan="3"> 发明 实用新型 外观设计 其他:结案,或补充资料后再评估</td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div>
+                <div class="content_title">检索报告评价标准</div>
+                <div>
+                    <table>
+                        <tr>
+                            <td class="width_70">结论</td>
+                            <td colspan="2">评价内容</td>
+                        </tr>
+                        <tr>
+                            <td rowspan="2">通过</td>
+                            <td colspan="2">新颖性问题(只看结果)</td>
+                        </tr>
+                        <tr>
+                            <td colspan="2">不存在下述退回理由</td>
+                        </tr>
+                        <tr>
+                            <td rowspan="6"><p>退回<br>(非新颖性问题)</p></td>
+                            <td colspan="2">检索要素扩展:非全球检索/关键词未包括中英文</td>
+                        </tr>
+                        <tr>
+                            <td rowspan="2">检索式构建</td>
+                            <td>逻辑错误(例如:相同要素扩展and,不同要素or)</td>
+                        </tr>
+                        <tr>
+                            <td>检索式缺失(未单独检索维信诺专利)</td>
+                        </tr>
+                        <tr>
+                            <td colspan="2">交底书技术理解:未将交底书重要特征在检索要素中做扩展</td>
+                        </tr>
+                        <tr>
+                            <td colspan="2">对比文件数量:创造性问题对比文件少于2件或公知常识未给证据</td>
+                        </tr>
+                        <tr>
+                            <td colspan="2">分析过程:未体现三步法,分析过程与结论不匹配</td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div>
+                <div class="content_title">检索记录表</div>
+                <div>
+                    <table>
+                        <tr>
+                            <td class="width_50">地区</td>
+                            <td class="width_98 center">
+                                <p>数据库</p>
+                                <p>(检索系统)</p>
+                            </td>
+                            <td class="center">关键词</td>
+                            <td class="center width_50">数量</td>
+                        </tr>
+                        <tr style="position: relative;" v-for="(item,index) in getColumnData('searchRecord',null,(dataObj.searchRecord && dataObj.searchRecord.length>0)?dataObj.searchRecord.map(item2=>{return {conditions:item2.conditions,totalNum:item2.totalNum}}): [{}])" :key="index">
+                            <td @click="edit('searchRecord','area',index)">
+                                <div v-if="isEdit('searchRecord','area',index)">
+                                    <myRichText v-model="item.area" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="item.area"></div>
+                            </td>
+                            <td @click="edit('searchRecord','dbType',index)">
+                                <div v-if="isEdit('searchRecord','dbType',index)">
+                                    <myRichText v-model="item.dbType" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="item.dbType"></div>
+                            </td>
+                            <td @click="edit('searchRecord','conditions',index)">
+                                <div v-if="isEdit('searchRecord','conditions',index)">
+                                    <myRichText v-model="item.conditions" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="item.conditions"></div>
+                            </td>
+                            <td @click="edit('searchRecord','totalNum',index)">
+                                <div v-if="isEdit('searchRecord','totalNum',index)">
+                                    <myRichText v-model="item.totalNum" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="item.totalNum"></div>
+                            </td>
+                            <td style="width:0;padding:0;vertical-align: initial;">
+                                <span class="funBtn">
+                                    <el-button type="" size="mini" icon="el-icon-plus" circle @click="addCompareRecord(reportData.searchRecord,index)"></el-button>
+                                    <el-button v-if="reportData.searchRecord.length>1" size="mini" type="danger" icon="el-icon-delete" circle @click="delCompareRecord(reportData.searchRecord,index)"></el-button>
+                                </span>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div>
+                <div class="content_title">专利性分析</div>
+                <div>
+                    <div class="patentContent">
+                        <p>【本思路图及要点】</p>
+                        <div>
+                            <p>1、本思路图:</p>    
+                            <div class="content_input" style="display:flex;">
+                                <div style="width:150px;height:180px;margin-right:10px" v-for="(item,index) in getColumnData('technicalCase','picture',dataObj.technicalCase.systemFileList?dataObj.technicalCase.systemFileList.map(pic=>{return {url:pic.guid}}) : [])" :key="index">
+                                    <div style="height:30px;line-height:30px;display:flex;justify-content:flex-end;">
+                                        <el-button type="text" size="small" @click="delImage(reportData.technicalCase.picture,item,index)">删除</el-button>
+                                    </div>
+                                    <div style="width:150px;height:148px;border:1px dashed #c0ccda;border-radius: 6px;">
+                                        <el-image style="width:100%;height:100%" :src="$commonJS.checkViewer(item.url)" :preview-src-list="reportData.technicalCase.picture.map(pic=>$commonJS.checkViewer(item.url))" fit="contain"></el-image>
+                                    </div>
+                                </div>
+                                <el-upload style="margin-right:10px;margin-top: 30px;" ref="upload" action="#" :auto-upload="false" multiple :on-change="(file, fileList)=>handleChange(reportData.technicalCase.picture,file, fileList)" list-type="picture-card" :show-file-list="false">
+                                    <span>
+                                        <i class="el-icon-plus avatar-uploader-icon"></i>
+                                    </span>
+                                </el-upload>
+                            </div>
+                        </div>
+                        <p>2、本思路要点:</p>
+                        <div class="text-indent" @click="edit('technicalCase','solvedProblem')">
+                            <p>问题:</p>
+                            <div class="content_input">
+                                 <div v-if="isEdit('technicalCase','solvedProblem')">
+                                    <myRichText v-model="reportData.technicalCase.solvedProblem" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('technicalCase','solvedProblem',dataObj.technicalCase.solvedProblem)"></div>
+                            </div>
+                        </div> 
+                        <div class="text-indent" @click="edit('technicalCase','inventionPoint')">
+                            <div>为了解决上述问题,本思路。</div>
+                            <p>具体方案包括:</p>
+                            <div class="content_input">
+                                 <div v-if="isEdit('technicalCase','inventionPoint')">
+                                    <myRichText v-model="reportData.technicalCase.inventionPoint" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('technicalCase','inventionPoint',dataObj.technicalCase.inventionPoint)"></div>
+                            </div>
+                        </div>  
+                    </div>
+                    <div class="patentContent">
+                        <p><span class="italic-text">【现有技术】</span></p>
+                        <p class="center italic-text">现有技术1</p>
+                        <p class="center italic-text">(*专利权人*,*公开公告号*)</p>
+                        <div>
+                            <p><strong>代表图示或影响本思路的现有技术要点(<span class="red-text">对影响专利性的部分进行显著标注,并将PDF档一并发送我方</span>)</strong></p>
+                            <div class="content_input">123456789</div>
+                        </div>
+                        <div>
+                            <p>实施方案包括:</p>
+                            <div class="content_input">123456789</div>
+                        </div>
+                        <div>
+                            <p>有益效果:</p>
+                        <div class="content_input">123456789</div>
+                    </div>
+                </div>
+
+                <div class="patentContent" @click="edit('baseMessage','analysisAndConclusion')">
+                    <p><span class="italic-text">【分析与结论】(<span class="red-text">结合三步法,对上述标注部分重点说明</span>):</span></p>
+                    <div class="content_input">
+                        <div v-if="isEdit('baseMessage','analysisAndConclusion')">
+                            <myRichText v-model="reportData.baseMessage.analysisAndConclusion" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','analysisAndConclusion')"></div>
+                    </div>
+                </div>
+                <div>
+                    <table>
+                        <tr>
+                            <td class="center width_150">建议</td>
+                            <td @click="edit('baseMessage','suggestion')">
+                                <div v-if="isEdit('searchRecord','suggestion')">
+                                    <myRichText v-model="reportData.baseMessage.suggestion" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','suggestion')"></div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>卡位方向(<span class="red-text">简单描述一下主权项</span>)</td>
+                            <td @click="edit('baseMessage','detentDirection')">
+                                <div v-if="isEdit('searchRecord','detentDirection')">
+                                    <myRichText v-model="reportData.baseMessage.detentDirection" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                </div>
+                                <div v-else v-html="getColumnData('baseMessage','detentDirection')"></div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="center">备注</td>
+                            <td @click="edit('baseMessage','detentDirection')">
+                                检索所基于数据库的网站:
+                                <div class="content_input">
+                                    <div v-if="isEdit('baseMessage','detentDirection')">
+                                        <myRichText v-model="reportData.baseMessage.detentDirection" customStyle="border:none;padding:0" :autoFocus="true" @blur="saveMessage"></myRichText>
+                                    </div>
+                                    <div v-else v-html="getColumnData('baseMessage','detentDirection')"></div>
+                                </div>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            </div>
+        </div>
+    </div>

+ 4 - 2
src/views/noveltySearch/components/dialog/inventionPoint/inventionPoint.vue

@@ -25,7 +25,7 @@
         </div>
         <div class="main_result" v-if="showResult">
           <div class="description">{{description[clickType]}}</div>
-          <div class="result">
+          <div class="result" v-loading="loading">
             <template v-if="clickType == 1">
               <div>
                 <div class="keyWord">
@@ -342,7 +342,8 @@ export default {
       if(type == 1){}
       else{
         var params = {
-          content:this.technicalCase.inventionPoint
+          content:this.technicalCase.inventionPoint,
+          projectId:this.projectId
         }
         this.loading = true
         this.$api.querySimilarInventionPoint(params).then(response=>{
@@ -361,6 +362,7 @@ export default {
       if(type == 2){
         //使用
         this.$emit('getProjectId',row.projectId)
+        this.submit(2)
         return
       }
       if(type == 1){

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

@@ -1,4 +1,4 @@
-import { groupBy } from "lodash"
+
 
 export default{
     props:{

+ 3 - 9
src/views/noveltySearch/components/noveltySearchCard.vue

@@ -4,17 +4,11 @@
           <!-- <el-header>
               <div class="head">
                   <div class="head_left">
-                      <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>
+                    <mySearch style="width:500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption">
+                    </mySearch>
                   </div>
                   <div class="head_right">
-                      <el-button type="primary" size="small" @click="createNoveltySearch">新建查新检索</el-button>
+                      
                   </div>
               </div>
           </el-header> -->