Ver código fonte

技术交底书理解优化

zhuliu 3 semanas atrás
pai
commit
14eb78bff7

+ 21 - 1
src/api/newApi/technicalDisclosure.js

@@ -49,5 +49,25 @@ export default {
     //添加会话记录
     addSession(data){
         return axios.post('/xiaoshi/confessionSession/addSession', data)
-    }
+    },
+
+
+
+    // 新版本
+    //生成技术交底书理解结果
+    generateDiscoveryResult(data){
+        return axios.post('/xiaoshi/dify/generateDiscoveryResult', data)
+    },
+    //ai对话/ai修改
+    dialogue(data){
+        return axios.post('/xiaoshi/dify/generateDiscoveryResult/dialogue', data)
+    },
+    //修改技术交底书理解结果
+    updateDiscoveryResult(data){
+        return axios.post('/xiaoshi/confessionSession/updateDiscoveryResult', data)
+    },
+    //查询会话记录详情
+    discoveryResultDetail(data){
+        return axios.post('/xiaoshi/dify/generateDiscoveryResult/detail', data)
+    },
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 61 - 24
src/components/xiaoshi_AI/index.vue


+ 689 - 70
src/views/AITools/technicalDisclosure/technicalDisclosure.vue

@@ -4,21 +4,30 @@
     <template v-if="(confessionSessionList.length) && !addNewConversation">
       <div class="technicalDisclosure_model">
         <div class="topMenu">
-          <div class="margin-right_10">
-            <el-button size="mini" :type="showOption.showMenu?'success':'info'" @click="showOption.showMenu = !showOption.showMenu">{{showOption.showMenu?"隐藏":"显示"}}菜单</el-button>
-            <el-button size="mini" :type="showOption.showLeft?'success':'info'" @click="showOption.showLeft = !showOption.showLeft">{{showOption.showLeft?"隐藏":"显示"}}左侧</el-button>
-            <el-button size="mini" :type="showOption.showRight?'success':'info'" @click="showOption.showRight = !showOption.showRight">{{showOption.showRight?"隐藏":"显示"}}右侧</el-button>
+          <div class="topMenu_left">
+            <div class="margin-right_10">
+              <el-button size="mini" :type="showOption.showMenu?'success':'info'" @click="showOption.showMenu = !showOption.showMenu">{{showOption.showMenu?"隐藏":"显示"}}菜单</el-button>
+              <el-button size="mini" :type="showOption.showLeft?'success':'info'" @click="showOption.showLeft = !showOption.showLeft">{{showOption.showLeft?"隐藏":"显示"}}左侧</el-button>
+              <el-button size="mini" :type="showOption.showRight?'success':'info'" @click="showOption.showRight = !showOption.showRight">{{showOption.showRight?"隐藏":"显示"}}右侧</el-button>
+            </div>
+            <el-upload
+              ref="uploadConfession"
+              class="upload-demo"
+              action="#"
+              :auto-upload="false"
+              :show-file-list="false"
+              :on-change="onChangeConfession"
+              :limit="1">
+              <el-button type="primary" size="mini">切换技术交底书</el-button>
+            </el-upload>
+          </div>
+          <div class="topMenu_right">
+            <el-button type="primary" size="mini" v-if="!editTechnical" @click="changeEditTechnical()">修改</el-button>
+            <el-button type="primary" size="mini" v-else @click="changeEditTechnical()">完成</el-button>
+            <el-button type="info" size="mini" disabled>查新检索</el-button>
+            <el-button type="info" size="mini" disabled>辅助撰写说明书</el-button>
+
           </div>
-          <el-upload
-            ref="uploadConfession"
-            class="upload-demo"
-            action="#"
-            :auto-upload="false"
-            :show-file-list="false"
-            :on-change="onChangeConfession"
-            :limit="1">
-            <el-button type="primary" size="mini">切换技术交底书</el-button>
-          </el-upload>
         </div>
         <div class="technicalDisclosure_content">
           <!-- 左侧文件展示 -->
