zhuliu преди 1 година
родител
ревизия
b510075603

+ 9 - 14
public/reportTemplate/dahua/dahua.txt

@@ -6,20 +6,20 @@
         <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('baseMessage','customCaseNumber')">
+                    <div v-if="isEdit('baseMessage','customCaseNumber')">
+                        <myRichText v-model="reportData.baseMessage.customCaseNumber" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                     </div>
-                    <div v-else>{{dataObj.basicMessage.number}}</div>
+                    <div v-else v-html="getColumnData('baseMessage','customCaseNumber',dataObj.baseMessage.customCaseNumber + '<br>'+dataObj.baseMessage.caseName)"></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('baseMessage','caseName')">
+                    <div v-if="isEdit('baseMessage','caseName')">
+                        <myRichText v-model="reportData.baseMessage.caseName" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                     </div>
-                    <div v-else>{{dataObj.basicMessage.name}}</div>
+                    <div v-else></div>
                 </td>
             </tr>
             <tr>
@@ -52,12 +52,7 @@
         <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>
-                <div v-else>{{dataObj.signMessage.description}}</div>
-            </div>
+            <div class="content"></div>
         </div>
         <div>
             <div class="title2">2、主要附图(如有必要)</div>

+ 2 - 4
src/utils/model/RichText/index.vue

