Explorar o código

各个模块的卡片视图

zhuliu hai 1 ano
pai
achega
c4ae14daf5

+ 16 - 0
src/assets/css/main.scss

@@ -102,4 +102,20 @@
   //   border-right: 1px solid rgba(124,124,124) !important;
   //   border-left: 1px solid rgba(124,124,124) !important;
   // }
+
+  //不换行  
+  .noWrap{
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow:ellipsis;
+  }
+  .btn{
+    margin: 0;
+    i{
+      color: var(--color2);
+      font-size: 16px;
+      margin-right:16px
+    }
+  }
+  
   

+ 1 - 1
src/utils/common.js

@@ -101,7 +101,7 @@ export default {
    */
   getColumnData(row,field,prop,data){
     if(field.type == 'Array'){
-      if(row[field.value]){
+      if(row[field.value] && row[field.value].length>0){
         if(prop){
          return row[field.value].map(item=>{
             return item[prop]

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

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <div class="edit-box div_MAX_Height" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
+    <div class="edit-box div_MAX_Height" ref="myEditBox" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
         @blur="saveValue($event)" @click="getFocus($event)" v-on:paste="handlePaste($event)">
     </div>
   </div>
@@ -69,6 +69,19 @@ export default {
           this.setCursor(event,text2,1)
           break;
         }
+        // if(items[i].type.indexOf("text/html") !== -1){
+        //   var string = (event.originalEvent || event).clipboardData.getData('text/html')
+
+				// const srcRegex = /<img\s+(?:[^>]*?\s+)?src\s*=\s*(["'])((?:[^\1"]|\\\1|.)*?)\1/g
+				// const result = [...string.matchAll(srcRegex)]
+				// var src = result.map(v => v[2])[0]
+        // console.log(src)
+        // var reader  = new FileReader()
+        // var srcBase64 = reader.readAsDataURL(src)
+        // // var srcBase64 =await this.urlToBase64(src)
+        //   console.log(srcBase64)
+        //   continue;
+        // }
         if (items[i].type.indexOf("image") !== -1) {
           var e = event || window.event
           e.preventDefault();
@@ -130,8 +143,37 @@ export default {
       // console.log(window.getSelection().getRangeAt(0))
      
     },
+    /**
+ * 根据图片的url转换对应的base64值
+ * @param { String } imageUrl 如:http://xxxx/xxx.png
+ * @returns base64取值
+ */
+async urlToBase64(imageUrl) {
+    return new Promise((resolve, reject) => {
+      let canvas = document.createElement('canvas')
+      const ctx = canvas.getContext('2d')
+      let img = new Image()
+      img.crossOrigin = 'Anonymous' // 解决Canvas.toDataURL 图片跨域问题
+      img.src = imageUrl
+      img.onload = function() {
+        canvas.height = img.height
+        canvas.width = img.width
+        ctx.fillStyle = '#fff' // canvas背景填充颜色默认为黑色
+        // ctx.fillRect(0,0,img.width,img.height)
+        ctx.drawImage(img, 0, 0,img.width,img.height) // 参数可自定义
+        const dataURL = canvas.toDataURL('image/jpeg', 1) // 获取Base64编码
+        resolve(dataURL)
+        canvas = null // 清除canvas元素
+        img = null // 清除img元素
+      }
+      img.onerror = function() {
+        reject(new Error('Could not load image at ' + imageUrl))
+      }
+    })
+},
     //设置光标位置
     setCursor(event,str,type){
+      console.log(event)
           var content = event.target.innerHTML
           // previousSibling
           var indexText = this.getColumn(event.target,window.getSelection())
@@ -139,7 +181,9 @@ export default {
           var childNodes = event.target.childNodes
           if(!content){
             if(event.target.nodeName == 'BR'){
-              event.target.parentNode.innerHTML = str
+              const span = document.createElement('span');
+              span.innerHTML = str;
+              event.target.parentNode.insertBefore(span,event.target)
               var selectedRange = document.createRange();
               selectedRange.setStart(event.target,index2);
               return false

+ 50 - 47
src/utils/model/route.vue

@@ -1,57 +1,60 @@
 <template>
-  <div>
-    <Cascader :options="[
-        {
-          label:'事件1',
-          value:'1'
-        },
-        {
-          label:'事件2',
-          value:'2'
-        },
-      ]">
-      <i slot="reference" class="el-icon-circle-plus-outline" style="font-size:20px;"></i>
-    </Cascader>
-    <myUpload :multiple="true" :fileList="[{name:'场景可视化.jpg'}]" accept=".png,.jpg"></myUpload>
-    <my-date value=""></my-date>
-    <myTooltop effect="dark" content="123" placement="top-start">
-      <div class="tooltip">你哈d </div>
-    </myTooltop>
-    <myTooltop effect="dark" content="123" placement="top-start">
-      <div class="tooltip">fdgfdfdfdgdddfddz fvfbvzd 宾馆饭店不放单放单 </div>
-    </myTooltop>
-  </div>
+  <div class="editable-div" contenteditable="true" @paste="handlePaste" ref="editableDiv"></div>
 </template>
+
 <script>
-import Cascader from './Cascader/index.vue'
-import myDate from './date/index.vue'
-import myTooltop from './tooltip/index.vue'
 export default {
-  components:{
-    Cascader,
-    myDate,
-    myTooltop
-  },
-  data() {
-    return {
-      time:'2023',
+  methods: {
+    handlePaste(event) {
+      event.preventDefault();
+
+      const clipboardData = (event.clipboardData || event.originalEvent.clipboardData);
+      let items = clipboardData.items;
+      let dedalock = 1;
+      const target = this.$refs.editableDiv;
+      for (const item of items) {
+        if(dedalock == 2) {
+          break
+        }else if(dedalock == 1) {
+          dedalock = 2;
+        }
+        if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {
+          const file = item.getAsFile();
+          const reader = new FileReader();
+
+          reader.onload = () => {
+            const img = document.createElement('img');
+            img.src = reader.result;
+            target.appendChild(img);
+          };
 
-    };
-  },
-  watch:{
-    time(val){
-      console.log(val)
+          reader.readAsDataURL(file);
+        } else if (item.kind === 'string') {
+          debugger
+          item.getAsString((text) => {
+            const regex = /<img src="(.*?)"/;
+            const match = text.match(regex);
+
+            if (match) {
+              const img = document.createElement('img');
+              img.src = match[1];
+              target.appendChild(img);
+            } else {
+              console.log(text);
+              document.execCommand('insertText', false, text);
+            }
+          });
+        }
+      }
     }
-  },
-  methods: {
   }
 };
 </script>
-<style lang="scss">
-  .tooltip{
-    width: 100px;
-    overflow: hidden;
-    white-space: nowrap;
-    text-overflow:ellipsis;
-  }
+
+<style scoped>
+.editable-div {
+  border: 1px solid #ccc;
+  padding: 10px;
+  min-height: 100px;
+}
 </style>

+ 4 - 4
src/views/event/components/index.vue

@@ -2,25 +2,25 @@
   <div class="height_100">
     <el-container v-if="showView">
       <el-header>
-        <div>
+        <div id="step1">
           <mySearch style="width: 500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption">
           </mySearch>
         </div>
         <div style="display: flex">
-          <div v-if="[2].indexOf(isOperate) == -1">
+          <div v-if="[2].indexOf(isOperate) == -1" id="step2">
             <span>分组查询:</span>
             <el-select v-model="groupingValue" size="small" @change="changeGrouping" clearable style="width: 120px">
               <el-option v-for="item in groupingOption" :key="item.value" :label="item.name" :value="item.value">
               </el-option>
             </el-select>
           </div>
-          <el-button-group style=" display: flex; justify-content: flex-start; margin-left: 10px;" v-if="[2].indexOf(isOperate) == -1">
+          <el-button-group id="step3" style=" display: flex; justify-content: flex-start; margin-left: 10px;" v-if="[2].indexOf(isOperate) == -1">
             <el-button size="small" :type="viewSelectedBtn === 'visual' ? 'primary' : ''" @click="onChange2('visual')">可视化</el-button>
             <el-button :type="viewSelectedBtn === 'Table' ? 'primary' : ''" @click="onChange2('Table')" size="small">列表</el-button>
             <el-button :type="viewSelectedBtn === 'Card' ? 'primary' : ''" @click="onChange2('Card')" size="small">卡片</el-button>
           </el-button-group>
           <!-- <el-button type="primary" size="small" style="margin: 0 10px;" @click="handleCommand('1')">添加事件</el-button> -->
-          <el-dropdown trigger="click" split-button type="primary" size="small" @command="handleCommand($event)">
+          <el-dropdown id="step4" trigger="click" split-button type="primary" size="small" @command="handleCommand($event)">
             <span @click="handleCommand('1')">添加事件</span>
             <el-dropdown-menu slot="dropdown" class="text-align_center">
               <el-dropdown-item command="3">显示栏位管理</el-dropdown-item>

+ 25 - 15
src/views/event/components/view/card.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="eventCard">
     <el-row :gutter="12">
-      <el-col :span="6" v-for="(item, itemIndex) in tableData" :key="itemIndex" style="height:420px">
+      <el-col :span="6" v-for="(item, itemIndex) in tableData" :key="itemIndex" style="padding-bottom:10px">
         <myCard shadow="always">
           <div slot="head">
             <div style="font-size:18px">
@@ -32,24 +32,34 @@
             </div>
           </div>
           <div>
-            <el-form label-position="left" label-width="110px">
+            <el-form label-position="left" label-width="140px">
               <el-form-item label="报告数量:"> {{ item.reportProjectNum || 0  }} </el-form-item>
               <el-form-item label="专利数据库数量:">{{ item.patentProjectNum || 0 }}</el-form-item>
               <el-form-item label="应用场景:">
-                <el-tooltip class="item" effect="light" placement="top" :content="item.scenarioName">
-                  <div>{{ item.scenarioName }}</div>
-                  <!-- <div slot="content"><span v-for="name in item.scenarioNames">{{ name }}&nbsp;&nbsp;</span></div>
-                  <span v-if="item.scenarioNames">{{ item.scenarioNames[0] }}
-                    <span v-if="item.scenarioNames.length > 1">
-                      <span><img src="@/assets/img/更多.png" style="width:18px;vertical-align:bottom" /></span>
-                    </span>
-                  </span> -->
-                </el-tooltip>
+                <myTooltip :content="$commonJS.getColumnData(item, {type:'Array',value:'scenarioNames'})">
+                  <div class="noWrap" v-html="$commonJS.getColumnData(item, {type:'Array',value:'scenarioNames'})"></div>
+                </myTooltip>
+              </el-form-item>
+              <el-form-item label="发生时间:">
+                <myTooltip :content="item.eventDate" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'eventDate'})" class="noWrap"></div>
+                </myTooltip>
+              </el-form-item>
+              <el-form-item label="描述:">
+                <myTooltip :content="item.description" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'description'})" class="noWrap"></div>
+                </myTooltip>
+              </el-form-item>
+              <el-form-item label="创建人:">
+                <myTooltip :content="item.createName" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'createName'})" class="noWrap"></div>
+                </myTooltip>
+              </el-form-item>
+              <el-form-item label="创建时间:">
+                <myTooltip :content="item.createTime" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'createTime'})" class="noWrap"></div>
+                </myTooltip>
               </el-form-item>
-              <el-form-item label="时间:">{{ item.eventDate || '--' }}</el-form-item>
-              <el-form-item label="描述:">{{ item.description || '--'}}</el-form-item>
-              <el-form-item label="创建人:">{{ item.createName || '--'}}</el-form-item>
-              <el-form-item label="创建时间:">{{ item.createTime || '--'}}</el-form-item>
             </el-form>
           </div>
           <div slot="foot">

+ 3 - 3
src/views/home/components/echarts/index.vue

@@ -1,13 +1,13 @@
 <template> 
   <div class="home_echarts" v-if="show">
-    <div class="left">
+    <div class="left" id='step3'>
       <report-echart></report-echart>
     </div>
     <div class="right">
-        <div class="top">
+        <div class="top" id='step4'>
           <task-echart></task-echart>
         </div>
-        <div class="bottom">
+        <div class="bottom" id='step5'>
           <event-echart></event-echart>
         </div>
     </div>

+ 3 - 3
src/views/layout/components/UserBar.vue

@@ -20,7 +20,7 @@
       </div>
       <template slot="dropdown">
         <el-dropdown-menu>
-          <el-dropdown-item>
+          <!-- <el-dropdown-item>
             <el-dropdown @command="handleCommand" trigger="hover" placement="right-start" style="width:100%">
               <span class="el-dropdown-link" >  语言 </span>
               <el-dropdown-menu  class="children_item">
@@ -28,10 +28,10 @@
                 <el-dropdown-item command="en"> 英文 </el-dropdown-item>
               </el-dropdown-menu>
             </el-dropdown>
-          </el-dropdown-item>
+          </el-dropdown-item> -->
           <el-dropdown-item>
             <el-dropdown @command="handleCommand1" trigger="hover" placement="right-start">
-              <span class="el-dropdown-link">  主题 </span>
+              <p class="el-dropdown-link" style="width:100%">  主题 </p>
               <el-dropdown-menu  class="children_item">
                 <el-dropdown-item command="#6768ab"> 深紫色 </el-dropdown-item>
                 <el-dropdown-item command="#316192"> 深蓝色 </el-dropdown-item>

+ 180 - 2
src/views/layout/components/guide.js

@@ -55,12 +55,190 @@ const steps = {
         {
             element: "#step3", // 需要引导展示的iD
             popover: {
-                title: "列表展示", //展示模块标题
-                description: "展示一些重要信息。", // 展示模块类容
+                title: "报告统计", //展示模块标题
+                description: "统计各种类型报告的数量。", // 展示模块类容
                 side: "right" // 模块的位置 可以定位 看自己了
             } 
         },
+        {
+            element: "#step4", // 需要引导展示的iD
+            popover: {
+                title: "任务统计", //展示模块标题
+                description: "统计自己完成与未完成的任务数量。", // 展示模块类容
+                side: "right" // 模块的位置 可以定位 看自己了
+            } 
+        },
+        {
+            element: "#step5", // 需要引导展示的iD
+            popover: {
+                title: "事件统计", //展示模块标题
+                description: "统计八大应用场景下事件的数量。", // 展示模块类容
+                side: "right" // 模块的位置 可以定位 看自己了
+            } 
+        },
+    ],
+    //场景可视化
+    'visual':[],
+    //专利数据库首页
+    'project':[
+        {
+            element: "#step1", 
+            popover: {
+                title: "检索专利数据库",
+                description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step2", 
+            popover: {
+                title: "分组",
+                description: "选择需要分组的字段进行分组查看",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step3", 
+            popover: {
+                title: "视图",
+                description: "有两种查看专利数据库类别的视图方式可以查看",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step4", 
+            popover: {
+                title: "操作按钮",
+                description: "",
+                side: "right" 
+            }  
+        },
+    ],
+    //产品首页
+    'product':[
+        {
+            element: "#step1", 
+            popover: {
+                title: "检索",
+                description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step2", 
+            popover: {
+                title: "新增类别",
+                description: "点击按钮会弹出弹窗添加需要添加的产品类别",
+                side: "right" 
+            }  
+        },
+    ],
+    //事件首页
+    'event':[
+        {
+            element: "#step1", 
+            popover: {
+                title: "检索",
+                description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step2", 
+            popover: {
+                title: "分组",
+                description: "选择需要分组的字段进行分组查看",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step3", 
+            popover: {
+                title: "视图",
+                description: "有三种查看事件的视图方式可以查看",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step4", 
+            popover: {
+                title: "操作按钮",
+                description: "",
+                side: "right" 
+            }  
+        },
     ],
+    //报告首页
+    'report':[
+        {
+            element: "#step1", 
+            popover: {
+                title: "检索",
+                description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step2", 
+            popover: {
+                title: "分组",
+                description: "选择需要分组的字段进行分组查看",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step3", 
+            popover: {
+                title: "视图",
+                description: "有三种查看报告的视图方式可以查看",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step4", 
+            popover: {
+                title: "操作按钮",
+                description: "",
+                side: "right" 
+            }  
+        },
+    ],
+    //专利挖掘首页
+    'patentMining':[
+        {
+            element: "#step1", 
+            popover: {
+                title: "检索",
+                description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step2", 
+            popover: {
+                title: "分组",
+                description: "选择需要分组的字段进行分组查看",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step3", 
+            popover: {
+                title: "视图",
+                description: "有三种查看专利挖掘项目的视图方式可以查看",
+                side: "right" 
+            }  
+        },
+        {
+            element: "#step4", 
+            popover: {
+                title: "操作按钮",
+                description: "",
+                side: "right" 
+            }  
+        },
+    ],
+    
 }
 /**
  * driver.js v1.3.0 新手指引工具

+ 96 - 0
src/views/patentMining/components/view/card.vue

@@ -0,0 +1,96 @@
+<template>
+    <div>
+      <el-row :gutter="12">
+        <el-col :span="6" v-for="(item, itemIndex) in tableData" :key="itemIndex" style="padding-bottom:10px">
+          <myCard shadow="always">
+            <div slot="head">
+              <div style="font-size:18px">
+                <!-- <span># {{ (itemIndex + 1) + ((queryParams.current - 1) * queryParams.size)}}</span> -->
+                <span>{{ item.name }}</span>
+              </div>
+            </div>
+            <div>
+              <el-form label-position="left" label-width="140px">
+                
+                <el-form-item label="研发项目名称:"> 
+                    <myTooltip :content="item.rdName" >
+                        <div v-html="$commonJS.getColumnData(item, {type:'String',value:'rdName'})" class="noWrap"></div>
+                    </myTooltip>
+                </el-form-item>
+                <el-form-item label="技术方向:">
+                    <myTooltip :content="item.technicalDirection" >
+                        <div v-html="$commonJS.getColumnData(item, {type:'String',value:'technicalDirection'})" class="noWrap"></div>
+                    </myTooltip>
+                </el-form-item>
+                <el-form-item label="技术关键词:">
+                  <myTooltip :content="$commonJS.getColumnData(item, {type:'String',value:'technicalKeyword'})">
+                    <div class="noWrap" v-html="$commonJS.getColumnData(item, {type:'String',value:'technicalKeyword'})"></div>
+                  </myTooltip>
+                </el-form-item>
+                <el-form-item label="委托方:">
+                  <myTooltip :content="item.entrustName" >
+                    <div v-html="$commonJS.getColumnData(item, {type:'String',value:'entrustName'})" class="noWrap"></div>
+                  </myTooltip>
+                </el-form-item>
+                <el-form-item label="相关事件:">
+                  <myTooltip :content="item.eventNames" >
+                    <div v-html="$commonJS.getColumnData(item, {type:'Array',value:'eventNames'})" class="noWrap"></div>
+                  </myTooltip>
+                </el-form-item>
+                <el-form-item label="负责人:">
+                  <myTooltip :content="item.headName" >
+                    <div v-html="$commonJS.getColumnData(item, {type:'String',value:'headName'})" class="noWrap"></div>
+                  </myTooltip>
+                </el-form-item>
+                <el-form-item label="状态:">
+                  <myTooltip :content="item.stateName" >
+                    <div v-html="$commonJS.getColumnData(item, {type:'String',value:'stateName'})" class="noWrap"></div>
+                  </myTooltip>
+                </el-form-item>
+                <el-form-item label="创建人:">
+                  <myTooltip :content="item.createName" >
+                    <div v-html="$commonJS.getColumnData(item, {type:'String',value:'createName'})" class="noWrap"></div>
+                  </myTooltip>
+                </el-form-item>
+                <el-form-item label="创建时间:">
+                  <myTooltip :content="item.createTime" >
+                    <div v-html="$commonJS.getColumnData(item, {type:'String',value:'createTime'})" class="noWrap"></div>
+                  </myTooltip>
+                </el-form-item>
+              </el-form>
+            </div>
+            <div slot="foot">
+              <div class="btn">
+                <i class="el-icon-edit" @click="handleCommand('e', item)"></i>
+                <i class="el-icon-delete" @click="handleCommand('1', item)"></i>
+              </div>
+            </div>
+          </myCard>
+        </el-col>
+      </el-row>
+    </div>
+</template>
+    
+<script>
+  import mixins from '../mixins';
+  export default {
+    components: {},
+    props: {},
+    mixins: [mixins],
+    data() {
+      return {
+      };
+    },
+    watch: {},
+    computed: {},
+    created() { },
+    mounted() { },
+    methods: {},
+  };
+  </script>
+  <style lang="scss">
+
+  </style>
+  <style lang="scss" scoped>
+
+  </style>

+ 6 - 4
src/views/patentMining/components/viewIndex.vue

@@ -2,12 +2,12 @@
   <div class="patentMiningIndex">
     <el-container>
       <el-header>
-        <div>
+        <div id="step1">
           <mySearch style="width:500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption"
             :disabled="!$permission('/workspace/project/check')"></mySearch>
         </div>
         <div style="display:flex;margin-right:10px">
-          <div>
+          <div id="step2">
             <span>分组查询:</span>
             <el-select v-model="group" :disabled="!$permission('/workspace/project/check')" clearable size="small"
               @change="onChange" style="width:200px">
@@ -15,13 +15,13 @@
               </el-option>
             </el-select>
           </div>
-          <el-button-group class="margin-left_10" v-if="[2].indexOf(isOperate) == -1">
+          <el-button-group id="step3" class="margin-left_10" v-if="[2].indexOf(isOperate) == -1">
             <el-button :type="viewTypeBtn === 'commonTable' ? 'primary' : ''" @click="onChange2('commonTable')"
               size="small">列表</el-button>
             <el-button :type="viewTypeBtn === 'commonCard' ? 'primary' : ''" @click="onChange2('commonCard')"
               size="small">卡片</el-button>
           </el-button-group>
-          <el-dropdown trigger="click" split-button type="primary" size="small" @command="handleCommand($event)">
+          <el-dropdown id="step4" trigger="click" split-button type="primary" size="small" @command="handleCommand($event)">
             <span @click="handleAdd">创建项目</span>
             <el-dropdown-menu slot="dropdown" class="text-align_center">
               <el-dropdown-item command="0">显示栏位管理</el-dropdown-item>
@@ -50,6 +50,7 @@
   
 <script>
 import commonTable from './view/commonTable.vue';
+import commonCard from './view/card.vue';
 import addAndEditProject from './dialog/addAndEditProject.vue';
 import fields from '@/views/components/dialog/fields.vue';
 import mergeTable from '../components/view/MergeTable.vue'
@@ -59,6 +60,7 @@ export default {
     addAndEditProject,
     fields,
     mergeTable,
+    commonCard
   },
   props: {
     isOperate: ''

+ 0 - 151
src/views/patentMining/index.vue

@@ -21,154 +21,3 @@ export default {
 </script>
 
 <style lang="scss" scoped></style>
-
-
-
-
-<!-- <template>
-  <div>
-    <el-container>
-      <el-header>
-        <div>
-          <mySearch style="width:500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption"
-            :disabled="!$permission('/workspace/project/check')"></mySearch>
-        </div>
-        <div style="display:flex;margin-right:10px">
-          <el-button-group class="margin-left_10" v-if="[2].indexOf(isOperate) == -1">
-            <el-button :type="viewType === 'commonTable' ? 'primary' : ''" @click="onChange2('commonTable')"
-              size="small">列表</el-button>
-            <el-button :type="viewType === 'commonCard' ? 'primary' : ''" @click="onChange2('commonCard')"
-              size="small">卡片</el-button>
-          </el-button-group>
-          <el-dropdown trigger="click" split-button type="primary" size="small">
-            <span @click="handleAdd">创建项目</span>
-            <el-dropdown-menu slot="dropdown" class="text-align_center">
-            </el-dropdown-menu>
-          </el-dropdown>
-        </div>
-      </el-header>
-      <el-main>
-        <component :is="viewType" v-bind="$attrs" v-on="$listeners" :isOperate="isOperate" :tableData="dataList"
-          :group="group" :queryParams="queryParams" @option="handleOption" @sort="handleSort"></component>
-      </el-main>
-      <el-footer class="pagination">
-        <div>
-          <el-pagination background layout="total, prev, pager, next, jumper" :current-page.sync="queryParams.current"
-            :page-size.sync="queryParams.size" @current-change="handleCurrentChange" :total="total">
-          </el-pagination>
-        </div>
-      </el-footer>
-    </el-container>
-    <addAndEditProject ref="addAndEditProject"></addAndEditProject>
-
-  </div>
-</template>
-  
-<script>
-import commonTable from './components/view/commonTable.vue';
-import addAndEditProject from './components/dialog/addAndEditProject.vue';
-export default {
-  components: {
-    commonTable,
-    addAndEditProject
-  },
-  props: {
-    isOperate: ''
-  },
-  data() {
-    return {
-      //当前组件名称
-      viewType: 'commonTable',
-      //专利挖掘项目数据集合
-      dataList: [
-        {
-          name: 'xxx有限公司',
-          type: '本公司专利数据库',
-          status: '进行中',
-          createPerson: '朱豪',
-          id: 1,
-        }
-      ],
-      //分页
-      queryParams: {
-        size: 10,
-        current: 0,
-      },
-      //分组
-      group: '',
-      //排序
-      sort: [
-        {
-          "orderBy": "createTime",
-          "orderType": 1
-        }
-      ],
-      //总数
-      total: 0,
-      //检索字段
-      searchFiled: [
-        {
-          label: '项目名称',
-          value: 'name',
-          type: 1,
-          placeholder: '请输入项目名称'
-        },
-        {
-          label: '创建人',
-          value: 'createPerson',
-          type: 1,
-          placeholder: '请输入创建人名称'
-        },
-      ],
-      //检索条件
-      searchOption: {}
-    };
-  },
-  watch: {},
-  computed: {},
-  created() { },
-  mounted() { },
-  methods: {
-    //获取检索组件传过来的数据
-    search(val) {
-
-    },
-    //排序
-    handleSort(sort) {
-      this.sort = { ...sort }
-      this.getList()
-    },
-    //操作列
-    handleOption({ option, row }) {
-      switch (option) {
-        case '0'://设置定时任务
-          this.$refs.addAndEditDB.open(row, true)
-          break;
-        case '1'://删除
-          break;
-        case 'e'://编辑
-          this.$refs.addAndEditProject.open(row)
-          break;
-      }
-    },
-    //分页
-    handleCurrentChange(val) {
-      this.queryParams.current = val;
-      this.getList();
-    },
-    //获取专利挖掘项目数据列表
-    getList() {
-
-    },
-    //添加其他企业专利数据库
-    handleAdd() {
-      this.$refs.addAndEditProject.open({})
-    },
-    //切换视图
-    onChange2(val) {
-      this.viewType = val
-    },
-  },
-};
-</script>
-<style lang="scss" scoped></style> -->

+ 2 - 2
src/views/product/components/index.vue

@@ -2,7 +2,7 @@
   <div class="height_100">
     <el-container>
       <el-header>
-        <div>
+        <div id="step1">
           <mySearch style="width: 500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption">
           </mySearch>
         </div>
@@ -14,7 +14,7 @@
               </el-option>
             </el-select>
           </div> -->
-          <div style="margin:0 10px;">
+          <div style="margin:0 10px;" id="step2">
             <el-button type="primary" size="small" @click="handleCommand('0')">新增类别</el-button>
             <!-- <el-dropdown trigger="click" split-button type="primary" size="small" >
               <span @click="handleCommand('0')">新增类别</span>

+ 15 - 31
src/views/project/components/view/card.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="height_100">
       <el-row :gutter="24">
-        <el-col :span="6" v-for="(item, index) in tableData" class="c">
+        <el-col :span="6" v-for="(item, index) in tableData" style="padding-bottom:10px">
           <myCard shadow="never">
             <div slot="head" class="clearfix">
               <span># {{ (index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
@@ -10,10 +10,6 @@
                   <i class="el-icon-more el-icon--right"></i>
                 </span>
                 <el-dropdown-menu slot="dropdown" class="text-align_center">
-                  <el-dropdown-item command="e" >
-                    <span v-if="$permission('/workspace/project/modify') && ($r(item.id,[2])||userinfo.id == item.createBy)">编辑</span>
-                    <span v-else>查看</span>
-                  </el-dropdown-item>
                   <el-dropdown-item command="0" :disabled="!($permission('/workspace/project/patent_import')&& $r(item.id,[1,2]))">
                     <el-dropdown @command="handleCommand($event, item)" placement="right-start">
                       <span class="el-dropdown-link"> 专利导入 </span>
@@ -30,7 +26,7 @@
                 <el-dropdown-item command="7" v-if="$permission('/workspace/event')">事 件</el-dropdown-item>
                 <el-dropdown-item command="8" :disabled="!$permission('/workspace/project/other_accessories')">其它附件</el-dropdown-item>
                 <el-dropdown-item command="9" :disabled="!($permission('/workspace/project/project_share')&&$r(item.id,[2]))">项目分享</el-dropdown-item>
-                <el-dropdown-item command="10" divided class="color-red" :disabled="!($permission('/workspace/project/modify') && ($r(item.id,[2])||userinfo.id == item.createBy))">删除</el-dropdown-item>
+                
                 </el-dropdown-menu>
               </el-dropdown>
             </div>
@@ -38,32 +34,31 @@
               <el-form-item label="名称">
                 <div>
                   <el-link :disabled="!$permission('/workspace/folder')" :class="$permission('/workspace/folder')?'':'jinzhi'" type="primary" @click.native="handleClick(item)" :title="item.name">
-                    <span v-if="item.innerFile">{{ item.innerFile }} - </span>
+                    <span v-if="item.volumeNumber">{{ item.volumeNumber }} - </span>
                     <span>{{ item.name }}</span>
                   </el-link>
                 </div>
               </el-form-item>
               <el-form-item label="委托方">
-                <div :title="item.clientName">{{ item.clientName }}</div>
+                <myTooltip :content="item.entrustName" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'entrustName'})" class="noWrap"></div>
+                </myTooltip>
               </el-form-item>
               <el-form-item label="应用场景">
-                <div :title="item.scenarioName">
-                  <span v-for="name in item.scenarioName">{{ name }} <br> </span>
-                </div>
+                <myTooltip :content="$commonJS.getColumnData(item, {type:'Array',value:'scenarioNames'})">
+                  <div class="noWrap" v-html="$commonJS.getColumnData(item, {type:'Array',value:'scenarioNames'})"></div>
+                </myTooltip>
               </el-form-item>
               <el-form-item label="调查类型">
-                <div :title="item.typeName">
-                  <span v-for="name in item.typeName">{{ name }} <br> </span>
-                </div>
-              </el-form-item>
-              <el-form-item label="技术主题" style="border-bottom: 0">
-                <div  :title="item.technicalTheme">{{ item.technicalTheme }}</div>
+                <myTooltip :content="$commonJS.getColumnData(item, {type:'Array',value:'matterNames'})">
+                  <div class="noWrap" v-html="$commonJS.getColumnData(item, {type:'Array',value:'matterNames'})"></div>
+                </myTooltip>
               </el-form-item>
             </el-form>
             <div slot="foot">
               <div class="btn">
-                <i class="el-icon-edit" @click="handleEdit(item)"></i>
-                <i class="el-icon-delete" @click="handleCommand('3', item)"></i>
+                <i class="el-icon-edit" @click="handleCommand('e', item)"></i>
+                <i class="el-icon-delete" @click="handleCommand('10', item)"></i>
               </div>
             </div>
           </myCard>
@@ -94,17 +89,6 @@
   </script>
   
   <style lang="scss">
-     .jinzhi{
-      cursor: not-allowed;
-      pointer-events:none;
-    }
-    .btn{
-      margin: 0;
-      i{
-        color: var(--color2);
-        font-size: 16px;
-        margin-right:16px
-      }
-    }
+   
   </style>
   

+ 4 - 4
src/views/project/index.vue

@@ -13,12 +13,12 @@
       <div class="height_100">
         <el-container>
           <el-header>
-            <div>
+            <div id="step1">
               <mySearch style="width:500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption"
                 :disabled="!$permission('/workspace/project/check')"></mySearch>
             </div>
             <div style="display:flex;margin-right:10px" v-if="[2].indexOf(isOperate) == -1">
-              <div>
+              <div id="step2">
                 <span>分组查询:</span>
                 <el-select v-model="group" :disabled="!$permission('/workspace/project/check')" clearable size="small"
                   @change="onChange" style="width:200px">
@@ -26,13 +26,13 @@
                   </el-option>
                 </el-select>
               </div>
-              <el-button-group class="margin-left_10">
+              <el-button-group class="margin-left_10" id="step3">
                 <el-button :type="queryShowType === '0' ? 'primary' : ''" @click="onChange2('0')"
                   size="small">列表</el-button>
                 <el-button :type="queryShowType === '1' ? 'primary' : ''" @click="onChange2('1')"
                   size="small">卡片</el-button>
               </el-button-group>
-              <el-dropdown trigger="click" split-button type="primary" size="small">
+              <el-dropdown id="step4" trigger="click" split-button type="primary" size="small">
                 <span @click="handleAdd" v-disabled="!$permission('/workspace/project/add')">新增专利数据库</span>
                 <el-dropdown-menu slot="dropdown" class="text-align_center">
                   <el-dropdown-item @click.native="handleExport">导出列表</el-dropdown-item>

+ 19 - 16
src/views/report/components/index.vue

@@ -2,36 +2,39 @@
   <div class="height_100">
     <el-container>
       <el-header>
-        <div>
+        <div id="step1">
           <mySearch style="width:500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption">
           </mySearch>
         </div>
         <div style="display:flex;">
-          <div v-if="[2].indexOf(isOperate) == -1" class="margin-right_10">
+          <div id="step2" v-if="[2].indexOf(isOperate) == -1" class="margin-right_10">
             <span>分组查询:</span>
             <el-select v-model="groupingValue" size="small" @change="changeGrouping" clearable style="width: 120px">
               <el-option v-for="item in groupingOption" :key="item.value" :label="item.name" :value="item.value">
               </el-option>
             </el-select>
           </div>
-          <el-button-group style="display:flex;justify-content:flex-start" v-if="[2].indexOf(isOperate) == -1">
+          <el-button-group id="step3" style="display:flex;justify-content:flex-start" v-if="[2].indexOf(isOperate) == -1">
             <el-button v-for="item in viewTypes" :key="item.component" size="small"
               :type="viewType == item.component ? 'primary' : ''" @click="onChange(item.component)">{{ item.name
               }}</el-button>
           </el-button-group>
-          <el-dropdown size="small" style="margin-right:20px" v-if="$permission('/pcs/report/add')">
-            <el-button type="primary" size="small">
-              创建报告<i class="el-icon-arrow-down el-icon--right"></i>
-            </el-button>
-            <el-dropdown-menu slot="dropdown" style="margin-top:0px" v-if="dictMessage.REPORT_TYPE">
-              <!-- 遍历按钮 -->
-              <el-dropdown-item
-                v-for="item in dictMessage.REPORT_TYPE.filter(item => !['6'].includes(item.dictChildValue))"
-                :key="item.dictChildLabel" @click.native="handleAnalyse(item.dictChildValue)"
-                v-if="$permission('/pcs/report/add/' + item.permission)">{{ item.dictChildLabel }}</el-dropdown-item>
-            </el-dropdown-menu>
-          </el-dropdown>
-          <el-button type="primary" size="small" @click="showField">显示栏位管理</el-button>
+          <div id="step4" class="margin-left_10">
+            <el-dropdown size="small"  v-if="$permission('/pcs/report/add')">
+              <el-button type="primary" size="small">
+                创建报告<i class="el-icon-arrow-down el-icon--right"></i>
+              </el-button>
+              <el-dropdown-menu slot="dropdown" style="margin-top:0px" v-if="dictMessage.REPORT_TYPE">
+                <!-- 遍历按钮 -->
+                <el-dropdown-item
+                  v-for="item in dictMessage.REPORT_TYPE.filter(item => !['6'].includes(item.dictChildValue))"
+                  :key="item.dictChildLabel" @click.native="handleAnalyse(item.dictChildValue)"
+                  v-if="$permission('/pcs/report/add/' + item.permission)">{{ item.dictChildLabel }}</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+            <el-button type="primary" class="margin-left_10" size="small" @click="showField">显示栏位管理</el-button>
+          </div>
+          
         </div>
       </el-header>
       <el-main id="patent-list-container" class="main" v-loading="loading">

+ 26 - 12
src/views/report/components/view/card.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="eventCard">
     <el-row :gutter="12">
-      <el-col :span="6" v-for="(item, itemIndex) in tableData" :key="itemIndex" style="height:420px">
+      <el-col :span="6" v-for="(item, itemIndex) in tableData" :key="itemIndex" style="padding-bottom:10px">
         <myCard shadow="always">
           <div slot="head">
             <div style="font-size:18px">
@@ -31,18 +31,32 @@
             </div>
           </div>
           <div>
-            <el-form label-position="left" label-width="110px">
-              <el-form-item label="报告数量:"> {{ item.reportProjectNum || 0  }} </el-form-item>
-              <el-form-item label="专利数据库数量:">{{ item.patentProjectNum || 0 }}</el-form-item>
-              <el-form-item label="应用场景:">
-                <el-tooltip class="item" effect="light" placement="top" :content="item.scenarioName">
-                  <div>{{ item.scenarioName }}</div>
-                </el-tooltip>
+            <el-form label-position="left" label-width="130px">
+              <el-form-item label="标的专利/产品:">
+                <myTooltip :content="item.signPatentNo" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'signPatentNo'})" class="noWrap"></div>
+                </myTooltip>
+              </el-form-item>
+              <el-form-item label="相关事件:">
+                <myTooltip :content="$commonJS.getColumnData(item, {type:'Array',value:'eventNames'})">
+                  <div class="noWrap" v-html="$commonJS.getColumnData(item, {type:'Array',value:'eventNames'})"></div>
+                </myTooltip>
+              </el-form-item>
+              <el-form-item label="委托方:">
+                <myTooltip :content="item.entrustName" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'entrustName'})" class="noWrap"></div>
+                </myTooltip>
+              </el-form-item>
+              <el-form-item label="报告类型:">
+                <myTooltip :content="item.reportTypeName" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'reportTypeName'})" class="noWrap"></div>
+                </myTooltip>
+              </el-form-item>
+              <el-form-item label="报告状态:">
+                <myTooltip :content="item.statusName" >
+                  <div v-html="$commonJS.getColumnData(item, {type:'String',value:'statusName'})" class="noWrap"></div>
+                </myTooltip>
               </el-form-item>
-              <el-form-item label="时间:">{{ item.eventDate || '--' }}</el-form-item>
-              <el-form-item label="描述:">{{ item.description || '--'}}</el-form-item>
-              <el-form-item label="创建人:">{{ item.createName || '--'}}</el-form-item>
-              <el-form-item label="创建时间:">{{ item.createTime || '--'}}</el-form-item>
             </el-form>
           </div>
           <div slot="foot">