@@ -34,34 +43,309 @@
             <!-- 格式化技术交底书内容 -->
             <div class="mainContent">
               <!-- 技术领域 --> 
-              <div class="technical_field">
-                <div>
-                  {{ technicalContent.technicalField }}
+              <div class="technical_field content_box">
+                <div class="title">技术领域</div>
+                <div v-if="!editTechnical" class="text">
+                  {{ technicalContent.technicalField}}
                 </div>
-                <div>
-                  <el-input type="textarea" v-model="editTechnicalContent.technicalField" placeholder="请输入技术领域"></el-input>
+                <div v-else>
+                  <el-input type="textarea" v-model="editTechnicalContent.technicalField" placeholder="请输入技术领域" @change="saveTechnicalContent"></el-input>
                 </div>
               </div>
               <!-- 技术问题 -->
-              <div class="technical_issue">
-
+              <div class="technical_issue content_box">
+                <div class="title">技术问题</div>
+                <div v-if="!editTechnical">
+                  <div v-for="(item,index) in technicalContent.technicalCase" :key="index" class="technical_issue_item">
+                    <div class="delBtn">
+                      <el-button class="delTextBtn" type="text" @click="delData('technicalCase',technicalContent.technicalCase,index)">删除技术问题</el-button>
+                    </div>
+                    <div class="text"><span class="childTitle">技术问题:</span>{{ item.technicalProblem }}</div>
+                    <div class="technical_means">
+                      <div class="title">技术手段:</div>
+                      <div v-for="(mean,inde) in item.technicalMeans" :key="'mean'+inde" class="technical_means_item">
+                        <div class="delBtn2">
+                          <el-button class="delTextBtn" type="text" @click="delData('technicalMeans',item.technicalMeans,inde)">删除技术手段</el-button>
+                        </div>
+                        <div class="text"><span class="childTitle">技术手段内容:</span>{{ mean.technicalMeansContent }}</div>
+                        <div class="text"><span class="childTitle">实现方式:</span>{{ mean.ImplementationMethod }}</div>
+                        <div class="text">
+                          <div class="childTitle">有益效果:</div>
+                          <div>
+                            <ol>
+                             <li v-for="(effect,effectIndex) in mean.technicalEffect" :key="'effect'+effectIndex">
+                                <div class="li_content">
+                                  <div>{{ effect }}</div>
+                                  <div class="editBtn hideEditBtn">
+                                    <i class="el-icon-delete margin-right_10" @click="delData('technicalEffect',mean.technicalEffect,effectIndex)"></i>
+                                  </div>
+                                </div>
+                              </li> 
+                            </ol>
+                          </div>
+                        </div>
+                        <div v-if="inde != item.technicalMeans.length-1">
+                          <hr/>
+                        </div>
+                      </div>
+                    </div>
+                    <div v-if="index != technicalContent.technicalCase.length-1">
+                      <hr/>
+                    </div>
+                  </div>
+                </div>
+                <div v-else>
+                  <div v-for="(item,index) in editTechnicalContent.technicalCase" :key="index" class="technical_issue_item technical_issue_item_edit">
+                    <div class="delBtn">
+                      <el-button class="delTextBtn" type="text" @click="delData('technicalCase',editTechnicalContent.technicalCase,index)">删除技术问题</el-button>
+                    </div>
+                    <div class="text flex_content">
+                      <div class="childTitle">技术问题:</div>
+                      <el-input type="textarea" v-model="item.technicalProblem" placeholder="请输入技术问题" @change="saveTechnicalContent"></el-input>
+                    </div>
+                    <div class="technical_means">
+                      <div class="title">技术手段:</div>
+                      <div v-for="(mean,inde) in item.technicalMeans" :key="'mean'+inde" class="technical_means_item">
+                         <div class="delBtn2">
+                          <el-button class="delTextBtn" type="text" @click="delData('technicalMeans',item.technicalMeans,inde)">删除技术手段</el-button>
+                        </div>
+                        <div class="text flex_content">
+                          <div class="childTitle">技术手段内容:</div>
+                          <el-input type="textarea" v-model="mean.technicalMeansContent" placeholder="请输入技术手段内容" @change="saveTechnicalContent"></el-input>
+                        </div>
+                        <div class="text flex_content">
+                          <div class="childTitle">实现方式:</div>
+                          <el-input type="textarea" v-model="mean.ImplementationMethod" placeholder="请输入实现方式" @change="saveTechnicalContent"></el-input>
+                        </div>
+                        <div class="text">
+                          <div class="childTitle">有益效果:</div>
+                          <div>
+                            <ol v-if="mean.technicalEffect && mean.technicalEffect.length">
+                              <li v-for="(effect,effectIndex) in mean.technicalEffect" :key="'effect'+effectIndex">
+                                <div class="li_content">
+                                  <el-input type="textarea" v-model="mean.technicalEffect[effectIndex]" placeholder="请输入有益效果" @change="saveTechnicalContent"></el-input>  
+                                  <div class="editBtn">
+                                    <i class="el-icon-delete margin-right_10" @click="delData('technicalEffect',mean.technicalEffect,effectIndex)"></i>
+                                    <i v-if="effectIndex == mean.technicalEffect.length-1" class="el-icon-plus" @click="addData('technicalEffect',mean.technicalEffect)"></i>
+                                  </div>
+                                </div>
+                              </li> 
+                            </ol>
+                            <div v-else class="addBtn text" @click="addData('technicalEffect',mean.technicalEffect)">
+                              <i class="el-icon-plus"></i>
+                              <span>有益效果</span>
+                            </div>
+                          </div>
+                        </div>
+                        <div v-if="inde != item.technicalMeans.length-1">
+                          <hr/>
+                        </div>
+                      </div>
+                      <div class="addBtn text" @click="addData('technicalMeans',item.technicalMeans)">
+                        <i class="el-icon-plus"></i>
+                        <span>技术手段</span>
+                      </div>
+                    </div>
+                    <div v-if="index != editTechnicalContent.technicalCase.length-1">
+                      <hr/>
+                    </div>
+                  </div>
+                  <div class="addBtn text" @click="addData('technicalCase',editTechnicalContent.technicalCase)">
+                    <i class="el-icon-plus"></i>
+                    <span>技术问题</span>
+                  </div>
+                </div>
               </div>
               <!-- 技术特征 -->
