Просмотр исходного кода

Merge branch 'product' of http://1.116.113.26:8088/zhuliu/xiaoshi_system into product

zhuliu 1 год назад
Родитель
Сommit
6002eeceba

+ 82 - 33
src/api/newApi/common.js

@@ -6,7 +6,7 @@ export default {
    * @returns 
    */
   getOsSystemDict(data) {
-    return axios.post("/xiaoshi/common/getOsSystemDict",  data );
+    return axios.post("/xiaoshi/common/getOsSystemDict", data);
   },
   /**
    * 查询应用场景
@@ -118,46 +118,95 @@ export default {
   deleteCustomOption(data) {
     return axios.post("/xiaoshi/customOption/deleteCustomOption", data);
   },
-  
 
-   /**
-   * 查询所有标引栏位
-   * @param {*} params 
-   * @returns 
-   */
-   getAllPatentCustomField(params) {
-    return axios.get("/xiaoshi/customField/getAllPatentCustomField", {params});
+
+  /**
+  * 查询所有标引栏位
+  * @param {*} params 
+  * @returns 
+  */
+  getAllPatentCustomField(params) {
+    return axios.get("/xiaoshi/customField/getAllPatentCustomField", { params });
   },
-   /**
-   * 查询所有标引栏位值
-   * @param {*} data 
-   * @returns 
-   */
-   getCustomFieldValues(data) {
+  /**
+  * 查询所有标引栏位值
+  * @param {*} data 
+  * @returns 
+  */
+  getCustomFieldValues(data) {
     return axios.post("/xiaoshi/customField/getCustomFieldValues", data);
   },
-   /**
-   * 保存自定义栏位顺序
-   * @param {*} data 
-   * @returns 
-   */
-   addAllPatentCustomFieldOrder(data) {
+  /**
+  * 保存自定义栏位顺序
+  * @param {*} data 
+  * @returns 
+  */
+  addAllPatentCustomFieldOrder(data) {
     return axios.post("/xiaoshi/customField/addAllPatentCustomFieldOrder", data);
   },
-   /**
-   * 添加标引
-   * @param {*} data 
-   * @returns 
-   */
-   addCustomFieldValue(data) {
+  /**
+  * 添加标引
+  * @param {*} data 
+  * @returns 
+  */
+  addCustomFieldValue(data) {
     return axios.post("/xiaoshi/customField/addCustomFieldValue", data);
   },
-   /**
-   * 自定义栏位统计
-   * @param {*} data 
-   * @returns 
-   */
-   esCountSearch(data) {
+  /**
+  * 自定义栏位统计
+  * @param {*} data 
+  * @returns 
+  */
+  esCountSearch(data) {
     return axios.post("/xiaoshi/patent/esCountSearch", data);
   },
+  /**
+  * 获取检索栏位
+  * @param {*} data 
+  * @returns 
+  */
+  getQueryFields(data) {
+    return axios.post("/xiaoshi/personField/getQueryFields", data);
+  },
+  /**
+  * 获取表格显示栏位
+  * @param {*} data 
+  * @returns 
+  */
+  getTableColumns(data) {
+    return axios.post("/xiaoshi/personField/getTableColumns", data);
+  },
+  /**
+  * 设置表格显示栏位
+  * @param {*} data 
+  * @returns 
+  */
+  setTableColumns(data) {
+    return axios.post("/xiaoshi/personField/setTableColumns", data);
+  },
+  /**
+  * 获取所有统计栏位
+  * @param {*} data 
+  * @returns 
+  */
+  getAllCountColumns(data) {
+    return axios.post("/xiaoshi/personField/getAllCountColumns", data);
+  },
+  /**
+  * 获取显示的统计栏位
+  * @param {*} data 
+  * @returns 
+  */
+  getShowCountColumns(data) {
+    return axios.post("/xiaoshi/personField/getShowCountColumns", data);
+  },
+  /**
+  * 设置显示的统计栏位
+  * @param {*} data 
+  * @returns 
+  */
+  setShowCountColumns(data) {
+    return axios.post("/xiaoshi/personField/setShowCountColumns", data);
+  },
+
 };

+ 2 - 2
src/api/newApi/report.js

@@ -252,8 +252,8 @@ export default {
    /**
    * 报告文档查询
    */
-   getReferences(params) {
-    return axios.get("/xiaoshi/references/getReferences", {params});
+   getReferences(data) {
+    return axios.post("/xiaoshi/references/getReferences", data);
   },
    /**
    * 报告文档删除

+ 40 - 68
src/views/project/patentDetails/components/PatentField.vue

@@ -61,13 +61,14 @@
               <el-button size="small" @click="changeShow(item)">{{ item.show ? '收起' : '修改' }}</el-button>
             </div>
             <div v-show="item.show">
-              <el-tree :data="item.option"  node-key="id"  default-expand-all :props="defaultProps">
-                  <span class="custom-tree-node" slot-scope="{ node, data }">
-                    <el-checkbox-group :value="item.selectedValue" >
-                      <el-checkbox :label="data.id" @change="(val) => onChange(data, item, val)">{{ data.name }}</el-checkbox>
-                    </el-checkbox-group>
-                  </span>
-                </el-tree>
+              <el-tree :data="item.option" node-key="id" default-expand-all :props="defaultProps">
+                <span class="custom-tree-node" slot-scope="{ node, data }">
+                  <el-checkbox-group :value="item.selectedValue">
+                    <el-checkbox :label="data.id" @change="(val) => onChange(data, item, val)">{{ data.name
+                    }}</el-checkbox>
+                  </el-checkbox-group>
+                </span>
+              </el-tree>
             </div>
 
           </template>
@@ -108,61 +109,27 @@ export default {
     this.getCustomField()
   },
   methods: {
-    // getShow(item) {
-    //   this.
-    //   this.getCustomOption(item)
-    // },
     //上移下移
     handleOption(type, index) {
-      if(index == 0){
+      if (index == 0) {
         this.$message.warning('已是最顶层')
         return false
       }
-      if(index == this.customField.length - 1){
+      if (index == this.customField.length - 1) {
         this.$message.warning('已是最后一层')
         return false
       }
-      if(type == 0){
+      if (type == 0) {
         var current = index - 1
-        var next = index 
-      }else{
+        var next = index
+      } else {
         var current = index
         var next = index + 1
       }
       var order = this.customField[current].sysOrder
       this.customField[current].sysOrder = this.customField[next].sysOrder
       this.customField[next].sysOrder = order
-      this.customField.splice(this.customField[current],0,this.customField[next])
-
-      // if (row.sysOrder == 0) {
-      //   this.$message.warning('已是最顶层')
-      //   return false
-      // }
-      // if (row.sysOrder == this.customField.length - 1) {
-      //   this.$message.warning('已是最后一层')
-      //   return false
-      // }
-      // if (type == 0) {//上移
-        
-      //   this.customField.forEach(item => {
-      //     if (item.sysOrder == row.sysOrder - 1) {
-      //       item.sysOrder += 1
-      //     }
-      //     if (item.id == row.id) {
-      //       item.sysOrder -= 1
-      //     }
-      //   })
-      // } else {
-      //   this.customField.forEach(item => {
-      //     if (item.sysOrder == row.sysOrder + 1) {
-      //       item.sysOrder -= 1
-      //     }
-      //     if (item.id == row.id) {
-      //       item.sysOrder += 1
-      //     }
-      //   })
-      // }
-
+      this.customField.splice(this.customField[current], 0, this.customField[next])
       let params = {
         taskId: this.taskId,
         projectId: this.projectId,
@@ -363,29 +330,32 @@ export default {
       });
     },
     //切换是否修改
-    changeShow(item){
+    changeShow(item) {
       this.$set(item, 'show', !item.show)
-      if(item.option && item.option.length>0){
-        return ;
+      if (item.option && item.option.length > 0) {
+        return;
       }
       this.getOption(item)
     },
-    getOption(item){
+    getOption(item) {
       switch (item.type) {
-          case 4:
-          case 5:
-          case 6:
-            this.getCustomOption(item)
-            break;
-          case 7:
-            this.queryProductCategory(item, 7)
-            break;
-          case 8:
-            this.queryProductCategory(item, 8)
-            break;
-          case 9:
-            break;
-        }
+        case 4:
+        case 5:
+          this.getCustomOption(item)
+          break;
+        case 6:
+          this.queryProductCategory(item, 4)
+          break;
+        case 7://接口传值类型:1产品类别,2产品,3技术分类,4自定义树
+          this.queryProductCategory(item, 2)
+          break;
+        case 8:
+          this.queryProductCategory(item, 1)
+          break;
+        case 9:
+          this.queryProductCategory(item, 3)
+          break;
+      }
     },
     //获取已选中选项值、已添加的值
     getSelected(item) {
@@ -413,7 +383,7 @@ export default {
               var a = []
               // item.selectedValue = []
               a = (item.selected && item.selected.length > 0) ? item.selected.map(item => item.valueId) : []
-              this.$set(item,'selectedValue',a)
+              this.$set(item, 'selectedValue', a)
               break;
 
             default:
@@ -441,15 +411,17 @@ export default {
     //获取产品或产品类别架构以及技术分类
     queryProductCategory(item, type) {
       let params = {
+        projectId: this.projectId,
+        taskId: this.taskId,
         type: type,//类型:1产品类别,2产品,3技术分类,4自定义树
         typeId: item.id,//产品或类别id
       }
       this.$api.queryTreeNodeTree(params).then(res => {
         if (res.code == 200) {
-
+          this.$set(item, 'option', response.data.data)
         }
       }).catch(err => {
-
+        this.$set(item, 'option', [])
       })
     },
   }

+ 41 - 32
src/views/report/components/allocationTask/components/allocationTask.vue

@@ -1,35 +1,35 @@
 <template>
   <!-- 分配任务3(可做公共组件) -->
   <div style="padding:20px;height:100%;background:white;display: flex;">
-    <div class="" v-show="showRight" :style="{width:showRight?'300px':'0px'}">
-      <showColumn :projectId="projectId"></showColumn>
+    <div class="" v-show="showRight" :style="{ width: showRight ? '300px' : '0px' }">
+      <showColumn :projectId="projectId" @markedFields="handleMarkedFields"></showColumn>
     </div>
-    <el-container :style="{width:showRight?'calc( 100% - 300px )':'100%'}">
+    <el-container :style="{ width: showRight ? 'calc( 100% - 300px )' : '100%' }">
       <el-header class="header1">
         <!-- <div > -->
-          <div style="display: flex;align-items: center;">
-            <div style="margin-right: 10px;">
-              <el-tooltip class="item" effect="dark" :content="(showRight ? '隐藏' : '显示') + '右侧自定义栏位'" placement="top">
-                <i :class="showRight ? 'el-icon-s-fold' : 'el-icon-s-unfold'"
-                  style="font-size: 25px; margin-left: 10px;color: #2f2f2f; cursor: pointer"
-                  @click="showRight = !showRight"></i>
-              </el-tooltip>
-            </div>
-            <span>总件数:{{ totalNumber }}</span>
-            <span> 剩余件数:{{ leaveNumber }}</span>
-          </div>
-          <div>
-            <label>任务类型:</label>
-            <el-select v-model="taskType">
-              <el-option label="对比任务" value="3"></el-option>
-              <el-option label="标引任务" value="0"></el-option>
-            </el-select>
-          </div>
-          <!-- 平均分配 -->
-          <div>
-            <el-button @click="getPerson">添加人员</el-button>
-            <el-button @click="finish" v-if="params">完成</el-button>
+        <div style="display: flex;align-items: center;">
+          <div style="margin-right: 10px;">
+            <el-tooltip class="item" effect="dark" :content="(showRight ? '隐藏' : '显示') + '右侧自定义栏位'" placement="top">
+              <i :class="showRight ? 'el-icon-s-fold' : 'el-icon-s-unfold'"
+                style="font-size: 25px; margin-left: 10px;color: #2f2f2f; cursor: pointer"
+                @click="showRight = !showRight"></i>
+            </el-tooltip>
           </div>
+          <span>总件数:{{ totalNumber }}</span>
+          <span> 剩余件数:{{ leaveNumber }}</span>
+        </div>
+        <div>
+          <label>任务类型:</label>
+          <el-select v-model="taskType">
+            <el-option label="对比任务" value="3"></el-option>
+            <el-option label="标引任务" value="0"></el-option>
+          </el-select>
+        </div>
+        <!-- 平均分配 -->
+        <div>
+          <el-button @click="getPerson">添加人员</el-button>
+          <el-button @click="finish" v-if="params">完成</el-button>
+        </div>
         <!-- </div> -->
       </el-header>
       <el-main>
@@ -81,7 +81,8 @@
     <!-- 选择人员 -->
     <personList ref="personList" @getPersonIds="getPersonIds"></personList>
     <!-- 选择专利 -->
-    <checkPatent ref="checkPatent" :oldSearchOption="oldSearchOption" :customFields="customFields" @checkPatentList="checkPatentList"></checkPatent>
+    <checkPatent ref="checkPatent" :oldSearchOption="oldSearchOption" :customFields="customFields"
+      @checkPatentList="checkPatentList"></checkPatent>
 
     <examine ref="examine" @save="handleSave" :title="'添加分配任务'" :isShow="false">
     </examine>
@@ -94,7 +95,6 @@ import personList from '@/views/components/dialog/person.vue'
 import checkPatent from '../../checkPatent/checkPatent.vue'
 import examine from '@/views/components/dialog/examine.vue'
 import showColumn from './showColumn.vue'
-import patent from '@/api/newApi/patent'
 export default {
   components: {
     personList,
@@ -104,7 +104,7 @@ export default {
   },
   props: {
     projectId: {
-      default:'',
+      default: '',
     },
     oldSearchOption: {
       type: Object,
@@ -146,6 +146,8 @@ export default {
       showTable: true,
       // 完成???
       params: {},
+      // 自定义栏位
+      markedFields: [],
     }
   },
   computed: {
@@ -184,7 +186,7 @@ export default {
         ...this.queryParams,//分页信息
         projectId: this.projectId,
         searchQuery: this.$commonJS.objectToString(this.oldSearchOption),//检索条件
-        customFields:this.customFields,
+        customFields: this.customFields,
         orderDTOList: [],//排序信息
       }
       await this.$api.QueryPatent(params).then(res => {
@@ -232,7 +234,7 @@ export default {
     chosePatentFile(row) {
       this.row = row
       var patentNoList = this.getPatentNoList()
-      this.$refs.checkPatent.open(this.projectId,patentNoList)
+      this.$refs.checkPatent.open(this.projectId, patentNoList)
     },
     getPatentNoList() {
       var patentNoList = []
@@ -278,7 +280,9 @@ export default {
     //完成打开弹窗
     finish() {
       this.$refs.examine.open()
-
+    },
+    handleMarkedFields(val) {
+      this.markedFields = val
     },
     // 发送任务
     handleSave(form) {
@@ -286,7 +290,12 @@ export default {
         projectId: this.projectId,
         taskType: this.taskType,
         ...form,
-        stringRequest: {},//检索内容条件
+        stringRequest: {
+          projectId: this.projectId,
+          searchQuery: this.$commonJS.objectToString(this.oldSearchOption || {}),//列表上方检索条件
+          customFields: this.customFields,//统计检索
+        },//检索内容条件
+        markedFields: this.markedFields,//自定义栏位
         personAssignedDTOList: this.tableData.map(item => {
           return {
             personId: item.id,

+ 36 - 91
src/views/report/components/allocationTask/components/showColumn.vue

@@ -6,10 +6,10 @@
         <template v-if="field.length > 0">
           <div v-for="item in field" :key="item.id" style="width: 100%;">
             <el-collapse>
-              <el-collapse-item name="1">
+              <el-collapse-item>
                 <template slot="title">
                   <el-checkbox-group v-model="checkList">
-                    <el-checkbox :label="item.id">{{ item.name }}</el-checkbox>
+                    <el-checkbox :label="item.id" @change="handleChange(item)">{{ item.name }}</el-checkbox>
                   </el-checkbox-group>
                 </template>
                 <!-- 单选 -->
@@ -65,27 +65,9 @@ export default {
   },
   data() {
     return {
-      // isHidden: true,// 是都显示已读、未读、全部
-      readList: [],//已读未读全部
       activeNames: '',//展示哪一个面板
       // 面板的loading
       loading: false,
-      // 已读未读状态信息
-      readStatus: {
-        all: {
-          label: "全部",
-          value: "3"
-        },
-        read: {
-          label: "已读",
-          value: "1"
-        },
-        noRead: {
-          label: "未读",
-          value: "0"
-        },
-      },
-      // sourceQuery: [],
       // 分页信息
       queryParams: {
         current: 1,
@@ -104,7 +86,8 @@ export default {
       },
       // 总数据
       customFields: [],
-      checkList: []
+      checkList: [],
+      markedFields: [],
     }
   },
   watch: {
@@ -114,8 +97,27 @@ export default {
     this.getList()
   },
   methods: {
-    // 点击搜索自定义栏位的选项
-    handleSearch(val) { },
+    // 
+    handleChange(val) {
+      let obj = {
+        filedId: val.id,
+        filedType: val.type
+      }
+      if (this.markedFields.length > 0) {
+        let index = this.markedFields.findIndex(item => {
+          return item.filedId == val.id
+        })
+        if (index != -1) {
+          this.markedFields.splice(index, 1)
+        } else {
+          this.markedFields.push(obj)
+        }
+      } else {
+        this.markedFields.push(obj)
+      }
+      this.$emit('markedFields', this.markedFields)
+
+    },
     // 查询自定义栏位数据
     getList() {
       var params = {
@@ -161,79 +163,22 @@ export default {
       })
     },
 
-    // 处理树类型的文件数字
-    getCount(rowId, childId) { },
-    // 加载更多
-    // handleLoadMore() { },
-    // 全选
-    handleSelectAll(val) {
-      this.valObj.check = []
-      val.options.forEach(item => {
-        this.valObj.check.push(item.id)
-      })
-      let obj = {
-        [val.id]: this.valObj.check
-      }
-      this.handleFiledData(obj, val.id)
-    },
-    // 取消
-    handleSelectCancel(val) {
-      this.valObj.check = []
-      let obj = {
-        [val.id]: []
-      }
-      this.handleFiledData(obj, val.id)
-    },
-    // 多选类型的change
-    onChange(filed, filedId) {
-      let obj = {
-        [filedId]: filed
-      }
-      this.handleFiledData(obj, filedId)
-    },
     // 点击节点发生的变化
-    onChangeTree(filed, filedId) {//当前节点的数据,当前栏位的数据 
-      if (this.valObj.treeArr && this.valObj.treeArr.length > 0) {
-        let index = this.valObj.treeArr.findIndex(item => {
-          return item == filed.id
-        })
-        if (index != -1) {
-          this.valObj.treeArr.splice(index, 1)
-        } else {
-          this.valObj.treeArr.push(filed.id)
-        }
-      } else {
-        this.valObj.treeArr.push(filed.id)
-      }
+    onChangeTree(filed, filedId) {//当前节点的数据,当前栏位的数据
       let obj = {
-        [filedId]: this.valObj.treeArr
+        filedId: filedId,
+        filedType: 6,
+        values: [filed.id],
       }
-      this.handleFiledData(obj, filedId)
-    },
-    // 单选的change
-    radioChange(filed, filedId) {
-      let obj = {
-        [filedId]: [filed]
-      }
-      this.handleFiledData(obj, filedId)
-    },
-    // 处理customFields中的数据
-    handleFiledData(obj, filedId) {
-      if (this.customFields && this.customFields.length > 0) {
-        this.customFields.forEach(item => {
-          for (let k in item) {
-            if (k == filedId) {
-              item[k] = obj[filedId]
-            } else {
-              this.customFields.push(obj)
-            }
-          }
-        })
-      } else {
-        this.customFields.push(obj)
+      let index = this.checkList.findIndex(item => {
+        return item == filedId
+      })
+      if (index == -1) {
+        this.checkList.push(filedId)
       }
+      this.markedFields.push(obj)
+      this.$emit('markedFields', this.markedFields)
     },
-
   }
 }
 </script>

+ 15 - 10
src/views/report/components/drawer/reportFileDrawer.vue

@@ -1,31 +1,36 @@
 <template>
   <div>
-    <reportFileTable :projectId="projectId"></reportFileTable>
+    <el-drawer title="报告文档" :visible.sync="drawer" direction="rtl" :before-close="handleClose" size="1000px">
+      <reportFileTable :projectId="projectId"></reportFileTable>
+    </el-drawer>
+    
   </div>
 </template>
 
 <script>
 import reportFileTable from '../reportFile/reportFileTable.vue'
 export default {
-  props: {
-    projectId: {
-      default:'',
-    },
-  },
   components: {
     reportFileTable
   },
   data() {
     return {
-
+      drawer: false,
+      projectId:'',
     }
   },
   mounted() {
-    
-  },  
-  methods: {
 
   },
+  methods: {
+    open(projectId) {
+      this.projectId=projectId
+      this.drawer=true
+    },
+    handleClose() {
+      this.drawer=false
+    },
+  },
 }
 </script>
 

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

@@ -53,6 +53,7 @@
     <CreateReport ref="ReportForm" @getList="isGetList"></CreateReport>
     <fields ref="field" type="reportProject" @getFieldList="getFieldList"></fields>
     <Field-Drawer ref="FieldDrawer"></Field-Drawer>
+    <reportFileDrawer ref="reportFileDrawer"></reportFileDrawer>
   </div>
 </template>
 
@@ -64,6 +65,7 @@ import mergeTable from './view/mergeTable.vue'
 import CreateReport from './dialog/addAndEditReport.vue'
 import fields from '@/views/components/dialog/fields.vue';
 import FieldDrawer from '@/views/components/drawer/Field.vue'
+import reportFileDrawer from './drawer/reportFileDrawer.vue'
 export default {
   components: {
     Table,
@@ -72,7 +74,8 @@ export default {
     CreateReport,
     mergeTable,
     fields,
-    FieldDrawer
+    FieldDrawer,
+    reportFileDrawer,
   },
   props: {
     isOperate: '',
@@ -532,7 +535,9 @@ export default {
       }
     },
     // 报告文档
-    handleFile(row){},
+    handleFile(row) {
+      this.$refs.reportFileDrawer.open(row.id)
+    },
     //自定义栏位管理
     handleField(row) {
       this.$refs.FieldDrawer.open(row.id)

+ 27 - 306
src/views/report/components/patentList/components/customFields.vue

@@ -1,337 +1,57 @@
 <template>
   <div class="patent-tree-filter">
     <el-container>
-      <el-header class="patent-query-filter-header">
-        <!-- 已读、未读、全部 -->
-        <div class="query-read-status" style="margin: 0px 5px 0px 5px;" v-for="(item, key) in readList" :key="key"
-          :class="{ 'query-read-status_is-active': readStatus[key].value == returnData.read }"
-          @click="handleReadQuery(readStatus[key].value)">
-          <span class="a">(<span class="b">{{ item }}</span>)</span>
-          <span class="c">{{ readStatus[key].label }}</span>
-        </div>
+      <el-header class="basic_header">
+        <el-tabs v-model="activeNameTabs" @tab-click="handleClick" type="card" style="width:100%">
+          <el-tab-pane v-for="item in menu" :key='item.path' :label="item.label" :name="item.path"></el-tab-pane>
+        </el-tabs>
       </el-header>
-      <el-main class="patent-tree-filter-main">
-        <template v-if="field.length > 0">
-          <el-collapse v-model="activeNames" style="margin: 0px 5px 0px 5px;">
-            <el-collapse-item v-for="item in field" :title="item.name" :name="item.id" :key="item.id" :loading="loading"
-              @click.stop.prevent.native="handleChange(item)">
-              <!-- <div class="patent-query-filter-search">
-                <div class="patent-query-filter-search-input">
-                  <el-input v-if="item.type != 6" v-model="sourceQuery[item.id].name" size="small"
-                    placeholder="请输入查询内容"></el-input>
-                  <div v-else-if="!item.type" class="year-data-picker">
-                    <el-date-picker clear-icon size="small" v-model="sourceQuery[item.id].datePicker[0]" type="year"
-                      value-format="yyyy" placeholder="请选择时间"></el-date-picker>
-                    <span style="margin: 5px;">至</span>
-                    <el-date-picker clear-icon size="small" v-model="sourceQuery[item.id].datePicker[1]" type="year"
-                      value-format="yyyy" placeholder="请选择时间"></el-date-picker>
-                  </div>
-                </div>
-                <el-button v-if="item.type != 6" @click="handleSearch(item)" size="small" type="primary"
-                  icon="el-icon-search" circle></el-button>
-              </div> -->
-              <!-- 日期 -->
-              <div v-if="item.type != 6" style="display:flex;margin-bottom: 10px;">
-                <el-input v-if="[4, 5].includes(item.type)" size="small" v-model="valObj.valueOne"
-                  placeholder="请输入查询内容"></el-input>
-                <div v-if="[1].includes(item.type)" class="year-data-picker">
-                  <el-date-picker clear-icon size="small" type="year" v-model="valObj.valueOne" value-format="yyyy"
-                    placeholder="请选择时间"></el-date-picker>
-                  <span style="margin: 5px;">至</span>
-                  <el-date-picker clear-icon size="small" type="year" v-model="valObj.valueTwo" value-format="yyyy"
-                    placeholder="请选择时间"></el-date-picker>
-                </div>
-                <el-button v-if="[1, 4, 5].includes(item.type)" @click="handleSearch(item)" size="small" type="primary"
-                  class="margin-left_10" icon="el-icon-search" circle></el-button>
-              </div>
-              <!-- 数字 -->
-              <div v-if="item.type == 0">
-                <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="valObj.description2"
-                  @blur="handleBlur(item, 0)"></el-input>
-              </div>
-              <!-- 文本 -->
-              <div v-if="item.type == 2">
-                <el-input type="textarea" :rows="2" v-model="valObj.description" @blur="handleBlur(item, 1)"
-                  placeholder="请输入内容"></el-input>
-              </div>
-              <!-- 单选 -->
-              <div v-if="item.type == 4">
-                <el-radio v-for="radio in item.options" :key="radio.id" v-model="valObj.radio"
-                  @change="radioChange($event, item.id)" :label="radio.id" style="width: 100%;">
-                  <span>{{ radio.name }}</span>
-                  <span v-if="isShowNum">({{ radio.count || 0 }})</span>
-                </el-radio>
-              </div>
-              <!-- 多选 -->
-              <el-checkbox-group v-if="item.type == 5" v-model="valObj.check" @change="onChange($event, item.id)">
-                <div class="source-checkbox">
-                  <el-checkbox v-for="source in item.options" :label="source.id" :key="source.id">
-                    <span class="source-checkbox-label" :title="source.name">{{ source.name }}</span>
-                    <span v-if="isShowNum" class="source-checkbox-count">({{ source.count || 0 }})</span>
-                  </el-checkbox>
-                </div>
-              </el-checkbox-group>
-              <!-- 树类型 -->
-              <el-tree v-if="item.type == 6" @check-change="onChangeTree($event, item.id)" :ref="item.id"
-                :data="item.child" show-checkbox node-key="id" check-strictly default-expand-all
-                :props="{ children: 'child', label: 'name' }">
-                <div class="custom-filter-tree-node" slot-scope="{ node, data }">
-                  <span class="name">{{ data.name }}</span>
-                  <span v-if="isShowNum" class="total">({{ getCount(item.id, data.id) }})</span>
-                </div>
-              </el-tree>
-
-              <div class="patent-query-filter-search-bottom" v-if="item.type == 5">
-                <el-button type="success" size="small" @click="handleSelectAll(item)">全选</el-button>
-                <el-button type="danger" size="small" @click="handleSelectCancel(item)">取消</el-button>
-                <!-- <el-button  type="primary" size="small" @click="handleLoadMore(item)"
-                  >加载更多</el-button> -->
-                <!-- <span v-else></span> -->
-              </div>
-            </el-collapse-item>
-
-          </el-collapse>
-        </template>
-
-        <template v-else>
-          <div class="no-data">暂无数据</div>
-        </template>
+      <el-main>
+        <component :is="activeNameTabs" :projectId="projectId"></component>
       </el-main>
     </el-container>
   </div>
 </template>
 
 <script>
-// import { patentQueryMixins } from "@/views/task/components/mixins";
-// import { getTreeLastChildren, getTreeDataList } from "@/utils";
-
+import queryPage from './tab1.vue'
+import selectPage from './tab2.vue'
 export default {
-  // mixins: [patentQueryMixins],
   props: {
     projectId: {
-      default: 0
-    },
-    // 是否显示栏位相关专利数量
-    isShowNum: {
-      type: Boolean,
-      default: true
-    },
-    // 是否显示栏位
-    isShowCustom: {
-      type: Boolean,
-      default: true,
+      default: null
     },
   },
+  components: {
+    queryPage,
+    selectPage,
+  },
   data() {
     return {
-      // isHidden: true,// 是都显示已读、未读、全部
-      readList: [],//已读未读全部
-      activeNames: [],//展示哪一个面板
-      // 面板的loading
-      loading: false,
-      // 已读未读状态信息
-      readStatus: {
-        all: {
-          label: "全部",
-          value: "3"
-        },
-        read: {
-          label: "已读",
-          value: "1"
+      activeNameTabs: 'queryPage',
+      menu:[
+        {
+          label:'查询筛选',
+          path:'queryPage'
         },
-        noRead: {
-          label: "未读",
-          value: "0"
+        {
+          label:'分类选择',
+          path:'selectPage'
         },
-      },
-      // sourceQuery: [],
-      // 分页信息
-      queryParams: {
-        current: 1,
-        size: 10,
-
-      },
-      total: 0,
-      // 自定义栏位
-      field: [],
-      // 处理数据
-      valObj: {
-        treeArr: [],
-        check: [],
-        radio: '',
-        valueOne: '',
-        valueTwo: '',
-      },
-      // 总数据
-      customFields: [],
-
+      ],
     }
   },
   watch: {
 
   },
   mounted() {
-    this.getList()
+
   },
   methods: {
-    // 查询自定义栏位数据
-    getList() {
-      var params = {
-        ...this.queryParams,
-        searchQuery: `projectId=${this.projectId}`,
-        orderDTOList: [],
-      }
-      this.loading = true
-      this.$api.queryCustomField(params).then(response => {
-        if (response.code == 200) {
-          let data = response.data.data
-          this.handleFiled(data)
-          this.loading = false
-        }
-      }).catch(error => {
-        this.loading = false
-      })
-    },
-    handleFiled(data) {
-      data.forEach(item => {
-        this.queryCustomOption(item)
-      })
-    },
-    // 查询自定义栏位选项数据
-    queryCustomOption(row) {
-
-      let params = {
-        customFieldId: row.id,
-      }
-      this.$api.queryCustomOption(params).then(response => {
-        if (response.code == 200) {
-          if (row.type == 6) {//树类型
-            row.child = response.data.data
-          } else if (row.type == 5) {
-            row.options = response.data.data
-          } else if (row.type == 4) {
-            row.options = response.data.data
-          }
-          this.field.push(row)
-        }
-      }).catch(error => {
-
-      })
-    },
-
-    // 处理树类型的文件数字
-    getCount(rowId, childId) {
-      return 0
-    },
-    // 加载更多
-    // handleLoadMore() { },
-    // 全选
-    handleSelectAll(val) {
-      this.valObj.check = []
-      val.options.forEach(item => {
-        this.valObj.check.push(item.id)
-      })
-      let obj = {
-        [val.id]: this.valObj.check
-      }
-      this.handleFiledData(obj, val.id)
-    },
-    // 取消
-    handleSelectCancel(val) {
-      this.valObj.check = []
-      let obj = {
-        [val.id]: []
-      }
-      this.handleFiledData(obj, val.id)
-    },
-    // 多选类型的change
-    onChange(filed, filedId) {
-      let obj = {
-        [filedId]: filed
-      }
-      this.handleFiledData(obj, filedId)
-    },
-    // 点击节点发生的变化
-    onChangeTree(filed, filedId) {//当前节点的数据,当前栏位的数据 
-      if (this.valObj.treeArr && this.valObj.treeArr.length > 0) {
-        let index = this.valObj.treeArr.findIndex(item => {
-          return item == filed.id
-        })
-        if (index != -1) {
-          this.valObj.treeArr.splice(index, 1)
-        } else {
-          this.valObj.treeArr.push(filed.id)
-        }
-      } else {
-        this.valObj.treeArr.push(filed.id)
-      }
-      let obj = {
-        [filedId]: this.valObj.treeArr
-      }
-      this.handleFiledData(obj, filedId)
-    },
-    // 单选的change
-    radioChange(filed, filedId) {
-      let obj = {
-        [filedId]: [filed]
-      }
-      this.handleFiledData(obj, filedId)
-    },
-    // 处理customFields中的数据
-    handleFiledData(obj, filedId) {
-      if (this.customFields && this.customFields.length > 0) {
-        this.customFields.forEach(item => {
-          for (let k in item) {
-            if (k == filedId) {
-              item[k] = obj[filedId]
-            } else {
-              this.customFields.push(obj)
-            }
-          }
-        })
-      } else {
-        this.customFields.push(obj)
-      }
-      this.$emit('customFields', this.customFields)
-    },
-    // 处理数字、文字
-    handleBlur(item, type) {
-      if (type == 0) {//数字
-        this.customFields[item.id] = [valObj.description2]
-      } else {
-        this.customFields[item.id] = [valObj.description]
-      }
-      this.$emit('customFields', this.customFields)
-    },
-    // 点击当前面版
-    handleChange(val) {
-      this.esCountSearch(val)
-    },
     
-    // 点击搜索自定义栏位的选项
-    handleSearch(val) {
-      this.esCountSearch(val,)
+    handleClickTab(tab, event) {
+      // this.activeNameTabs = tab.name
     },
-    // 获取统计数字
-    esCountSearch(val) {
-      let params = {
-        filed: 'filed',
-        fieldId: val.id,
-        valueOne:this.valObj.valueOne || '',
-        valueTwo:this.valObj.valueTwo || '',
-      }
-      console.log(params);
-      return
-      this.$api.esCountSearch(params).then(response => {
-        if (response.code == 200) {
-
-        }
-      }).catch(error => {
-
-      })
-    },
-    // 点击已读、未读、全部
-    handleReadQuery(val) { },
 
   }
 }
@@ -464,4 +184,5 @@ export default {
 .query-read-status_is-active {
   background: #409EFF !important;
   color: #ffffff !important;
-}</style>
+}
+</style>

+ 221 - 0
src/views/report/components/patentList/components/tab1.vue

@@ -0,0 +1,221 @@
+<template>
+  <div class="height_100">
+    <el-container>
+      <el-main class="" style="overflow-y: auto;">
+        <template>
+          <el-collapse v-model="activeNames" style="margin: 0px 5px 0px 5px;">
+            <el-collapse-item v-for="item in field" :title="item.name" :name="item.id" :key="item.id" :loading="loading"
+              @click.native="handleChange(item)">
+
+
+              <div style="display:flex;margin-bottom: 10px;">
+                <div v-if="[1].includes(item.type)" class="year-data-picker">
+                  <el-date-picker clear-icon size="small" type="year" v-model="valObj.valueOne" value-format="yyyy"
+                    placeholder="请选择时间"></el-date-picker>
+                  <span style="margin: 5px;">至</span>
+                  <el-date-picker clear-icon size="small" type="year" v-model="valObj.valueTwo" value-format="yyyy"
+                    placeholder="请选择时间"></el-date-picker>
+                </div>
+                <template v-if="![4,5].includes(item.type)">
+                  <el-input size="small" v-model="valObj.valueOne" placeholder="请输入查询内容"></el-input>
+                  <el-button @click.stop="handleSearch(item)" size="small" type="primary" class="margin-left_10"
+                    icon="el-icon-search" circle></el-button>
+                </template>
+              </div>
+              <el-checkbox-group v-model="valObj[item.id]" @change.stop="onChange($event, item.id)">
+                <div class="source-checkbox" v-if="ifShow">
+                  <el-checkbox v-for="source in item.options" :label="source.id" :key="source.id">
+                    <span class="source-checkbox-label" :title="source.name">{{ source.name }}</span>
+                    <span class="source-checkbox-count">({{ getCount(item, source.id) }})</span>
+                  </el-checkbox>
+                </div>
+              </el-checkbox-group>
+
+              <div class="patent-query-filter-search-bottom">
+                <el-button type="success" size="small" @click.stop="handleSelectAll(item)">全选</el-button>
+                <el-button type="danger" size="small" @click.stop="handleSelectCancel(item)">取消</el-button>
+              </div>
+
+            </el-collapse-item>
+          </el-collapse>
+        </template>
+      </el-main>
+      <el-footer style="display: flex;align-items: center;justify-content: end;">
+        <el-button type="primary" size="small" @click="handleMore">更多过滤项</el-button>
+      </el-footer>
+    </el-container>
+
+    <fieldsVue ref="fieldsVue" type="" @getFieldList="getFieldList"></fieldsVue>
+  </div>
+</template>
+
+<script>
+import fieldsVue from '@/views/components/dialog/fields.vue'
+export default {
+  props: ['projectId'],
+  components: {
+    fieldsVue
+  },
+  data() {
+    return {
+      // 控制折叠面板
+      activeNames: [],
+      // 存放数据
+      field: [],
+      loading: false,
+      // 勾选的数据
+      valObj: {
+        check: [],
+        valueOne: '',
+        valueTwo: '',
+      },
+      // 分页信息
+      queryParams: {
+        current: 1,
+        size: 10,
+      },
+      total: 0,
+      // 总数据
+      customFields: [],
+      // 
+      ifShow: true,
+    }
+  },
+  mounted() {
+    this.getList()
+  },
+  methods: {
+    // 过滤组件传的值
+    getFieldList(val) {
+      this.filed=this.filed.concat(data)
+    },
+    // 更多过滤项
+    handleMore() { 
+      this.$refs.handleMore.open([])
+    },
+    // 全选
+    handleSelectAll(val) {
+      this.valObj[val.id] = val.options.map(item => {
+        return item.id
+      })
+      // this.valObj[val.id]=[8]
+      // console.log(check);
+      // this.valObj.check[val.id] = JSON.parse(JSON.stringify(check))
+      // this.valObj.check[val.id] = check
+      this.$set(this.valObj, val.id, 8)
+      console.log(this.valObj);
+    },
+    // 取消
+    handleSelectCancel(val) {
+      this.valObj.check[val.id] = []
+    },
+    // 查询自定义栏位数据
+    getList() {
+      var params = {
+        ...this.queryParams,
+        searchQuery: `projectId=${this.projectId}`,
+        orderDTOList: [],
+      }
+      this.loading = true
+      this.$api.queryCustomField(params).then(response => {
+        if (response.code == 200) {
+          this.field = response.data.data.filter(item => {
+            return item.type != 6
+          })
+          this.loading = false
+        }
+      }).catch(error => {
+        this.loading = false
+      })
+    },
+    // 查询自定义栏位选项数据
+    async queryCustomOption(row) {
+      let params = {
+        customFieldId: row.id,
+      }
+      await this.$api.queryCustomOption(params).then(response => {
+        if (response.code == 200) {
+          this.$set(row, 'options', response.data.data)
+        }
+      }).catch(error => {
+
+      })
+    },
+    // 处理树类型的文件数字
+    getCount(field, value) {
+      var num = 0
+      if (field.nums) {
+        var obj = field.nums.find(item => {
+          return item.name == value
+        })
+        if (obj) {
+          num = obj.number
+        }
+        return num
+      }
+    },
+    refresh() {
+      this.$set(this, 'ifShow', false)
+      this.$nextTick(() => {
+        this.$set(this, 'ifShow', true)
+      })
+    },
+    // 点击当前的折叠面板
+    async handleChange(val) {
+      this.$set(this.valObj, val.id, [])
+      await this.queryCustomOption(val)
+      this.$nextTick(() => {
+        this.esCountSearch(val)
+      })
+    },
+    // 点击折叠面板中的搜索
+    handleSearch(val) {
+      // this.queryCustomOption(val)
+      this.esCountSearch(val)
+    },
+    // 获取统计数字
+    esCountSearch(val) {
+      let params = [{
+        field: 'field',
+        fieldId: val.id,
+        valueOne: this.valObj.valueOne || '',
+        valueTwo: this.valObj.valueTwo || '',
+      }]
+      this.$api.esCountSearch(params).then(response => {
+        if (response.code == 200) {
+          this.$set(val, 'nums', response.data.detailDTOS)
+          this.refresh()
+        }
+      }).catch(error => {
+
+      })
+    },
+    // 选中的数据
+    onChange(filed, filedId) {
+      let obj = {
+        [filedId]: filed
+      }
+      this.handleFiledData(obj, filedId)
+    },
+    // 处理customFields中的数据
+    handleFiledData(obj, filedId) {
+      if (this.customFields && this.customFields.length > 0) {
+        this.customFields.forEach(item => {
+          for (let k in item) {
+            if (k == filedId) {
+              item[k] = obj[filedId]
+            } else {
+              this.customFields.push(obj)
+            }
+          }
+        })
+      } else {
+        this.customFields.push(obj)
+      }
+      // this.$emit('customFields', this.customFields)
+    },
+  },
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 183 - 0
src/views/report/components/patentList/components/tab2.vue

@@ -0,0 +1,183 @@
+<template>
+  <div>
+    <template>
+      <el-collapse v-model="activeNames" style="margin: 0px 5px 0px 5px;">
+        <el-collapse-item v-for="item in field" :title="item.name" :name="item.id" :key="item.id" :loading="loading"
+          @click.native.stop="handleChange(item)">
+          <div v-if="ifShow">
+            <el-tree @check-change="onChangeTree($event, item.id)" :ref="item.id" :data="item.child" show-checkbox
+              node-key="id" check-strictly default-expand-all :props="{ children: 'child', label: 'name' }">
+              <div class="custom-filter-tree-node" slot-scope="{ node, data }">
+                <span class="name">{{ data.name }}</span>
+                <span class="total">({{ getCount(item, data.id) }})</span>
+              </div>
+            </el-tree>
+          </div>
+
+        </el-collapse-item>
+      </el-collapse>
+    </template>
+
+  </div>
+</template>
+
+<script>
+export default {
+  props: ['projectId'],
+  data() {
+    return {
+      // 控制折叠面板
+      activeNames: [],
+      // 存放数据
+      field: [],
+      loading: false,
+      // 勾选的数据
+      valObj: {
+        check: [],
+        valueOne: '',
+        valueTwo: '',
+      },
+      // 分页信息
+      queryParams: {
+        current: 1,
+        size: 10,
+      },
+      total: 0,
+      // 总数据
+      customFields: [],
+      // 
+      ifShow: true,
+    }
+  },
+  watch: {
+  },
+  mounted() {
+    this.getList()
+  },
+  methods: {
+    // 查询自定义栏位数据
+    getList() {
+      var params = {
+        ...this.queryParams,
+        searchQuery: `projectId=${this.projectId}`,
+        orderDTOList: [],
+      }
+      this.loading = true
+      this.$api.queryCustomField(params).then(response => {
+        if (response.code == 200) {
+          this.field = response.data.data.filter(item => {
+            return item.type == 6
+          })
+          this.loading = false
+        }
+      }).catch(error => {
+        this.loading = false
+      })
+    },
+    // 查询自定义栏位选项数据
+    async queryCustomOption(row) {
+      let params = {
+        customFieldId: row.id,
+      }
+      await this.$api.queryCustomOption(params).then(response => {
+        if (response.code == 200) {
+          this.$set(row, 'child', response.data.data)
+          // row.child = response.data.data
+
+        }
+      }).catch(error => {
+
+      })
+    },
+    refresh() {
+      this.$set(this, 'ifShow', false)
+      this.$nextTick(() => {
+        this.$set(this, 'ifShow', true)
+      })
+    },
+    // 处理树类型的文件数字
+    getCount(field, value) {
+      var num = 0
+      if (field.nums) {
+        var obj = field.nums.find(item => {
+          return item.name == value
+        })
+        if (obj) {
+          num = obj.number
+        }
+        console.log(num, obj);
+        return num
+      }
+    },
+
+    // 点击当前的折叠面板
+    async handleChange(val) {
+      await this.queryCustomOption(val)
+      this.$nextTick(() => {
+        this.esCountSearch(val)
+      })
+
+    },
+    // 点击折叠面板中的搜索
+    async handleSearch(val) {
+      await this.queryCustomOption(val)
+      this.esCountSearch(val)
+    },
+    // 获取统计数字
+    esCountSearch(val) {
+      let params = [{
+        field: 'field',
+        fieldId: val.id,
+        valueOne: this.valObj.valueOne || '',
+        valueTwo: this.valObj.valueTwo || '',
+      }]
+      this.$api.esCountSearch(params).then(response => {
+        if (response.code == 200) {
+          this.$set(val, 'nums', response.data.detailDTOS)
+          this.refresh()
+        }
+      }).catch(error => {
+
+      })
+    },
+    // 选中的值
+    onChangeTree(filed, filedId) {//当前节点的数据,当前栏位的数据 
+      if (this.valObj.treeArr && this.valObj.treeArr.length > 0) {
+        let index = this.valObj.treeArr.findIndex(item => {
+          return item == filed.id
+        })
+        if (index != -1) {
+          this.valObj.treeArr.splice(index, 1)
+        } else {
+          this.valObj.treeArr.push(filed.id)
+        }
+      } else {
+        this.valObj.treeArr.push(filed.id)
+      }
+      let obj = {
+        [filedId]: this.valObj.treeArr
+      }
+      this.handleFiledData(obj, filedId)
+    },
+    // 处理customFields中的数据
+    handleFiledData(obj, filedId) {
+      if (this.customFields && this.customFields.length > 0) {
+        this.customFields.forEach(item => {
+          for (let k in item) {
+            if (k == filedId) {
+              item[k] = obj[filedId]
+            } else {
+              this.customFields.push(obj)
+            }
+          }
+        })
+      } else {
+        this.customFields.push(obj)
+      }
+      // this.$emit('customFields', this.customFields)
+    },
+  },
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 2 - 2
src/views/report/components/productResult/productResult.vue

@@ -20,7 +20,7 @@
                 v-if="$permission('/pcs/report/add/' + item.permission)">{{ item.label }}</el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
-          <div style="display:flex; justify-content:flex-end;align-items:center" v-if="reportType != 4">
+          <!-- <div style="display:flex; justify-content:flex-end;align-items:center" v-if="reportType != 4">
             <el-button class="changePatent" type="" size="small" :disabled="index == 0" @click="handleLink1()">
               <span class="p"><i class="el-icon-arrow-up"></i>
                 <span>上一篇</span>
@@ -48,7 +48,7 @@
               </span>
               <span class="n" v-else>无数据</span>
             </el-button>
-          </div>
+          </div> -->
           <!-- 收缩图标 -->
           <el-tooltip class="item" effect="dark" :content="(showRight ? '隐藏' : '显示') + '右侧菜单'" placement="top">
             <i :class="showRight ? 'el-icon-s-unfold' : 'el-icon-s-fold'"

+ 3 - 1
src/views/report/components/reportFile/reportFileTable.vue

@@ -242,10 +242,12 @@ export default {
       this.dialogVisible = true
     },
     getList() {
+      
       let params = {
         projectId: this.projectId,//放在外面还是searchQuery里面??
         ...this.queryParams,//分页信息
-        searchQuery: this.$commonJS.objectToString(this.searchOption || {}),//检索条件
+        fileName:this.searchOption.referencesName,
+        // searchQuery: this.$commonJS.objectToString(this.searchOption || {}),//检索条件
         // orderDTOList: this.sort,//排序信息
       }
       this.loading = true