@@ -24,10 +24,8 @@ export default {
   components: {},
   props:{
         value:{
-            type:[String,Function],
-            default:(value)=>{
-                  return ""
-            }
+            type:String,
+            default:''
         },
         placeholder:{
             type:String,

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

@@ -7,47 +7,38 @@
         <table>
             <tr>
                 <td>提案编号:</td>
-                <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>
+                <td @dblclick="edit('baseMessage','customCaseNumber')">
+                    <div v-if="isEdit('baseMessage','customCaseNumber')">
+                        <myRichText v-model="reportData.baseMessage.customCaseNumber" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                     </div>
-                    <div v-else v-html="dataObj.basicMessage.customCaseNumber"></div>
+                    <div v-else v-html="getColumnData('baseMessage','customCaseNumber',dataObj.baseMessage.customCaseNumber + '<br>'+dataObj.baseMessage.caseName)"></div>
                 </td>
             </tr>
             <tr>
                 <td>提案名称:</td>
-                <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>
+                <td @dblclick="edit('baseMessage','caseName')">
+                    <div v-if="isEdit('baseMessage','caseName')">
+                        <myRichText v-model="reportData.baseMessage.caseName" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                     </div>
-                    <div v-else>{{dataObj.basicMessage.caseName}}</div>
+                    <div v-else v-html="getColumnData('baseMessage','caseName',dataObj.baseMessage.caseName)"></div>
                 </td>
             </tr>
             <tr>
                 <td>技术接口人:</td>
-                <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>
+                    <span></span>
                 </td>
             </tr>
             <tr>
                 <td>检索机构/检索员:</td>
-                <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>
+                    <span></span>
                 </td>
             </tr>
             <tr>
                 <td>检索员联系方式:</td>
-                <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>
+                    <span></span>
                 </td>
             </tr>
             <tr>
@@ -62,43 +53,20 @@
         <div class="title">一、技术方案的分析</div>
         <div>
             <div class="title2">1、方案概述</div>
-            <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 class="content" @dblclick="edit('technicalCase','description')">
+                <div v-if="isEdit('technicalCase','description')">
+                    <myRichText v-model="dataObj.technicalCase.description" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                 </div>
-                <div v-else v-html="dataObj.signMessage.remark"></div>
+                <div v-else>{{dataObj.technicalCase.description}}</div>
             </div>
         </div>
         <div>
             <div class="title2">2、主要附图(如有必要)</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 class="content"></div>
         </div>
         <div>
             <div class="title2">3、主要发明点</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 class="content"></div>
         </div>
     </div>
     <div class="mainContent">

+ 72 - 19
src/views/noveltySearch/components/exportReport/components/mixins.js

@@ -4,14 +4,23 @@ export default{
             type:Object,
             default:()=>{
                 return {
-                    basicMessage:{
-                        number:'浙江零跑科技股份有限公司'
-                    },
-                    result:{},
-                    signMessage:{},
-                    contrastFiles:[],
-                    contrastRecords:[],
-                    searchRecords:[]
+                    baseMessage:{},
+                    technicalCase:{},
+                    compareLiterature:[],
+                    compareRecord:[],
+                    searchRecord:[]
+                }
+            }
+        },
+        reportData:{
+            type:Object,
+            default:()=>{
+                return {
+                    baseMessage:{},
+                    technicalCase:{},
+                    compareLiterature:[],
+                    compareRecord:[],
+                    searchRecord:[]
                 }
             }
         },
@@ -20,21 +29,67 @@ export default{
             default:()=>{
                 return []
             }
-        }
+        },
+        editModel:{
+            type:Boolean,
+            default:false
+        },
+        reLoadBasicMessage:{
+            type:Boolean,
+            default:false
+        },
     },
     data() {
         return {
             nowEdit:{
 
+            },
+            hasCopy:{
+
+            }
+        }
+    },
+    watch:{
+        reLoadBasicMessage(val){
+            if(val){
+                this.reLoad()
             }
         }
     },
     methods: {
+        reLoad(){
+            for(let key in this.hasCopy){
+                if(key.indexOf('baseMessage') !=-1){
+                    this.hasCopy[key] = false
+                }
+            }
+            this.reportData.baseMessage = {}
+        },
+        getColumnData(field,property,value){
+            var key = field + '-' + property
+            if(!this.editModel && !this.hasCopy[key]){
+                if(value){
+                    if(property){
+                        this.$set(this.reportData[field],property,value)
+                    }else{
+                        this.$set(this.reportData,field,value)
+                    }
+                }
+                
+                this.hasCopy[key] = true
+            }
+            if(property){
+                return this.reportData[field][property];
+            }else{
+                this.reportData[field]
+            }
+            
+        },
         edit(field,property){
             this.nowEdit = {
                 field:field,
                 property:property,
-                value:this.dataObj[field][property]
+                value:this.reportData[field][property]
             }
             var obj = this.editMessage.find(item=>{
                 return item.field == field && item.property == property
@@ -46,7 +101,7 @@ export default{
                 {
                     field:field,
                     property:property,
-                    value:this.dataObj[field][property]
+                    value:this.reportData[field][property]
                 }
             )
         },
@@ -65,23 +120,21 @@ export default{
                 return
             }
             //执行保存
+            var field = this.nowEdit.field
+            var property = this.nowEdit.property
+            this.$set(this.reportData[field],property,value)
             this.clearEdit()
         },
 
         // 图片变化的change事件
         handleChange(file, fileList) {
             file.raw.url = file.url
-            this.form.systemFileList.push(file.raw)
+            this.reportData.signMessage.systemFileList.push(file.raw)
             this.uploadFile(file)
         },
-        // 点击已上传的文件//showViewer是图片显示查看器
-        handlePictureCardPreview(file) {
-            
-            this.$refs.image.showViewer = true
-        },
         // 文件列表移除文件
         handleRemove(file) {
-            let index = this.form.systemFileList.findIndex(item => {
+            let index = this.reportData.signMessage.systemFileList.findIndex(item => {
             if (file.guid) {
                 return item.guid == file.guid
             } else {
@@ -89,7 +142,7 @@ export default{
             }
             })
             if (index != -1) {
-            this.form.systemFileList.splice(index, 1)
+                this.reportData.signMessage.systemFileList.splice(index, 1)
             }
         },
         //上传附件

+ 55 - 16
src/views/noveltySearch/components/exportReport/exportReport.vue

@@ -6,7 +6,7 @@
           <el-button type="primary" size="small" @click="reporting">生成报告</el-button>
       </div>
       <div style="height:calc(100% - 60px);overflow-y:auto" v-loading="loading">
-          <component :is='component' v-if="!loading" :dataObj="dataObj" :editMessage="editMessage"></component>    
+          <component :is='component' v-if="!loading" :dataObj="dataObj" :reportData="reportData" :editMessage="editMessage" :editModel="editModel" :reLoadBasicMessage="reLoadBasicMessage"></component>    
       </div>
 
       <getMessageByNumber ref="getMessageByNumber" @save="getReportMessage"></getMessageByNumber>
@@ -17,45 +17,75 @@
 import mixins1 from './mixins/index'
 import mixins2 from './components/mixins'
 import getMessageByNumber from '../dialog/getMessageByNumber.vue';
+import dahuaVue from './components/dahua.vue';
 export default {
     components: {
-        getMessageByNumber
+        getMessageByNumber,
+        dahuaVue
     },
     mixins:[mixins1],
     props: {
-        path:{},
-        projectId:{}
+        reportTemplateId:{},
+        projectId:{},
+        editModel:{
+            type:Boolean,
+            default:false
+        }
     },
     data() {
       return {
-          component:null,
+          component:'dahuaVue',
           loading:false,
           dataObj:{
-            basicMessage:{
-                number:'浙江零跑科技股份有限公司'
+            baseMessage:{
+                customCaseNumber:'123',
+                caseName:'你好'
             },
-            contrastFiles:[],
-            contrastRecords:[],
+            technicalCase:{},
+            compareLiterature:[],
+            compareRecord:[],
             searchRecords:[]
           },
-          editMessage:[]
+          reportData:{
+            baseMessage:{},
+            technicalCase:{},
+            compareLiterature:[],
+            compareRecord:[],
+            searchRecord:[]
+          },
+          editMessage:[],
+          reLoadBasicMessage:false,
       };
     },
-    watch: {},
+    watch: {
+        reportTemplateId(){
+            this.init()
+        },
+        editModel(){
+            this.getData()
+        },
+    },
     computed: {
     },
     created() {},
     async mounted() {
-        this.getData()
-        await this.getReportTemplate()
+        await this.init()
     },
     methods: {
+        async init(){
+            this.getData()
+            // await this.getReportTemplate()
+        },
         //获取报告所需信息
         getData(){
+            if(this.editModel){
+                
+                return
+            }
             this.getReportMessage()
             this.getContrastFile()
             this.getContrastRecord()
-            this.searchRecords()
+            this.getSearchRecord()
         },
         //获取报告基本信息
         getReportMessage(){},
@@ -66,15 +96,24 @@ export default {
         //获取检索记录
         getSearchRecord(){},
         //获取报告模板
-        async getReportTemplate(){
+        getReportTemplate(){
+            var path='dahua'
+            this.getReportTemplateByPath(path)
+        },
+        //根据报告名称获取显示的html
+        async getReportTemplateByPath(path){
             this.loading = true
-            var component1 = await this.getComponents(this.path)
+            var component1 = await this.getComponents(path)
             component1.mixins = [mixins2]
             this.component = component1
             this.loading = false
         },
         getMessage(){
             this.$refs.getMessageByNumber.open()
+            this.reLoadBasicMessage = true
+            this.$nextTick(()=>{
+                this.reLoadBasicMessage = false
+            })
         },
         //生成报告
         reporting(){},

+ 7 - 4
src/views/noveltySearch/components/exportReport/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="height_100">
-    <exportReport :path="path" :projectId="projectId"></exportReport>
+    <exportReport :reportTemplateId="reportTemplateId" :projectId="projectId" :editModel="editModel"></exportReport>
   </div>
 </template>
 
@@ -20,9 +20,12 @@ export default {
     projectId(){
         return this.$route.query.projectId
     },
-    path(){
-        return this.$route.query.path
-    }
+    reportTemplateId(){
+        return this.$route.query.reportTemplateId
+    },
+    editModel(){
+        return this.$route.query.editModel || false
+    },
   },
   created() {},
   mounted() {},