-              <div class="technical_features"></div>
+              <div class="technical_features content_box">
+                <div class="title">技术特征</div>
+                <div class="text" v-if="!editTechnical">
+                  <div>
+                    <ol>
+                      <li v-for="(item,index) in technicalContent.technicalFeature" :key="item">
+                        <div class="li_content">
+                          <div>{{ item }}</div>
+                          <div class="editBtn hideEditBtn">
+                            <i class="el-icon-delete margin-right_10" @click="delData('technicalFeature',technicalContent.technicalFeature,index)"></i>
+                          </div>
+                        </div>
+                      </li> 
+                    </ol>
+                  </div>
+                </div>
+                <div v-else>
+                  <div>
+                    <ol v-if="editTechnicalContent.technicalFeature && editTechnicalContent.technicalFeature.length">
+                      <li v-for="(item,index) in editTechnicalContent.technicalFeature" :key="'feature'+index">
+                        <div class="li_content">
+                          <el-input type="textarea" v-model="editTechnicalContent.technicalFeature[index]" placeholder="请输入技术特征" @change="saveTechnicalContent"></el-input> 
+                          <div class="editBtn">
+                            <i class="el-icon-delete margin-right_10" @click="delData('technicalFeature',editTechnicalContent.technicalFeature,index)"></i>
+                            <i v-if="index == editTechnicalContent.technicalFeature.length-1" class="el-icon-plus" @click="addData('technicalFeature',editTechnicalContent.technicalFeature)"></i>
+                          </div>
+                        </div>
+                      </li> 
+                    </ol>
+                    <div v-else class="addBtn text" @click="addData('technicalFeature',editTechnicalContent.technicalFeature)">
+                      <i class="el-icon-plus"></i>
+                      <span>技术特征</span>
+                    </div>
+                  </div>
+                </div>
+              </div>
               <!-- 背景技术 -->
