Переглянути джерело

分享,标注库,高亮

zhuhao 1 рік тому
батько
коміт
2ad8f3e12d

+ 24 - 0
src/api/newApi/common.js

@@ -224,6 +224,30 @@ export default {
   batchAddCustomField(data) {
     return axios.post("/xiaoshi/customField/batchAddCustomField", data);
   },
+  /**
+  * 专利数据库项目分享新增
+  * @param {*} data 
+  * @returns 
+  */
+  addProjectShare(data) {
+    return axios.post("/xiaoshi/patentShare/addProjectShare", data);
+  },
+  /**
+  * 专利数据库项目分享查询
+  * @param {*} data 
+  * @returns 
+  */
+  queryProjectShare(data) {
+    return axios.post("/xiaoshi/patentShare/queryProjectShare", data);
+  },
+  /**
+  * 专利数据库项目分享删除
+  * @param {*} data 
+  * @returns 
+  */
+  removeProjectShare(data) {
+    return axios.post("/xiaoshi/patentShare/removeProjectShare", data);
+  },
   
 
 

+ 8 - 0
src/api/newApi/patent.js

@@ -287,4 +287,12 @@ export default {
   removeScratchWords(data) {
     return axios.post("/xiaoshi/scratchWords/removeScratchWords", data);
   },
+  /**
+   * 批注分组
+   * @param {*} data 
+   * @returns 
+   */
+  queryScratchWordsGroup(data) {
+    return axios.post("/xiaoshi/scratchWords/queryScratchWordsGroup", data);
+  },
 }

+ 4 - 2
src/views/components/dialog/menuDialog/annotation.vue

@@ -56,7 +56,7 @@
       </div>
       <div style="user-select: none;">
         <p style="margin-bottom:5px">标注:</p>
-        <el-input v-model="mark.markOteText" type="textarea" class="my-input-preview"></el-input>
+        <el-input v-model="mark.markNoteText" type="textarea" class="my-input-preview"></el-input>
       </div>
       <div style="display:flex;justify-content: flex-end;align-items:center;">
         <el-button type="text" @click="cancel">取消</el-button>
@@ -185,6 +185,7 @@ export default {
       var S = date.getSeconds() > 9 ? date.getSeconds().toString() : "0" + date.getSeconds()
       return Y + '-' + m + '-' + d + ' ' + H + ':' + M + ':' + S
     },
+    // 处理数据
     getData() {
       let mark = this.contextMenu.mark
       this.mark = {
@@ -193,7 +194,7 @@ export default {
         patentNo: mark.patentNo,//专利号
         isPublic: mark.id ? mark.isPublic : mark.permissionType,//是否所有人可见
         markColor: mark.markColor,//标注颜色
-        markOteText: mark.markOteText,//标注备注
+        markNoteText: mark.markNoteText,//标注备注
         markType: mark.markType,//标注方式(波浪线)
         markSelectField: mark.id ? mark.markSelectField : mark.column,//标注栏位
         markSelectText: mark.id ? mark.markSelectText : mark.text,//标注文本
@@ -201,6 +202,7 @@ export default {
         publicScope: mark.id ? mark.publicScope : 1,//标注的权限范围(本专利可见、本专题库可见、本报告可见都是传1,在所有地方可见是传0)
         createFrom: mark.createFrom,//是在哪里进行的标注
         projectId: mark.projectId,//项目id
+        patentTitle:mark.patentTitle,//当前专利标题
       }
     },
     // 打开弹窗

+ 109 - 0
src/views/components/drawer/ClientTable.vue

@@ -0,0 +1,109 @@
+<template>
+  <div class="admin-department">
+    <el-form :inline="true">
+      <el-form-item label="人员名称">
+        <el-input v-model="queryParams.name" size="small" placeholder="请输入"></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" size="small" @click="getList">查询</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table :data="tableData" v-loading="loading" style="width: 100%" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column prop="name" label="人员名称" align="center" show-overflow-tooltip></el-table-column>
+      <el-table-column label="Email" prop="email" align="center" show-overflow-tooltip>
+      </el-table-column>
+      <el-table-column prop="mobile" label="手机号码" align="center" show-overflow-tooltip></el-table-column>
+      <el-table-column prop="remark" label="描述" align="center" show-overflow-tooltip></el-table-column>
+    </el-table>
+    <div class="pagination">
+      <el-pagination :current-page.sync="queryParams.current" :page-size="queryParams.size" :total="total"
+        @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper" background></el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "ClientTable",
+  props: ["tenantId", "projectId"],
+  data() {
+    return {
+      // 表格的loading
+      loading: false,
+      // 总条数
+      total: 0,
+      // 表格数据源
+      tableData: [],
+      multipleSelection: [],
+      id: [],
+      users: [],
+      // 分页信息以及
+      queryParams: {
+        tenantId: this.tenantId,
+        tenantName: "",
+        size: 10,
+        current: 1,
+      },
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+
+  computed: {
+
+  },
+
+  methods: {
+    // 获取数据
+    getList() {
+      this.loading = true;
+      let params = {
+        projectId: this.projectId,
+        ...this.queryParams,
+      }
+      this.$api
+        .getPersonList(params)
+        .then((response) => {
+          this.tableData = response.data;
+          this.total = response.pageColumn.total;
+          this.loading = false;
+        })
+        .catch((error) => {
+          this.loading = false;
+        });
+    },
+    // 当选择项发生变化时会触发
+    handleSelectionChange(val) {
+      this.id = [];
+      this.users = []
+      this.multipleSelection = val;
+      for (let i = 0; i < this.multipleSelection.length; i++) {
+        this.id.push(this.multipleSelection[i].id)
+        this.users.push({ userId: this.multipleSelection[i].id, tenantId: this.multipleSelection[i].tenantId })
+      }
+      // console.log(this.users);
+      this.$emit('getId', this.id, this.users)
+    },
+    // 分页信息
+    handleCurrentChange(val) {
+      this.queryParams.current = val;
+      this.getList();
+    },
+
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.admin-department {
+  border: 1px solid #eee;
+  padding: 20px;
+  // border-radius: 8px;
+  .pagination{
+    margin-top: 10px;
+    text-align: right;
+  }
+}
+</style>

+ 212 - 0
src/views/components/drawer/Share.vue

@@ -0,0 +1,212 @@
+<template>
+  <div>
+    <el-drawer class="custom-drawer-form" title="项目分享" size="1000px" :visible.sync="drawer" direction="rtl"
+      :before-close="close" destroy-on-close>
+      <el-container class="project-share">
+        <el-header>
+          <el-form :inline="true" class="select-user-header-form">
+            <el-form-item label="客户名称">
+              <el-input v-model="queryParams.name" size="small" placeholder="请输入客户名称"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" size="small" @click="getList">查询</el-button>
+            </el-form-item>
+          </el-form>
+        </el-header>
+        <el-main class="project-share-main">
+          <el-table v-loading="loading" :data="tableData" :show-header="headerShow" @expand-change="expandChange" style="width: 100%">
+            <el-table-column type="expand">
+              <template slot-scope="scope">
+                <ClientTable @getId="getId" :tenantId="scope.row.id" :projectId="projectId"></ClientTable>
+              </template>
+            </el-table-column>
+            <el-table-column prop="name" label="客户名称" align="center" show-overflow-tooltip></el-table-column>
+          </el-table>
+          <div class="pagination">
+            <el-pagination :current-page.sync="queryParams.current" :page-size="queryParams.size" :total="total"
+              @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper" background></el-pagination>
+          </div>
+        </el-main>
+        <el-footer class="footer-common">
+          <el-button @click="close">关 闭</el-button>
+          <el-button type="primary" @click="submit" :loading="btnLoading">确 定</el-button>
+        </el-footer>
+      </el-container>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import ClientTable from './ClientTable.vue'
+export default {
+  components: {
+    ClientTable
+  },
+  data() {
+    return {
+      // 控制抽屉弹窗的开关
+      drawer: false,
+      // 表格的loading
+      loading: false,
+      // 抽屉弹窗确认按钮的loading
+      btnLoading: false,
+      // 总条数
+      total: 0,
+      // 是否显示表格表头
+      headerShow: true,
+      // 数据源
+      tableData: [],
+      // 暂无
+      users: [],
+      // 分页信息以及检索信息
+      queryParams: {
+        id: 0,
+        name: "",
+        size: 10,
+        current: 1,
+      },
+      // 项目id
+      projectId: 0,
+      // 选择的用户
+      userIds: [],
+      // ???
+      typeObj: {
+        1: "分类人",
+        2: "管理员",
+        3: "查阅人",
+        4: "查阅人(图表)",
+      },
+      genderObj: {
+        0: "女",
+        1: "男",
+      },
+
+    };
+  },
+  computed: {},
+  mounted() { },
+  methods: {
+    expandChange(val) {
+      // console.log(val);
+    },
+    // 查询分享
+    // queryProjectShare() {//
+    //   let params = {
+    //     projectId: this.projectId,
+    //     personName:'',
+    //     ...this.queryParams,//分页信息以及检索信息
+    //   }
+    //   this.$api
+    //     .queryProjectShare(params)
+    //     .then((response) => {
+    //       this.userIds=response.data.data.map(item => {
+    //         return item.personId
+    //       })
+    //       // this.total = response.data.total;
+    //       this.loading = false;
+    //     })
+    //     .catch((error) => {
+    //       this.loading = false;
+    //     });
+    // },
+    // 子组件传递的消息
+    getId(id, users) {
+      this.userIds = id;
+      this.users = users
+    },
+    // 关闭抽屉弹窗
+    close() {
+      this.userIds = [];
+      this.drawer = false;
+      this.$emit("close");
+    },
+    // 打开抽屉弹窗
+    open(projectId) {
+      this.projectId = projectId;
+      this.drawer = true;
+      this.getList();
+    },
+    // ???
+    onChange({ id }) {
+      const index = this.userIds.indexOf(id);
+      if (index === -1) {
+        this.userIds.push(id);
+      } else {
+        this.userIds.splice(index, 1);
+      }
+    },
+    // 获取表格数据
+    getList() {
+      this.loading = true;
+      let params = {
+        projectId: this.projectId,
+        ...this.queryParams,//分页信息以及检索信息
+      }
+      this.$api
+        .getAdminClientList(params)
+        .then((response) => {
+          this.tableData = response.data.records;
+          this.total = response.data.total;
+          this.loading = false;
+        })
+        .catch((error) => {
+          this.loading = false;
+        });
+    },
+    // 分页
+    handleCurrentChange(val) {
+      this.queryParams.current = val;
+      this.getList();
+    },
+    // 确认按钮事件
+    submit() {
+      if (this.userIds.length === 0) {
+        this.$message.error("请选择用户");
+        return false;
+      }
+      this.btnLoading = true;
+      let params = {
+        projectId: this.projectId,
+        personIds: this.userIds,
+      }
+      this.$api
+        .addProjectShare(params)
+        .then((response) => {
+          this.btnLoading = false;
+          this.$message.success("分享成功");
+          this.close();
+        })
+        .catch((error) => {
+          this.btnLoading = false;
+        });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.select-user-header-form {
+  padding-left: 20px;
+}
+
+.project-share {
+  .pagination {
+    text-align: right;
+    margin: 20px 0;
+  }
+
+  .el-checkbox__label {
+    display: none !important;
+  }
+
+  .project-share-header-form {
+    margin-left: 20px;
+  }
+
+  .project-share-main {
+    background: #fff;
+    padding: 5px 20px;
+    margin-top: 20px;
+  }
+}
+</style>

+ 13 - 13
src/views/components/indicia/components/card.vue

@@ -15,14 +15,14 @@
               <span style="font-weight: 700;">标注:</span>
               <el-tooltip placement="top">
                 <template slot="content">
-                  <div style="max-width:500px;">{{ item.remark }}</div>
+                  <div style="max-width:500px;">{{ item.markNoteText }}</div>
                 </template>
-                <span class="textPRight">{{ item.remark }}</span>
+                <span class="textPRight">{{ item.markNoteText }}</span>
               </el-tooltip>
             </div>
             <div class="text context-marginTop">
               <span style="font-weight: 700;">标注人/时间:</span>
-              <span>{{ item.name }}</span> <span>{{ item.date }}</span>
+              <span>{{ item.createName }}</span> <span>{{ item.markTime }}</span>
             </div>
             <div style="display: flex;align-items: center;">
               <!-- 文字前方颜色方块 -->
@@ -32,24 +32,24 @@
               <p style="font-weight: 700;min-width: 75px;">标注位置:</p>
               <el-tooltip placement="top">
                 <template slot="content">
-                  <div style="max-width:500px;">{{ '[' + item.scratchField + ']' + item.text }}</div>
+                  <div style="max-width:500px;">{{ '[' + item.markSelectField + ']' + item.markSelectText }}</div>
                 </template>
                 <!-- 下划线 -->
-                <p v-if="item.scratchType == 0" :style="{ 'border-bottom': `2px solid ${item.color}` }"
-                  class="textPRight textP">{{ '[' + item.scratchField + ']' + item.text }}</p>
+                <p v-if="item.markType == 0" :style="{ 'border-bottom': `2px solid ${item.markColor}` }"
+                  class="textPRight textP">{{ '[' + item.markSelectField + ']' + item.markSelectText }}</p>
                 <!-- 高亮 -->
-                <p v-if="item.scratchType == 1"  :style="{ 'background': item.color }" style="color: aliceblue;"
-                  class="textPRight textP">{{ '[' + item.scratchField + ']' + item.text }}</p>
+                <p v-if="item.markType == 1"  :style="{ 'background': item.markColor }" style="color: aliceblue;"
+                  class="textPRight textP">{{ '[' + item.markSelectField + ']' + item.markSelectText }}</p>
                 <!-- 波浪线 -->
-                <p v-if="item.scratchType == 2"
-                  :style="{ 'text-decoration-line': 'underline', 'text-decoration-style': 'wavy', 'text-decoration-color': item.color }"
-                  class="textPRight textP">{{ '[' + item.scratchField + ']' + item.text }}</p>
+                <p v-if="item.markType == 2"
+                  :style="{ 'text-decoration-line': 'underline', 'text-decoration-style': 'wavy', 'text-decoration-color': item.markColor }"
+                  class="textPRight textP">{{ '[' + item.markSelectField + ']' + item.markSelectText }}</p>
               </el-tooltip>
             </div>    
             
             <div class="text">
               <span style="font-weight: 700;">专利号:</span>
-              <el-link @click.native="handleLink(item)">
+              <el-link @click.native="$commonJS.checkPatentDetails(item.patentNo)">
                 <span style="color: #409EFF;">{{ item.patentNo }}</span>
               </el-link>
             </div>
@@ -103,7 +103,7 @@ export default {
     // 跳转专利详情
     handleLink(row, index) {
       var router = this.$router.resolve({
-        path: 'patentDetails',
+        path: '/patentDetails'+':',
           query:{
             patentId:row.patentId,
             patentNo:row.patentNo,

+ 4 - 2
src/views/components/indicia/components/collapse.vue

@@ -4,7 +4,8 @@
       <!-- //collapse测试数据 -->
       <template v-if="collapseList.length>0">
         <!-- :key及:name要改成id -->
-        <el-collapse-item  v-for="(item,index) in collapseList" :key="index+1" :title="item[queryParams.grouping]" :name="item[queryParams.grouping]">
+        <!-- <el-collapse-item  v-for="(item,index) in collapseList" :key="index+1" :title="item[queryParams.groupField]" :name="item[queryParams.groupField]"> -->
+        <el-collapse-item  v-for="(item,index) in collapseList" :key="index+1" :title="`${item.key} (标注数量:${item.count})`" :name="item.key">
           <div :style="{'height':sonHeight-(collapseList.length>1?'150':'100') +'px'}" style="padding: 10px;overflow-y: auto;">
             <indiciaCard :dataArr="dataArr" :queryParams="params" ></indiciaCard>
           </div>
@@ -50,7 +51,7 @@ export default {
         current: this.queryParams.current,
         size:this.queryParams.size
       }
-        let data = val[0][this.queryParams.grouping]
+        let data = val[0].key
         this.activeName=data
       } else {
         this.activeName=''
@@ -62,6 +63,7 @@ export default {
   },
   methods: {
     handleChange(val) {
+      console.log(val);
       if (val) {
         this.$emit('collapseVal',val)
       }

+ 89 - 92
src/views/components/indicia/components/indicia.vue

@@ -3,32 +3,8 @@
     <div style="padding: 20px;">
       <div class="indicia-top-components">
         <div>
-          <el-select v-model="screenValue" size="small" class="indicia-top-select">
-            <el-option v-for="item in screenOptions" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-          <template v-if="screenValue != 'date'">
-            <el-input v-model="screenInputValue" :placeholder="getPlaceholder()" size="small"
-              style="margin-left: 10px;width: 200px;"></el-input>
-          </template>
-          <template v-else>
-              <el-date-picker v-model="screenInputValue" value-format="yyyy-MM-dd" size="small" type="date" :placeholder="getPlaceholder()" style="margin-left: 10px;width: 200px;"></el-date-picker>
-              <!-- <el-date-picker v-model="screenInputValue.end" value-format="yyyy-MM-dd" size="small" type="date" :placeholder="getPlaceholder()" style="margin-left: 10px;width: 200px;"></el-date-picker> -->
-          </template>
-          <el-button size="small" type="primary" @click="screenBtn" class="indicia-top-button">搜 索</el-button>
-          <template v-if="searchOptions.length>0">
-          <el-popover placement="bottom" title="" width="200" trigger="hover" class="margin-left_10">
-                <div v-for="(item, index) in searchOptions" :key="index" class="workspace-content-header-query-box">
-                  <el-tag closable type="success" @close="handleDelete(item,index)" style="margin-bottom: 5px;">
-                    {{ item.label +':'+ item.content}}
-                  </el-tag>
-                </div>
-              <!-- <el-button  style="" >
-                检索条件<i class="el-icon-arrow-down el-icon--right"></i>
-              </el-button> -->
-              <span slot="reference" size="small" type="primary" style="font-size: 14px;"> 检索信息:({{ searchOptions[0].label +':'+searchOptions[0].content }}<i class="el-icon-arrow-down el-icon--right"></i>)</span>
-            </el-popover>
-          </template>
+          <mySearch style="width: 500px" :SearchFields="searchFiled" @search="search" :searchValue="searchOption">
+          </mySearch>
         </div>
         <div>
           <span>分组查询:</span>
@@ -41,15 +17,16 @@
       </div>
 
       <!-- table及collapse组件 -->
-      <div class="indicia-components" :style="{'height': sonHeight + 'px'}">
-        <component :dataArr="tableCollapseList" :collapseList="collapseList" :queryParams="queryParams" :sonHeight="sonHeight"
-          @collapseVal="collapseVal" :is="componentType" :loading="loading" :componentType="componentType">
+      <div class="indicia-components" :style="{ 'height': sonHeight + 'px' }">
+        <component :dataArr="tableCollapseList" :collapseList="collapseList" :queryParams="queryParams"
+          :sonHeight="sonHeight" @collapseVal="collapseVal" :is="componentType" :loading="loading"
+          :componentType="componentType">
         </component>
       </div>
       <!-- collapse分页 -->
       <div style="text-align: center;">
         <el-pagination background layout="total, prev, pager, next, jumper" :current-page.sync="queryParams.current"
-          :page-size.sync="queryParams.size" @current-change="handleCurrentChange" :total="total" >
+          :page-size.sync="queryParams.size" @current-change="handleCurrentChange" :total="total">
         </el-pagination>
       </div>
     </div>
@@ -66,37 +43,39 @@ export default {
     indiciaCollapse,
     indiciaCard,
   },
-  mixins:[importExcel,],
+  mixins: [importExcel,],
   data() {
     return {
       componentType: 'indiciaCard',//切换组件,默认card组件
-      screenOptions: [
+      // 检索条件
+      searchFiled: [
         {
           label: '标注',
-          value: 'remark',
+          value: 'markNoteText',
+          type: 'String',
           placeholder: '请输入标注',
         },
         {
           label: '专利号',
           value: 'patentNo',
+          type: 'String',
           placeholder: '请输入专利号',
         },
-        // {
-        //   label: '标注的位置',
-        //   value: 'address',
-        //   placeholder: '请输入标注的位置'
-        // },
         {
           label: '标注人',
-          value: 'name',
+          value: 'createName',
+          type: 'String',
           placeholder: '请输入标注人',
         },
         {
           label: '标注时间',
-          value: 'date',
+          value: 'markTime',
+          type: '2',
           placeholder: '请选择标注时间',
         },
-      ],//筛选
+      ],
+      //检索条件
+      searchOption: {},
       groupingOption: [
         {
           label: '不分组',
@@ -108,14 +87,14 @@ export default {
         },
         {
           label: '标注人',
-          value: 'name',
+          value: 'createName',
         },
         {
           label: '标注时间',
-          value: 'date',
+          value: 'markTime',
         },
       ],//分组
-      screenValue: 'remark',//筛选的值
+      screenValue: 'markNoteText',//筛选的值
       screenInputValue: '',//筛选输入的值
       groupingValue: 'noGrouping',//分组的值
       queryParams: {
@@ -125,50 +104,67 @@ export default {
       total: 0,
       tableCollapseList: [],//获取的数据
       collapseList: [],//collapse数据
-      sonHeight: document.documentElement.clientHeight -230,//页面高度
+      sonHeight: document.documentElement.clientHeight - 230,//页面高度
       loading: false,
-      searchOptions:[],//检索条件
+      // searchOptions: [],//检索条件
     }
   },
   watch: {
-   
+
   },
   mounted() {
     this.getList()
   },
   methods: {
+    //获取检索条件检索
+    search(val) {
+      let params = {}
+      val.forEach(item => {
+        if (item.type == 3) {
+          params[item.value] = item.searchValue.map(itemValue => {
+            return itemValue.value
+          })
+        } else {
+          params[item.value] = item.searchValue.label
+        }
+      })
+      // 返回条件对象
+      this.searchOption = this.$commonJS.ArrayToArray(val)
+      // 调用查询接口
+      this.queryParams.current = 1
+      this.isCollapse()
+    },
     // 请求card数据
     getList(val) {
       this.loading = true
       if (val) {
-        let a=this.searchOptions.filter(item => {
-          return item.value!=this.queryParams.grouping
-        })
-        a.push({ value: this.queryParams.grouping, content: val })
+        // let a = this.searchOptions.filter(item => {
+        //   return item.value != this.queryParams.groupField
+        // })
+        // a.push({ value: this.queryParams.groupField, content: val })
         var params = {
-          search:a
+          searchQuery: `${this.queryParams.groupField}=${val}`
         }
       } else {
         var params = {
-          //...扩展、展开
           ...this.queryParams,
-          search:this.searchOptions,
+          searchQuery: this.$commonJS.objectToString(this.searchOption || {}),
         }
       }
       this.$api.queryScratchWords(params).then((res) => {
         if (res.code == 200) {
-          this.tableCollapseList = res.data.records
+          this.tableCollapseList = res.data.data
           if (!val) {
-            this.total=res.data.total
+            this.total = res.data.total
           }
-          this.loading=false
+          this.loading = false
         }
       }).catch(error => {
         this.tableCollapseList = []
         if (!val) {
-          this.total=0
-         }
-        this.loading=false
+          this.total = 0
+        }
+        this.loading = false
       })
     },
     // 查询分组
@@ -176,22 +172,23 @@ export default {
       this.loading = true
       let params = {
         //...扩展、展开
-        search:this.searchOptions,
+        searchQuery: this.$commonJS.objectToString(this.searchOption || {}),
+        // search: this.searchOptions,
         ...this.queryParams,
       }
-      this.$api.queryGroupScratchS(params).then((res) => { 
+      this.$api.queryScratchWordsGroup(params).then((res) => {
         if (res.code == 200) {
-          this.collapseList = res.data.records
-          this.total=res.data.total
+          this.collapseList = res.data.data
+          this.total = res.data.total
           this.loading = false
           if (this.collapseList.length > 0) {
-            this.getList(this.collapseList[0][this.queryParams.grouping])
+            this.getList(this.collapseList[0].key)
           }
         }
       }).catch(error => {
         this.collapseList = []
-        this.total=0
-        this.loading=false
+        this.total = 0
+        this.loading = false
       })
     },
     // 判断是查询分组还是只检索
@@ -203,29 +200,29 @@ export default {
       }
     },
     // 搜索事件
-    screenBtn() { 
+    screenBtn() {
       this.editSearchOptions()
       this.isCollapse()
-      this.screenInputValue=''
+      this.screenInputValue = ''
     },
     // 修改检索数组
-    editSearchOptions() {
-      this.searchOptions.push(
-        {
-          value: this.screenValue,
-          label: this.screenOptions.find(item => { return item.value == this.screenValue }).label,
-          content: this.screenInputValue,
-        }
-      )
-    },
+    // editSearchOptions() {
+    //   this.searchOptions.push(
+    //     {
+    //       value: this.screenValue,
+    //       label: this.screenOptions.find(item => { return item.value == this.screenValue }).label,
+    //       content: this.screenInputValue,
+    //     }
+    //   )
+    // },
     // 分组监听事件
-    changeGrouping(val) { 
+    changeGrouping(val) {
       this.queryParams.current = 1
       if (val == 'noGrouping') {//不分组
-        this.componentType='indiciaCard'
+        this.componentType = 'indiciaCard'
       } else {
         this.componentType = 'indiciaCollapse'
-        this.queryParams.grouping = val
+        this.queryParams.groupField = val
       }
       this.isCollapse()
     },
@@ -235,17 +232,17 @@ export default {
       this.isCollapse()
     },
     // 获取输入框提示信息
-    getPlaceholder() {
-      let a = this.screenOptions.filter(item => {
-        return item.value == this.screenValue
-      })
-      return a[0].placeholder
-    },
+    // getPlaceholder() {
+    //   let a = this.screenOptions.filter(item => {
+    //     return item.value == this.screenValue
+    //   })
+    //   return a[0].placeholder
+    // },
     // 删除检索条件
-    handleDelete(val,index) {
-      this.searchOptions.splice(index, 1)
-      this.isCollapse()
-    },
+    // handleDelete(val, index) {
+    //   this.searchOptions.splice(index, 1)
+    //   this.isCollapse()
+    // },
     // 子组件
     collapseVal(val) {
       this.getList(val)
@@ -281,6 +278,6 @@ export default {
     overflow: auto;
     // padding-right: 40px;
   }
-  
+
 }
 </style>

+ 7 - 30
src/views/layout/components/contextMenu.vue

@@ -55,39 +55,16 @@ export default {
           return item.id == Id
         })
         if (index != -1) {
-          document.addEventListener("click", function (e) {
+          // document.addEventListener("click", function (e) {
           //   console.log(e.clientX)
           //   console.log(e.clientY)
           //   var menuContent = []
-          // if (this.reportType == 1 || this.reportType == 2) {
-          //   menuContent = [
-          //     {
-          //       name: "对比",
-          //       method: "contrast",
-          //     }
-          //   ]
-          // }
-          // this.$store.commit("SET_CONTEXT_MENU", {
-          //   clientX: 200,
-          //   clientY: 200,
-          //   displayContextMenu: true,
-          //   menuContent: menuContent
-          // })
-          })
-          // var menuContent = []
-          // if (this.reportType == 1 || this.reportType == 2) {
-          //   menuContent = [
-          //     {
-          //       name: "对比",
-          //       method: "contrast",
-          //     }
-          //   ]
-          // }
-          // this.$store.commit("SET_CONTEXT_MENU", {
-          //   clientX: 200,
-          //   clientY: 200,
-          //   displayContextMenu: true,
-          //   menuContent: menuContent
+          //   this.$store.commit("SET_CONTEXT_MENU", {
+          //     clientX: e.clientX,
+          //     clientY: e.clientY,
+          //     displayContextMenu: true,
+          //     menuContent: this.highlight.piZhuContrastList[index]
+          //   })
           // })
           // 打开批注框
           this.$refs.annotation.open()

+ 10 - 41
src/views/project/components/PatentKeywordsHighlight.vue

@@ -15,7 +15,7 @@
           </el-select>
           <div v-for="item in form.configs" class="margin-top_10 item">
             <el-color-picker v-model="item.color" size="small" @change="onChange2"></el-color-picker>
-            <el-input v-model="item.description" placeholder="多个关键词请使用';(英文分号)'隔开" size="small"
+            <el-input v-model="item.keywords" placeholder="多个关键词请使用';(英文分号)'隔开" size="small"
               @input="onChange2(true)"></el-input>
           </div>
           <div class="delete-button">
@@ -36,7 +36,7 @@
           <template slot="label">
             <el-color-picker v-model="item.color" size="small"></el-color-picker>
           </template>
-          <el-input v-model="item.description" placeholder="请输入专利高亮关键词"></el-input>
+          <el-input v-model="item.keywords" placeholder="请输入专利高亮关键词"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -62,37 +62,6 @@ export default {
       rules: {
         name: [{ required: true, message: '请输入专题库名称', trigger: 'blur' },],
       },
-      templateLst: [
-        {
-          "name": "新模板",
-          "projectId": this.projectId,
-          // "userId": 103,
-          "ifEnable": true,
-          "ifDefault": true,
-          "configs": [
-            {
-              "color": "#5470c6",
-              "description": ""
-            },
-            {
-              "color": "#91cc75",
-              "description": ""
-            },
-            {
-              "color": "#fac858",
-              "description": ""
-            },
-            {
-              "color": "#ee6666",
-              "description": ""
-            },
-            {
-              "color": "#73c0de",
-              "description": ""
-            }
-          ],
-        }
-      ],
     }
   },
   mounted() {
@@ -124,23 +93,23 @@ export default {
       //       "configs": [
       //           {
       //               "color": "#5470c6",
-      //               "description": ""
+      //               "keywords": ""
       //           },
       //           {
       //               "color": "#91cc75",
-      //               "description": ""
+      //               "keywords": ""
       //           },
       //           {
       //               "color": "#fac858",
-      //               "description": ""
+      //               "keywords": ""
       //           },
       //           {
       //               "color": "#ee6666",
-      //               "description": ""
+      //               "keywords": ""
       //           },
       //           {
       //               "color": "#73c0de",
-      //               "description": ""
+      //               "keywords": ""
       //           }
       //       ],
       //         "id": 1085
@@ -152,7 +121,7 @@ export default {
         projectId: this.projectId
       }
       this.$api.queryHightLight(params).then(response => {
-        this.dataList = response.data
+        this.dataList = response.data.data
         this.selected = 0
         this.onChange()
       }).catch(error => {
@@ -166,7 +135,7 @@ export default {
         projectId: this.projectId,
       }
       this.$api.saveOrUpdate(params).then(response => {
-        this.dataList.push(response.data)
+        this.dataList.push(response.data.data)
         this.$message.success('操作成功')
         this.btnLoading = false
         this.selected = this.dataList.length - 1
@@ -199,7 +168,7 @@ export default {
     handleDelete() {
       this.btnLoading2 = true
       let ids = [this.form.id]
-      this.$api.deletePatentKeywordsHigh(ids).then(response => {
+      this.$api.deleteHightLight(ids).then(response => {
         this.$message.success('操作成功')
         this.btnLoading2 = false
         this.dataList.splice(this.selected, 1)

+ 5 - 2
src/views/project/index.vue

@@ -61,7 +61,8 @@
 
     <project-form-drawer @submit="getMessage" :common-data="commonData" ref="projectFormDrawer" />
     <field ref="field" type="patentProject" @getFieldList="getFieldList"></field>
-
+    <!-- 项目分享 -->
+    <patentShare ref="patentShare"></patentShare>
 
   </div>
 </template>
@@ -75,6 +76,7 @@ import mergeTable from "./components/view/MergeTable.vue";
 
 import ProjectFormDrawer from './components/drawer/form.vue'
 import field from '@/views/components/dialog/fields.vue';
+import patentShare from '@/views/components/drawer/Share.vue';
 
 export default {
   components: {
@@ -84,7 +86,7 @@ export default {
     ProjectFormDrawer,
     field,
     mergeTable,
-
+    patentShare,
   },
   props: {
     isOperate: '',
@@ -422,6 +424,7 @@ export default {
           this.otherFiles(row)
           break;
         case '9'://项目分享
+          this.$refs.patentShare.open(row.id)
           break;
         case '10'://删除
           this.deletes(row,isLast)

+ 5 - 6
src/views/project/patentCollection/components/mixins/index.js

@@ -246,10 +246,9 @@ export const handleData = {
         });
 
       }
-      if (!this.highlight.patentHightLight.enable || !text) {
+      if (!this.highlight.patentHightLight.ifEnable || !text) {
         return text
       }
-
       try {
         this.highlight.patentHightLight.configs.map(item => {
           const keywords = item.keywords.split(';')
@@ -282,7 +281,7 @@ export const handleData = {
       var arr1 = ['color', 'Type', 'Id', 'column', 'index', 'text', 'remark', 'temNode', 'selectType']
       var obj = {
         // 'piZhuContrastList': ['color', 'scratchType', 'id', 'scratchField', 'position', 'text', 'remark'],
-        'piZhuContrastList': ['markColor', 'markType', 'id', 'markSelectField', 'markSite', 'markSelectText', 'markOteText'],
+        'piZhuContrastList': ['markColor', 'markType', 'id', 'markSelectField', 'markSite', 'markSelectText', 'markNoteText'],
         'contrastList': ['markColor', 'markType', 'id', 'fieldName', 'position', 'evidenceText'],
         // 'opinionContrastList': ['color', 'scratchType', 'id', 'scratchField', 'position', 'content'],
         'opinionContrastList': ['markColor', 'markType', 'id', 'scratchField', 'position', 'content'],
@@ -338,9 +337,9 @@ export const highlight = {
     }
   },
   computed: {
-    piZhuContrastList() {
-      return this.$store.state.highlight.piZhuContrastList
-    },
+    // piZhuContrastList() {
+    //   return this.$store.state.highlight.piZhuContrastList
+    // },
     // contrastList() {
     //   return this.$store.state.highlight.contrastList
     // },

+ 1 - 0
src/views/project/patentDetails/components/patentMessage/mixins/index.js

@@ -74,6 +74,7 @@ export const patentDetails = {
         // a.color = this.currentSelectObj.color
         a.createFrom = this.outside ? 0 : this.projectType//来源0默认(专利)1专题库2报告
         a.literatureId = this.evidence ? this.evidence.id : null
+        a.patentTitle=this.patent.title.find(item => item.if_origin).text_content
         this.showMenu(e)
 
         this.$store.commit("SET_PATENT_INDEX", a)

+ 6 - 2
src/views/report/components/index.vue

@@ -55,6 +55,8 @@
     <reportFileDrawer ref="reportFileDrawer"></reportFileDrawer>
     <cronConclusion ref="cronConclusion" @save="getList"></cronConclusion>
     <exportReport ref="exportReport"></exportReport>
+    <!-- 项目分享 -->
+    <patentShare ref="patentShare"></patentShare>
   </div>
 </template>
 
@@ -69,6 +71,7 @@ import FieldDrawer from '@/views/components/drawer/Field.vue'
 import reportFileDrawer from './drawer/reportFileDrawer.vue'
 import cronConclusion from './dialog/cronConclusion.vue'
 import exportReport from './dialog/exportReport.vue'
+import patentShare from '@/views/components/drawer/Share.vue';
 export default {
   components: {
     Table,
@@ -80,7 +83,8 @@ export default {
     FieldDrawer,
     reportFileDrawer,
     cronConclusion,
-    exportReport
+    exportReport,
+    patentShare,
   },
   props: {
     isOperate: '',
@@ -541,7 +545,7 @@ export default {
     },
     //分享
     share(row){
-      this.drawer = true
+      this.$refs.patentShare.open(row.id)
     },
     //导出报告
     exportReport(row){