|
|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<div class="height_100 OADefense">
|
|
|
- <conversationRecords v-show="showMenu" name="OA答辩" :show_add="false" :conversation="currentConversation" :confessionSessionList="confessionSessionList" @addConversation="addConversation" @changeConversation="changeConversation" @updateConversation="queryConfessionSession" ></conversationRecords>
|
|
|
+ <conversationRecords v-show="showMenu" name="OA答辩" :show_add="false" :conversation="currentConversation" :confessionSessionList="confessionSessionList" @addConversation="addConversation" @changeConversation="changeConversation1" @updateConversation="queryConfessionSession" ></conversationRecords>
|
|
|
|
|
|
<myView style="height: 100%;width: 100%;" position="row">
|
|
|
<!-- 左侧文件展示 -->
|
|
|
@@ -12,11 +12,11 @@
|
|
|
<i v-show="!showMenu" class="el-icon-s-unfold" @click="showMenu = !showMenu"></i>
|
|
|
</div>
|
|
|
<div style="font-weight:600">OA答辩</div>
|
|
|
- <el-button size="mini" class="margin-left_10" type="primary" @click="addConversation">添加新OA答辩</el-button>
|
|
|
+ <el-button v-if="!add" size="mini" class="margin-left_10" type="primary" @click="addConversation">新OA</el-button>
|
|
|
<!-- <el-button v-if="notice_file.guid && !loading" class="margin-left_10" type="primary" size="mini" @click="regenerate">重新生成</el-button> -->
|
|
|
</div>
|
|
|
<div class="head_right">
|
|
|
- <el-select v-model="current_guid" size="mini" placeholder="请选择">
|
|
|
+ <el-select v-if="!add" v-model="current_guid" size="mini" placeholder="请选择">
|
|
|
<el-option v-if="notice_file.guid" :label="`审查意见通知书-${notice_file.originalName || notice_file.name}`" :value="notice_file.guid" @click.native="handleOptionClick(notice_file,1)"></el-option>
|
|
|
<el-option v-if="app_file.guid" :label="`申请文件-${app_file.appNo}`" :value="app_file.guid" @click.native="handleOptionClick(app_file,2)"></el-option>
|
|
|
<el-option v-if="modify_file.guid" :label="`修改对照页`" :value="modify_file.guid" @click.native="handleOptionClick(modify_file,4)"></el-option>
|
|
|
@@ -48,7 +48,7 @@
|
|
|
<div class="upload-group-title">
|
|
|
<div>上传文件(可拖动上传,<i class="el-icon-star-on red"></i>必须上传)</div>
|
|
|
<div>
|
|
|
- <el-button size="mini" class="margin-right_10" type="primary" @click="batch_upload">批量上传</el-button>
|
|
|
+ <!-- <el-button size="mini" class="margin-right_10" type="primary" @click="batch_upload">批量上传</el-button> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="upload-box-container">
|
|
|
@@ -80,15 +80,16 @@
|
|
|
</div>
|
|
|
</el-upload>
|
|
|
</div>
|
|
|
- <!-- 本申请文件 -->
|
|
|
+
|
|
|
+ <!-- 修改对照页 -->
|
|
|
<div>
|
|
|
- <div v-if="relevant_file.app_file.showPercentage || relevant_file.app_file.guid" class="upload-box">
|
|
|
- <div class="upload-placeholder">本申请文件</div>
|
|
|
- <div class="file-info"><span v-if="!relevant_file.app_file.showPercentage">已上传:</span><span class="file-name">{{relevant_file.app_file.name ? relevant_file.app_file.name : relevant_file.app_file.originalName}}</span></div>
|
|
|
- <div v-if="relevant_file.app_file.showPercentage" class="progressShow">
|
|
|
- <el-progress :percentage="relevant_file.app_file.percentage"></el-progress>
|
|
|
+ <div v-if="relevant_file.modify_file.showPercentage || relevant_file.modify_file.guid" class="upload-box">
|
|
|
+ <div class="upload-placeholder">上一次OA修改对照页</div>
|
|
|
+ <div class="file-info"><span v-if="!relevant_file.modify_file.showPercentage">已上传:</span><span class="file-name">{{relevant_file.modify_file.name ? relevant_file.modify_file.name : relevant_file.modify_file.originalName}}</span></div>
|
|
|
+ <div v-if="relevant_file.modify_file.showPercentage" class="progressShow">
|
|
|
+ <el-progress :percentage="relevant_file.modify_file.percentage"></el-progress>
|
|
|
</div>
|
|
|
- <span class="clear-btn" @click="relevant_file.app_file = {}">× 清除</span>
|
|
|
+ <span class="clear-btn" @click="relevant_file.modify_file = {}">× 清除</span>
|
|
|
</div>
|
|
|
<el-upload
|
|
|
v-else
|
|
|
@@ -99,27 +100,29 @@
|
|
|
:auto-upload="false"
|
|
|
:show-file-list='false'
|
|
|
:limit="1"
|
|
|
- :on-change="(file)=>onChange(file,'relevant_file.app_file')"
|
|
|
+ :on-change="(file)=>onChange(file,'relevant_file.modify_file')"
|
|
|
style="width: 100%"
|
|
|
>
|
|
|
<div class="el-upload__text">
|
|
|
- <div class="upload-placeholder">本申请文件</div>
|
|
|
+ <div class="upload-placeholder">上一次OA修改对照页</div>
|
|
|
<div class="upload-placeholder">点击或拖拽上传</div>
|
|
|
- <div class="red file-info margin-top_0">注:本申请未被公开则需要上传</div>
|
|
|
+ <div class="red file-info margin-top_0">
|
|
|
+ 注:不是第一次OA并且想在上一次OA基础上答辩则需要上传
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</el-upload>
|
|
|
</div>
|
|
|
- <!-- 修改对照页 -->
|
|
|
+ <!-- 本申请文件 -->
|
|
|
<div>
|
|
|
- <div v-if="relevant_file.modify_file.showPercentage || relevant_file.modify_file.guid" class="upload-box">
|
|
|
- <div class="upload-placeholder">上一次OA修改对照页</div>
|
|
|
- <div class="file-info"><span v-if="!relevant_file.modify_file.showPercentage">已上传:</span><span class="file-name">{{relevant_file.modify_file.name ? relevant_file.modify_file.name : relevant_file.modify_file.originalName}}</span></div>
|
|
|
- <div v-if="relevant_file.modify_file.showPercentage" class="progressShow">
|
|
|
- <el-progress :percentage="relevant_file.modify_file.percentage"></el-progress>
|
|
|
+ <div v-if="relevant_file.app_file.showPercentage || relevant_file.app_file.guid" class="upload-box">
|
|
|
+ <div class="upload-placeholder">本申请文件</div>
|
|
|
+ <div class="file-info"><span v-if="!relevant_file.app_file.showPercentage">已上传:</span><span class="file-name">{{relevant_file.app_file.name ? relevant_file.app_file.name : relevant_file.app_file.originalName}}</span></div>
|
|
|
+ <div v-if="relevant_file.app_file.showPercentage" class="progressShow">
|
|
|
+ <el-progress :percentage="relevant_file.app_file.percentage"></el-progress>
|
|
|
</div>
|
|
|
- <span class="clear-btn" @click="relevant_file.modify_file = {}">× 清除</span>
|
|
|
+ <span class="clear-btn" @click="relevant_file.app_file = {}">× 清除</span>
|
|
|
</div>
|
|
|
- <el-upload
|
|
|
+ <!-- <el-upload
|
|
|
v-else
|
|
|
ref="upload_file"
|
|
|
class="upload-demo"
|
|
|
@@ -128,17 +131,15 @@
|
|
|
:auto-upload="false"
|
|
|
:show-file-list='false'
|
|
|
:limit="1"
|
|
|
- :on-change="(file)=>onChange(file,'relevant_file.modify_file')"
|
|
|
+ :on-change="(file)=>onChange(file,'relevant_file.app_file')"
|
|
|
style="width: 100%"
|
|
|
>
|
|
|
<div class="el-upload__text">
|
|
|
- <div class="upload-placeholder">上一次OA修改对照页</div>
|
|
|
+ <div class="upload-placeholder">本申请文件</div>
|
|
|
<div class="upload-placeholder">点击或拖拽上传</div>
|
|
|
- <div class="red file-info margin-top_0">
|
|
|
- 注:不是第一次OA并且想在上一次OA基础上答辩则需要上传
|
|
|
- </div>
|
|
|
+ <div class="red file-info margin-top_0">注:本申请未被公开则需要上传</div>
|
|
|
</div>
|
|
|
- </el-upload>
|
|
|
+ </el-upload> -->
|
|
|
</div>
|
|
|
<!-- 对比文件 -->
|
|
|
<template v-if="relevant_file.contrast_file">
|
|
|
@@ -151,7 +152,7 @@
|
|
|
</div>
|
|
|
<span class="clear-btn" @click="contrast_file.file = {}">× 清除</span>
|
|
|
</div>
|
|
|
- <el-upload
|
|
|
+ <!-- <el-upload
|
|
|
v-else
|
|
|
ref="upload_file"
|
|
|
class="upload-demo"
|
|
|
@@ -168,15 +169,18 @@
|
|
|
<div class="upload-placeholder">点击或拖拽上传</div>
|
|
|
<div class="red file-info margin-top_0">注:非专利文献需要上传</div>
|
|
|
</div>
|
|
|
- </el-upload>
|
|
|
+ </el-upload> -->
|
|
|
</div>
|
|
|
</template>
|
|
|
- <div class="upload-box addFile" @click="add_contrast_file">
|
|
|
+ <!-- <div class="upload-box addFile" @click="add_contrast_file">
|
|
|
<div>
|
|
|
<i class="el-icon-plus addIcon"></i>
|
|
|
</div>
|
|
|
<div class="addText">添加对比文件</div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ <div style="padding:10px 0;">
|
|
|
+ 有其他文件需要上传,点击<span class="link" @click="batch_upload">批量上传</span>进行上传
|
|
|
</div>
|
|
|
</div>
|
|
|
<div>
|
|
|
@@ -196,12 +200,12 @@
|
|
|
</span>
|
|
|
</p> -->
|
|
|
<p>
|
|
|
- <span class="file_title">是否进行权要修改:</span>
|
|
|
+ <span class="file_title">权利要求修改:</span>
|
|
|
<span>
|
|
|
<el-radio-group v-model="changeClaim.changeClaim">
|
|
|
+ <el-radio :label="3">AI推荐</el-radio>
|
|
|
<el-radio :label="1">是</el-radio>
|
|
|
<el-radio :label="2">否</el-radio>
|
|
|
- <el-radio :label="3">AI推荐</el-radio>
|
|
|
</el-radio-group>
|
|
|
</span>
|
|
|
</p>
|
|
|
@@ -211,6 +215,15 @@
|
|
|
<el-input type="textarea" v-model="changeClaim.claimChangeSuggestion" :rows="6" placeholder="请输入修改建议或者修改后的权利要求"></el-input>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div>
|
|
|
+ <span class="file_title">一键全部生成:</span>
|
|
|
+ <span>
|
|
|
+ <el-radio-group v-model="onceAllGenerate">
|
|
|
+ <el-radio :label="1">是</el-radio>
|
|
|
+ <el-radio :label="2">否</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<hr >
|
|
|
@@ -289,11 +302,17 @@
|
|
|
<svg-icon class="xiaoshiIcon" iconClass="小世AI" iconName="小世AI"></svg-icon>
|
|
|
</div>
|
|
|
<div class="typing-indicator" v-if="message.loading">
|
|
|
- <div class="message-content" >
|
|
|
- <div class="typing-dot"></div>
|
|
|
- <div class="typing-dot"></div>
|
|
|
- <div class="typing-dot"></div>
|
|
|
+ <div>
|
|
|
+ <div v-if="message.operation == 1">正在获取并校验本申请相关文件内容</div>
|
|
|
+ <div v-if="message.operation == 2">正在解析审查意见通知书内容</div>
|
|
|
+ <div v-if="message.operation == 3">正在生成权利要求修改建议</div>
|
|
|
+ <div v-if="message.operation == 4">正在生成具体的权利要求修改方案</div>
|
|
|
+ <div v-if="message.operation == 5">正在获取答辩点</div>
|
|
|
+ <div v-if="message.operation == 6">正在生成陈述意见书</div>
|
|
|
</div>
|
|
|
+ <div class="typing-dot"></div>
|
|
|
+ <div class="typing-dot"></div>
|
|
|
+ <div class="typing-dot"></div>
|
|
|
</div>
|
|
|
<div class="message-content" v-else>
|
|
|
<div class="message-title">AI助手</div>
|
|
|
@@ -343,25 +362,6 @@
|
|
|
<div>
|
|
|
<div v-if="message.answer.reason">审查意见:{{message.answer.reason}}</div>
|
|
|
<div v-if="message.answer.nearNo">最接近的现有技术:{{message.answer.nearNo}}</div>
|
|
|
- <!-- <div v-if="message.answer.examiner_opinion && message.answer.examiner_opinion.length">
|
|
|
- <div v-for="(item,index) in message.answer.examiner_opinion" :key="index">
|
|
|
- <p>
|
|
|
- <b>权利要求{{ item.claim_order.join(',') }}</b>
|
|
|
- </p>
|
|
|
- <div>
|
|
|
- <ul>
|
|
|
- <li v-for="(data,ind) in item.data" :key="`权利要求${ item.claim_order.join(',') }_${ind}`">
|
|
|
- <p>
|
|
|
- <span v-if="data.feature">针对于特征<b>{{ data.feature }}</b>,</span>
|
|
|
- <span>审查员认为<b>{{ data.evidence }}</b>,</span>
|
|
|
- <span>根据审查员描述,小世认为审查员描述的<b class="red">{{ data.result }}</b></span>
|
|
|
- </p>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div> -->
|
|
|
<div>
|
|
|
<span v-if="message.answer.cause">{{ message.answer.cause }}
|
|
|
所以
|
|
|
@@ -377,19 +377,15 @@
|
|
|
<span v-else><b>不需要修改权利要求</b></span>
|
|
|
</span>
|
|
|
</div>
|
|
|
- <!-- <div v-if="message.answer.changeClaim">
|
|
|
- <div v-if="message.answer.changeClaim==1">小世AI建议修改权利要求</div>
|
|
|
- <div v-else>小世AI建议不修改权利要求</div>
|
|
|
- </div> -->
|
|
|
</div>
|
|
|
- <div class="btn_box" v-if="index == messageList.length-1">
|
|
|
+ <!-- <div class="btn_box" v-if="index == messageList.length-1">
|
|
|
<el-button v-if="message.answer.changeClaim == 1" type="primary" size="small" @click="sendMessage(message,3)">获取修改意见</el-button>
|
|
|
<template v-if="message.answer.changeClaim == 2">
|
|
|
<el-button v-if="message.answer.novelty_innovative" type="primary" size="small" @click="sendMessage(message,5)">获取答辩点</el-button>
|
|
|
<el-button v-else type="primary" size="small" @click="sendMessage(message,6)">生成答复意见</el-button>
|
|
|
</template>
|
|
|
<el-button type="primary" size="small" @click="editMessage(message)">修改</el-button>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
<div v-else>
|
|
|
<div>系统错误</div>
|
|
|
@@ -404,7 +400,7 @@
|
|
|
您好,您修改的结果为:
|
|
|
<div>
|
|
|
<div v-if="message.answer.nearNo">最接近的现有技术:{{message.answer.nearNo}}</div>
|
|
|
- <div v-if="message.answer.changeClaim">是否修改权利要求:{{message.answer.changeClaim==1?'是':'否'}}</div>
|
|
|
+ <div v-if="message.answer.changeClaim">权利要求修改:{{message.answer.changeClaim==1?'是':'否'}}</div>
|
|
|
</div>
|
|
|
<div class="btn_box" v-if="index == messageList.length-1">
|
|
|
<el-button v-if="message.answer.changeClaim == 1" type="primary" size="small" @click="sendMessage(message,3)">获取修改意见</el-button>
|
|
|
@@ -421,11 +417,11 @@
|
|
|
<div v-if="message.answer">
|
|
|
已分析审查意见通知书等相关文件,建议如下:
|
|
|
<div v-html="renderMarkdown(message.answer)"></div>
|
|
|
- 您可以在左侧查看审查意见通知书等文件详细内容,以便更好地理解修改建议的依据。
|
|
|
+ <!-- 您可以在左侧查看审查意见通知书等文件详细内容,以便更好地理解修改建议的依据。
|
|
|
<div class="btn_box" v-if="index == messageList.length-1">
|
|
|
<el-button type="primary" size="small" @click="sendMessage(message,4)">生成修改方案</el-button>
|
|
|
<el-button size="small" plain @click="editMessage(message)">自行修改</el-button>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
<div v-else>
|
|
|
<div>系统错误</div>
|
|
|
@@ -491,6 +487,12 @@
|
|
|
</div>
|
|
|
<div v-if="message.operation == 6">
|
|
|
<div v-html="renderMarkdown(message.answer)"></div>
|
|
|
+ <div class="typing-indicator" v-if="loading">
|
|
|
+ <div>AI撰写中</div>
|
|
|
+ <div class="typing-dot"></div>
|
|
|
+ <div class="typing-dot"></div>
|
|
|
+ <div class="typing-dot"></div>
|
|
|
+ </div>
|
|
|
<div v-if="!loading && index == messageList.length-1">
|
|
|
<el-button type="primary" size="small" @click="editMessage(message)">重新生成</el-button>
|
|
|
<el-button type="primary" size="small" @click="generateFile">生成文档</el-button>
|
|
|
@@ -619,7 +621,7 @@ export default {
|
|
|
near_index:null,
|
|
|
nearNo:'',
|
|
|
novelty_innovative:false,
|
|
|
- changeClaim:1,
|
|
|
+ changeClaim:3,
|
|
|
claim:"",
|
|
|
claimChangeSuggestion:''
|
|
|
},
|
|
|
@@ -654,7 +656,8 @@ export default {
|
|
|
current_guid:'',//左侧当前显示的文件
|
|
|
messageList:[],
|
|
|
currentEditData:{},
|
|
|
- difyQuery:''
|
|
|
+ difyQuery:'',
|
|
|
+ onceAllGenerate:2,
|
|
|
};
|
|
|
},
|
|
|
watch: {
|
|
|
@@ -1004,6 +1007,10 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
run(){
|
|
|
+ if(!this.notice_file.guid){
|
|
|
+ this.$message.warning('审查意见通知书必须要上传!!!')
|
|
|
+ return
|
|
|
+ }
|
|
|
this.$set(this,'result_file',{})
|
|
|
var params = {
|
|
|
fileGuid:this.notice_file.guid,
|
|
|
@@ -1060,6 +1067,7 @@ export default {
|
|
|
this.$set(this,'notice_file',{})
|
|
|
this.$set(this,'loading_text','')
|
|
|
this.$set(this,'loading',false)
|
|
|
+ this.$set(this,'onceAllGenerate',2)
|
|
|
this.clearConversation()
|
|
|
|
|
|
},
|
|
|
@@ -1069,7 +1077,7 @@ export default {
|
|
|
near_index:null,
|
|
|
nearNo:'',
|
|
|
novelty_innovative:false,
|
|
|
- changeClaim:1,
|
|
|
+ changeClaim:3,
|
|
|
claim:'',
|
|
|
claimChangeSuggestion:''
|
|
|
})
|
|
|
@@ -1154,6 +1162,10 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
//切换会话
|
|
|
+ changeConversation1(obj){
|
|
|
+ this.$set(this,'onceAllGenerate',2)
|
|
|
+ this.changeConversation(obj)
|
|
|
+ },
|
|
|
async changeConversation(obj,sign){
|
|
|
if(!sign){
|
|
|
let isNext = await this.loading_change()
|
|
|
@@ -1615,6 +1627,7 @@ export default {
|
|
|
}
|
|
|
.typing-indicator {
|
|
|
display: flex;
|
|
|
+ align-items: center;
|
|
|
padding: 10px;
|
|
|
background-color: #f0f5ff;
|
|
|
border-radius: 10px;
|
|
|
@@ -1708,6 +1721,7 @@ export default {
|
|
|
height:calc(100% - 20px - 30px);
|
|
|
overflow: hidden;
|
|
|
position: relative;
|
|
|
+ line-height: 1.8rem !important;
|
|
|
.userEdit{
|
|
|
position: absolute;
|
|
|
bottom: 0;
|