-              <div class="background_technology"></div>
+              <div class="background_technology content_box">
+                <div class="title">背景技术</div>
+                <div v-if="!editTechnical">
+                  {{ technicalContent.background }}
+                </div>
+                <div v-else>
+                  <el-input type="textarea" v-model="editTechnicalContent.background" placeholder="请输入背景技术" @change="saveTechnicalContent"></el-input>
+                </div>
+              </div>
               <!-- 术语解释 -->
-              <div class="terminology_explanation"></div>
-              <!-- 权要建议 -->
-              <div class="layout_suggestions"></div>
-              <!-- 缺失内容 -->
-              <div></div>
+              <div class="terminology_explanation content_box">
+                <div class="title">术语解释</div>
+                <div>
+                  <div v-for="(item,index) in technicalContent.termsExplanation" :key="index" class="terminology_explanation_item">
+                    <div class="childTitle">{{ item.terms }}</div>
+                    <div class="text">{{ item.explanation }}</div>
+                  </div>
+                </div>
+              </div>
+              <!-- 布局建议 -->
+              <div class="layout_suggestions content_box">
+                <div class="title">布局建议</div>
+                <div class="text">
+                  <p v-if="technicalContent.claimSuggestions.mainClaimSuggestions">
+                    <span class="childTitle">独权建议:</span> {{technicalContent.claimSuggestions.mainClaimSuggestions}}
+                  </p>
+                  <p v-if="technicalContent.claimSuggestions.dependentClaimSuggestions">
+                    <span class="childTitle">从权建议:</span>{{technicalContent.claimSuggestions.dependentClaimSuggestions}}
+                  </p>
+                </div>
+              </div>
               <!-- 补充建议 -->
-              <div></div>
+              <div class="supply_suggestions content_box">
+                <div class="title">补充建议</div>
+                <div>
+                  {{ technicalContent.additionalSuggestions || '无' }}
+                </div>
+              </div>
+              <!-- 空白 -->
+              <div class="kongbai"></div>
             </div>
             <!-- AI对话框 -->
-            <div class="AIChat">
-
+            <div class="AIChat" :style="showHistory?'height:100%':'height:auto'">
+              <xiaoshiAI style="width:100%;max-width:100%" :slotDataFunction="slotDataFunction" :chat_id="chat_id" :params="AIParams" :API_KEY="API_KEY" :chatApi="chat_api" :defaultShowHistory="showHistory" @getShowHistory="getShowHistory" @getConversationId="getConversationId">
+                <template slot="questionBtn">
+                  <div>
+                    <el-button size="mini" :type="AIModel=='chat'?'success':'info'" round @click="changeAIModel('chat')">AI对话</el-button>
+                    <el-button size="mini" :type="AIModel=='edit'?'success':'info'" round @click="changeAIModel('edit')">AI修改</el-button>
+                  </div>
+                </template>
+                <template v-if="AIModel == 'edit'" v-slot:answer="data">
+                  <div class="mainContent">
+                    <!-- 技术领域 --> 
+                    <div class="technical_field content_box">
+                      <div class="title">技术领域</div>
+                      <div class="text">
+                        {{ data.data.technicalField }}
+                      </div>
+                    </div>
+                    <!-- 技术问题 -->
+                    <div class="technical_issue content_box">
+                      <div class="title">技术问题</div>
+                      <div>
+                        <div v-for="(item,index) in data.data.technicalCase" :key="index" class="technical_issue_item">
+                          <div class="text"><span class="childTitle">技术问题:</span>{{ item.technicalProblem }}</div>
+                          <div class="technical_means">
+                            <div class="title">技术手段:</div>
+                            <div v-for="(mean,inde) in item.technicalMeans" :key="'mean'+inde" class="technical_means_item">
+                              <div class="text"><span class="childTitle">技术手段内容:</span>{{ mean.technicalMeansContent }}</div>
+                              <div class="text"><span class="childTitle">实现方式:</span>{{ mean.ImplementationMethod }}</div>
+                              <div class="text">
+                                <div class="childTitle">有益效果:</div>
+                                <div>
+                                  <ol>
+                                  <li v-for="(effect,effectIndex) in mean.technicalEffect" :key="'effect'+effectIndex">
+                                      <div class="li_content">
+                                        <div>{{ effect }}</div>
+                                      </div>
+                                    </li> 
+                                  </ol>
+                                </div>
+                              </div>
+                              <div v-if="inde != item.technicalMeans.length-1">
+                                <hr/>
+                              </div>
+                            </div>
+                          </div>
+                          <div v-if="index != data.data.technicalCase.length-1">
+                            <hr/>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                    <!-- 技术特征 -->
+                    <div class="technical_features content_box">
+                      <div class="title">技术特征</div>
+                      <div class="text" >
+                        <div>
+                          <ol>
+                            <li v-for="(item,index) in data.data.technicalFeature" :key="'feature' + index">
+                              <div class="li_content">
+                                <div>{{ item }}</div>
+                              </div>
+                            </li> 
+                          </ol>
+                        </div>
+                      </div>
+                    </div>
+                    <!-- 背景技术 -->
+                    <div class="background_technology content_box">
+                      <div class="title">背景技术</div>
+                      <div>
+                        {{ data.data.background }}
+                      </div>
+                    </div>
+                    <!-- 术语解释 -->
+                    <div class="terminology_explanation content_box">
+                      <div class="title">术语解释</div>
+                      <div>
+                        <div v-for="(item,index) in data.data.termsExplanation" :key="index" class="terminology_explanation_item">
+                          <div class="childTitle">{{ item.terms }}</div>
+                          <div class="text">{{ item.explanation }}</div>
+                        </div>
+                      </div>
+                    </div>
+                    <!-- 布局建议 -->
+                    <div class="layout_suggestions content_box">
+                      <div class="title">布局建议</div>
+                      <div class="text">
+                        <p v-if="data.data.claimSuggestions.mainClaimSuggestions">
+                          <span class="childTitle">独权建议:</span> {{data.data.claimSuggestions.mainClaimSuggestions}}
+                        </p>
+                        <p v-if="data.data.claimSuggestions.dependentClaimSuggestions">
+                          <span class="childTitle">从权建议:</span>{{data.data.claimSuggestions.dependentClaimSuggestions}}
+                        </p>
+                      </div>
+                    </div>
+                    <!-- 补充建议 -->
+                    <div class="supply_suggestions content_box">
+                      <div class="title">补充建议</div>
+                      <div>
+                        {{ data.data.additionalSuggestions || '无' }}
+                      </div>
+                    </div>
+                  </div>
+                </template>
+                <template v-if="AIModel == 'edit'"  v-slot:messageBtn="data">
+                  <div @click="ying">
+                    应用
+                  </div>
+                </template>
+              </xiaoshiAI>
             </div>
           </div>
         </div>
@@ -105,6 +389,8 @@ export default {
   },
   data() {
     return {
+        chat_api:'/api/xiaoshi/dify/generateDiscoveryResult/dialogue',
+        API_KEY:'',
         confession:{},
         //参考vabOnlyOffice组件参数配置
         option: {
@@ -122,9 +408,9 @@ export default {
         show:false,
         loading:false,
         chat_id:'',
-        loading2:false,
         AIParams:{
-          confessionSessionId:null
+          confessionSessionId:null,
+          type:31
         },
         confessionSessionList:[],
         addNewConversation:false,
@@ -135,23 +421,56 @@ export default {
           showRight:true
         },
         technicalContent:{
-          technicalField:'技术领域',
-          technicalIssue:[
+          technicalField:'技术领域11',
+          technicalCase:[
+            {
+              technicalProblem:'技术问题11',
+              technicalMeans:[
+                {
+                  technicalMeansContent:'技术手段内容111',
+                  ImplementationMethod:'实现方式1111',
+                  technicalEffect:["有益效果11"]
+                },
+                {
+                  technicalMeansContent:'技术手段内容1',
+                  ImplementationMethod:'实现方式1',
+                  technicalEffect:["有益效果1"]
+                }
+              ]
+            },
             {
-              question:'技术问题',
-              means:[
+              technicalProblem:'技术问题22',
+              technicalMeans:[
                 {
-                  content:'技术手段内容'
+                  technicalMeansContent:'技术手段内容222',
+                  ImplementationMethod:'实现方式122',
+                  technicalEffect:["有益效果2"]
                 }
               ]
             }
           ],
-          technicalFeatures:[],
-          backgroundTechnology:'',
-          terminologyExplanation:[],
-          layoutSuggestions:'',
+          technicalFeature:['特征1','特征2'],
+          background:'背景技术',
+          termsExplanation:[
+            {
+              terms:'术语1',
+              explanation:'术语1的解释'
+            },
+            {
+              terms:'术语2',
+              explanation:'术语2的解释'
+            },
+          ],
+          claimSuggestions:{
+            mainClaimSuggestions:'独权建议1',
+            dependentClaimSuggestions:'从权建议1'
+          },
+          additionalSuggestions:'补充建议'
         },
         editTechnicalContent:{},
+        editTechnical:false,
+        showHistory:false,
+        AIModel:'chat'
     };
   },
   watch: {
@@ -165,9 +484,81 @@ export default {
     
   },
   methods: {
+    slotDataFunction(){
+      return (val)=>{
+        let obj = {}
+        try{
+          obj = JSON.parse(val)
+        }catch{}
+        return obj
+      }
+      
+    },
+    getShowHistory(val){
+      this.showHistory = val
+    },
+    changeAIModel(val){
+      this.AIModel = val
+      if(this.AIModel == 'chat'){
+        this.chat_id = this.currentConversation.dialogueConversationId
+      }else if(this.AIModel == 'edit'){
+        this.chat_id = this.currentConversation.aiUpdateConversationId
+      }
+    },
+    addData(field,parentData){
+      switch(field){
+        case 'technicalCase':
+          parentData.push(
+            {
+              technicalProblem:'',
+              technicalMeans:[]
+            }
+          )
+          break
+        case 'technicalMeans':
+          parentData.push(
+            {
+              technicalEffect:[]
+            }
+          )
+          break;
+        case 'technicalEffect':
+          parentData.push('')
+          break;
+        case 'technicalFeature':
+          parentData.push('')
+          break
+      }
+    },
+    delData(field,parentData,index){
+      parentData.splice(index,1)
+    },
+    saveTechnicalContent(){
+      var params = {
+        confessionSessionId:this.currentConversation.id,
+        discoveryResult:JSON.stringify(this.editTechnicalContent)
+      }
+      this.$api.updateDiscoveryResult(params).then(response=>{
+        if(response.code == 200){
+          this.$message.success('修改成功')
+          this.technicalContent = JSON.parse(JSON.stringify(this.editTechnicalContent))
+        }
+      }).catch(error=>{
+        this.editTechnicalContent = JSON.parse(JSON.stringify(this.technicalContent))
+      })
+      
+    },
+    changeEditTechnical(){
+      if(this.editTechnical){
+        this.editTechnical = false
+        this.editTechnicalContent = {}
+      }else{
+        this.editTechnical = true
+        this.editTechnicalContent = JSON.parse(JSON.stringify(this.technicalContent))
+      }
+    },
     //打开新对话
     addConversation(){
-      this.$set(this,'loading2',false)
       this.$set(this,'addNewConversation',true)
       this.currentConversation = {}
     },
@@ -205,17 +596,29 @@ export default {
       this.queryConfessionSession(true)
     },
     //切换会话
-    changeConversation(obj){
+    async changeConversation(obj){
       if(obj.id == this.currentConversation.id){
         this.currentConversation = obj
         return
       }
       this.currentConversation = obj
       this.AIParams.confessionSessionId = obj.id
-      this.confession = obj.systemFile || {}
-      this.getOption()
-      this.chat_id = obj.conversationId
+      if(this.AIModel == 'chat'){
+        this.AIParams.type = 31
+      }else if(this.AIModel == 'edit'){
+        this.AIParams.type = 32
+      }
       this.$set(this,'addNewConversation',false)
+      if(!this.currentConversation.discoveryResult){
+        await this.getDiscoveryResultDetail()
+      }
+      if(this.currentConversation.discoveryFiles && this.currentConversation.discoveryFiles.length){
+        this.confession = this.currentConversation.discoveryFiles[0]
+      }else{
+        this.confession = {}
+      }
+      this.getOption()
+      
     },
      //上传技术交底书
      onChangeConfession(file){
@@ -233,7 +636,7 @@ export default {
               this.$refs.uploadConfession.clearFiles()
               var params = {
                 fileGuid:guid,
-                type:0
+                type:3
               }
               this.$api.addConfessionSession(params).then(response=>{
                 if(response.code == 200){
@@ -252,7 +655,7 @@ export default {
     //查询技术交底书会话记录
     queryConfessionSession(onlyQuery){
       var params = {
-        type:0
+        type:3
       }
       this.$api.queryConfessionSession(params).then(response=>{
         if(response.code == 200){
@@ -290,23 +693,70 @@ export default {
         if(this.chat_id){
             return
         }
-        var params = {
-          confessionSessionId:this.currentConversation.id
-        }
-        this.$api.queryConfessionSession(params).then(response=>{
-          if(response.code == 200){
-            let data = response.data || []
-            if(data.length>0){
-              let obj = data[0]
-              this.chat_id = obj.conversationId
-              this.updateConversationByField('conversationId',this.chat_id)
+        this.getDiscoveryResultDetail(1)
+    },
+
+    //获取生成的技术交底书理解结果
+    async getDiscoveryResultDetail(type){
+      var params = {
+        confessionSessionId:this.currentConversation.id
+      }
+      await this.$api.discoveryResultDetail(params).then(response=>{
+        if(response.code == 200){
+          let data = response.data || {}
+          if(type){
+            this.currentConversation.dialogueConversationId= data.dialogueConversationId
+            this.currentConversation.aiUpdateConversationId= data.aiUpdateConversationId
+            // 获取当前ai会话id
+            this.changeAIModel(this.AIModel)
+            return
+          }
+          this.currentConversation = {
+            ...this.currentConversation,
+            ...data
+          }
+          //获取生成的结果
+          if(data.discoveryResult){
+            try{
+              this.technicalContent = JSON.parse(data.discoveryResult)
+            }catch{
+              this.technicalContent = {
+                technicalField:'',
+                technicalCase:[],
+                technicalFeature:[],
+                background:'',
+                termsExplanation:[],
+                claimSuggestions:{},
+                additionalSuggestions:''
+              }
+            }
+          }else{
+            this.technicalContent = {
+              technicalField:'',
+              technicalCase:[],
+              technicalFeature:[],
+              background:'',
+              termsExplanation:[],
+              claimSuggestions:{},
+              additionalSuggestions:''
             }
           }
-        })
+          // 获取当前ai会话id
+          this.changeAIModel(this.AIModel)
+        }
+      }).catch(error=>{
+        // this.technicalContent = {
+        //   technicalField:'',
+        //   technicalCase:[],
+        //   technicalFeature:[],
+        //   background:'',
+        //   termsExplanation:[],
+        //   claimSuggestions:{},
+        //   additionalSuggestions:''
+        // }
+      })
     },
 
-
-
     //获取onlyoffice需要的内容
     getOption(){
         if(!this.confession.guid){
@@ -351,7 +801,7 @@ export default {
       height: calc(100% - 40px);
     }
     .left{
-        width:50%;
+        width:40%;
         height:calc(100% - 0px);
         padding-right: 10px;
         text-align: center;
@@ -370,10 +820,15 @@ export default {
       height: 30px;
       display: flex;
       align-items: center;
+      justify-content: space-between;
       padding-bottom: 10px;
       i{
         font-size: 20px;
       }
+      .topMenu_left{
+        display: flex;
+        align-items: center;
+      }
     }
     .line{
         width:2px;
@@ -381,13 +836,177 @@ export default {
         background: #e6e6e6;
     }
     .right{
-        width:calc(100% - 50% - 2px);
-        min-width: 450px;
-        height:100%;
-        padding-left: 10px;
-        display: flex;
-        flex-direction: column;
-
+      width:calc(100% - 40% - 2px);
+      min-width: 450px;
+      height:100%;
+      padding-left: 10px;
+      display: flex;
+      flex-direction: column;
+      position: relative;
+      .mainContent{
+        width: calc(100% - 10px);
+        padding:0 10px;
+        height:calc(100% - 0px);
+        overflow-y: auto;
+        &>*{
+          padding: 5px 0;
+        }
+        .content_box{
+          padding: 15px 5px 5px 10px;
+          margin-bottom: 30px;
+          box-shadow: 0px 1px 3px 0 #000;
+          position: relative;
+          &:empty{
+            box-shadow:none
+          }
+          &:first-child{
+            margin-top: 15px;
+          }
+        }
+        
+        
+        .title{
+          font-weight: bolder;
+          font-size: 18px;
+          height:20px;
+          background: white;
+          padding: 2px;
+          position: absolute;
+          top: -17px;
+          left: 10px;
+        }
+        .childTitle{
+          font-weight: bolder;
+        }
+        .text{
+          font-size: 16px;
+          padding: 3px 0;
+        }
+        .flex_content{
+          display: flex;
+          align-items: center;
+          .childTitle{
+            flex:none;
+          }
+        }
+        ol{
+          margin: 3px 0;
+          li{
+            margin: 3px 0;
+            .li_content{
+              display: flex;
+              align-items: center;
+              .editBtn{
+                flex: none;
+                width: 50px;
+                margin-left:10px;
+              }
+              .hideEditBtn{
+                width: 30px;
+                opacity: 0;
+                pointer-events: none;
+              }
+              i{
+                cursor: pointer;
+              }
+              .el-icon-delete{
+                color: red;
+              }
+            }
+            &:hover{
+              .hideEditBtn{
+                opacity: 1;
+                pointer-events:all;
+              }
+            }
+          }
+        }
+        .addBtn{
+          padding: 5px 10px;
+          margin: 0 auto;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          border: 1px solid green;
+          width: fit-content;
+          border-radius:20px;
+          font-weight: bold;
+          cursor: pointer;
+        }
+        .technical_issue{
+          .technical_issue_item{
+            margin-bottom: 15px;
+            .delBtn{
+              display: none;
+              justify-content: flex-end;
+              align-items: center;
+              height: 25px;
+              .delTextBtn{
+                color: red;
+              }
+            }
+            &:hover{
+              .delBtn{
+                display: flex;
+              }
+            }
+            .technical_means_item{
+              .delBtn2{
+                display: none;
+                justify-content: flex-end;
+                align-items: center;
+                height: 25px;
+                .delTextBtn{
+                  color: red;
+                }
+              }
+              &:hover{
+                .delBtn2{
+                  display: flex;
+                }
+              }
+            }
+          }
+          .technical_issue_item_edit{
+            .delBtn{
+               display: flex;
+            }
+            .technical_means_item{
+              .delBtn2{
+                display: flex;
+              }
+            }
+          }
+          .technical_means{
+            margin-top: 20px;
+            position: relative;
+            border:1px dashed  black;
+            padding: 10px;
+            .title{
+              font-size: 16px;
+            }
+            .text{
+              font-size: 14px;
+            }
+            .technical_means_item{
+              
+            }
+          }
+        }
+        .terminology_explanation{
+          .terminology_explanation_item{
+            margin-bottom: 15px;
+          }
+        }
+      }
+      .kongbai{
+        height:176px
+      }
+      .AIChat{
+        width: 100%;
+        position:absolute;
+        bottom: 5px;
+      }
     }
     .newConversation{
       width:720px;