zhuliu 2 rokov pred
rodič
commit
a0a3f45565
100 zmenil súbory, kde vykonal 3 pridanie a 13879 odobranie
  1. 3 100
      src/App.vue
  2. 0 4
      src/main.js
  3. 0 116
      src/views/EnterprisePatentDatabase/components/dialog/addAndEditDB.vue
  4. 0 41
      src/views/EnterprisePatentDatabase/components/view/MergeTable.vue
  5. 0 66
      src/views/EnterprisePatentDatabase/components/view/commonTable.vue
  6. 0 126
      src/views/EnterprisePatentDatabase/index.vue
  7. 0 33
      src/views/analyse/custom/components/Charts/Area/index.vue
  8. 0 34
      src/views/analyse/custom/components/Charts/Bar/index.vue
  9. 0 37
      src/views/analyse/custom/components/Charts/Column/index.vue
  10. 0 46
      src/views/analyse/custom/components/Charts/Doughnut/index.vue
  11. 0 98
      src/views/analyse/custom/components/Charts/Heat/index.vue
  12. 0 33
      src/views/analyse/custom/components/Charts/Line/index.vue
  13. 0 67
      src/views/analyse/custom/components/Charts/Map/index.vue
  14. 0 67
      src/views/analyse/custom/components/Charts/Map/index1.vue
  15. 0 81
      src/views/analyse/custom/components/Charts/Map/index2.vue
  16. 0 34
      src/views/analyse/custom/components/Charts/MultipleBar/index.vue
  17. 0 35
      src/views/analyse/custom/components/Charts/MultipleColumn/index.vue
  18. 0 33
      src/views/analyse/custom/components/Charts/MultipleLine/index.vue
  19. 0 45
      src/views/analyse/custom/components/Charts/Pie/index.vue
  20. 0 105
      src/views/analyse/custom/components/Charts/Radar/index.vue
  21. 0 85
      src/views/analyse/custom/components/Charts/Radar/index2.vue
  22. 0 51
      src/views/analyse/custom/components/Charts/Sankey/index.vue
  23. 0 111
      src/views/analyse/custom/components/Charts/Scatter/index.vue
  24. 0 34
      src/views/analyse/custom/components/Charts/StackedBar/index.vue
  25. 0 35
      src/views/analyse/custom/components/Charts/StackedColumn/index.vue
  26. 0 47
      src/views/analyse/custom/components/Charts/Sunburst/index.vue
  27. 0 21
      src/views/analyse/custom/components/Charts/Table/Column.vue
  28. 0 265
      src/views/analyse/custom/components/Charts/Table/index.vue
  29. 0 47
      src/views/analyse/custom/components/Charts/Tree/index.vue
  30. 0 89
      src/views/analyse/custom/components/Charts/Treemap/index.vue
  31. 0 51
      src/views/analyse/custom/components/Charts/index.js
  32. 0 56
      src/views/analyse/custom/components/Charts/index.vue
  33. 0 50
      src/views/analyse/custom/components/Tabs/Data.vue
  34. 0 599
      src/views/analyse/custom/components/Tabs/DataItem.vue
  35. 0 107
      src/views/analyse/custom/components/Tabs/Item.vue
  36. 0 50
      src/views/analyse/custom/components/Tabs/Line.vue
  37. 0 401
      src/views/analyse/custom/components/Tabs/Style.vue
  38. 0 53
      src/views/analyse/custom/components/Tabs/StyleType.vue
  39. 0 19
      src/views/analyse/custom/components/Tabs/mixins.js
  40. 0 728
      src/views/analyse/custom/index.vue
  41. 0 445
      src/views/analyse/custom/mixins.js
  42. 0 628
      src/views/analyse/report/create/components/PatentList.vue
  43. 0 282
      src/views/analyse/report/create/index.vue
  44. 0 142
      src/views/analyse/report/record/index.vue
  45. 0 70
      src/views/components/common/PatentDetails/index.vue
  46. 0 8
      src/views/components/common/RichText/index.js
  47. 0 222
      src/views/components/common/RichText/index.vue
  48. 0 238
      src/views/components/common/RichText/index3.vue
  49. 0 6
      src/views/components/common/RichText/mixins.js
  50. 0 59
      src/views/components/common/RichText/reviewClass.js
  51. 0 187
      src/views/components/common/SplitScreen.js
  52. 0 8
      src/views/components/common/retrieval/index.js
  53. 0 60
      src/views/components/common/retrieval/index.vue
  54. 0 295
      src/views/components/common/retrieval/search.vue
  55. 0 312
      src/views/components/import/PatentNoImport/download.vue
  56. 0 43
      src/views/components/import/PatentNoImport/index.vue
  57. 0 96
      src/views/components/import/conditionImport/AdvancedSearch.vue
  58. 0 271
      src/views/components/import/conditionImport/FormSearch.vue
  59. 0 517
      src/views/components/import/conditionImport/components/projectListDialog.vue
  60. 0 271
      src/views/components/import/conditionImport/components/search_history.vue
  61. 0 138
      src/views/components/import/conditionImport/customSearch.vue
  62. 0 37
      src/views/components/import/conditionImport/index.vue
  63. 0 197
      src/views/components/import/conditionImport/patentDetails/PatentList.vue
  64. 0 279
      src/views/components/import/conditionImport/patentDetails/patentDetail.vue
  65. 0 141
      src/views/components/import/conditionImport/patentDetails/patentIndex.vue
  66. 0 147
      src/views/components/import/conditionImport/search.vue
  67. 0 507
      src/views/components/import/conditionImport/searchResult.vue
  68. 0 44
      src/views/components/import/conditionImport/searchResultIndex.vue
  69. 0 373
      src/views/components/import/conditionImport/view/Abstract.vue
  70. 0 89
      src/views/components/import/conditionImport/view/Picture.vue
  71. 0 302
      src/views/components/import/conditionImport/view/Table.vue
  72. 0 117
      src/views/components/import/conditionImport/view/TableSort.vue
  73. 0 181
      src/views/components/import/excelImport/importPatent.vue
  74. 0 41
      src/views/components/import/excelImport/index.vue
  75. 0 344
      src/views/components/import/index.vue
  76. 0 153
      src/views/feedback/components/feedback.vue
  77. 0 28
      src/views/feedback/index.vue
  78. 0 171
      src/views/indicia/components/card.vue
  79. 0 75
      src/views/indicia/components/collapse.vue
  80. 0 286
      src/views/indicia/components/indicia.vue
  81. 0 98
      src/views/indicia/components/mixins.js
  82. 0 30
      src/views/indicia/index.vue
  83. 0 9
      src/views/layout/components/UserBar.vue
  84. 0 28
      src/views/login/index.vue
  85. 0 140
      src/views/patentMining/components/basicMessage.vue
  86. 0 59
      src/views/patentMining/components/details/index.vue
  87. 0 185
      src/views/patentMining/components/dialog/addAndEditProject.vue
  88. 0 69
      src/views/patentMining/components/dialog/auditRecords.vue
  89. 0 100
      src/views/patentMining/components/dialog/createTask.vue
  90. 0 169
      src/views/patentMining/components/dialog/handleTask1.vue
  91. 0 166
      src/views/patentMining/components/dialog/handleTask2.vue
  92. 0 127
      src/views/patentMining/components/dialog/uploadFile.vue
  93. 0 235
      src/views/patentMining/components/excavateTask/excavateTask.vue
  94. 0 28
      src/views/patentMining/components/excavateTask/index.vue
  95. 0 128
      src/views/patentMining/components/fileMessage.vue
  96. 0 160
      src/views/patentMining/components/handleExamine/handleExamine.vue
  97. 0 28
      src/views/patentMining/components/handleExamine/index.vue
  98. 0 126
      src/views/patentMining/components/projectPath.vue
  99. 0 84
      src/views/patentMining/components/view/commonTable.vue
  100. 0 0
      src/views/patentMining/index.vue

+ 3 - 100
src/App.vue

@@ -1,62 +1,20 @@
 <template>
   <div id="app">
     <router-view />
-    <div id="absoParent" v-if="$route.path != '/login'" v-drag  class="absoParent1">
-      <div id="abso" class="abso1" >
-          <span style="">
-              <i class="el-icon-edit icon"></i>
-            <span class="mouseEnter" style="cursor: pointer;">意见反馈</span>
-          </span>
-      </div>
-    </div>
-    
-    <feedback ref="feedback"></feedback>
-
-    <div class="caidan" style ="display:none;"  v-if="$permission('/workspace/scratchWords')">
-          <div style="display: flex;align-items: center;">
-                <div class="dropbtn" :style='{"background-color":mark.color,"border-radius":"50%","width":"12px","height":"12px","margin-top":"1px"}'>
-                  <el-input type="color" v-model="mark.color"  style="opacity: 0;user-select:none;" @input="changeColor()"/>
-                </div>
-                &NonBreakingSpace;&NonBreakingSpace;&NonBreakingSpace;
-                <div style="font-size: 14px;font-weight: 500;">
-                  <span @click="handleRadioClick(2)" style="margin:0 10px">波浪线</span>
-                  <span @click="handleRadioClick(0)" style="margin:0 10px">下划线</span>
-                  <span @click="handleRadioClick(1)" style="margin:0 10px">高亮</span>
-                </div>
-                &NonBreakingSpace;&NonBreakingSpace;
-                <a onclick="pizhu()" style="font-size: 14px;font-weight: 500;"> 批注</a>
-                &NonBreakingSpace;&NonBreakingSpace;
-                <a v-if="mark.id" @click="hiddenPiZhuDelete" style="font-size: 14px;font-weight: 500;">删除</a>
-                &NonBreakingSpace;&NonBreakingSpace;
-          </div>
-    </div>
-    <pizhu :gaoLiangCaiDan="gaoLiangCaiDan" :piZhuDelete="piZhuDelete"></pizhu>
   </div>
 </template>
 
 <script>
-import feedback from "@/views/feedback/components/feedback.vue";
-import pizhu from "@/views/workspace/gaoliang/components/pizhu.vue";
 import moment from 'moment'
 export default {
   name: 'app',
   components: {
-    feedback,
-    pizhu,
   },
   data() {
     return {
-      height: (document.documentElement.clientHeight) + 'px',
-      gaoLiangCaiDan:false,
-      piZhuDelete:false,
     }
   },
   computed:{
-    mark() {
-      return this.$store.state.patent.index || {
-        rangeType:[]
-      }
-    },
   },
   created() {
   },
@@ -74,49 +32,10 @@ export default {
     if(index!=-1){
       document.body.style.filter = 'grayscale(100%)'
     }
-    //关闭菜单
-    document.addEventListener('mousedown',function(e){
-      let btn = document.getElementsByClassName("caidan");
-      let box = document.getElementsByClassName('pizhu')
-      if(btn[0].style.display!='none'){
-        if ( !btn[0].contains(e.target)) {
-          btn[0].setAttribute("style", "display:none;");
-        }
-      }else{
-        // if ( !box[0].contains(e.target)) {
-        //   box[0].setAttribute("style", "display:none;");
-        // }
-      }
-      
-    })
+
   },
   methods: {
-    feedback() {
-      this.$refs.feedback.open()
-    },
-    changeColor(){},
-    changeRadio(val) {
-      this.mark.scratchType = val
-      // 仅自己可见仅本专题可见
-      this.mark.permissionType=0
-      this.mark.rangeType =this.mark.rangeId? true:false
-      this.gaoLiangCaiDan = !this.gaoLiangCaiDan
-      this.handleCaiDan()
-    },
-    // 在el-radio-group无法对默认项点击
-    handleRadioClick(val) {
-      this.changeRadio(val)
-    },
-    handleCaiDan() {
-      let btn = document.getElementsByClassName("caidan");
-      if(btn[0].style.display!='none'){
-        btn[0].setAttribute("style", "display:none;");
-      }
-    },
-    hiddenPiZhuDelete() {
-      this.piZhuDelete = !this.piZhuDelete
-      this.handleCaiDan()
-    },
+    
   },
     //注册局部组件指令
     directives: {
@@ -164,23 +83,7 @@ export default {
   }
 }
 </script>
-<style lang="less">
-.opinion .el-form-item{
-  margin-bottom: 10px;
-  .el-form-item__content,.el-form-item__label{
-    line-height: normal;
-    min-height: 30px;
-  }
-}
-.caidan{
-  user-select:none;
-  a{
-    user-select:none;
-    cursor: pointer;
-  }
-  
-}
-</style>
+
 <style lang="scss">
 //driver.js
 .driver-fix-stacking .header {

+ 0 - 4
src/main.js

@@ -26,10 +26,6 @@ import "@/icons/icon2/iconfont.css"
 import {hasPermission} from './directives/permission';
 Vue.prototype.$permission = hasPermission
 
-// import myRichText from '@/views/components/common/RichText/index'
-// Vue.use(myRichText);
-// import mySearch from '@/views/components/common/retrieval/index'
-// Vue.use(mySearch);
 import model from './utils/model'
 Vue.use(model)
 

+ 0 - 116
src/views/EnterprisePatentDatabase/components/dialog/addAndEditDB.vue

@@ -1,116 +0,0 @@
-<template>
-  <div>
-    <el-dialog
-        :title="title"
-        :visible.sync="dialogVisible"
-        width="800px"
-        :before-close="handleClose">
-        <el-form label-position="left" label-width="100px" :model="form">
-            <template v-if="!show">
-                <div>
-                    <el-form-item label="企业名称:">
-                        <el-input v-model="form.name" placeholder="请输入企业名称"></el-input>
-                    </el-form-item>
-                    <el-form-item label="别名:">
-                        <el-input v-model="form.alias" placeholder="请输入企业别名"></el-input>
-                    </el-form-item>
-                    <el-form-item label="英文名:">
-                        <el-input v-model="form.EnglishName" placeholder="请输入企业英文名"></el-input>
-                    </el-form-item>
-                    <el-form-item label="类型:">
-                        <el-select v-model="form.type" placeholder="请选择企业专利数据库类型" style="width:100%">
-                            <el-option label="合作伙伴" value="1"></el-option>
-                            <el-option label="竞争对手" value="2"></el-option>
-                        </el-select>
-                    </el-form-item>
-                </div>
-            </template>
-            <template>
-                <div>
-                    <el-form-item label="更新周期:">
-                        <el-select v-model="form.cycle" placeholder="请选择更新周期" style="width:100%">
-                            <el-option
-                            v-for="item in options"
-                            :key="item.value"
-                            :label="item.label"
-                            :value="item.value">
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item label="更新时间:" v-if="form.cycle">
-                        <timeChoose :type="form.cycle" @value="handleData" :cron="form.crons"></timeChoose>
-                    </el-form-item>
-                </div>
-            </template>
-            
-        </el-form>
-        <span slot="footer" class="dialog-footer">
-            <el-button @click="handleClose">取 消</el-button>
-            <el-button type="primary" @click="submit">确 定</el-button>
-        </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import timeChoose from "@/views/workspace/components/common/timeChoose.vue";
-export default {
-  components: {
-    timeChoose
-  },
-  props: {},
-  data() {
-    return {
-        dialogVisible:false,
-        options: [
-            {label:'每天',value:'day'},
-            {label:'每周',value:'week'},
-            {label:'每月',value:'month'},
-            {label:'每年',value:'year'},
-        ],
-        form:{},
-        title:'',
-        show:null
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {},
-  methods: {
-    //打开弹窗
-    open(form,type){
-        this.form = JSON.parse(JSON.stringify(form))
-        if(this.form.id){
-            this.title = '编辑企业专利数据库'
-        }else{
-            this.title = '新增企业专利数据库'
-        }
-        if(type){
-            this.title = '设置定时任务'
-        }
-        this.show = type
-        this.dialogVisible = true
-    },
-    //关闭弹窗
-    handleClose(){
-        this.form = {}
-        this.dialogVisible = false
-    },
-    //提交数据
-    submit(){
-        this.dialogVisible = false
-    },
-    // 获取时间
-    handleData(val) {
-      if (this.form.cycle=='') {
-        this.$message.error('请先选择更新周期')
-        return false
-      }
-      this.form.crons=val
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 0 - 41
src/views/EnterprisePatentDatabase/components/view/MergeTable.vue

@@ -1,41 +0,0 @@
-<template>
-  <div class="workspace-merge-table">
-    <el-table :data="tableData" header-row-class-name="custom-table-header" @expand-change="expandChange" >
-      <el-table-column type="expand">
-        <template slot-scope="props">
-          <common-table :data="showData[props.row.index]" :params="params" :field="field" @option="handleOption" />
-        </template>
-      </el-table-column>
-      <el-table-column v-for="column in columnList" :label="column.label" :prop="column.prop" show-overflow-tooltip></el-table-column>
-    </el-table>
-  </div>
-</template>
-
-<script>
-import commonTable from './commonTable.vue';
-export default {
-  components: {
-    commonTable
-  },
-  props: {
-    params: Object,
-    field: []
-  },
-  data() {
-    return {
-        columnList:[]
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {},
-  methods: {
-    expandChange(){
-
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 0 - 66
src/views/EnterprisePatentDatabase/components/view/commonTable.vue

@@ -1,66 +0,0 @@
-<template>
-  <div>
-    <el-table :data="tableData" border style="width: 100%" header-row-class-name="custom-table-header">
-        <el-table-column label="#" align="center" width="100px">
-            <template slot-scope="scope">
-                <div>
-                    {{ (params.current-1)*params.size + scope.$index+1 }}
-                </div>
-            </template>
-        </el-table-column>
-        <el-table-column prop="name" label="企业名称" align="center">
-          <template slot-scope="scope">
-            <div>
-              <el-link type="primary">{{ scope.row.name }}</el-link>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column prop="type" label="企业专利数据库类型" align="center"></el-table-column>
-        <el-table-column prop="createPerson" label="创建人" align="center"></el-table-column>
-        <el-table-column label="操作" align="center" width="200px">
-            <template slot-scope="scope">
-                <div>
-                    <el-dropdown split-button type="primary" size="small" @command="handleCommand($event, scope.row)">
-                        <p @click="handleCommand('e', scope.row)">编辑</p>
-                        <el-dropdown-menu slot="dropdown">
-                            <el-dropdown-item command="0">设置定时更新</el-dropdown-item>
-                            <el-dropdown-item divided class="color-red" command="1">删除</el-dropdown-item>
-                        </el-dropdown-menu>
-                    </el-dropdown>
-                </div>
-            </template>
-        </el-table-column>
-    </el-table>
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props: {
-    params:Object
-  },
-  data() {
-    return {
-        tableData:[
-          {
-            name:'xxx有限公司',
-            type:'本公司专利数据库',
-            createPerson:'朱豪'
-          }
-        ]
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {},
-  methods: {
-    handleCommand(option,row){
-      this.$emit('option',{option,row})
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 0 - 126
src/views/EnterprisePatentDatabase/index.vue

@@ -1,126 +0,0 @@
-<template>
-  <div>
-    <el-container>
-        <el-header>
-            <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>
-                    <span>分组查询:</span>
-                    <el-select v-model="queryParams.group" :disabled="!$permission('/workspace/project/check')" multiple clearable collapse-tags size="small" @change="onChange" style="width:200px">
-                        <el-option v-for="item in commonData.QUERY_GROUP" :key="item.value" :label="item.label" :value="parseInt(item.value)">
-                        </el-option>
-                    </el-select>
-                </div> -->
-                <el-button-group class="margin-left_10">
-                  <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" id="step2">
-                    <p @click="handleAdd" v-disabled="!$permission('/workspace/project/add')">新增其他企业专利数据库</p>
-                    <el-dropdown-menu slot="dropdown" class="text-align_center">
-                        <!-- <el-dropdown-item @click.native="handleExport">导出列表</el-dropdown-item> -->
-                        <!-- <el-dropdown-item @click.native="handleImport" :disabled="!$permission('/workspace/project/import')">导入数据包</el-dropdown-item>
-                        <el-dropdown-item @click.native="handleField">显示栏位管理</el-dropdown-item> -->
-                    </el-dropdown-menu>
-                </el-dropdown>
-            </div>
-        </el-header>
-        <el-main>
-            <component :is="viewType" :data="dataList" :group="queryParams.group" :params="queryParams" @option="handleOption" @sort="handleSort"></component> 
-        </el-main>
-        <el-footer>
-            <div>
-                <el-pagination
-                    backgroundx
-                    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>
-    <addAndEditDB ref="addAndEditDB"></addAndEditDB>
-  </div>
-</template>
-
-<script>
-
-import addAndEditDB from './components/dialog/addAndEditDB.vue';
-import commonTable from './components/view/commonTable.vue';
-export default {
-  components: {
-    commonTable,
-    addAndEditDB
-  },
-  props: {},
-  data() {
-    return {
-        viewType:'commonTable',
-        queryShowType:'0',
-        dataList:[],
-        queryParams:{
-            size:10,
-            current:0,
-        },
-        total:0,
-        searchFiled:[
-            {
-                label:'企业名称',
-                value:'name',
-                type:1,
-                placeholder:'请输入企业名称'
-            },
-            {
-                label:'企业专利数据库类型',
-                value:'type',
-                type:1,
-                placeholder:'请输入企业专利数据库类型'
-            },
-        ],
-        searchOption:{}
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {},
-  methods: {
-    search(){
-
-    },
-    handleSort(sort) {
-      this.queryParams.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.addAndEditDB.open(row)
-          break;
-      }
-    },
-    handleCurrentChange(val) {
-      this.queryParams.current = val;
-      this.getList();
-    },
-    getList(){
-
-    },
-    //添加其他企业专利数据库
-    handleAdd(){
-        this.$refs.addAndEditDB.open({})
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 0 - 33
src/views/analyse/custom/components/Charts/Area/index.vue

@@ -1,33 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CArea",
-  data() {
-    return {
-      id: 'area'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { xAxis, yAxis, series, grid } = this.get1AxisOption('line', { opacity: 1 })
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        grid: grid,
-        xAxis: xAxis,
-        yAxis: yAxis,
-        series: series
-      }
-    },
-  }
-}
-</script>

+ 0 - 34
src/views/analyse/custom/components/Charts/Bar/index.vue

@@ -1,34 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CBar",
-  data() {
-    return {
-      id: 'bar',
-      barWidth: ''
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { xAxis, yAxis, series, grid } = this.get1AxisOption('bar', undefined)
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        grid: grid,
-        xAxis: xAxis,
-        yAxis: yAxis,
-        series: series
-      }
-    },
-  }
-}
-</script>

+ 0 - 37
src/views/analyse/custom/components/Charts/Column/index.vue

@@ -1,37 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CColumn",
-  data() {
-    return {
-      id: 'column',
-      barWidth: ''
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { xAxis, yAxis, series, grid } = this.get1AxisOption('bar', undefined)
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        grid: grid,
-        xAxis: yAxis,
-        yAxis: {
-          ...xAxis,
-          inverse: true
-        },
-        series: series
-      }
-    },
-  }
-}
-</script>

+ 0 - 46
src/views/analyse/custom/components/Charts/Doughnut/index.vue

@@ -1,46 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CDoughnut",
-  data() {
-    return {
-      id: 'doughnut'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        legend: {
-          type: this.form.setting.type2,
-          show: this.form.setting.legend,
-          textStyle: {
-            fontFamily: this.form.setting.fontFamily3,
-            color: this.form.setting.legendColor,
-            fontSize: this.form.setting.legendFontSize
-          },
-          ...this.getLegendLocation(),
-        },
-        series: [
-          {
-            name: '',
-            type: 'pie',
-            radius: ['40%', '70%'],
-            data: this.getSeriesData()
-          }
-        ]
-      }
-    },
-  }
-}
-</script>

+ 0 - 98
src/views/analyse/custom/components/Charts/Heat/index.vue

@@ -1,98 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-import { random } from "@/utils";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CHeat",
-  data() {
-    return {
-      id: 'heat'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      if (this.form.schema.x.ptype === 2) {
-        this.dateTimeSort()
-      }
-      let data = [], x = this.selected.x, y = this.selected.y, max = 0
-      for (let i = 0; i < x.length; i++) {
-        for (let j = 0; j < y.length; j++) {
-          if (x[i] && y[j]) {
-            let val = this.getDataCount(x[i], y[j]) || undefined
-            data.push([i, j, val])
-            if (val > max) {
-              max = val
-            }
-          }
-        }
-      }
-      return {
-        tooltip: {
-          trigger: 'item',
-        },
-        grid: {
-          top: this.form.setting.gridTop + '%',
-          left: this.form.setting.gridLeft + '%',
-          right: this.form.setting.gridRight + '%',
-          bottom: this.form.setting.gridBottom + '%',
-          containLabel: true
-        },
-        xAxis: {
-          type: 'category',
-          name: this.getAxisName('title1'),
-          nameTextStyle: this.getNameTextStyle('x'),
-          nameLocation: this.form.setting.nameLocation,
-          axisLabel: this.getAxisLabel('category', 'x'),
-          data: x,
-          splitArea: {
-            show: true
-          }
-        },
-        yAxis: {
-          type: 'category',
-          name: this.getAxisName('title2'),
-          axisLabel: this.getAxisLabel('category', 'y'),
-          nameTextStyle: this.getNameTextStyle('y'),
-          nameLocation: this.form.setting.nameLocation2,
-          data: y,
-          splitArea: {
-            show: true
-          }
-        },
-        visualMap: {
-          min: 0,
-          max: max,
-          calculable: true,
-          orient: 'horizontal',
-          left: 'center',
-          show: false,
-          inRange: {
-            color: this.form.setting.config.color.map(item => item.color)
-          }
-        },
-        series: [
-          {
-            name: '',
-            type: 'heatmap',
-            data: data,
-            label: this.getDataLabel(),
-            emphasis: {
-              itemStyle: {
-                shadowBlur: 10,
-                shadowColor: 'rgba(0, 0, 0, 0.5)'
-              }
-            }
-          }
-        ]
-      }
-    },
-  }
-}
-</script>

+ 0 - 33
src/views/analyse/custom/components/Charts/Line/index.vue

@@ -1,33 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CLine",
-  data() {
-    return {
-      id: 'line'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { xAxis, yAxis, series, grid } = this.get1AxisOption('line', undefined)
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        grid: grid,
-        xAxis: xAxis,
-        yAxis: yAxis,
-        series: series
-      }
-    },
-  }
-}
-</script>

+ 0 - 67
src/views/analyse/custom/components/Charts/Map/index.vue

@@ -1,67 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOption } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOption],
-  name: "CMap",
-  data() {
-    return {
-      id: 'map',
-      map: {
-        name: '全球',
-        data: {}
-      }
-    }
-  },
-  async mounted() {
-    this.$api.getMapData({ path: `/map/${this.map.name}.json` }).then(response => {
-      this.map.data = response.data
-      this.$echarts.registerMap(this.map.name, this.map.data)
-      this.initChart(this.id, this.getOption())
-    })
-  },
-  methods: {
-    getOption() {
-      let max = 0, x = this.selected.x, data = [], nameMap = {}
-      for (let i = 0; i < x.length; i++) {
-        const value = this.getDataCount(x[i])
-        data.push({
-          name: x[i],
-          value: value
-        })
-        if (value > max) {
-          max = value
-        }
-      }
-      return {
-        visualMap: {
-          min: 0,
-          max: max,
-          calculable: true,
-          orient: 'horizontal',
-          left: 'center',
-          show: false,
-        },
-        series: [
-          {
-            name: '',
-            type: 'map',
-            map: this.map.name,
-            roam: true,
-            label: this.getDataLabel(),
-            itemStyle: {
-              borderWidth: 0
-            },
-            data: data,
-            nameMap: nameMap
-          }
-        ]
-      }
-    },
-  }
-}
-</script>

+ 0 - 67
src/views/analyse/custom/components/Charts/Map/index1.vue

@@ -1,67 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOption } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOption],
-  name: "CMap1",
-  data() {
-    return {
-      id: 'map',
-      map: {
-        name: '中国',
-        data: {}
-      }
-    }
-  },
-  async mounted() {
-    this.$api.getMapData({ path: `/map/${this.map.name}.json` }).then(response => {
-      this.map.data = response.data
-      this.$echarts.registerMap(this.map.name, this.map.data)
-      this.initChart(this.id, this.getOption())
-    })
-  },
-  methods: {
-    getOption() {
-      let max = 0, x = this.selected.x, data = [], nameMap = {}
-      for (let i = 0; i < x.length; i++) {
-        const value = this.getDataCount(x[i])
-        data.push({
-          name: x[i],
-          value: value
-        })
-        if (value > max) {
-          max = value
-        }
-      }
-      return {
-        visualMap: {
-          min: 0,
-          max: max,
-          calculable: true,
-          show: false,
-          orient: 'horizontal',
-          left: 'center',
-        },
-        series: [
-          {
-            name: '',
-            type: 'map',
-            map: this.map.name,
-            roam: true,
-            label: this.getDataLabel(),
-            itemStyle: {
-              borderWidth: 0
-            },
-            data: data,
-            nameMap: nameMap
-          }
-        ]
-      }
-    },
-  }
-}
-</script>

+ 0 - 81
src/views/analyse/custom/components/Charts/Map/index2.vue

@@ -1,81 +0,0 @@
-<template>
-  <div style="position: relative">
-    <div v-for="map in maps">
-      <div style="position: absolute;right: 0;z-index: 100">
-        <el-button icon="el-icon-camera-solid" size="mini" @click="handleScreenshot(map.name, map.name)">截图</el-button>
-      </div>
-      <el-tabs v-model="active[map.name]">
-        <el-tab-pane :label="map.name" :name="map.name">
-          <div :id="map.name" :style="{ width: width, height: height }"></div>
-        </el-tab-pane>
-      </el-tabs>
-    </div>
-  </div>
-</template>
-
-<script>
-import { chartOption } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOption],
-  name: "CMap2",
-  data() {
-    return {
-      maps: [],
-      active: {}
-    }
-  },
-  async mounted() {
-    await Promise.all(this.selected.x.map(async (item) => {
-      const { data } = await this.$api.getMapData({ path: `/map/${item}.json` })
-      this.maps.push({
-        name: item,
-        map: data
-      })
-      this.$set(this.active, item, item)
-      this.$echarts.registerMap(item, data)
-    }))
-    this.maps.map(item => {
-      this.initChart(item.name, this.getOption(this.getDataCount(item.name), item.name))
-    })
-  },
-  methods: {
-    getOption(count, name) {
-      let max = 1, x = Object.keys(count || {}), data = [], nameMap = {}
-      for (let i = 0; i < x.length; i++) {
-        data.push({
-          name: x[i],
-          value: count[x[i]]
-        })
-        if (count[x[i]] > max) {
-          max = count[x[i]]
-        }
-      }
-      return {
-        visualMap: {
-          min: 0,
-          max: max,
-          calculable: true,
-          orient: 'horizontal',
-          left: 'center',
-          show: false,
-        },
-        series: [
-          {
-            name: '',
-            type: 'map',
-            map: name,
-            roam: true,
-            label: this.getDataLabel(),
-            itemStyle: {
-              borderWidth: 0
-            },
-            data: data,
-            nameMap: nameMap
-          }
-        ]
-      }
-    },
-  }
-}
-</script>

+ 0 - 34
src/views/analyse/custom/components/Charts/MultipleBar/index.vue

@@ -1,34 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-export default {
-  mixins: [chartOptionMixins],
-  name: "CMultipleBar",
-  data() {
-    return {
-      id: 'multipleBar',
-      barWidth: ''
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { legend, xAxis, yAxis, series, grid } = this.get2AxisOption('bar', undefined)
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        legend,
-        grid: grid,
-        xAxis: xAxis,
-        yAxis: yAxis,
-        series: series
-      }
-    }
-  }
-}
-</script>

+ 0 - 35
src/views/analyse/custom/components/Charts/MultipleColumn/index.vue

@@ -1,35 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-import { random } from "@/utils";
-export default {
-  mixins: [chartOptionMixins],
-  name: "CMultipleColumn",
-  data() {
-    return {
-      id: 'multipleColumn',
-      barWidth: ''
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { legend, xAxis, yAxis, series, grid } = this.get2AxisOption('bar', undefined)
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        legend,
-        grid: grid,
-        xAxis: yAxis,
-        yAxis: xAxis,
-        series: series
-      }
-    }
-  }
-}
-</script>

+ 0 - 33
src/views/analyse/custom/components/Charts/MultipleLine/index.vue

@@ -1,33 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-export default {
-  mixins: [chartOptionMixins],
-  name: "CMultipleLine",
-  data() {
-    return {
-      id: 'multipleLine'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { legend, xAxis, yAxis, series, grid } = this.get2AxisOption('line', '')
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        legend,
-        grid: grid,
-        xAxis: xAxis,
-        yAxis: yAxis,
-        series: series
-      }
-    }
-  }
-}
-</script>

+ 0 - 45
src/views/analyse/custom/components/Charts/Pie/index.vue

@@ -1,45 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CPie",
-  data() {
-    return {
-      id: 'pie'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        legend: {
-          type: this.form.setting.type2,
-          show: this.form.setting.legend,
-          textStyle: {
-            fontFamily: this.form.setting.fontFamily3,
-            color: this.form.setting.legendColor,
-            fontSize: this.form.setting.legendFontSize
-          },
-          ...this.getLegendLocation(),
-        },
-        series: [
-          {
-            name: '',
-            type: 'pie',
-            data: this.getSeriesData()
-          }
-        ]
-      }
-    },
-  }
-}
-</script>

+ 0 - 105
src/views/analyse/custom/components/Charts/Radar/index.vue

@@ -1,105 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOption, chartOptionMixins } from "@/views/analyse/custom/mixins";
-import { random } from "@/utils";
-import { getLineDataArr } from "@/utils/chart";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CRadar",
-  data() {
-    return {
-      id: 'radar',
-      max: 0
-    }
-  },
-  mounted() {
-
-  },
-  methods: {
-    getSum(x) {
-      let sum = 0
-      for (let i = 0; i < this.selected.y.length; i++) {
-        sum += this.getDataCount(x, this.selected.y[i])
-      }
-      if (this.max < sum) {
-        this.max = sum
-      }
-      return this.max
-    },
-    getMax() {
-      let max = 0
-      for (let i = 0; i < this.selected.x.length; i++) {
-        let data = this.getDataCount(this.selected.x[i])
-        if (max < data) {
-          max = data
-        }
-      }
-      return max
-    },
-    getOption() {
-      const matrix = this.form.schema.y.field
-      const enable = this.form.setting.config.line.enable
-      let legend = matrix ? this.selected.y.map(item => item) : []
-      let color = matrix ? this.selected.y.map(item => this.getColor(item)) : undefined
-      let radar = this.selected.x.map(x => {
-        return {
-          name: x,
-          max: matrix ? this.getSum(x) : this.getMax()
-        }
-      })
-      let data = matrix ? this.selected.y.map(y => {
-        return {
-          value: this.selected.x.map(x => this.getDataCount(x, y)),
-          name: y,
-          label: this.getDataLabel()
-        }
-      }) : [{
-        value: this.selected.x.map(x => this.getDataCount(x)),
-        name: '总和',
-        lineStyle: {
-          color: this.getColor('主题颜色')
-        },
-        label: this.getDataLabel()
-      }]
-      if (matrix && enable) {
-        const name = this.form.setting.config.line.name
-        legend.push(name)
-        data.push({
-          value: getLineDataArr(this.form, this.selected, this.count),
-          name: name,
-          label: this.getDataLabel()
-        })
-        color.push(this.form.setting.config.line.color)
-      }
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        color: color,
-        legend: {
-          data: legend
-        },
-        radar: {
-          indicator: radar,
-          axisName: {
-            show: this.form.setting.show,
-            fontFamily: this.form.setting.fontFamily,
-            fontSize: this.form.setting.fontSize,
-            fontWeight: this.form.setting.fontWeight ? 'bold' : 'normal',
-            color: this.form.setting.fontColor,
-          },
-        },
-        series: [{
-          name: '',
-          type: 'radar',
-          data: data
-        }]
-      }
-    },
-  }
-}
-</script>

+ 0 - 85
src/views/analyse/custom/components/Charts/Radar/index2.vue

@@ -1,85 +0,0 @@
-<template>
-  <div style="position: relative">
-    <div v-for="item in selected.y">
-      <div style="position: absolute;right: 0;z-index: 100">
-        <el-button icon="el-icon-camera-solid" size="mini" @click="handleScreenshot(item, item)">截图</el-button>
-      </div>
-      <el-tabs v-model="active[item]">
-        <el-tab-pane :label="item" :name="item">
-          <div :id="item" :style="{ width: width, height: height }"></div>
-        </el-tab-pane>
-      </el-tabs>
-    </div>
-  </div>
-</template>
-
-<script>
-import { chartOption, chartOptionMixins } from "@/views/analyse/custom/mixins";
-import { random } from "@/utils";
-
-export default {
-  mixins: [chartOption],
-  name: "CRadar2",
-  data() {
-    return {
-      active: {},
-      max: 0
-    }
-  },
-  mounted() {
-    this.selected.y.map(item => {
-      this.$set(this.active, item, item)
-      this.$nextTick(() => {
-        this.initChart(item, this.getOption(item))
-      })
-    })
-  },
-  methods: {
-    getSum(x) {
-      let sum = 0
-      for (let i = 0; i < this.selected.y.length; i++) {
-        sum += this.getDataCount(x, this.selected.y[i])
-      }
-      if (this.max < sum) {
-        this.max = sum
-      }
-      return this.max
-    },
-    getOption(y) {
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        legend: {},
-        radar: {
-          indicator: this.selected.x.map(x => {
-            return {
-              name: x,
-              max: this.getSum(x)
-            }
-          }),
-          axisName: {
-            show: this.form.setting.show,
-            fontFamily: this.form.setting.fontFamily,
-            fontSize: this.form.setting.fontSize,
-            fontWeight: this.form.setting.fontWeight ? 'bold' : 'normal',
-            color: this.form.setting.fontColor,
-          },
-        },
-        series: [{
-          name: y,
-          type: 'radar',
-          data: [{
-            value: this.selected.x.map(x => this.getDataCount(x, y)),
-            name: '',
-            lineStyle: {
-              color: this.getColor(y)
-            },
-            label: this.getDataLabel()
-          }]
-        }]
-      }
-    },
-  }
-}
-</script>

+ 0 - 51
src/views/analyse/custom/components/Charts/Sankey/index.vue

@@ -1,51 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-import { random } from "@/utils";
-export default {
-  mixins: [chartOptionMixins],
-  name: "CSankey",
-  data() {
-    return {
-      id: 'sankey'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let links = [], x = this.selected.x, y = this.selected.y
-      for (let i = 0; i < y.length; i++) {
-        for (let j = 0; j < x.length; j++) {
-          links.push({
-            source: x[j],
-            target: y[i],
-            value: this.getDataCount(x[j], y[i])
-          })
-        }
-      }
-      return {
-        series: {
-          type: 'sankey',
-          layout: 'none',
-          emphasis: {
-            focus: 'adjacency'
-          },
-          data: [...x, ...y].map(item => {
-            return {
-              name: item,
-              itemStyle: {
-                color: this.getColor(item),
-              }
-            }
-          }),
-          links: links
-        }
-      }
-    }
-  }
-}
-</script>

+ 0 - 111
src/views/analyse/custom/components/Charts/Scatter/index.vue

@@ -1,111 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-import { random } from "@/utils";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CScatter",
-  data() {
-    return {
-      id: 'scatter',
-      size: 0,
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      if (this.form.schema.x.ptype === 2) {
-        this.dateTimeSort()
-      }
-      let data = [], x = ['', ...this.selected.x, ''], y = ['', ...this.selected.y, '']
-      for (let i = 0; i < x.length; i++) {
-        for (let j = 0; j < y.length; j++) {
-          if (x[i] && y[j]) {
-            data.push([i, j, this.getDataCount(x[i], y[j])])
-          }
-        }
-      }
-      const symbolSize = this.getSymbolSize(data)
-      return {
-        grid: {
-          top: this.form.setting.gridTop + '%',
-          left: this.form.setting.gridLeft + '%',
-          right: this.form.setting.gridRight + '%',
-          bottom: this.form.setting.gridBottom + '%',
-          containLabel: true
-        },
-        xAxis: [
-          {
-            type: 'category',
-            boundaryGap: false,
-            name: this.form.setting.title1,
-            nameTextStyle: this.getNameTextStyle('x'),
-            nameLocation: this.form.setting.nameLocation,
-            scale: true,
-            data: x,
-            axisLabel: this.getAxisLabel('category', 'x'),
-            splitLine: {
-              show: this.form.setting.splitLine
-            }
-          }
-        ],
-        yAxis: [
-          {
-            type: 'category',
-            boundaryGap: false,
-            name: this.form.setting.title2,
-            nameTextStyle: this.getNameTextStyle('y'),
-            nameLocation: this.form.setting.nameLocation2,
-            scale: true,
-            data: y,
-            axisLabel: this.getAxisLabel('category', 'y'),
-            splitLine: {
-              show: this.form.setting.splitLine2
-            }
-          }
-        ],
-        series: [
-          {
-            name: '',
-            type: 'scatter',
-            emphasis: {
-              focus: 'series'
-            },
-            symbolSize: (val) => {
-              return symbolSize[val[2]]
-            },
-            itemStyle: {
-              color: (val) => {
-                const data = val.value[2]
-                const color = this.form.setting.config.table.find(item => data >= item.min && data <= item.max)
-                if (color) {
-                  return color.color
-                }
-                return '#5470c6'
-              }
-            },
-            label: this.getDataLabel(),
-            data: data,
-          },
-        ]
-      }
-    },
-    getSymbolSize(dataList) {
-      const data = dataList.map(item => item[2]).sort((a, b) => {
-        return b - a
-      })
-      const maxVal = data[0]
-      let symbolSize = {}
-      data.map(item => {
-        symbolSize[item] = Math.round(item / maxVal * 100)
-      })
-      return symbolSize
-    }
-  }
-}
-</script>

+ 0 - 34
src/views/analyse/custom/components/Charts/StackedBar/index.vue

@@ -1,34 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-export default {
-  mixins: [chartOptionMixins],
-  name: "CStackedBar",
-  data() {
-    return {
-      id: 'stackedBar',
-      barWidth: ''
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { legend, xAxis, yAxis, series, grid } = this.get2AxisOption('bar', 'Ad')
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        legend,
-        grid: grid,
-        xAxis: xAxis,
-        yAxis: yAxis,
-        series: series
-      }
-    }
-  }
-}
-</script>

+ 0 - 35
src/views/analyse/custom/components/Charts/StackedColumn/index.vue

@@ -1,35 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-import { random } from "@/utils";
-export default {
-  mixins: [chartOptionMixins],
-  name: "CStackedColumn",
-  data() {
-    return {
-      id: 'stackedColumn',
-      barWidth: ''
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let { legend, xAxis, yAxis, series, grid } = this.get2AxisOption('bar', 'total')
-      return {
-        tooltip: {
-          trigger: 'item'
-        },
-        legend,
-        grid: grid,
-        xAxis: yAxis,
-        yAxis: xAxis,
-        series: series
-      }
-    }
-  }
-}
-</script>

+ 0 - 47
src/views/analyse/custom/components/Charts/Sunburst/index.vue

@@ -1,47 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CSunburst",
-  data() {
-    return {
-      id: 'sunburst'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let data = []
-      this.selected.x.map(x => {
-        let value = {
-          name: x,
-          children: []
-        }
-        this.selected.y.map(y => {
-          value.children.push({
-            name: y + ' (' + this.getDataCount(x, y) + ')',
-            value: this.getDataCount(x, y),
-            itemStyle: {
-              color: this.getColor(y)
-            }
-          })
-        })
-        data.push(value)
-      })
-      return {
-        series: {
-          type: 'sunburst',
-          data: data,
-          label: this.getDataLabel()
-        }
-      }
-    },
-  }
-}
-</script>

+ 0 - 21
src/views/analyse/custom/components/Charts/Table/Column.vue

@@ -1,21 +0,0 @@
-<template>
-  <el-table-column :label="column.name" :prop="String(column.id)" align="center">
-    <template v-for="(item, index) in column.children">
-      <table-column v-if="item.children && item.children.length" :column="item"></table-column>
-      <el-table-column v-else :label="item.name" :prop="String(item.id)" align="center"></el-table-column>
-    </template>
-  </el-table-column>
-</template>
-
-<script>
-export default {
-  name: "TableColumn",
-  props: {
-    column: Object
-  }
-}
-</script>
-
-<style lang="less">
-
-</style>

+ 0 - 265
src/views/analyse/custom/components/Charts/Table/index.vue

@@ -1,265 +0,0 @@
-<template>
-  <div :id="id">
-    <el-table :data="tableData" :span-method="objectSpanMethod" :cell-style="cellStyle" border header-row-class-name="custom-table-header" style="margin-bottom: 40px;">
-      <el-table-column v-if="showIndex" type="index" label="序号" align="center"></el-table-column>
-      <el-table-column v-for="col in tableCol" :prop="col.prop" :label="col.label" align="center" show-overflow-tooltip></el-table-column>
-      <table-column v-if="treeType !== 0" v-for="col in source" :column="col" />
-    </el-table>
-  </div>
-</template>
-
-<script>
-import { chartOption, customPage } from "@/views/analyse/custom/mixins";
-import { mapGetters } from "vuex";
-import { findChildren, getTreeDataList, getTreeLastChildren } from "@/utils";
-import TableColumn from "./Column";
-import { getXAxisName } from "@/utils/chart";
-
-export default {
-  name: "CTable",
-  components: { TableColumn },
-  mixins: [chartOption],
-  data() {
-    return {
-      id: 'cTable',
-      tableData: [],
-      tableCol: [],
-      showIndex: false,
-      isLevel: 0,
-      maxLevel: 0,
-      treeType: 0,
-      rowspan: {},
-      source: [],
-      number: ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'],
-      tableConfig: []
-    }
-  },
-  computed: {
-    ...mapGetters(['patentField'])
-  },
-  mounted() {
-    if (this.form.schema.x.type === 6 || this.form.schema.y.type === 6) {
-      this.showIndex = false
-      this.initTree(this.form.schema.x.type === 6, this.form.schema.y.type === 6)
-    } else {
-      this.showIndex = true
-      this.initData()
-    }
-    this.tableConfig = JSON.parse(JSON.stringify(this.form.setting.config.table))
-  },
-  methods: {
-    cellStyle({ row, column, rowIndex, columnIndex }) {
-      const { property, label, type } = column
-      let color = ''
-      let level = ['level-1', 'level-2', 'level-3', 'level-4', 'level-5', 'level-6', 'level-7', 'level-8', 'level-9', 'level-10']
-      if (['name', 'index', ...level].indexOf(property) === -1 && type === 'default') {
-        const data = row[property]
-        this.tableConfig.map(item => {
-          if (data >= item.min && data <= item.max) {
-            color = item.color
-          }
-        })
-      }
-      return {
-        background: color,
-        color: '#000'
-      }
-    },
-    getTreeLastChildren(dimension) {
-      const tree = getTreeDataList(this.form.source[dimension], [])
-      const data = tree.filter(item => this.treeKey[dimension].indexOf(item.id) !== -1)
-      let arr = data.filter(item =>  !item.children || !item.children.length)
-      data.map(item => arr.push(...getTreeLastChildren(item.children || [], [])))
-      return arr.map(item => item.id)
-    },
-    getTreeColumnSource() {
-      const tree = getTreeDataList(this.form.source.y, [])
-      return tree.filter(item => this.treeKey.y.indexOf(item.id) !== -1)
-    },
-    getTreeSource(tree1, tree2) {
-      let x, y, source
-      if (tree1 && !tree2) {
-        this.treeType = 0
-        x = this.treeKey.x
-        y = this.selected.y
-        source = JSON.parse(JSON.stringify(this.form.source.x))
-      }
-      if (!tree1 && tree2) {
-        this.treeType = 1
-        x = this.selected.x
-        y = this.getTreeLastChildren('y')
-        source = []
-        this.source = this.getTreeColumnSource()
-      }
-      if (tree1 && tree2) {
-        this.treeType = 2
-        x = this.treeKey.x
-        y = this.getTreeLastChildren('y')
-        source = JSON.parse(JSON.stringify(this.form.source.x))
-        this.source = this.getTreeColumnSource()
-      }
-      return { x, y, source }
-    },
-    initTree(tree1, tree2) {
-      const matrix = this.form.schema.y.field
-      const { x, y, source } = this.getTreeSource(tree1, tree2)
-      if (!x.length) {
-        return false
-      }
-      if (this.treeType === 0 || this.treeType === 2) {
-        let column = []
-        let tree = getTreeDataList(source, [])
-        tree.map(item => item.path = item.path.split('/').map(p => parseInt(p, 0)))
-        this.isLevel = tree.find(item => item.id === x[0]).level || 0
-        const isTree = tree.filter(item => x.indexOf(item.id) !== -1)
-        const maxLevel = Math.max(...getTreeDataList(isTree, []).map(item => item.level))
-        const lastChildren = this.findLastChildren(isTree, [])
-        let index = 1
-        for (let i = this.isLevel; i <= maxLevel; i++) {
-          this.tableCol.push({
-            prop: `level-${i}`,
-            label: `${this.number[index++]}级`
-          })
-        }
-        this.tableCol.map(col => {
-          const level = parseInt(col.prop.replaceAll('level-', ''))
-          const data = getTreeDataList(isTree, [])
-          this.$set(this.rowspan, col.prop, this.getRowspan(data, level, lastChildren))
-        })
-        if (matrix) {
-          if (this.treeType === 2) {
-
-          } else {
-            y.map(item => {
-              this.tableCol.push({
-                prop: item,
-                label: item
-              })
-            })
-          }
-          column = [...y]
-        } else {
-          this.tableCol.push({
-            prop: 'count',
-            label: '数量'
-          })
-          column = ['count']
-        }
-        this.treeRecFun(isTree, {}, column)
-      } else {
-        this.tableCol.push({
-          prop: 'name',
-          label: getXAxisName(this.patentField, this.form.schema.x.field, this.form.schema.x.expand)
-        })
-        x.map(x => {
-          let data = {
-            name: x
-          }
-          y.map(y => {
-            data[y] = this.getDataCount(x, y, false)
-          })
-          this.tableData.push(data)
-        })
-      }
-      this.initTreeData()
-    },
-    initTreeData() {
-
-    },
-    getRowspan(tree, level, lastChildren) {
-      let arr = []
-      let index = 0
-      const data = tree.filter(item => item.level === level)
-      arr = lastChildren.map(item => { return 1 })
-      for (let i = 0; i < data.length; i++) {
-        const children = this.findLastChildren(data[i].children || [], [])
-        arr[index] = children.length
-        if (arr[index]) {
-          for (let j = index + 1; j < (arr[index] + index); j++) {
-            arr[j] = 0
-          }
-          index += children.length
-        } else {
-          arr[index++] = 1
-        }
-      }
-      return arr
-    },
-    findLastChildren(treeList, arr) {
-      for (let i = 0; i < treeList.length; i++) {
-        if (treeList[i].children && treeList[i].children.length) {
-          this.findLastChildren(treeList[i].children, arr)
-        } else {
-          arr.push(treeList[i])
-        }
-      }
-      return arr
-    },
-    treeRecFun(treeData, data, column) {
-      treeData.forEach(tree => {
-        let key = `level-${tree.level}`
-        data[key] = tree.name
-        if (tree.children && tree.children.length) {
-          this.treeRecFun(tree.children, data, column)
-        } else {
-          let c = {}
-          column.map(item => {
-            c[item] = this.getDataCount(tree.id, item === 'count' ? undefined : item, false)
-          })
-          this.tableData.push({ ...data, ...c })
-          data[key] = null
-        }
-      })
-    },
-    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
-      if (!this.showIndex) {
-        const key = `level-${columnIndex + this.isLevel}`
-        const rowspan = this.rowspan[key]
-        if (rowspan !== undefined) {
-          return { rowspan: rowspan[rowIndex], colspan: rowspan[rowIndex] ? 1 : 0 }
-        } else {
-          return { rowspan: 1, colspan: 1 }
-        }
-      }
-    },
-    initData() {
-      const matrix = this.form.schema.y.field
-      if (matrix) {
-        this.tableCol.push({
-          prop: 'name',
-          label: getXAxisName(this.patentField, this.form.schema.x.field, this.form.schema.x.expand)
-        })
-        this.selected.y.map(y => {
-          this.tableCol.push({
-            prop: y,
-            label: y
-          })
-        })
-        this.selected.x.map(x => {
-          let data = {
-            name: x
-          }
-          this.selected.y.map(y => {
-            data[y] = this.getDataCount(x, y)
-          })
-          this.tableData.push(data)
-        })
-      } else {
-        this.tableCol.push({
-          prop: 'name',
-          label: getXAxisName(this.patentField, this.form.schema.x.field, this.form.schema.x.expand)
-        }, {
-          prop: 'count',
-          label: '数量'
-        })
-        for (let x of this.selected.x) {
-          this.tableData.push({
-            name: x,
-            count: this.getDataCount(x)
-          })
-        }
-      }
-    },
-  }
-}
-</script>

+ 0 - 47
src/views/analyse/custom/components/Charts/Tree/index.vue

@@ -1,47 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-import { mapGetters } from "vuex";
-import { getTreeDataList } from "@/utils";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CTree",
-  data() {
-    return {
-      id: 'tree'
-    }
-  },
-  computed: {
-    ...mapGetters(['patentField'])
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      let tree = []
-      let data = JSON.parse(JSON.stringify(this.form.source.x))
-      const field = this.patentField.find(item => item.id === this.form.schema.x.field)
-      let treeData = getTreeDataList(data, [])
-      treeData.map(item => {
-        item.name = `${item.name} (${this.getDataCount(item.id)})`
-      })
-      tree = [{
-        name: field.name,
-        id: field.id,
-        children: data
-      }]
-      return {
-        series: {
-          type: 'tree',
-          data: tree,
-          label: this.getDataLabel()
-        }
-      }
-    },
-  }
-}
-</script>

+ 0 - 89
src/views/analyse/custom/components/Charts/Treemap/index.vue

@@ -1,89 +0,0 @@
-<template>
-  <div :id="id" :style="{ width: width, height: height }"></div>
-</template>
-
-<script>
-import { chartOptionMixins } from "@/views/analyse/custom/mixins";
-
-export default {
-  mixins: [chartOptionMixins],
-  name: "CTreemap",
-  data() {
-    return {
-      id: 'treemap'
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    getOption() {
-      const matrix = this.form.schema.y.field
-      let data = []
-      if (matrix) {
-        this.selected.x.map(x => {
-          let value = {
-            name: x,
-            value: this.getDataCount(x),
-            itemStyle: {
-              color: this.getColor(x)
-            },
-            children: []
-          }
-          this.selected.y.map(y => {
-            value.children.push({
-              name: y,
-              value: this.getDataCount(x, y),
-              children: []
-            })
-          })
-          data.push(value)
-        })
-      } else {
-        this.selected.x.map(x => {
-          data.push({
-            name: x,
-            value: this.getDataCount(x),
-            itemStyle: {
-              color: this.getColor(x)
-            },
-            children: []
-          })
-        })
-      }
-      return {
-        series: [{
-          breadcrumb: {
-            show: false
-          },
-          type: 'treemap',
-          itemStyle: {
-            borderColor: '#fff'
-          },
-          label: this.getDataLabel(),
-          levels: [
-            {
-              itemStyle: {
-                borderWidth: 0,
-                gapWidth: 5
-              }
-            },
-            {
-              itemStyle: {
-                gapWidth: 1
-              }
-            },
-            {
-              colorSaturation: [0.35, 0.5],
-              itemStyle: {
-                gapWidth: 1,
-                borderColorSaturation: 0.6
-              }
-            }
-          ],
-          data: data,
-        }]
-      }
-    },
-  }
-}
-</script>

+ 0 - 51
src/views/analyse/custom/components/Charts/index.js

@@ -1,51 +0,0 @@
-import Line from "./Line";
-import Bar from "./Bar";
-import Area from "./Area";
-import Column from "./Column";
-import MultipleLine from "./MultipleLine";
-import StackedBar from "./StackedBar";
-import MultipleBar from "./MultipleBar";
-import StackedColumn from "./StackedColumn";
-import MultipleColumn from "./MultipleColumn";
-import Doughnut from "./Doughnut";
-import Pie from "./Pie";
-import Radar from "./Radar";
-import Radar2 from "./Radar/index2";
-import Scatter from "./Scatter";
-import Heat from "./Heat";
-import Sankey from "./Sankey";
-import Sunburst from "./Sunburst";
-import Treemap from "./Treemap";
-import Tree from "./Tree";
-import Map from "./Map";
-import Map1 from "./Map/index1";
-import Map2 from "./Map/index2";
-import Table from "./Table";
-
-export default {
-  install(Vue, options) {
-    Vue.component(Line.name, Line);
-    Vue.component(Bar.name, Bar);
-    Vue.component(Area.name, Area);
-    Vue.component(Column.name, Column);
-    Vue.component(MultipleLine.name, MultipleLine);
-    Vue.component(StackedBar.name, StackedBar);
-    Vue.component(MultipleBar.name, MultipleBar);
-    Vue.component(StackedColumn.name, StackedColumn);
-    Vue.component(MultipleColumn.name, MultipleColumn);
-    Vue.component(Doughnut.name, Doughnut);
-    Vue.component(Pie.name, Pie);
-    Vue.component(Radar.name, Radar);
-    Vue.component(Radar2.name, Radar2);
-    Vue.component(Scatter.name, Scatter);
-    Vue.component(Heat.name, Heat);
-    Vue.component(Sankey.name, Sankey);
-    Vue.component(Sunburst.name, Sunburst);
-    Vue.component(Treemap.name, Treemap);
-    Vue.component(Tree.name, Tree);
-    Vue.component(Map.name, Map);
-    Vue.component(Map1.name, Map1);
-    Vue.component(Map2.name, Map2);
-    Vue.component(Table.name, Table);
-  }
-}

+ 0 - 56
src/views/analyse/custom/components/Charts/index.vue

@@ -1,56 +0,0 @@
-<template>
-  <div v-if="refresh">
-    <component :is="chartType.component" :width="width" :height="height"></component>
-  </div>
-</template>
-
-<script>
-import { customPage } from "../../mixins";
-
-export default {
-  mixins: [customPage],
-  props: {
-    width: {
-      type: String,
-      default: '100%'
-    },
-    height: {
-      type: String,
-      default: '500px'
-    },
-  },
-  data() {
-    return {
-      refresh: false,
-      chartType: {},
-    }
-  },
-  mounted() {
-    this.refreshChart()
-  },
-  methods: {
-    initData() {
-      if (!this.form.setting.type) {
-        return false
-      }
-      this.chartType = this.$constants.chartType.find(item => item.value === this.form.setting.type)
-      if (this.chartType.type === 1 && this.form.schema.y.field) {
-        return false
-      }
-      this.$store.commit('SET_MY_CHART', null)
-      return true
-    },
-    refreshChart() {
-      this.refresh = false
-      const ret = this.initData()
-      this.$nextTick(() => {
-        this.refresh = ret
-      })
-    },
-  }
-}
-</script>
-
-<style lang="less">
-
-</style>

+ 0 - 50
src/views/analyse/custom/components/Tabs/Data.vue

@@ -1,50 +0,0 @@
-<template>
-  <div class="custom-analyse-data">
-    <el-collapse v-model="activeNames">
-      <el-collapse-item title="一维数据" name="2">
-        <data-item dimension="x"/>
-      </el-collapse-item>
-      <el-collapse-item title="二维数据" name="3">
-        <data-item dimension="y"/>
-      </el-collapse-item>
-    </el-collapse>
-  </div>
-</template>
-
-<script>
-import mixins from "./mixins";
-import DataItem from "./DataItem";
-export default {
-  mixins: [mixins],
-  components: {
-    DataItem
-  },
-  data() {
-    return {
-      activeNames: ['2', '3']
-    }
-  },
-  mounted() {
-  }
-}
-</script>
-
-<style lang="scss">
-.custom-analyse-data {
-  .el-collapse {
-    border-top: transparent !important;
-  }
-  .el-collapse-item__header {
-    font-weight: bold !important;
-    padding: 0 20px !important;
-    border-bottom: 1px solid #EBEEF5 !important;
-  }
-  .el-form-item {
-    padding: 0 15px;
-    margin-bottom: 0 !important;
-  }
-  .el-collapse {
-    border-top: 0 !important;
-  }
-}
-</style>

+ 0 - 599
src/views/analyse/custom/components/Tabs/DataItem.vue

@@ -1,599 +0,0 @@
-<template>
-  <div class="select-box" v-loading="selectedLoad[dimension]">
-    <el-cascader v-model="form.schema[dimension].field" :options="options[dimension]" :props="props" @change="onChange(true, true)" :show-all-levels="false" clearable style="width: 100%"></el-cascader>
-    <el-select v-if="expandField[dimension].length" v-model="form.schema[dimension].expand" @change="onChange3(dimension)" placeholder="请选择拓展字段" style="width: 100%;margin-top: 15px;">
-      <el-option v-for="item in expandField[dimension]" :value="item.id" :label="item.name"></el-option>
-    </el-select>
-    <div>
-      <div style="text-align: right;height: 40px;">
-        <template v-if="form.schema[dimension].type !== 6">
-          <el-button v-if="form.schema[dimension].ptype === 3 || form.schema[dimension].ptype === 4" type="text" @click="handleEdit">编辑</el-button>
-          <template v-else-if="form.schema[dimension].ptype === 1 || form.schema[dimension].ptype === 2">
-            <el-dropdown size="medium" @command="handleCommand">
-              <el-button type="text" class="el-dropdown-link">
-                <span v-if="form.schema[dimension].num !== allData">{{ form.schema[dimension].ptype === 1 ? `Top` : `最近` }} {{ form.schema[dimension].num }}</span>
-                <span v-else>全部数据</span>
-                <i class="el-icon-arrow-down el-icon--right"></i>
-              </el-button>
-              <el-dropdown-menu slot="dropdown">
-                <el-dropdown-item v-for="i in 5" :command="i * 10"><span>{{ form.schema[dimension].ptype === 1 ? `Top` : `最近` }}</span> {{ i * 10 }}</el-dropdown-item>
-                <el-dropdown-item :command="allData">全部数据</el-dropdown-item>
-              </el-dropdown-menu>
-            </el-dropdown>
-          </template>
-        </template>
-        <template v-else>
-          <el-button type="text" @click="handleSelectAll">全选</el-button>
-          <el-button type="text" @click="handleCancelAll">取消</el-button>
-        </template>
-      </div>
-      <el-container class="selected-list">
-        <template v-if="form.schema[dimension].ptype !== 0">
-          <el-main :style="{ padding: form.schema[dimension].type === 6 ? '15px 0' : '15px' }">
-            <template v-if="form.schema[dimension].type !== 6">
-              <el-checkbox-group v-model="selected[dimension]">
-                <el-row v-for="item in form.source[dimension]">
-                  <el-checkbox :label="item.name">{{ item.name }}</el-checkbox>
-                </el-row>
-              </el-checkbox-group>
-            </template>
-            <template v-else>
-              <el-tree ref="tree" :data="form.source[dimension]" check-strictly :default-checked-keys="treeKey[dimension]" @check-change="checkChange" show-checkbox node-key="id" :props="defaultProps"></el-tree>
-            </template>
-          </el-main>
-        </template>
-      </el-container>
-    </div>
-    <el-dialog title="编辑" :visible.sync="dialogVisible" width="700px" append-to-body>
-      <div class="sc-form-table">
-        <el-table :data="copyData" border>
-          <el-table-column type="index" width="50" fixed="left">
-            <template slot="header">
-              <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="rowAdd()"></el-button>
-            </template>
-            <template slot-scope="scope">
-              <div class="sc-form-table-handle">
-                <span>{{scope.$index + 1}}</span>
-                <el-button type="danger" icon="el-icon-delete" size="mini" plain circle @click="rowDel(scope.row, scope.$index)"></el-button>
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column label="名称" align="center" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <el-input v-model="scope.row.name" size="small"></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column label="开始" align="center" width="200">
-            <template slot-scope="scope">
-              <div v-if="form.schema[dimension].ptype === 3">
-                <el-select v-model="scope.row.min.operator" size="small" placeholder="" style="width: 60px;">
-                  <el-option :value="0" label=">"></el-option>
-                  <el-option :value="1" label="≥"></el-option>
-                </el-select>
-                <el-input v-model="scope.row.min.value" size="small" style="width: 100px;padding-left: 10px;"></el-input>
-              </div>
-              <div v-else-if="form.schema[dimension].ptype === 4">
-                <el-date-picker v-model="scope.row.startTime" value-format="yyyy-MM-dd" size="small" type="date" placeholder="选择开始日期" style="width: 100%;"></el-date-picker>
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column label="结束" align="center" width="200">
-            <template slot-scope="scope">
-              <div v-if="form.schema[dimension].ptype === 3">
-                <el-select v-model="scope.row.max.operator" size="small" placeholder="" style="width: 60px;">
-                  <el-option :value="2" label="<"></el-option>
-                  <el-option :value="3" label="≤"></el-option>
-                </el-select>
-                <el-input v-model="scope.row.max.value" size="small" style="width: 100px;padding-left: 10px;"></el-input>
-              </div>
-              <div v-else-if="form.schema[dimension].ptype === 4">
-                <el-date-picker v-model="scope.row.endTime" value-format="yyyy-MM-dd" size="small" type="date" placeholder="选择结束日期" style="width: 100%;"></el-date-picker>
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="cancel">取 消</el-button>
-        <el-button type="primary" @click="handleConfirm" :loading="loadingBtn">确 定</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { customPage } from "@/views/analyse/custom/mixins";
-import { mapGetters } from "vuex";
-import { findChildren, getTreeDataList } from "@/utils";
-import { getSourceName, getTreeNameByIds } from "@/utils/chart";
-
-export default {
-  mixins: [customPage],
-  props: ['dimension'],
-  data() {
-    return {
-      allData: 9999999,
-      dialogVisible: false,
-      loadingBtn: false,
-      copyData: [],
-      parentId: -1,
-      props: {
-        expandTrigger: 'click',
-        value: 'id',
-        label: 'name',
-        emitPath: false
-      },
-      expandField: {
-        x: [],
-        y: [],
-      },
-      options: {
-        x: [],
-        y: [],
-      },
-      typeList: {
-        '90': '分类号',
-        '91': '公司/人',
-        '92': '日期',
-        '93': '区域',
-        '94': '引用/同族',
-        '95': '其他',
-        '96': '自定义字段',
-      },
-      defaultProps: {
-        children: 'children',
-        label: 'name'
-      }
-    }
-  },
-  computed: {
-    ...mapGetters(['projectId', 'userinfo', 'customField', 'patentField'])
-  },
-  watch: {
-    selected: {
-      deep: true,
-      handler(n, o) {
-        if (this.form.schema[this.dimension].type !== 6) {
-          this.form.source[this.dimension].map(item => {
-            item.selected = this.selected[this.dimension].indexOf(item.name) !== -1
-          })
-          this.$store.dispatch('getItemSettingColor', [])
-        }
-      }
-    }
-  },
-  mounted() {
-    this.onChange(false, false)
-    if (this.form.schema[this.dimension].type === 6) {
-      let tree = getTreeDataList(this.form.source[this.dimension], [])
-      if (this.treeKey[this.dimension].length) {
-        let data = tree.find(item => item.id === this.treeKey[this.dimension][0])
-        this.parentId = data ? data.parentId : -1
-        this.setChildren(this.form.source[this.dimension])
-      }
-    }
-    this.initOptions()
-  },
-  methods: {
-    getSourceName() {
-      switch (this.dimension) {
-        case 'x':
-          this.form.setting.title1 = getSourceName(this.form.schema.x.field, this.form.schema.x.expand, this.form.schema.x.num)
-          break
-        case 'y':
-          this.form.setting.title2 = getSourceName(this.form.schema.y.field, this.form.schema.y.expand, this.form.schema.y.num)
-          break
-      }
-    },
-    initOptions() {
-      for (let key in this.options) {
-        let data = []
-        for (let type in this.typeList) {
-          let children = {
-            id: type,
-            name: this.typeList[type],
-            children: []
-          }
-          if (type === '96') {
-            children.children = this.patentField.filter(item => item.type < 90 || item.type === 96)
-          } else {
-            children.children = this.patentField.filter(item => String(item.type) === type)
-          }
-          data.push(children)
-        }
-        this.$set(this.options, key, data)
-      }
-    },
-    updateSelected() {
-      this.selected[this.dimension] = this.form.source[this.dimension].slice(0, this.form.schema[this.dimension].num).map(item => item.name)
-      this.getSourceName()
-    },
-    async handleCommand(command) {
-      this.form.schema[this.dimension].num = command
-      await this.$store.dispatch('getSourceDataList', this.dimension)
-      this.updateSelected()
-    },
-    async onChange(option, reset) {
-      const field = this.patentField.find(item => item.id === this.form.schema[this.dimension].field)
-      if (field) {
-        this.$set(this.expandField, this.dimension, field.expand || [])
-      } else {
-        this.$set(this.form.schema[this.dimension], 'field', null)
-        this.$set(this.expandField, this.dimension, [])
-      }
-      if (option && !field) {
-        this.$store.commit('SET_RELOAD_DATA', true)
-      }
-      if (reset) {
-        this.$set(this.form.schema[this.dimension], 'expand', null)
-        await this.onChange3(this.dimension)
-      }
-    },
-    getSchemaType() {
-      let ptype = 0, type = 0
-      const field = this.patentField.find(item => item.id === this.form.schema[this.dimension].field)
-      if (field) {
-        type = field.type
-        if (field.ptype === 0 && this.form.schema[this.dimension].expand) {
-          const expand = field.expand.find(item => item.id === this.form.schema[this.dimension].expand)
-          ptype = expand.ptype
-        } else {
-          ptype = field.ptype
-        }
-      } else {
-        ptype = 0
-      }
-      this.$set(this.form.schema[this.dimension], 'type', type)
-      this.$set(this.form.schema[this.dimension], 'ptype', ptype)
-    },
-    async onChange3(dimension) {
-      this.copyData = []
-      this.getSchemaType()
-      this.$store.commit('SET_CHANGE_NUM')
-      if (this.form.schema[dimension].field) {
-        await this.$store.dispatch('getSourceDataList', dimension)
-      } else {
-        this.form.source[dimension] = []
-      }
-      if (this.form.source[dimension].length === 0) {
-        switch (this.form.schema[dimension].field) {
-          case 32:
-            this.form.source[dimension] = [{
-              name: '0',
-              min: {
-                operator: 1,
-                value: '0'
-              },
-              max: {
-                operator: 3,
-                value: '0'
-              },
-              selected: true
-            }, {
-              name: '1-5',
-              min: {
-                operator: 1,
-                value: '1'
-              },
-              max: {
-                operator: 3,
-                value: '5'
-              },
-              selected: true
-            }, {
-              name: '6-10',
-              min: {
-                operator: 1,
-                value: '6'
-              },
-              max: {
-                operator: 3,
-                value: '10'
-              },
-              selected: true
-            }, {
-              name: '11-20',
-              min: {
-                operator: 1,
-                value: '11'
-              },
-              max: {
-                operator: 3,
-                value: '20'
-              },
-              selected: true
-            }, {
-              name: '21-30',
-              min: {
-                operator: 1,
-                value: '21'
-              },
-              max: {
-                operator: 3,
-                value: '30'
-              },
-              selected: true
-            }, {
-              name: '30以上',
-              min: {
-                operator: 1,
-                value: '30'
-              },
-              max: {
-                operator: 3,
-                value: '99999'
-              },
-              selected: true
-            }]
-            break
-          case 33:
-            this.form.source[dimension] = [{
-              name: '0',
-              min: {
-                operator: 1,
-                value: '0'
-              },
-              max: {
-                operator: 3,
-                value: '0'
-              },
-              selected: true
-            }, {
-              name: '1-5',
-              min: {
-                operator: 1,
-                value: '1'
-              },
-              max: {
-                operator: 3,
-                value: '5'
-              },
-              selected: true
-            }, {
-              name: '6-10',
-              min: {
-                operator: 1,
-                value: '6'
-              },
-              max: {
-                operator: 3,
-                value: '10'
-              },
-              selected: true
-            }, {
-              name: '11-30',
-              min: {
-                operator: 1,
-                value: '11'
-              },
-              max: {
-                operator: 3,
-                value: '30'
-              },
-              selected: true
-            }, {
-              name: '30以上',
-              min: {
-                operator: 1,
-                value: '30'
-              },
-              max: {
-                operator: 3,
-                value: '99999'
-              },
-              selected: true
-            }]
-            break
-          case 34:
-          case 35:
-          case 55:
-            this.form.source[dimension] = [{
-              name: '1',
-              min: {
-                operator: 1,
-                value: '1'
-              },
-              max: {
-                operator: 3,
-                value: '1'
-              },
-              selected: true
-            }, {
-              name: '2-5',
-              min: {
-                operator: 1,
-                value: '2'
-              },
-              max: {
-                operator: 3,
-                value: '5'
-              },
-              selected: true
-            }, {
-              name: '6-10',
-              min: {
-                operator: 1,
-                value: '6'
-              },
-              max: {
-                operator: 3,
-                value: '10'
-              },
-              selected: true
-            }, {
-              name: '11-20',
-              min: {
-                operator: 1,
-                value: '11'
-              },
-              max: {
-                operator: 3,
-                value: '20'
-              },
-              selected: true
-            }, {
-              name: '20-50',
-              min: {
-                operator: 1,
-                value: '20'
-              },
-              max: {
-                operator: 3,
-                value: '50'
-              },
-              selected: true
-            }, {
-              name: '50以上',
-              min: {
-                operator: 1,
-                value: '50'
-              },
-              max: {
-                operator: 3,
-                value: '99999'
-              },
-              selected: true
-            }]
-            break
-        }
-      }
-      this.updateSelected()
-    },
-    handleEdit() {
-      this.copyData = JSON.parse(JSON.stringify(this.form.source[this.dimension]))
-      this.dialogVisible = true
-    },
-    cancel() {
-      this.dialogVisible = false
-    },
-    async handleConfirm() {
-      this.validateForm().then(async (response) => {
-        this.form.source[this.dimension] = JSON.parse(JSON.stringify(this.copyData))
-        let selected = this.selected
-        selected[this.dimension] = this.form.source[this.dimension].map(item => item.name)
-        this.$store.commit('SET_CHART_SELECTED', selected)
-        this.$store.commit('SET_RELOAD_DATA', true)
-        this.dialogVisible = false
-      }).catch(error => {
-        this.$message.error(error)
-      })
-    },
-    validateForm() {
-      return new Promise((resolve, reject) => {
-        const name = this.copyData.map(item => item.name)
-        if (name.indexOf("") !== -1) {
-          reject('请输入名称')
-        }
-        if (new Set(name).size !== name.length) {
-          reject('名称不能重复')
-        }
-        switch (this.form.schema[this.dimension].ptype) {
-          case 3:
-            if (this.copyData.map(item => item.min.value).indexOf("") !== -1 || this.copyData.map(item => item.min.operator).indexOf("") !== -1 || this.copyData.map(item => item.max.value).indexOf("") !== -1 || this.copyData.map(item => item.max.operator).indexOf("") !== -1) {
-              reject('运算符或范围不能为空')
-            }
-            resolve()
-            break;
-          case 4:
-            if (this.copyData.map(item => item.startTime).indexOf("") !== -1 || this.copyData.map(item => item.endTime).indexOf("") !== -1 || this.copyData.map(item => item.startTime).indexOf(null) !== -1 || this.copyData.map(item => item.endTime).indexOf(null) !== -1) {
-              reject('开始或结束时间不能为空')
-            }
-            resolve()
-            break;
-        }
-        reject('参数类型错误')
-      })
-    },
-    rowAdd() {
-      switch (this.form.schema[this.dimension].ptype) {
-        case 3:
-          this.copyData.push({
-            name: '',
-            min: {
-              operator: '',
-              value: ''
-            },
-            max: {
-              operator: '',
-              value: ''
-            },
-            selected: true
-          })
-          break
-        case 4:
-          this.copyData.push({
-            name: '',
-            startTime: '',
-            endTime: '',
-            selected: true
-          })
-          break
-      }
-    },
-    rowDel(row, index) {
-      this.copyData.splice(index, 1)
-    },
-    setChildren(arr) {
-      arr.forEach(item => {
-        this.$set(item, 'disabled', item.parentId !== this.parentId && this.parentId !== -1)
-        if (item.children && item.children.length) {
-          this.setChildren(item.children)
-        } else {
-
-        }
-      })
-    },
-    checkChange(data, checked, indeterminate) {
-      this.parentId = -1
-      this.treeKey[this.dimension] = this.$refs.tree.getCheckedKeys()
-      if (this.parentId === -1) {
-        this.parentId = data.parentId
-      }
-      if (this.treeKey[this.dimension].length === 0) {
-        this.parentId = -1
-      }
-      this.selected[this.dimension] = getTreeNameByIds(this.form.source[this.dimension], this.treeKey[this.dimension])
-      this.$store.commit('SET_RELOAD_DATA', true)
-      this.setChildren(this.form.source[this.dimension])
-    },
-    handleSelectAll() {
-      if (this.parentId === -1) {
-        return false
-      }
-      const tree = getTreeDataList(this.form.source[this.dimension], [])
-      const data = tree.filter(item => item.parentId === this.parentId)
-      this.treeKey[this.dimension] = data.map(item => item.id)
-      this.selected[this.dimension] = getTreeNameByIds(this.form.source[this.dimension], this.treeKey[this.dimension])
-      this.$store.commit('SET_RELOAD_DATA', true)
-    },
-    handleCancelAll() {
-      this.parentId = -1
-      this.treeKey[this.dimension] = []
-      this.selected[this.dimension] = []
-      this.$refs.tree.setCheckedKeys([])
-      this.$store.commit('SET_RELOAD_DATA', true)
-      this.setChildren(this.form.source[this.dimension])
-    }
-  }
-}
-</script>
-
-<style lang="less">
-.select-box {
-  padding: 15px;
-}
-.selected-list {
-  background: #f4f4f4;
-  height: 250px !important;
-  border: 1px solid #DCDFE6;
-  border-radius: 4px;
-  .el-main {
-    .el-row {
-      line-height: 20px;
-    }
-    .el-tree {
-      background: none !important;
-    }
-  }
-}
-</style>

+ 0 - 107
src/views/analyse/custom/components/Tabs/Item.vue

@@ -1,107 +0,0 @@
-<template>
-  <div class="custom-analyse-tabs-item">
-    <el-collapse v-model="activeItem2">
-      <el-collapse-item v-for="menu in treeList" :name="menu.id">
-        <template slot="title">
-          <div class="custom-title">
-            <span class="label">{{ menu.name }}</span>
-            <span class="do" v-if="$permission('/workspace/folder/analyticSystem/chartAnalysis/groupModify') && $r(projectId,[1,2])">
-              <i class="el-icon-edit" @click.stop="handleEdit(menu)"></i>
-              <i class="el-icon-delete" @click.stop="handleDelete(menu)"></i>
-            </span>
-          </div>
-        </template>
-        <div v-for="item in menu.children" @click="handleSelect(item.uid)" class="tree-item" :class="{ 'is-active2' : item.uid === form.uid }">
-          <div class="custom-title">
-            <span class="label">{{ item.name }}</span>
-            <span class="do" v-if="$permission('/workspace/folder/analyticSystem/chartAnalysis/groupItemDelete') && $r(projectId,[1,2])">
-              <i class="el-icon-delete" @click.stop="handleDelete(item)"></i>
-            </span>
-          </div>
-        </div>
-      </el-collapse-item>
-    </el-collapse>
-  </div>
-</template>
-
-<script>
-import mixins from "./mixins";
-
-export default {
-  mixins: [mixins],
-  data() {
-    return {
-      activeItem2: this.activeItem,
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    handleEdit(value) {
-      this.$emit('edit', value)
-    },
-    handleDelete(value) {
-      this.$emit('delete', value)
-    },
-    handleSelect(key) {
-      this.$emit('select', key)
-    }
-  }
-}
-</script>
-
-<style lang="scss">
-.custom-analyse-tabs-item {
-  .el-collapse-item__header {
-    padding: 0 15px !important;
-    font-weight: bold;
-    border-bottom: 1px solid #EBEEF5 !important;
-  }
-  .el-collapse {
-    border-top: 0 !important;
-  }
-  .tree-item {
-    padding: 0 25px;
-    height: 45px;
-    cursor: pointer;
-  }
-  .el-collapse-item__content {
-    padding-bottom: 0 !important;
-  }
-  .is-active2 {
-    background: #ecf5ff !important;
-    color: #409EFF!important;
-  }
-  .custom-title {
-    display: flex;
-    flex: 1;
-    align-items: center;
-    justify-content: space-between;
-    font-size: 14px;
-    padding-right: 10px;
-    height:100%;
-    .label {
-      display: flex;
-      align-items: center;
-      height: 100%;
-    }
-    .do {
-      display: none;
-      i {
-        margin-left: 10px;
-        margin-top: -5px;
-        color: #999;
-        font-size: 13px;
-      }
-      &:hover {
-        color: #333;
-      }
-    }
-    &:hover {
-      .do {
-        display: inline-block;
-      }
-    }
-  }
-}
-</style>

+ 0 - 50
src/views/analyse/custom/components/Tabs/Line.vue

@@ -1,50 +0,0 @@
-<template>
-  <div class="custom-analyse-tabs-line">
-    <el-form :model="form" label-width="60px" label-position="left" class="line-form">
-      <el-form-item label="开启">
-        <el-switch v-model="form.setting.config.line.enable"></el-switch>
-      </el-form-item>
-      <el-form-item label="名称">
-        <el-input v-model="form.setting.config.line.name"></el-input>
-      </el-form-item>
-      <el-form-item label="运算">
-        <el-select v-model="form.setting.config.line.operator" style="width: 100%;" clearable>
-          <el-option label="平均值" :value="0"></el-option>
-          <el-option label="占比" :value="1"></el-option>
-          <el-option label="总和" :value="2"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="第一项" v-if="form.setting.config.line.operator === 1">
-        <el-select v-model="form.setting.config.line.first" style="width: 100%;" clearable placeholder="请选择第一项">
-          <el-option v-for="(item, index) in selected.y" :label="item" :value="item"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="第二项" v-if="form.setting.config.line.operator === 1">
-        <el-select v-model="form.setting.config.line.second" style="width: 100%;" clearable placeholder="请选择第二项">
-          <el-option label="总和" value="0"></el-option>
-          <el-option v-for="(item, index) in selected.y" :label="item" :value="item"></el-option>
-        </el-select>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>
-
-<script>
-import mixins from "./mixins";
-export default {
-  mixins: [mixins],
-  mounted() {
-  }
-}
-</script>
-
-<style lang="scss">
-.custom-analyse-tabs-line {
-  padding: 10px;
-  .line-form {
-    .el-form-item {
-      margin-top: 15px !important;
-    }
-  }
-}
-</style>

+ 0 - 401
src/views/analyse/custom/components/Tabs/Style.vue

@@ -1,401 +0,0 @@
-<template>
-  <div class="custom-analyse-tabs-style">
-    <el-collapse v-model="activeNames">
-      <el-collapse-item title="类型" name="0">
-        <div style="margin-left: 20px;margin-top: 10px;">
-          <style-type v-for="item in chartIcon" :item="item" @click.native="handleClick(item)" />
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="框架" name="8" v-if="!getShow([30])">
-        <div class="content">
-          <div>
-            <span class="label">宽度</span>
-            <el-input placeholder="请输入宽度" v-model="form.setting.width" size="small" style="width: calc(100% - 170px);padding-left: 10px;"></el-input>
-            <el-select size="small" v-model="form.setting.widthUnit" placeholder="请选择" style="width: calc(100% - 190px);margin-left: 10px;">
-              <el-option label="百分比" value="%"></el-option>
-              <el-option label="像素" value="px"></el-option>
-            </el-select>
-          </div>
-          <div style="margin-top: 10px;">
-            <span class="label">高度</span>
-            <el-input placeholder="请输入高度" v-model="form.setting.height" size="small" style="width: calc(100% - 170px);padding-left: 10px;"></el-input>
-            <el-select size="small" v-model="form.setting.heightUnit" placeholder="请选择" style="width: calc(100% - 190px);margin-left: 10px;">
-              <el-option label="百分比" value="%" disabled></el-option>
-              <el-option label="像素" value="px"></el-option>
-            </el-select>
-          </div>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="气泡图" name="9" v-if="getShow([])">
-        <div class="content">
-          <span class="label">气泡比例</span>
-          <el-input placeholder="请输入气泡比例" v-model="form.setting.scatterSize" size="small" style="width: calc(100% - 160px);padding-left: 10px;"></el-input>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="柱形图" name="7" v-if="getShow([4, 7, 5, 6, 8, 9])">
-        <div class="content">
-          <span class="label">宽度</span>
-          <el-input placeholder="请输入宽度" v-model="form.setting.barWidth" size="small" style="width: calc(100% - 190px);padding-left: 10px;"></el-input>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="标签" name="1" v-if="!getShow([30, 19])">
-        <div class="content">
-          <div>
-            <el-checkbox v-model="form.setting.dataLabel">显示标签</el-checkbox>
-            <template v-if="!getShow([13, 12, 20, 18, 21, 23])">
-              <span style="margin-left: 42px;" class="label">位置</span>
-              <el-select size="small" v-model="form.setting.dataPosition" placeholder="请选择" style="width: calc(100% - 160px);margin-left: 10px;">
-                <el-option v-for="item in positionList" :label="item.label" :value="item.value"></el-option>
-              </el-select>
-            </template>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-select size="small" v-model="form.setting.fontFamily2" placeholder="请选择" style="width: calc(100% - 160px)">
-              <el-option v-for="item in $constants.fontFamily" :label="item.label" :value="item.value"></el-option>
-            </el-select>
-            <el-input size="small" v-model.number="form.setting.dataSize" type="number" placeholder="请输入" style="width: 105px;margin-left: 10px;"></el-input>
-            <el-color-picker size="small" v-model="form.setting.labelColor" style="margin-left: 10px; float:right;"></el-color-picker>
-          </div>
-          <div style="margin-top: 10px;" v-if="getShow([10, 11])">
-            <el-checkbox v-model="form.setting.dataLabel2">显示数值</el-checkbox>
-            <el-checkbox v-model="form.setting.dataLabel3">显示百分比</el-checkbox>
-          </div>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="颜色" name="2" v-if="!getShow([20, 18, 21, 23])">
-        <div class="content">
-          <el-container>
-            <el-main style="max-height: 300px;" class="color-config">
-              <template v-if="!getShow([15, 30])">
-                <div v-for="item in form.setting.config.color" class="color-config-content">
-                  <el-color-picker size="small" v-model="item.color"></el-color-picker>
-                  <span class="name">{{ item.name }}</span>
-                </div>
-                <div v-if="form.setting.config.line.enable" class="color-config-content">
-                  <el-color-picker size="small" v-model="form.setting.config.line.color"></el-color-picker>
-                  <span class="name">{{ form.setting.config.line.name }}</span>
-                </div>
-              </template>
-              <template v-else>
-                <div v-for="(item, index) in form.setting.config.table">
-                  <el-color-picker size="small" v-model="item.color"></el-color-picker>
-                  <div style="float: right; padding-right: 20px;">
-                    <el-input v-model="item.min" style="width: 80px;" size="small"></el-input>
-                    <span class="o-code">≤</span><span>数值</span><span class="o-code">≤</span>
-                    <el-input v-model="item.max" style="width: 80px;" size="small"></el-input>
-                  </div>
-                </div>
-              </template>
-            </el-main>
-          </el-container>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="图例" name="3" v-if="getShow([5, 6, 8, 9, 10, 11])">
-        <div class="content">
-          <div>
-            <el-checkbox v-model="form.setting.legend">显示图例</el-checkbox>
-            <span class="label" style="margin-left: 42px;">位置</span>
-            <el-select size="small" v-model="form.setting.legendLocation" style="width: calc(100% - 160px);margin-left: 10px;">
-              <el-option value="top" label="上"></el-option>
-              <el-option value="left" label="左"></el-option>
-              <el-option value="bottom" label="下"></el-option>
-              <el-option value="right" label="右"></el-option>
-            </el-select>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-select size="small" v-model="form.setting.fontFamily3" placeholder="请选择" style="width: calc(100% - 160px)">
-              <el-option v-for="item in $constants.fontFamily" :label="item.label" :value="item.value"></el-option>
-            </el-select>
-            <el-input size="small" v-model.number="form.setting.legendFontSize" type="number" placeholder="请输入" style="width: 105px;margin-left: 10px;"></el-input>
-            <el-color-picker size="small" v-model="form.setting.legendColor" style="margin-left: 10px; float:right;"></el-color-picker>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-select size="small" v-model="form.setting.type2" style="width: calc(100% - 160px)">
-              <el-option value="scroll" label="滚动图例"></el-option>
-              <el-option value="plain" label="普通图例"></el-option>
-            </el-select>
-          </div>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="距离" name="4" v-if="!getShow([30, 22, 17, 19, 12, 20, 18, 21, 23, 13])">
-        <div class="content">
-          <div>
-            <span class="label">顶部</span>
-            <el-input size="small" v-model="form.setting.gridTop" style="width: 240px;margin-left: 10px;"></el-input>
-            <span style="margin-left: 10px;">%</span>
-          </div>
-          <div style="margin-top: 10px;">
-            <span class="label">底部</span>
-            <el-input size="small" v-model="form.setting.gridBottom" style="width: 240px;margin-left: 10px;"></el-input>
-            <span style="margin-left: 10px;">%</span>
-          </div>
-          <div style="margin-top: 10px;">
-            <span class="label">左侧</span>
-            <el-input size="small" v-model="form.setting.gridLeft" style="width: 240px;margin-left: 10px;"></el-input>
-            <span style="margin-left: 10px;">%</span>
-          </div>
-          <div style="margin-top: 10px;">
-            <span class="label">右侧</span>
-            <el-input size="small" v-model="form.setting.gridRight" style="width: 240px;margin-left: 10px;"></el-input>
-            <span style="margin-left: 10px;">%</span>
-          </div>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="X轴" name="5" v-if="getShow([1, 3, 4, 7, 5, 6, 8, 9, 2, 15, 14])">
-        <div class="content">
-          <div>
-            <el-checkbox v-model="form.setting.show">显示坐标轴</el-checkbox>
-            <el-checkbox v-model="form.setting.splitLine" v-if="!getShow([14])">显示背景线</el-checkbox>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-select size="small" v-model="form.setting.fontFamily" placeholder="请选择" style="width: calc(100% - 160px)">
-              <el-option v-for="item in $constants.fontFamily" :label="item.label" :value="item.value"></el-option>
-            </el-select>
-            <el-input size="small" v-model.number="form.setting.fontSize" type="number" placeholder="请输入" style="width: 105px;margin-left: 10px;"></el-input>
-            <el-color-picker size="small" v-model="form.setting.fontColor" style="margin-left: 10px; float:right;"></el-color-picker>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-checkbox v-model="form.setting.fontWeight">字体加粗</el-checkbox>
-            <span class="label" style="margin-left: 15px;">标题位置</span>
-            <el-select size="small" v-model="form.setting.nameLocation" style="width: calc(100% - 160px);margin-left: 10px;">
-              <el-option value="start" label="左"></el-option>
-              <el-option value="middle" label="中"></el-option>
-              <el-option value="end" label="右"></el-option>
-            </el-select>
-          </div>
-          <div style="margin-top: 10px;">
-            <span class="label">标题</span>
-            <el-input size="small" v-model="form.setting.title1" placeholder="请输入" style="width: calc(100% - 37px);margin-left: 10px;"></el-input>
-          </div>
-          <div style="margin-top: 10px;" class="title-padding">
-            <span class="label">位移</span>
-            <span class="label" style="margin: 0 5px;">上</span>
-            <el-input v-model.number="form.setting.paddingTop" size="small" placeholder="" style="width: 45px;"></el-input>
-            <span class="label" style="margin: 0 5px;">左</span>
-            <el-input v-model.number="form.setting.paddingLeft" size="small" placeholder="" style="width: 45px;"></el-input>
-            <span class="label" style="margin: 0 5px;">下</span>
-            <el-input v-model.number="form.setting.paddingBottom" size="small" placeholder="" style="width: 45px;"></el-input>
-            <span class="label" style="margin: 0 5px;">右</span>
-            <el-input v-model.number="form.setting.paddingRight" size="small" placeholder="" style="width: 45px;"></el-input>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-checkbox v-model="form.setting.interval">完整显示</el-checkbox>
-            <span class="label" style="margin-left: 15px;">倾斜角度</span>
-            <el-input size="small" v-model="form.setting.rotate" placeholder="请输入" style="width: calc(100% - 160px);margin-left: 10px;"></el-input>
-          </div>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="Y轴" name="6" v-if="getShow([1, 3, 4, 7, 5, 6, 8, 9, 2, 15, 14])">
-        <div class="content">
-          <div>
-            <el-checkbox v-model="form.setting.show2">显示坐标轴</el-checkbox>
-            <el-checkbox v-model="form.setting.splitLine2" v-if="!getShow([14])">显示背景线</el-checkbox>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-select size="small" v-model="form.setting.fontFamily2" placeholder="请选择" style="width: calc(100% - 160px)">
-              <el-option v-for="item in $constants.fontFamily" :label="item.label" :value="item.value"></el-option>
-            </el-select>
-            <el-input size="small" v-model.number="form.setting.fontSize2" type="number" placeholder="请输入" style="width: 105px;margin-left: 10px;"></el-input>
-            <el-color-picker size="small" v-model="form.setting.fontColor2" style="margin-left: 10px; float:right;"></el-color-picker>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-checkbox v-model="form.setting.fontWeight2">字体加粗</el-checkbox>
-            <span class="label" style="margin-left: 15px;">标题位置</span>
-            <el-select size="small" v-model="form.setting.nameLocation2" style="width: calc(100% - 160px);margin-left: 10px;">
-              <el-option value="end" label="上"></el-option>
-              <el-option value="middle" label="中"></el-option>
-              <el-option value="start" label="下"></el-option>
-            </el-select>
-          </div>
-          <div style="margin-top: 10px;">
-            <span class="label">标题</span>
-            <el-input size="small" v-model="form.setting.title2" placeholder="请输入" style="width: calc(100% - 37px);margin-left: 10px;"></el-input>
-          </div>
-          <div style="margin-top: 10px;" class="title-padding">
-            <span class="label">位移</span>
-            <span class="label" style="margin: 0 5px;">上</span>
-            <el-input v-model.number="form.setting.paddingTop2" size="small" placeholder="" style="width: 45px;"></el-input>
-            <span class="label" style="margin: 0 5px;">左</span>
-            <el-input v-model.number="form.setting.paddingLeft2" size="small" placeholder="" style="width: 45px;"></el-input>
-            <span class="label" style="margin: 0 5px;">下</span>
-            <el-input v-model.number="form.setting.paddingBottom2" size="small" placeholder="" style="width: 45px;"></el-input>
-            <span class="label" style="margin: 0 5px;">右</span>
-            <el-input v-model.number="form.setting.paddingRight2" size="small" placeholder="" style="width: 45px;"></el-input>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-checkbox v-model="form.setting.interval2">完整显示</el-checkbox>
-            <span class="label" style="margin-left: 15px;">倾斜角度</span>
-            <el-input size="small" v-model="form.setting.rotate2" placeholder="请输入" style="width: calc(100% - 160px);margin-left: 10px;"></el-input>
-          </div>
-        </div>
-      </el-collapse-item>
-      <el-collapse-item title="坐标" name="6" v-if="getShow([17, 22])">
-        <div class="content">
-          <div>
-            <el-checkbox v-model="form.setting.show">显示</el-checkbox>
-            <el-checkbox v-model="form.setting.fontWeight">字体加粗</el-checkbox>
-          </div>
-          <div style="margin-top: 10px;">
-            <el-select size="small" v-model="form.setting.fontFamily" placeholder="请选择" style="width: calc(100% - 160px)">
-              <el-option v-for="item in $constants.fontFamily" :label="item.label" :value="item.value"></el-option>
-            </el-select>
-            <el-input size="small" v-model.number="form.setting.fontSize" type="number" placeholder="请输入" style="width: 105px;margin-left: 10px;"></el-input>
-            <el-color-picker size="small" v-model="form.setting.fontColor" style="margin-left: 10px; float:right;"></el-color-picker>
-          </div>
-        </div>
-      </el-collapse-item>
-    </el-collapse>
-  </div>
-</template>
-
-<script>
-import mixins from "./mixins";
-import { detectionChartType } from "@/utils/chart";
-import StyleType from "./StyleType";
-
-export default {
-  mixins: [mixins],
-  components: {
-    StyleType
-  },
-  data() {
-    return {
-      activeNames: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
-      chartIcon: [],
-      positionList: [],
-    }
-  },
-  mounted() {
-    this.chartIcon = JSON.parse(JSON.stringify(this.$constants.chartType))
-    this.chartIcon.map(item => {
-      let { op, cg } = detectionChartType(item, this.form)
-      if (op && cg) {
-        cg = false
-        this.$store.dispatch('resetSettingColor')
-      }
-      if (op) {
-        this.$set(item, 'disable', true)
-        this.$set(item, 'active', false)
-      }
-      if (cg) {
-        this.$set(item, 'disable', false)
-        this.$set(item, 'active', true)
-      }
-    })
-    this.getPositionList()
-  },
-  methods: {
-    getShow(arr) {
-      return arr.indexOf(this.form.setting.type) !== -1
-    },
-    getPositionList() {
-      if ([10, 11].indexOf(this.form.setting.type) !== -1) {
-        this.positionList = [
-          { label: '外侧', value: 'outside' },
-          { label: '内部', value: 'inside' },
-          { label: '中心', value: 'center' },
-        ]
-      } else {
-        this.positionList = [
-          { label: '上', value: 'top' },
-          { label: '左', value: 'left' },
-          { label: '右', value: 'right' },
-          { label: '下', value: 'bottom' },
-          { label: '内', value: '' },
-        ]
-      }
-    },
-    handleClick(item) {
-      if (item.disable) {
-        return false
-      }
-      const chartType = this.$constants.chartType.find(c => c.value === this.form.setting.type)
-      if (item.value === 21 || this.form.setting.type === 21) {
-        this.$store.commit('SET_RELOAD_DATA', true)
-      }
-      if (item.value === 22 && chartType.type === 1) {
-        this.$store.commit('SET_RELOAD_DATA', true)
-      }
-      if (!chartType) {
-        this.$store.commit('SET_RELOAD_DATA', true)
-      }
-      if ((this.form.schema.x.type === 6 || this.form.schema.y.type === 6) && chartType) {
-        if (chartType.value === 30 && item.value !== 30) {
-          this.$store.commit('SET_RELOAD_DATA', true)
-        }
-        if (chartType.value !== 30 && item.value === 30) {
-          this.$store.commit('SET_RELOAD_DATA', true)
-        }
-        if (chartType.value === 20 && item.value !== 20) {
-          this.$store.commit('SET_RELOAD_DATA', true)
-        }
-        if (chartType.value !== 20 && item.value === 20) {
-          this.$store.commit('SET_RELOAD_DATA', true)
-        }
-      }
-      this.form.setting.type = item.value
-      this.chartIcon.map(c => {
-        if (c.value === item.value) {
-          this.$set(c, 'active', true)
-        } else {
-          this.$set(c, 'active', false)
-        }
-      })
-      this.$store.dispatch('getItemSettingColor', [])
-      this.form.setting.dataPosition = ''
-      this.getPositionList()
-    },
-  }
-}
-</script>
-
-<style lang="scss">
-.custom-analyse-tabs-style {
-  .el-collapse {
-    border-top: transparent !important;
-  }
-  .el-collapse-item__header {
-    font-weight: bold !important;
-    padding: 0 20px !important;
-    border-bottom: 1px solid #EBEEF5 !important;
-  }
-  .el-form-item {
-    padding: 0 15px;
-    margin-bottom: 0 !important;
-  }
-  .el-collapse {
-    border-top: 0 !important;
-  }
-  .color-config {
-    padding: 0 !important;
-    .o-code {
-      margin: 0 5px;
-      display: inline-block;
-    }
-    .color-config-content {
-      line-height: 50px;
-      position: relative;
-      .name {
-        margin-left: 10px;
-        font-size: 14px;
-        top: -10px;
-        position: absolute;
-      }
-    }
-  }
-  .title-padding {
-    .el-input__inner {
-      padding: 0 10px !important;
-    }
-  }
-  .el-collapse-item__content {
-    padding-bottom: 0 !important;
-  }
-  .content {
-    padding: 20px;
-  }
-  .label {
-    color: #6b6868;
-  }
-}
-</style>

+ 0 - 53
src/views/analyse/custom/components/Tabs/StyleType.vue

@@ -1,53 +0,0 @@
-<template>
-  <div class="select-chart">
-    <div class="item" :style="{ cursor: item.disable ? 'not-allowed' : 'pointer' }" :class="{ 'active' : item.active }" :title="item.label">
-      <span v-if="item.disable" class="icon" :style="{ backgroundImage: `url(${require(`@/assets/img/${item.icon}-disable.svg`)})` }"></span>
-      <span v-else-if="item.active" class="icon" :style="{ backgroundImage: `url(${require(`@/assets/img/${item.icon}-active.svg`)})` }"></span>
-      <span v-else class="icon" :style="{ backgroundImage: `url(${require(`@/assets/img/${item.icon}.svg`)})` }"></span>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  name: "SelectChart",
-  props: ['item'],
-  data() {
-    return {
-
-    }
-  },
-  methods: {
-
-  }
-}
-</script>
-
-<style lang="less">
-.select-chart {
-  display: inline;
-  .item {
-    width: 38px;
-    height: 38px;
-    background: #ebecf0;
-    border-radius: 4px;
-    display: inline-block;
-    margin-bottom: 8px;
-    margin-right: 8px;
-    position: relative;
-
-    .icon {
-      height: 24px;
-      width: 24px;
-      background-repeat: no-repeat;
-      position: absolute;
-      top: 50%;
-      left: 50%;
-      transform: translate(-50%, -50%);
-    }
-  }
-  .active {
-    background: #6b6868 !important;
-  }
-}
-</style>

+ 0 - 19
src/views/analyse/custom/components/Tabs/mixins.js

@@ -1,19 +0,0 @@
-import { mapGetters } from "vuex";
-
-export default {
-  props: {
-    activeItem: Array
-  },
-  computed: {
-    ...mapGetters(['userinfo', 'projectId']),
-    form() {
-      return this.$store.state.chart.form
-    },
-    treeList() {
-      return this.$store.state.chart.treeList
-    },
-    selected() {
-      return this.$store.state.chart.selected
-    },
-  },
-}

+ 0 - 728
src/views/analyse/custom/index.vue

@@ -1,728 +0,0 @@
-<template>
-  <div class="custom-analyse">
-    <el-container v-if="showPage" v-loading="loading">
-      <el-aside width="350px">
-        <el-container>
-          <el-header class="custom-analyse-tabs">
-            <el-tabs v-model="activeTab" type="card">
-              <el-tab-pane label="分析项" name="TabItem"></el-tab-pane>
-              <el-tab-pane label="数据" name="TabData"></el-tab-pane>
-              <el-tab-pane label="样式" name="TabStyle"></el-tab-pane>
-              <el-tab-pane label="辅助线" name="TabLine" :disabled="enable.indexOf(form.setting.type) === -1"></el-tab-pane>
-            </el-tabs>
-          </el-header>
-          <el-main class="nopadding">
-            <component
-                :is="activeTab"
-                :active-item="activeItem"
-                @edit="handleEdit"
-                @delete="handleDelete"
-                @select="handleSelect"
-            ></component>
-          </el-main>
-        </el-container>
-      </el-aside>
-      <el-container>
-        <el-header>
-          <template>
-            <div class="custom-analyse-chart-title">
-              <span>{{ chartTitle }}</span>
-            </div>
-            <div class="custom-analyse-options">
-              <span class="text">专利数量<span class="number">{{ patentNum }} 件</span></span>
-              <el-button size="small" type="primary" @click="handleAdd3" :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis/addGroup') && $r(projectId,[1,2]))">添加组</el-button>
-              <el-button size="small" type="success" @click="submit" :loading="loadingBtn">预览图表</el-button>
-              <el-dropdown size="small">
-                <el-button size="small" type="warning" :disabled="!$permission('/workspace/folder/analyticSystem/chartAnalysis/moreMenu')">
-                  更多菜单<i class="el-icon-arrow-down el-icon--right"></i>
-                </el-button>
-                <el-dropdown-menu slot="dropdown">
-                  <el-dropdown-item @click.native="handleScreenshot" :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis/moreMenu/screenShot') && $r(projectId,[1,2,4]))">截图</el-dropdown-item>
-                  <el-dropdown-item @click.native="handleAdd1(0)" :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis/moreMenu/save') && $r(projectId,[1,2]))">保存修改</el-dropdown-item>
-                  <el-dropdown-item @click.native="handleAdd1(1)" :disabled="!$permission('/workspace/folder/analyticSystem/chartAnalysis/moreMenu/saveAs')">另存为</el-dropdown-item>
-                  <el-dropdown-item @click.native="handleExport" :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis/moreMenu/export') && $r(projectId,[1,2,4]))">导出数据</el-dropdown-item>
-                </el-dropdown-menu>
-              </el-dropdown>
-            </div>
-          </template>
-        </el-header>
-        <el-main class="custom-analyse-chart-img-box">
-          <div v-if="showChart">
-            <chart ref="chartDom" :width="form.setting.width + form.setting.widthUnit" :height="form.setting.height + form.setting.heightUnit" />
-          </div>
-        </el-main>
-      </el-container>
-    </el-container>
-
-    <el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="handleClose">
-      <el-form v-if="dialogVisible" ref="ruleForm" :model="form2" :rules="rules" label-position="left" label-width="100px">
-        <el-form-item label="所属组" prop="parentId" v-if="form2.type">
-          <el-select v-model="form2.parentId" filterable allow-create placeholder="请选择" style="width: 100%">
-            <el-option v-for="item in treeList" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item :label="`${form2.type ? '项目名称' : '组名称'}`" prop="name">
-          <el-input v-model="form2.name" placeholder="请输入"></el-input>
-        </el-form-item>
-        <el-form-item label="显示顺序" prop="sort">
-          <el-input v-model.number="form2.sort" type="number" placeholder="请输入"></el-input>
-        </el-form-item>
-        <el-form-item label="使用权限" prop="permissions" v-if="form2.type">
-          <el-select v-model="form2.permissions" placeholder="请选择" style="width: 100%">
-            <el-option v-for="item in $constants.permissions" :label="item.label" :value="item.value"></el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="cancel">关 闭</el-button>
-        <el-button type="primary" @click="handleConfirm" :loading="loadingBtn">确 定</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import Chart from "./components/Charts/index.vue";
-import { mapGetters } from "vuex";
-import { downLoad, findChildren, getTreeLastChildren, getTreeDataList, downLoadBase64 } from "@/utils";
-import { customPage } from "./mixins";
-import moment from "moment";
-import TreeSelect from '@riophae/vue-treeselect'
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import { detectionChartType, getFormPermissions, getTreeNameByIds, getXAxisName, getSourceName } from "@/utils/chart";
-import TabItem from "./components/Tabs/Item";
-import TabData from "./components/Tabs/Data";
-import TabStyle from "./components/Tabs/Style";
-import TabLine from "./components/Tabs/Line";
-import html2canvas from "html2canvas";
-
-export default {
-  components: {
-    TreeSelect,
-    Chart,
-    TabItem,
-    TabData,
-    TabStyle,
-    TabLine
-  },
-  mixins: [customPage],
-  data() {
-    return {
-      activeTab: 'TabItem',
-      enable: [2, 5, 6, 8, 9, 17],
-      saveType: 0,
-      form2: {},
-      rules: {
-        parentId: [
-          {required: true, message: '请选择上级目录', trigger: 'change'},
-        ],
-        name: [
-          {required: true, message: '请输入名称', trigger: 'blur'},
-        ],
-        permissions: [
-          {required: true, message: '请输选择使用权限', trigger: 'change'},
-        ],
-        sort: [
-          {required: true, message: '请输入显示次序', trigger: 'blur'},
-        ],
-      },
-      patentNum: 0,
-      showChart: true,
-      showPage: false,
-      loadingBtn2: false,
-      loadingBtn3: false,
-      activeName: '1',
-      activeItem: [],
-      loading: false,
-      loadingBtn: false,
-      title: '',
-      chartTitle: '',
-      dialogVisible: false,
-      loadData: true,
-      drawer: false,
-      tempForm: {
-        name: '',
-        sort: 0
-      }
-    }
-  },
-  computed: {
-    ...mapGetters(['userinfo', 'projectId', 'customField', 'patentField'])
-  },
-  mounted() {
-    this.showPage = false
-    if (this.patentKey) {
-      this.getPatentListNum()
-    } else {
-      this.errorPage()
-    }
-  },
-  methods: {
-    normalizer(node) {
-      if (node.children && !node.children.length) {
-        delete node.children;
-      }
-      return {
-        id: node.id,
-        label: node.name,
-        children: node.children
-      };
-    },
-    cancel() {
-      this.saveType = 0
-      this.dialogVisible = false
-    },
-    errorPage() {
-
-    },
-    handleClose() {
-      this.saveType = 0
-      this.dialogVisible = false
-    },
-    reset() {
-
-    },
-    getPatentListNum() {
-      this.$api.getPatentListNum({patentKey: this.patentKey}).then(async (response) => {
-        this.patentNum = response.data
-        await this.getTreeList()
-        if (this.treeList.length === 0 || this.treeList[0].children.length === 0) {
-          this.handleAdd()
-          this.showChart = false
-          this.saveType = 1
-        } else {
-          this.activeItem = [this.treeList[0].id]
-          await this.handleSelect(this.treeList[0].children[0].uid)
-        }
-        this.showPage = true
-      }).catch(error => {
-        this.errorPage()
-      })
-    },
-    handleDelete(value) {
-      this.$confirm('确认删除本条数据吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(async () => {
-        const response = await this.$api.deleteCustomItem(value.id)
-        this.$message.success('删除成功')
-        await this.getTreeList()
-        if (this.form.id === value.id) {
-          const tree = this.treeList.find(item => item.id === value.parentId)
-          if (tree && tree.children.length) {
-            await this.handleSelect(tree.children[tree.children.length - 1].uid)
-          } else {
-            this.handleAdd()
-          }
-        }
-      })
-    },
-    async getTreeList() {
-      this.loading = true
-      const response = await this.$api.getCustomTree({projectId: this.projectId})
-      this.$store.commit('SET_CHART_TREE', response.data)
-      this.setChildren(this.treeList, 'isDisabled')
-      this.loading = false
-    },
-    beforeClose() {
-      this.drawer = false
-    },
-    setChildren(arr, key) {
-      arr.forEach(item => {
-        if (item.children && item.children.length) {
-          this.setChildren(item.children, key)
-        } else {
-          this.$set(item, key, item.type === 1)
-        }
-      })
-    },
-    refreshChart() {
-      this.$nextTick(() => {
-        let chartDom = this.$refs.chartDom
-        if (chartDom) {
-          chartDom.refreshChart()
-        }
-      })
-    },
-    onChange() {
-      if (this.saveType || !this.form2.id) {
-        this.form2.name = getSourceName(this.form.schema.x.field, this.form.schema.x.expand, this.form.schema.x.num)
-        const tree = this.treeList.find(item => item.id === this.form2.parentId)
-        if (tree) {
-          this.form2.sort = tree.children.length + 1
-        }
-      } else {
-        this.form2.name = this.tempForm.name
-        this.form2.sort = this.tempForm.sort
-      }
-    },
-    handleAdd3() {
-      this.title = '添加组'
-      this.form2 = {
-        parentId: 0,
-        name: '',
-        sort: this.treeList.length + 1,
-        type: 0,
-        permissions: 2,
-        projectId: this.projectId
-      }
-      this.dialogVisible = true
-    },
-    async handleScreenshot() {
-      const canvas = await html2canvas(this.$refs.chartDom.$el)
-      const base64 = canvas.toDataURL('image/jpg')
-      downLoadBase64(base64, '图片.png')
-    },
-    async handleAdd1(saveType) {
-      this.saveType = saveType
-      this.onChange()
-      this.title = '保存自定义分析'
-      let data = {
-        parentId: null,
-        permissions: 2,
-        name: '',
-        sort: 0
-      }
-      if (this.form.uid) {
-        const response = await this.$api.getCustomItem(this.form.uid)
-        data = response.data
-        this.tempForm.name = data.name
-        this.tempForm.sort = data.sort
-      }
-      this.form2 = {
-        id: data.id,
-        parentId: data.parentId,
-        type: 1,
-        permissions: data.permissions,
-        name: data.name,
-        sort: data.sort,
-        setting: this.form.setting,
-        schema: this.form.schema,
-        source: this.form.source,
-        projectId: this.projectId
-      }
-      this.dialogVisible = true
-    },
-    handleAdd() {
-      let table = []
-      for (let i = 0; i < 10; i++) {
-        table.push({
-          min: 0,
-          max: 0,
-          color: null
-        })
-      }
-      let form = {
-        setting: {
-          type: 1,
-          showType: 0,
-          tableType: 0,
-          theme: "customed",
-          titleSize: 14,
-          dataSize: 14,
-          axisSize: 14,
-          dataLabel: false,
-          dataLabel2: false,
-          dataLabel3: false,
-          title1Dir: 0,
-          title1: "",
-          title2: "",
-          dataPosition: "top",
-          fontFamily: "sans-serif",
-          fontFamily2: "sans-serif",
-          fontFamily3: "sans-serif",
-          fontFamily4: "sans-serif",
-          fontWeight: false,
-          fontWeight2: false,
-          nameLocation: "end",
-          nameLocation2: "end",
-          width: "100",
-          height: "650",
-          widthUnit: "%",
-          heightUnit: "px",
-          splitLine: false,
-          splitLine2: false,
-          legend: true,
-          gridTop: "0",
-          gridLeft: "0",
-          gridBottom: "0",
-          gridRight: "0",
-          labelColor: "#000000",
-          legendColor: "#000000",
-          legendLocation: "top",
-          legendFontSize: "13",
-          fontSize: "13",
-          fontSize2: "13",
-          fontColor: "#000000",
-          fontColor2: "#000000",
-          show: true,
-          show2: true,
-          interval: true,
-          interval2: true,
-          rotate: "0",
-          rotate2: "0",
-          paddingTop: 0,
-          paddingBottom: 0,
-          paddingRight: 0,
-          paddingLeft: 0,
-          paddingTop2: 0,
-          paddingLeft2: 0,
-          paddingBottom2: 0,
-          paddingRight2: 0,
-          type2: "scroll",
-          barWidth: "",
-          scatterSize: "0",
-          config: {
-            color: [],
-            line: {
-              name: "",
-              first: "",
-              second: "",
-              operator: 0,
-              enable: false
-            },
-            table: table
-          }
-        },
-        schema: {
-          x: {
-            num: 10
-          },
-          y: {
-            num: 10
-          },
-        },
-        source: {
-          x: [],
-          y: []
-        },
-      }
-      this.$store.commit('SET_CHART_FORM', form)
-      this.drawer = true
-    },
-    async handleEdit(value) {
-      this.title = '编辑组'
-      this.form2 = { ...value }
-      this.dialogVisible = true
-    },
-    getDataCountParams() {
-      let source = {
-        x: [],
-        y: [],
-      }
-      let schema = {
-        x: {},
-        y: {}
-      }
-      let merge = {
-        x: 0,
-        y: 0
-      }
-      Object.keys(source).forEach(dimension => {
-        if (this.form.schema[dimension].type === 6) {
-          if (this.form.setting.type === 20) {
-            source[dimension] = this.getTreeAllNode(dimension)
-            merge[dimension] = 1
-          } else if (this.form.setting.type === 30) {
-            source[dimension] = this.getTreeLastChildren(dimension)
-          } else {
-            source[dimension] = this.getPatentTreeChildren(dimension)
-            merge[dimension] = 1
-          }
-        } else {
-          source[dimension] = this.form.source[dimension].filter(item => item.selected)
-        }
-      })
-      Object.keys(schema).forEach(dimension => {
-        schema[dimension] = {
-          expand: this.form.schema[dimension].expand || 0,
-          field: this.form.schema[dimension].field || 0,
-          num: this.form.schema[dimension].num,
-          type: this.form.schema[dimension].type,
-          ptype: this.form.schema[dimension].ptype,
-          merge: merge[dimension]
-        }
-      })
-      return { source, schema }
-    },
-    async getDataCount() {
-      if (this.reloadData) {
-        const { source, schema } = this.getDataCountParams()
-        let params = {
-          type: this.form.setting.type,
-          schema: schema,
-          source: source,
-          patentKey: this.patentKey,
-          projectId: this.projectId
-        }
-        this.loading = true
-        try {
-          const response = await this.$api.getDataCount(params)
-          this.$store.commit('SET_DATA_COUNT', response.data)
-          this.refreshChart()
-          this.$store.commit('SET_RELOAD_DATA', false)
-          this.loading = false
-          this.showChart = true
-        } catch (e) {
-          this.loading = false
-          this.showChart = false
-        }
-      }
-    },
-    getTreeAllNode(dimension) {
-      const tree = getTreeDataList(this.form.source[dimension], [])
-      return tree.map(item => { return { id : item.id } })
-    },
-    getTreeLastChildren(dimension) {
-      const tree = getTreeDataList(this.form.source[dimension], [])
-      const data = tree.filter(item => this.treeKey[dimension].indexOf(item.id) !== -1)
-      let arr = data.filter(item =>  !item.children || !item.children.length)
-      data.map(item => arr.push(...getTreeLastChildren(item.children || [], [])))
-      return arr.map(item => { return { id : item.id } })
-    },
-    getPatentTreeChildren(dimension) {
-      const tree = getTreeDataList(this.form.source[dimension], [])
-      const selected = this.treeKey[dimension].map(item => item)
-      let arr = []
-      selected.map(item => {
-        const node = tree.find(t => t.id === item)
-        arr.push(node)
-        arr.push(...getTreeLastChildren(node.children || [], []))
-      })
-      return arr.map(item => { return { id : item.id } })
-    },
-    getTreeNodeName(node, tree) {
-      const path = node.path.split('/').map(p => parseInt(p, 0))
-      let name = []
-      path.map(item => {
-        const n = tree.find(x => x.id === item)
-        if (n) {
-          name.push(n.name)
-        }
-      })
-      return name.join('/')
-    },
-    getExportParams() {
-      const xAxis = getXAxisName(this.patentField, this.form.schema.x.field, this.form.schema.x.expand)
-      let type = this.form.schema.y.field ? 2 : 1
-      type = this.form.setting.type === 21 ? 3 : type
-      let count = JSON.parse(JSON.stringify(this.count))
-      const xt = this.form.schema.x.type === 6
-      const yt = this.form.schema.y.type === 6
-      const xs = getTreeDataList(this.form.source.x, [])
-      const ys = getTreeDataList(this.form.source.y, [])
-      if (xt && !yt) {
-        for (let key in count) {
-          const xn = xs.find(item => item.id === parseInt(key))
-          const name = this.getTreeNodeName(xn, xs)
-          if (xn) {
-            count[name] = count[key]
-            delete count[key]
-          }
-        }
-      }
-      if (xt && yt) {
-        for (let xk in count) {
-          const xn = xs.find(item => item.id === parseInt(xk))
-          const xa = this.getTreeNodeName(xn, xs)
-          let data = {}
-          for (let yk in count[xk]) {
-            const yn = ys.find(item => item.id === parseInt(yk))
-            const ya = this.getTreeNodeName(yn, ys)
-            if (yn) {
-              data[ya] = count[xk][yk]
-            }
-          }
-          if (xn) {
-            count[xa] = data
-            delete count[xk]
-          }
-        }
-      }
-      if (!xt && yt) {
-        for (let key in count) {
-          let data = {}
-          for (let y in count[key]) {
-            const yn = ys.find(item => item.id === parseInt(y))
-            const ya = this.getTreeNodeName(yn, ys)
-            if (yn) {
-              data[ya] = count[key][y]
-              delete count[y]
-            }
-          }
-          count[key] = data
-        }
-      }
-      return { count, type, xAxis }
-    },
-    async handleExport() {
-      this.loadingBtn3 = true
-      const { count, type, xAxis } = this.getExportParams()
-      this.$api.exportCustomItem(count, type, xAxis).then(response => {
-        downLoad(response, moment().format('YYYYMMDDHHmmss') + '.xls')
-        this.loadingBtn3 = false
-      }).catch(error => {
-        this.loadingBtn3 = false
-      })
-    },
-    resetChartType() {
-      this.form.setting.type = null
-      this.$store.dispatch('resetSettingColor')
-    },
-    async submit() {
-      if (!this.form.schema.x.field) {
-        this.$message.error('请选择一维数据')
-        return false
-      }else{
-        if(this.form.source.x.length == 0){
-          this.$message.error('一维数据为空')
-          return false
-        }
-      }
-      if(this.form.schema.y.field){
-        if(this.form.source.y.length == 0){
-          this.$message.error('二维数据为空')
-          return false
-        }
-      }
-      const chartType = this.$constants.chartType.find(c => c.value === this.form.setting.type)
-      const { op, cg } = detectionChartType(chartType || {}, this.form)
-      if (op && cg) {
-        this.resetChartType()
-      }
-      if (!this.form.setting.type) {
-        this.$message.error('请选择图表类型')
-        return false
-      }
-      this.drawer = false
-      await this.getDataCount()
-      this.refreshChart()
-      this.showChart = true
-    },
-    async handleSelect(key) {
-      let source = {
-        x: [],
-        y: []
-      }
-      this.$store.commit('SET_RELOAD_DATA', true)
-      this.activeName = '1'
-      this.loading = true
-      const response = await this.$api.getCustomItem(key)
-      this.$store.commit('SET_CHART_FORM', JSON.parse(JSON.stringify(response.data)))
-      if (this.enable.indexOf(this.form.setting.type) === -1) {
-        this.form.setting.config.line.enable = false
-      }
-      for (let key in response.data.source) {
-        source[key] = response.data.source[key]
-        if (response.data.source[key].length === 0 || response.data.schema[key].type === 6) {
-          await this.$store.dispatch('getSourceDataList', key)
-          if (response.data.setting.title1) {
-            this.form.setting.title1 = response.data.setting.title1
-          }
-          if (response.data.setting.title2) {
-            this.form.setting.title2 = response.data.setting.title2
-          }
-        }
-      }
-      for (let key in response.data.schema) {
-        if (this.form.schema[key].type !== 6) {
-          this.$set(this.selected, key, this.form.source[key].slice(0, response.data.schema[key].num).map(item => item.name))
-          this.form.source[key].map(item => {
-            item.selected = this.selected[key].indexOf(item.name) !== -1
-          })
-        } else {
-          this.treeKey[key] = source[key].map(item => parseInt(item.name))
-          this.selected[key] = getTreeNameByIds(this.form.source[key], this.treeKey[key])
-        }
-      }
-      await this.$store.dispatch('getItemSettingColor', [])
-      await this.getDataCount()
-      this.$nextTick(() => {
-        this.loading = false
-      })
-    },
-    handleConfirm() {
-      this.$refs.ruleForm.validate(async (valid) => {
-        if (valid) {
-          this.loadingBtn = true
-          let form = JSON.parse(JSON.stringify(this.form2))
-          for (let key in form.schema) {
-            form.schema[key].field = form.schema[key].field || 0
-            form.schema[key].expand = form.schema[key].expand || 0
-            if (form.schema[key].type === 6) {
-              form.source[key] = this.treeKey[key].map(item => { return { name: item, selected: true } })
-            }
-          }
-          try {
-            let response
-            if (typeof form.parentId === 'string') {
-              form.parentName = form.parentId
-              form.parentId = undefined
-            }
-            if (form.type) {
-              form.permissions = getFormPermissions(form)
-            }
-            if (!this.saveType && form.id) {
-              response = await this.$api.editCustomItem(form)
-              this.$message.success('编辑成功')
-            } else {
-              form.id = null
-              response = await this.$api.addCustomItem(form)
-              this.activeItem.push(response.data.parentId)
-              this.$message.success('添加成功')
-              if (form.type) {
-                await this.handleSelect(response.data.uid)
-              }
-            }
-            if (form.type) {
-              this.chartTitle = response.data.name
-            }
-            await this.getTreeList()
-            this.loadingBtn = false
-            this.drawer = false
-            this.handleClose()
-          } catch (e) {
-            this.loadingBtn = false
-          }
-        } else {
-          // console.log('error submit!!');
-          return false;
-        }
-      });
-    },
-  }
-}
-</script>
-
-<style lang="scss">
-.custom-analyse {
-  .custom-analyse-tabs {
-    .el-tabs__header {
-      margin-top: 35px !important;
-      margin-left: 22px;
-    }
-  }
-  .custom-analyse-chart-img-box {
-    background: #ffffff;
-  }
-  .custom-analyse-chart-title {
-    padding: 20px;
-    span {
-      font-weight: bold;
-      font-size: 16px;
-    }
-  }
-  .custom-analyse-options {
-    padding: 20px;
-    .number {
-      padding-left: 10px;
-      color: #409EFF;
-    }
-    .text {
-      font-size: 13px;
-      padding-right: 20px;
-    }
-  }
-}
-</style>

+ 0 - 445
src/views/analyse/custom/mixins.js

@@ -1,445 +0,0 @@
-import { mapGetters } from "vuex";
-import constants from '@/utils/constants'
-import { downLoadBase64, getTreeDataList, random } from "@/utils";
-import { getLineDataArr, getTreeNameByIds } from "@/utils/chart";
-import html2canvas from 'html2canvas'
-
-export const customPage = {
-  computed: {
-    form() {
-      return this.$store.state.chart.form
-    },
-    changeNum() {
-      return this.$store.state.chart.changeNum
-    },
-    patentKey() {
-      return this.$store.state.chart.patentKey
-    },
-    treeList() {
-      return this.$store.state.chart.treeList
-    },
-    treeKey() {
-      return this.$store.state.chart.treeKey
-    },
-    selected() {
-      return this.$store.state.chart.selected
-    },
-    selectedLoad() {
-      return this.$store.state.chart.selectedLoad
-    },
-    count() {
-      return this.$store.state.chart.count
-    },
-    matrix() {
-      return this.$store.state.chart.matrix
-    },
-    reloadData() {
-      return this.$store.state.chart.reloadData
-    }
-  },
-  watch:{
-    patentKey(val){
-      if (val) {
-        this.getPatentListNum()
-      } else {
-        this.errorPage()
-      }
-    }
-  },
-  methods: {
-    getShowLabel(dict, value) {
-      const data = dict.find(s => s.value === parseInt(value))
-      if (data) {
-        return data.label
-      }
-    },
-  }
-}
-
-export const chartOption = {
-  mixins: [customPage],
-  props: {
-    width: String,
-    height: String
-  },
-  data() {
-    return {}
-  },
-  methods: {
-    async handleScreenshot(id, name) {
-      const canvas = await html2canvas(document.getElementById(id))
-      const base64 = canvas.toDataURL('image/jpg')
-      downLoadBase64(base64, name + '.png')
-    },
-    getDataLabel() {
-      return {
-        show: this.form.setting.dataLabel,
-        fontSize: this.form.setting.dataSize,
-        position: this.form.setting.dataPosition,
-        fontFamily: this.form.setting.fontFamily2,
-        color: this.form.setting.labelColor,
-        formatter: (val) => {
-          switch (val.seriesType) {
-            case 'sunburst':
-              return val.name
-            case 'heatmap':
-              return val.value[2]
-            case 'tree':
-              return val.data.name
-            case 'scatter':
-              return !val.data[2] ? '' : val.data[2]
-            case 'treemap':
-              return `${val.name} (${val.value})`
-            case 'map':
-              return val.value ? `${val.name} \n ${val.value}` : ''
-            default:
-              if (val.value) {
-                return val.value
-              } else {
-                return ''
-              }
-          }
-        }
-      }
-    },
-    getAxisName(dimension) {
-      return this.form.setting[dimension]
-    },
-    getAxisData(dimension) {
-      return this.selected[dimension]
-    },
-    getColor(name) {
-      const color = this.form.setting.config.color.find(item => item.name === name);
-      return color ? color.color : undefined
-    },
-    getDataCount(x, y, b = true) {
-      if (b) {
-        if (this.form.schema.x.type === 6) {
-          const xn = getTreeDataList(this.form.source.x, []).find(item => item.name === x)
-          if (xn) {
-            x = xn.id
-          }
-        }
-        if (this.form.schema.y.type === 6) {
-          const yn = getTreeDataList(this.form.source.y, []).find(item => item.name === y)
-          if (yn) {
-            y = yn.id
-          }
-        }
-      }
-      if (x && y) {
-        if (this.count[x]) {
-          return this.count[x][y] || 0
-        } else {
-          return 0
-        }
-      }
-      if (x && !y) {
-        return this.count[x] || 0
-      }
-      if (!x && !y) {
-        return random(0, 100)
-      }
-    },
-    getSeriesData() {
-      let data = [], count = this.count
-      let source = this.selected.x
-      switch (this.$options.name) {
-        case 'CLine':
-        case 'CArea':
-        case 'CBar':
-        case 'CColumn':
-          source.map(s => {
-            const color = this.form.setting.config.color.find(item => item.name === s);
-            data.push({
-              value: this.getDataCount(s),
-              itemStyle: {
-                color: color ? color.color : undefined
-              }
-            })
-          })
-          break
-        case 'CDoughnut':
-        case 'CPie':
-          source.map(s => {
-            const color = this.form.setting.config.color.find(item => item.name === s);
-            data.push({
-              value: this.getDataCount(s),
-              name: s,
-              label: {
-                show: this.form.setting.dataLabel,
-                fontSize: this.form.setting.dataSize,
-                fontFamily: this.form.setting.fontFamily2,
-                color: this.form.setting.labelColor,
-                position: this.form.setting.dataPosition,
-                formatter: ({ value, name, percent }) => {
-                  let text = ""
-                  if (this.form.setting.dataLabel) {
-                    text += name
-                  }
-                  if (this.form.setting.dataLabel2) {
-                    text += `-${value}件`
-                  }
-                  if (this.form.setting.dataLabel3) {
-                    text += `/${percent}%`
-                  }
-                  return text
-                }
-              },
-              itemStyle: {
-                color: color ? color.color : undefined
-              }
-            })
-          })
-          break
-      }
-      return data
-    },
-    getAxisLabel(type, axis) {
-      return  {
-        interval: axis === 'x' ? (this.form.setting.interval ? 0 : undefined) : (this.form.setting.interval2 ? 0 : undefined),
-        rotate: axis === 'x' ? this.form.setting.rotate : this.form.setting.rotate2,
-        color: axis === 'x' ? this.form.setting.fontColor : this.form.setting.fontColor2,
-        show: axis === 'x' ? this.form.setting.show : this.form.setting.show2,
-        fontSize: axis === 'x' ? this.form.setting.fontSize : this.form.setting.fontSize2,
-        fontFamily: axis === 'x' ? this.form.setting.fontFamily : this.form.setting.fontFamily2,
-        fontWeight: (axis === 'x' ? this.form.setting.fontWeight : this.form.setting.fontWeight2) ? 'bold' : 'normal'
-      }
-    },
-    getNameTextStyle(axis) {
-      return {
-        padding: axis === 'x' ? [this.form.setting.paddingTop, this.form.setting.paddingLeft, this.form.setting.paddingBottom, this.form.setting.paddingRight] : [this.form.setting.paddingTop2, this.form.setting.paddingLeft2, this.form.setting.paddingBottom2, this.form.setting.paddingRight2],
-        color: axis === 'x' ? this.form.setting.fontColor : this.form.setting.fontColor2,
-        fontSize: axis === 'x' ? this.form.setting.fontSize : this.form.setting.fontSize2,
-        fontFamily: axis === 'x' ? this.form.setting.fontFamily : this.form.setting.fontFamily2,
-        fontWeight: (axis === 'x' ? this.form.setting.fontWeight : this.form.setting.fontWeight2) ? 'bold' : 'normal'
-      }
-    },
-    dateTimeSort() {
-      let temp = JSON.parse(JSON.stringify(this.selected.x))
-      let data = []
-      let t, y, m
-      temp.map(item => {
-        switch (this.form.schema.x.expand) {
-          case 9:
-          case 12:
-            data.push({
-              name: item,
-              time: new Date(item).getTime()
-            })
-            break
-          case 10:
-            t = item.split('-')
-            y = t[0]
-            m = (parseInt(t[1].replaceAll('Q', '')) - 1) * 3 + 1
-            data.push({
-              name: item,
-              time: new Date(y + '-' + m).getTime()
-            })
-            break
-          case 11:
-            t = item.split('-')
-            y = t[0]
-            m = parseInt(t[1].replaceAll('H', '')) * 6
-            data.push({
-              name: item,
-              time: new Date(y + '-' + m).getTime()
-            })
-            break
-          case 13:
-          case 14:
-          case 15:
-            t = item.split('-')
-            y = t[0]
-            data.push({
-              name: item,
-              time: new Date(y + '-01').getTime()
-            })
-            break
-        }
-      })
-      this.selected.x = data.sort((a, b) => a.time - b.time).map(item => item.name)
-    },
-    get1AxisOption(type, areaStyle) {
-      if (this.form.schema.x.ptype === 2) {
-        this.dateTimeSort()
-      }
-      let xAxis = {
-        name: this.getAxisName('title1'),
-        nameTextStyle: this.getNameTextStyle('x'),
-        type: 'category',
-        data: this.getAxisData('x'),
-        nameLocation: this.form.setting.nameLocation,
-        splitLine: {
-          show: this.form.setting.splitLine
-        },
-        axisLabel: this.getAxisLabel('category', 'x')
-      }
-      let yAxis = {
-        name: this.getAxisName('title2'),
-        nameTextStyle: this.getNameTextStyle('y'),
-        type: 'value',
-        nameLocation: this.form.setting.nameLocation2,
-        splitLine: {
-          show: this.form.setting.splitLine2
-        },
-        axisLabel: this.getAxisLabel('value', 'y')
-      }
-      let series = [{
-        data: this.getSeriesData(),
-        type: type,
-        areaStyle: areaStyle,
-        itemStyle: {
-          color: this.form.setting.config.color[0].color
-        },
-        barWidth: this.form.setting.barWidth,
-        label: this.getDataLabel()
-      }]
-      let grid = {
-        top: this.form.setting.gridTop + '%',
-        left: this.form.setting.gridLeft + '%',
-        right: this.form.setting.gridRight + '%',
-        bottom: this.form.setting.gridBottom + '%',
-        containLabel: true,
-      }
-      return {
-        xAxis,
-        yAxis,
-        series,
-        grid
-      }
-    },
-    get2AxisOption(type, stack) {
-      if (this.form.schema.x.ptype === 2) {
-        this.dateTimeSort()
-      }
-      const enable = this.form.setting.config.line.enable
-      const operator = this.form.setting.config.line.operator
-      let series = this.selected.y.map(y => {
-        return {
-          name: y,
-          type: type,
-          stack: stack,
-          itemStyle: {
-            color: this.getColor(y)
-          },
-          barWidth: this.form.setting.barWidth,
-          data: this.selected.x.map(x => this.getDataCount(x, y)),
-          label: this.getDataLabel()
-        }
-      })
-      let xAxis = {
-        name: this.form.setting.title1,
-        nameTextStyle: this.getNameTextStyle('x'),
-        type: 'category',
-        nameLocation: this.form.setting.nameLocation,
-        data: this.selected.x,
-        splitLine: {
-          show: this.form.setting.splitLine
-        },
-        axisLabel: this.getAxisLabel('category', 'x')
-      }
-      let yAxis = [{
-        name: this.form.setting.title2,
-        nameTextStyle: this.getNameTextStyle('y'),
-        type: 'value',
-        nameLocation: this.form.setting.nameLocation2,
-        splitLine: {
-          show: this.form.setting.splitLine2
-        },
-        axisLabel: this.getAxisLabel('value', 'y')
-      }]
-      let legend = [...this.selected.y]
-      if (enable && ([5, 6].indexOf(this.form.setting.type) !== -1)) {
-        let name = this.form.setting.config.line.name
-        series.push({
-          name: name,
-          type: 'line',
-          yAxisIndex: 1,
-          data: getLineDataArr(this.form, this.selected, this.count),
-          itemStyle: {
-            color: this.form.setting.config.line.color
-          },
-          label: {
-            ...this.getDataLabel(),
-            formatter({ value }) {
-              return operator === 1 ? `${Math.round(parseFloat(value) * 100)} %` : value
-            }
-          }
-        })
-        yAxis.push({
-          type: 'value',
-          name: name,
-        })
-        legend.push(name)
-      }
-      let grid = {
-        top: this.form.setting.gridTop + '%',
-        left: this.form.setting.gridLeft + '%',
-        right: this.form.setting.gridRight + '%',
-        bottom: this.form.setting.gridBottom + '%',
-        containLabel: true
-      }
-      return {
-        legend: {
-          show: this.form.setting.legend,
-          data: legend,
-          textStyle: {
-            fontFamily: this.form.setting.fontFamily3,
-            color: this.form.setting.legendColor,
-            fontSize: this.form.setting.legendFontSize
-          },
-          ...this.getLegendLocation(),
-          type: this.form.setting.type2,
-        },
-        grid,
-        xAxis,
-        yAxis,
-        series
-      }
-    },
-    getLegendLocation() {
-      let x = ''
-      let y = ''
-      switch (this.form.setting.legendLocation) {
-        case 'top':
-          x = 'center'
-          y = 'top'
-          break
-        case 'left':
-          x = 'left'
-          y = 'center'
-          break
-        case 'bottom':
-          x = 'center'
-          y = 'bottom'
-          break
-        case 'right':
-          x = 'right'
-          y = 'center'
-          break
-      }
-      return {
-        x: x,
-        y: y,
-        orient: ['top', 'bottom'].indexOf(this.form.setting.legendLocation) !== -1 ? 'horizontal' : "vertical",
-      }
-    },
-    initChart(id, chartOption) {
-      const chartDom = document.getElementById(id);
-      const myChart = this.$echarts.init(chartDom);
-      myChart.setOption(chartOption)
-      this.$store.commit('SET_MY_CHART', myChart)
-      return myChart
-    },
-  }
-}
-
-export const chartOptionMixins = {
-  mixins: [chartOption],
-  mounted() {
-    this.$nextTick(() => {
-      this.initChart(this.id, this.getOption())
-    })
-  },
-}

+ 0 - 628
src/views/analyse/report/create/components/PatentList.vue

@@ -1,628 +0,0 @@
-<template>
-  <el-container class="patent-setting">
-    <el-header>
-      <div style="margin-left: 15px;">
-        <el-button type="success" size="small" icon="el-icon-check" @click="handleCheck(1)">列表全选</el-button>
-        <el-button type="danger" size="small" icon="el-icon-minus" @click="handleCheck(0)">全部取消</el-button>
-      </div>
-      <div style="float: right;margin-right: 25px;">
-        <el-popover
-            placement="bottom"
-            title=""
-            width="300"
-            trigger="click"
-        >
-          <div style="height: 400px;overflow-y: auto">
-            <div v-for="item in reportList" style="margin-bottom: 10px;line-height: 30px;background: #e4e4e4;padding: 5px;margin-right: 5px;border-radius: 5px;">
-              <div>
-                <span>报告名称:{{ item.name }}</span>
-              </div>
-              <div>
-                <span>创建时间:{{ item.createTime }}</span>
-              </div>
-              <div>
-                <span>下载文件:</span>
-                <el-link type="primary" v-if="item.status === 1" @click.native="handleDownload(item)">点击下载</el-link>
-                <span v-else-if="item.status === 0">等待文件生成</span>
-                <span v-else style="color: red">生成失败</span>
-              </div>
-            </div>
-          </div>
-          <el-button type="primary" size="small" slot="reference">
-            <span>生成记录</span>
-            <span style="padding-left: 5px;">({{ reportList.length }})</span>
-          </el-button>
-        </el-popover>
-      </div>
-    </el-header>
-    <el-main style="background: #fff" v-if="showList">
-      <el-table :data="dataList" border header-row-class-name="custom-table-header">
-        <el-table-column prop="" label="" width="55" align="center">
-          <template slot-scope="scope">
-            <el-checkbox :checked="getValueIndex(scope.row.id) !== -1" @change="handleClick(scope.row)"></el-checkbox>
-          </template>
-        </el-table-column>
-        <el-table-column prop="patentno" label="专利号" show-overflow-tooltip align="center"></el-table-column>
-        <el-table-column prop="applicationno" label="申请号" show-overflow-tooltip align="center"></el-table-column>
-        <el-table-column prop="name" label="专利名称" show-overflow-tooltip align="center"></el-table-column>
-        <el-table-column label="申请人" show-overflow-tooltip align="center">
-          <template slot-scope="scope">
-            <div v-for="(name, index) in scope.row.applicant">{{ name }}</div>
-          </template>
-        </el-table-column>
-        <el-table-column label="权利人" show-overflow-tooltip align="center">
-          <template slot-scope="scope">
-            <div v-for="(name, index) in scope.row.obligee">{{ name }}</div>
-          </template>
-        </el-table-column>
-        <el-table-column label="专利类型" show-overflow-tooltip align="center">
-          <template slot-scope="scope">
-            <table-tag style="display: inline-block" :dict-data="$constants.patentType" :value="scope.row.type" effect="dark" size="small" />
-          </template>
-        </el-table-column>
-        <el-table-column label="法律状态" show-overflow-tooltip align="center">
-          <template slot-scope="scope">
-            <table-tag style="display: inline-block" :dict-data="$constants.patentSimpleStatus" :value="scope.row.status" effect="dark" size="small" />
-          </template>
-        </el-table-column>
-        <el-table-column label="标签" show-overflow-tooltip align="center">
-          <template slot-scope="scope">
-            <div v-for="(label, index) in scope.row.label">
-              <span class="tag" :style="{ background: colorList[index % 10] }">{{ label }}</span>
-            </div>
-          </template>
-        </el-table-column>
-      </el-table>
-      <div @click="drawer = true" class="search-option">
-        <i class="el-icon-d-arrow-left" style="font-size: 20px;"></i>
-      </div>
-    </el-main>
-
-    <el-drawer :withHeader="false" :visible.sync="drawer" size="350px" direction="rtl" :before-close="beforeClose">
-      <el-container>
-        <el-header class="search-tabs">
-          <el-tabs v-model="activeName" type="card">
-            <el-tab-pane label="专利信息" name="1"></el-tab-pane>
-            <el-tab-pane label="自定义字段" name="2"></el-tab-pane>
-          </el-tabs>
-        </el-header>
-        <el-main style="padding: 0;">
-          <el-collapse v-model="activeNames" v-if="activeName === '1'">
-            <el-collapse-item title="申请人" name="1">
-              <el-container>
-                <el-main style="max-height: 200px;">
-                  <el-checkbox-group v-model="queryParams.applicant">
-                    <el-row v-for="item in searchData.applicant">
-                      <el-checkbox :label="item.name"></el-checkbox>
-                    </el-row>
-                  </el-checkbox-group>
-                </el-main>
-              </el-container>
-            </el-collapse-item>
-            <el-collapse-item title="权利人" name="2">
-              <el-container>
-                <el-main style="max-height: 200px;">
-                  <el-checkbox-group v-model="queryParams.obligee">
-                    <el-row v-for="item in searchData.obligee">
-                      <el-checkbox :label="item.name"></el-checkbox>
-                    </el-row>
-                  </el-checkbox-group>
-                </el-main>
-              </el-container>
-            </el-collapse-item>
-            <el-collapse-item title="法律状态" name="3">
-              <el-container>
-                <el-main style="max-height: 200px;">
-                  <el-checkbox-group v-model="queryParams.status">
-                    <el-row v-for="item in $constants.patentSimpleStatus">
-                      <el-checkbox :label="item.value" v-if="patentList.map(patent => patent.status).indexOf(item.value) !== -1">{{ item.label }}</el-checkbox>
-                    </el-row>
-                  </el-checkbox-group>
-                </el-main>
-              </el-container>
-            </el-collapse-item>
-            <el-collapse-item title="专利类型" name="4">
-              <el-container>
-                <el-main style="max-height: 200px;">
-                  <el-checkbox-group v-model="queryParams.type">
-                    <el-row v-for="item in $constants.patentType">
-                      <el-checkbox :label="item.value" v-if="patentList.map(patent => patent.type).indexOf(item.value) !== -1">{{ item.label }}</el-checkbox>
-                    </el-row>
-                  </el-checkbox-group>
-                </el-main>
-              </el-container>
-            </el-collapse-item>
-          </el-collapse>
-
-          <el-collapse v-model="activeNames2" v-if="activeName === '2'">
-            <el-collapse-item title="标签" name="1">
-              <el-container>
-                <el-main style="max-height: 200px;">
-                  <el-checkbox-group v-model="queryParams2.label">
-                    <el-row v-for="item in searchData2.label">
-                      <el-checkbox :label="item"></el-checkbox>
-                    </el-row>
-                  </el-checkbox-group>
-                </el-main>
-              </el-container>
-            </el-collapse-item>
-            <el-collapse-item title="文件夹" name="2">
-              <el-container>
-                <el-main style="max-height: 400px;">
-                  <el-tree
-                      ref="folder"
-                      :default-checked-keys="queryParams2.folder"
-                      :data="searchData2.field.folder"
-                      :props="defaultProps"
-                      show-checkbox
-                      node-key="id"
-                      check-strictly
-                      @check-change="handleCheckChange('folder')"
-                  ></el-tree>
-                </el-main>
-              </el-container>
-            </el-collapse-item>
-            <el-collapse-item title="标引" name="3">
-              <el-container>
-                <el-main style="max-height: 500px;">
-                  <template v-for="(item, index) in searchData2.field.index">
-                    <p class="field-title">{{ item.name }}</p>
-                    <template v-if="item.type === 3 || item.type === 4 || item.type === 5">
-                      <el-checkbox-group v-model="queryParams2.field[item.id]">
-                        <el-row v-for="option in item.option">
-                          <el-checkbox :label="option.id">{{ option.name }}</el-checkbox>
-                        </el-row>
-                      </el-checkbox-group>
-                    </template>
-                    <template v-if="item.type === 1">
-                      <el-date-picker v-model="queryParams2.field[item.id]" type="date" size="small" placeholder="选择日期" style="width: 100%;"></el-date-picker>
-                    </template>
-                    <template v-if="item.type === 2">
-                      <el-input v-model="queryParams2.field[item.id]" placeholder="请输入内容" size="small"></el-input>
-                    </template>
-                  </template>
-                </el-main>
-              </el-container>
-            </el-collapse-item>
-            <el-collapse-item title="分类" name="4">
-              <el-container>
-                <el-main style="max-height: 500px;">
-                  <template v-for="(item, index) in searchData2.field.classify">
-                    <p class="field-title">{{ item.name }}</p>
-                    <el-tree
-                        :ref="item.id"
-                        :default-checked-keys="queryParams2.field[item.id]"
-                        :data="item.option"
-                        :props="defaultProps"
-                        show-checkbox
-                        node-key="id"
-                        check-strictly
-                        @check-change="handleCheckChange(item.id)"
-                    ></el-tree>
-                  </template>
-                </el-main>
-              </el-container>
-            </el-collapse-item>
-          </el-collapse>
-        </el-main>
-        <el-footer style="text-align: right;height: 70px;">
-          <el-button @click="resetSearchQuery">重置</el-button>
-          <el-button type="primary" @click="handleSearch">搜索</el-button>
-        </el-footer>
-      </el-container>
-    </el-drawer>
-
-    <el-footer style="height: 70px;text-align: right">
-      <el-button>关 闭</el-button>
-      <el-button type="primary" @click="handleConfirm">确 定</el-button>
-    </el-footer>
-  </el-container>
-</template>
-
-<script>
-import { downLoad2, formatDate, getFileName } from "@/utils";
-import TableTag from "@/components/TableTag";
-import { mapGetters } from "vuex";
-export default {
-  components: { TableTag },
-  data() {
-    return {
-      activeNames: [],
-      activeNames2: [],
-      activeName: '1',
-      showList: true,
-      refresh: true,
-      dataList: [],
-      queryParams: {},
-      queryParams2: {},
-      drawer: false,
-      reportList: [],
-      searchData: {
-        applicant: [],
-        status: [],
-        obligee: [],
-        type: []
-      },
-      colorList: [
-        '#409eff',
-        '#67c23a',
-        '#909399',
-        '#f56c6c',
-        '#e6a23c',
-        '#e63c91',
-        '#e6553c',
-        '#3ce6cc',
-        '#8e3ce6',
-        '#e63c3c'
-      ],
-      searchData2: {
-        field: {},
-        label: []
-      },
-      defaultProps: {
-        children: 'children',
-        label: 'name'
-      }
-    }
-  },
-  computed: {
-    ...mapGetters(['patentField', 'customField']),
-    template() {
-      return this.$store.state.report.template
-    },
-    patentList() {
-      return this.$store.state.report.patentList
-    },
-    form() {
-      return this.$store.state.report.form
-    },
-    activeItem() {
-      return this.$store.state.report.activeItem
-    },
-    patentKey() {
-      return this.$store.state.chart.patentKey
-    }
-  },
-  mounted() {
-    this.getReportList()
-    if (this.template.label.length) {
-      this.resetSearchQuery()
-      for (let key in this.searchData) {
-        this.getSearchData(key)
-      }
-      for (let key in this.searchData2) {
-        this.getSearchData2(key)
-      }
-    }
-  },
-  methods: {
-    getReportList() {
-      this.$api.getReportList({ patentKey: this.patentKey }).then(response => {
-        this.reportList = response.data
-      })
-    },
-    handleConfirm() {
-      this.$emit('submit', {})
-    },
-    handleCheckChange(id) {
-      if (id === 'folder') {
-        const data = this.$refs[id].getCheckedNodes()
-        this.queryParams2.folder = data.map(item => item.id)
-      } else {
-        const data = this.$refs[id][0].getCheckedNodes()
-        this.$set(this.queryParams2.field, id, data.map(item => item.id))
-      }
-    },
-    getSearchData2(key) {
-      switch (key) {
-        case 'label':
-          let value = [];
-          this.dataList.map(item => {
-            item.label.map(v => {
-              value.push(v)
-            })
-          })
-          this.$set(this.searchData2, key, [...new Set(value)])
-          break
-        case 'field':
-          let data = {};
-          for (let field in this.customField) {
-            switch (field) {
-              case 'folder':
-                data[field] = this.customField[field];
-                break
-              case 'classify':
-              case 'index':
-                let ids = new Set();
-                let arr = []
-                this.dataList.map(item => item.field.map(f => {
-                  ids.add(f.id)
-                }));
-                this.customField[field].map(item => {
-                  if ([...ids].indexOf(item.id) !== -1) {
-                    arr.push(item)
-                  }
-                });
-                data[field] = arr
-                break
-            }
-          }
-          this.resetIndexFieldId()
-          this.$set(this.searchData2, key, data)
-          break
-      }
-    },
-    resetIndexFieldId() {
-      this.customField.index.map(item => {
-        if (item.type === 1 || item.type === 2) {
-          this.$set(this.queryParams2.field, item.id, null)
-        } else {
-          this.$set(this.queryParams2.field, item.id, [])
-        }
-      })
-    },
-    handleSelect(index, indexPath) {
-      this.activeItem = index
-    },
-    beforeClose() {
-      this.drawer = false
-    },
-    resetSearchQuery() {
-      this.queryParams = {
-        applicant: [],
-        status: [],
-        name: "",
-        no: "",
-        obligee: [],
-        type: [],
-      }
-      this.queryParams2 = {
-        field: {},
-        label: [],
-        folder: []
-      }
-      this.resetIndexFieldId()
-      this.activeNames = []
-      this.activeNames2 = []
-      this.activeName = '1'
-      this.dataList = JSON.parse(JSON.stringify(this.patentList))
-      this.drawer = false
-      this.refreshTableList()
-    },
-    handleSearch() {
-      let dataList = JSON.parse(JSON.stringify(this.patentList))
-      for (let key in this.queryParams) {
-        if (this.queryParams[key].length) {
-          if (key === 'applicant' || key === 'obligee') {
-            dataList = dataList.map(item => {
-              for (let value of item[key]) {
-                if (this.queryParams[key].indexOf(value) !== -1) {
-                  return item
-                }
-              }
-            }).filter(item => item !== undefined)
-          } else {
-            dataList = dataList.filter(item => this.queryParams[key].indexOf(item[key]) !== -1)
-          }
-        }
-      }
-      if (this.queryParams2.label.length) {
-        dataList = dataList.map(item => {
-          for (let label of item.label) {
-            if (this.queryParams2.label.indexOf(label) !== -1) {
-              return item
-            }
-          }
-        }).filter(item => item !== undefined)
-      }
-      if (this.queryParams2.folder.length) {
-        dataList = dataList.map(item => {
-          for (let folder of item.folder) {
-            if (this.queryParams2.folder.indexOf(folder) !== -1) {
-              return item
-            }
-          }
-        }).filter(item => item !== undefined)
-      }
-      for (let key in this.queryParams2.field) {
-        if (!this.queryParams2.field[key] || (this.queryParams2.field[key] instanceof Array && this.queryParams2.field[key].length === 0)) {
-          continue
-        }
-        const index = this.searchData2.field.index.find(index => index.id === parseInt(key))
-        const classify = this.searchData2.field.classify.find(index => index.id === parseInt(key))
-        dataList = dataList.map(item => {
-          for (let field of item.field) {
-            if (field.id === parseInt(key)) {
-              if (index) {
-                switch (index.type) {
-                  case 0:
-                  case 1:
-                  case 2:
-                    let data
-                    if (index.type === 1) {
-                      data = formatDate(this.queryParams2.field[key]);
-                    } else {
-                      data = this.queryParams2.field[key]
-                    }
-                    if (data == field.value) {
-                      return item
-                    }
-                    break
-                  case 3:
-                  case 4:
-                    if (this.queryParams2.field[key].indexOf(field.value) !== -1) {
-                      return item
-                    }
-                    break
-                  case 5:
-                    for (let value of field.value) {
-                      if (this.queryParams2.field[key].indexOf(value) !== -1) {
-                        return item
-                      }
-                    }
-                    break
-                }
-              } else if (classify) {
-                for (let value of field.value) {
-                  if (this.queryParams2.field[key].indexOf(value) !== -1) {
-                    return item
-                  }
-                }
-              }
-            }
-          }
-        }).filter(item => item !== undefined)
-      }
-      // console.log(dataList)
-      this.dataList = dataList
-      this.drawer = false
-      this.refreshTableList()
-    },
-    getSearchData(key) {
-      let temp = []
-      this.dataList.map(item => {
-        if (item[key] instanceof Array) {
-          item[key].map(c => temp.push(c))
-        } else {
-          temp.push(item[key])
-        }
-      })
-      this.$set(this.searchData, key, [...new Set(temp)].map(item => {
-        return {
-          name: item,
-          count: 0
-        }
-      }))
-    },
-    getLabelValue() {
-      const label = this.form.patentList.find(item => item.label === parseInt(this.activeItem))
-      if (label === undefined) {
-        return false
-      }
-      return label
-    },
-    getValueIndex(id) {
-      const label = this.getLabelValue()
-      return label ? label.id.indexOf(id) : -1
-    },
-    handleDownload(item) {
-      downLoad2(item.path)
-    },
-    handleCheck(type) {
-      const ids = this.dataList.map(item => item.id)
-      const label = parseInt(this.activeItem)
-      let patentList = this.form.patentList.find(item => item.label === label)
-      switch (type) {
-        case 0:
-          if (patentList) {
-            ids.map(id => {
-              const index = patentList.id.indexOf(id)
-              if (index !== -1) {
-                patentList.id.splice(index, 1)
-              }
-            })
-          }
-          break
-        case 1:
-          if (patentList) {
-            ids.map(id => {
-              if (patentList.id.indexOf(id) === -1) {
-                patentList.id.push(id)
-              }
-            })
-          } else {
-            this.form.patentList.push({
-              id: ids,
-              label: label
-            })
-          }
-          break
-      }
-      this.refreshTableList()
-    },
-    refreshTableList() {
-      this.showList = false
-      this.$nextTick(() => {
-        this.showList = true
-      })
-    },
-    handleClick(item) {
-      let label = this.getLabelValue()
-      if (!label) {
-        this.form.patentList.push({
-          id: [item.id],
-          label: parseInt(this.activeItem)
-        })
-        return false
-      }
-      const index = this.getValueIndex(item.id)
-      if (index !== -1) {
-        label.id.splice(index, 1)
-      } else {
-        label.id.push(item.id)
-      }
-    }
-  }
-}
-</script>
-
-<style lang="less">
-.patent-setting {
-  .el-menu-item.is-active {
-    outline: 0;
-    background-color: #ecf5ff !important;
-  }
-  .el-collapse-item__header {
-    padding: 0 20px !important;
-  }
-  .search-tabs {
-    .el-tabs__header {
-      margin-top: 35px !important;
-    }
-  }
-  .el-collapse {
-    border-top: 0 !important;
-  }
-  .field-title {
-    font-weight: bold;
-    margin: 0 !important;
-    padding: 10px 0;
-  }
-  .title {
-    .name {
-      font-size: 17px;
-      color: #409EFF;
-    }
-    .el-tag {
-      margin-left: 10px;
-    }
-    .no {
-      padding-left: 15px;
-      color: #515a6e;
-      font-size: 13px;
-    }
-  }
-  .applicant, .obligee, .type, .label {
-    margin-top: 10px;
-    .title {
-      width: 70px;
-      float: left;
-      font-weight: bold;
-    }
-    .name {
-      overflow: hidden;
-      span {
-        padding-right: 5px;
-      }
-    }
-  }
-  .tag {
-    display: inline-block;
-    color: #fff;
-    padding: 0px 5px;
-    border-radius: 4px;
-    margin-right: 5px;
-    margin-top: 5px;
-  }
-}
-</style>

+ 0 - 282
src/views/analyse/report/create/index.vue

@@ -1,282 +0,0 @@
-<template>
-  <div class="create-report">
-    <el-container v-if="showPage" v-loading="loading">
-      <el-aside width="300px">
-        <el-container>
-          <el-main class="nopadding">
-            <el-header style="padding: 0 20px !important;">
-              <el-button type="primary" size="small" style="width: 100%" @click="handleChangeTemplate">选择报告模板</el-button>
-            </el-header>
-            <div v-if="showItem">
-              <el-menu :default-active="activeItem" style="height: 100%;width: 100%;" @select="handleSelect">
-                <el-menu-item v-for="item in template.label" :index="String(item.id)">
-                  <span slot="title">{{ item.name }}</span>
-                </el-menu-item>
-              </el-menu>
-            </div>
-          </el-main>
-        </el-container>
-      </el-aside>
-      <el-main style="background: #fff;padding: 0">
-        <patent-list ref="patentList" v-if="showList" @submit="handleConfirm2" />
-      </el-main>
-    </el-container>
-    <el-dialog :title="title" :visible.sync="dialogVisible" width="900px" :before-close="handleClose">
-      <el-form inline>
-        <el-form-item label="模板名称">
-          <el-input v-model="queryParams.name" placeholder="请输入模板名称" size="small"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button type="" size="small" @click="getTemplateList">查询</el-button>
-        </el-form-item>
-      </el-form>
-      <el-table ref="multipleTable" border :data="templateList" header-row-class-name="custom-table-header" v-loading="loading2">
-        <el-table-column prop="" label="选择" width="55" align="center">
-          <template slot-scope="scope">
-            <el-radio v-model="templateId" :label="scope.row.id"></el-radio>
-          </template>
-        </el-table-column>
-        <el-table-column prop="name" label="模板名称" show-overflow-tooltip align="center"></el-table-column>
-        <el-table-column label="使用权限" show-overflow-tooltip align="center">
-          <template slot-scope="scope">
-            <table-tag :dict-data="$constants.permissions" :value="scope.row.permissions" size="small" effect="dark" />
-          </template>
-        </el-table-column>
-        <el-table-column label="所属专题库" show-overflow-tooltip align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.projectName }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="" label="创建人" show-overflow-tooltip align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.createName }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="createTime" label="创建日期" show-overflow-tooltip align="center"></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 style="text-align: right">
-        <el-button @click="handleClose">取 消</el-button>
-        <el-button type="primary" @click="handleConfirm">确 定</el-button>
-      </div>
-    </el-dialog>
-
-    <el-dialog :title="title" :visible.sync="dialogVisible2" width="450px" :before-close="handleClose2">
-      <el-form :model="form" :rules="rules" ref="ruleForm" label-width="80px">
-        <el-form-item label="报告名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入报告名称"></el-input>
-        </el-form-item>
-        <el-form-item label="备注信息">
-          <el-input type="textarea" v-model="form.remark" placeholder="请输入内容"></el-input>
-        </el-form-item>
-      </el-form>
-      <div style="text-align: right">
-        <el-button @click="handleClose2">取 消</el-button>
-        <el-button type="primary" @click="submit" :loading="loadingBtn">确 定</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { mapGetters } from "vuex";
-import TableTag from "@/components/TableTag";
-import PatentList from "./components/PatentList";
-
-export default {
-  components: {
-    TableTag,
-    PatentList,
-  },
-  data() {
-    return {
-      dialogVisible: false,
-      dialogVisible2: false,
-      showItem: false,
-      showList: false,
-      loading: false,
-      loading2: false,
-      loading3: false,
-      showPage: true,
-      activeItem: '',
-      title: '',
-      template: {},
-      templateId: 0,
-      rules: {
-        name: [{ required: true, message: '请输入报告名称', trigger: 'blur' },],
-      },
-      queryParams: {
-        name: '',
-        current: 1,
-        size: 10,
-        projectId: 0,
-        permissions: 1
-      },
-      colorList: [
-        '#409eff',
-        '#67c23a',
-        '#909399',
-        '#f56c6c',
-        '#e6a23c',
-        '#e63c91',
-        '#e6553c',
-        '#3ce6cc',
-        '#8e3ce6',
-        '#e63c3c'
-      ],
-      total: 0,
-      patentList: [],
-      templateList: [],
-      loadingBtn: false,
-    }
-  },
-  computed: {
-    ...mapGetters(['projectId', 'webSocket', 'userinfo']),
-    form() {
-      return this.$store.state.report.form
-    },
-    patentKey() {
-      return this.$store.state.chart.patentKey
-    }
-  },
-  async mounted() {
-    this.resetForm()
-    this.loading = true
-    this.queryParams.projectId = this.projectId
-    await this.getTemplateList()
-    await this.getPatentList()
-    this.loading = false
-    this.handleChangeTemplate()
-    this.initWebSocket()
-  },
-  methods: {
-    initWebSocket() {
-      this.webSocket.onmessage = (e) => {
-        const data = JSON.parse(e.data)
-        if (data.data.success) {
-          this.$message.success('任务完成')
-          this.$refs.patentList.getReportList()
-        }
-      }
-    },
-    close() {
-
-    },
-    resetForm() {
-      this.$store.commit('SET_FORM')
-      this.form.projectId = this.projectId
-      this.form.patentKey = this.patentKey
-    },
-    handleConfirm() {
-      if (!this.templateId) {
-        this.$message.error('请选择模板')
-        return false
-      }
-      this.template = this.templateList.find(item => item.id === this.templateId)
-      this.activeItem = String(this.template.label[0].id)
-      this.$store.commit('SET_TEMPLATE', this.template)
-      this.$store.commit('SET_ACTIVE_ITEM', this.activeItem)
-      this.form.templateId = this.template.id
-      this.showItem = false
-      this.showList = false
-      this.$nextTick(() => {
-        this.showItem = true
-        this.showList = true
-      })
-      this.dialogVisible = false
-    },
-    submit() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          this.loadingBtn = true
-          if (this.form.id) {
-            this.$api.editNewReport(this.form).then(response => {
-              this.$message.success('更新成功')
-              this.dialogVisible2 = false
-              this.loadingBtn = false
-            }).catch(error => {
-              this.loadingBtn = false
-            })
-          } else {
-            this.$api.addNewReport(this.form).then(response => {
-              this.$message.success('保存成功')
-              this.dialogVisible2 = false
-              this.loadingBtn = false
-            }).catch(error => {
-              this.loadingBtn = false
-            })
-          }
-        } else {
-          this.$message.error('请完善表单内容')
-          return false;
-        }
-      });
-    },
-    handleConfirm2() {
-      this.title = '一键生成报告'
-      this.dialogVisible2 = true
-    },
-    handleCurrentChange(val) {
-      this.queryParams.current = val;
-      this.getTemplateList();
-    },
-    handleClose() {
-      this.dialogVisible = false
-    },
-    handleClose2() {
-      this.dialogVisible2 = false
-    },
-    handleSelect(index, indexPath) {
-      this.showList = false
-      this.activeItem = index
-      this.$store.commit('SET_ACTIVE_ITEM', this.activeItem)
-      this.$nextTick(() => {
-        this.showList = true
-      })
-    },
-    handleChangeTemplate() {
-      this.title = '选择报告模板'
-      this.dialogVisible = true
-    },
-    handleCheck(type) {
-      this.$refs.patentList.handleCheck(type)
-      this.showList = false
-      this.$nextTick(() => {
-        this.showList = true
-      })
-    },
-    async getTemplateList() {
-      try {
-        const response = await this.$api.getNewTemplateList(this.queryParams)
-        this.templateList = response.data.records
-        this.total = response.data.total
-      } catch (e) {
-        this.loading = false
-      }
-    },
-    async getPatentList() {
-      try {
-        const { data } = await this.$api.getReportPatentList({ patentKey: this.patentKey, projectId: this.projectId })
-        this.patentList = data
-        this.$store.commit('SET_PATENT_LIST', this.patentList)
-      } catch (e) {
-        this.loading = false
-      }
-    }
-  }
-}
-</script>
-
-<style lang="less">
-.create-report {
-  .el-radio__label {
-    display: none !important;
-  }
-  .el-menu-item.is-active {
-    outline: 0;
-    background-color: #ecf5ff !important;
-  }
-}
-</style>

+ 0 - 142
src/views/analyse/report/record/index.vue

@@ -1,142 +0,0 @@
-<template>
-  <div>
-    <el-card shadow="never" style="height: 100%" :body-style="{height: '100%'}">
-      <el-container>
-        <el-header>
-          <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 label="创建人">
-              <el-input v-model="queryParams.createBy" size="small" placeholder="请输入创建人"></el-input>
-            </el-form-item>
-            <el-form-item>
-              <el-button type="" size="small" @click="getList">查询</el-button>
-            </el-form-item>
-          </el-form>
-        </el-header>
-        <el-main style="padding: 15px 0;">
-          <el-table v-loading="loading" :data="tableData" border header-row-class-name="custom-table-header">
-            <el-table-column type="index" label="序号" width="55" align="center"></el-table-column>
-            <el-table-column prop="name" label="报告名称" align="center" show-overflow-tooltip></el-table-column>
-            <el-table-column label="模板名称" align="center" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <span v-if="scope.row.template">{{ scope.row.template.name }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="专利数量" align="center">
-              <template slot-scope="scope">
-                <el-tag type="success">{{ scope.row.patentNum }}</el-tag>
-              </template>
-            </el-table-column>
-            <el-table-column label="下载报告" align="center" width="100">
-              <template slot-scope="scope">
-                <img class="download-report-btn" src="@/assets/WORD.png" alt="点击下载报告" width="30" height="30" @click="handleDownLoad(scope.row)">
-              </template>
-            </el-table-column>
-            <el-table-column label="创建人" align="center" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <span v-if="scope.row.user">{{ scope.row.user.name }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column prop="createTime" 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-column label="操作" align="center" width="100">
-              <template slot-scope="scope">
-                <el-button type="danger" size="small" @click="handleDelete(scope.row)">删除</el-button>
-              </template>
-            </el-table-column>
-          </el-table>
-          <div class="pagination">
-            <el-pagination :current-page.sync="queryParams.page" :page-size="queryParams.size" :total="total" @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper" background></el-pagination>
-          </div>
-        </el-main>
-      </el-container>
-    </el-card>
-  </div>
-</template>
-
-<script>
-import { mapGetters } from 'vuex'
-import { downLoad, downLoad2 } from "@/utils";
-import moment from "moment";
-export default {
-  name: 'reportList',
-  components: {
-  },
-  data() {
-    return {
-      queryParams: {
-        name: '',
-        createBy: '',
-        page: 1,
-        size: 10,
-        projectId: ''
-      },
-      loading: true,
-      total: 0,
-      tableData: [],
-    }
-  },
-  computed: {
-    ...mapGetters(['userinfo', 'projectId'])
-  },
-  activated() {
-    this.queryParams.projectId = this.projectId
-    this.getList()
-  },
-  methods: {
-    handleCurrentChange(val) {
-      this.queryParams.page = val;
-      this.getList();
-    },
-    getList() {
-      this.loading = true
-      this.$api.getNewReportList(this.queryParams).then(response => {
-        this.tableData = response.data
-        this.total = response.total
-        this.loading = false
-      }).catch(error => {
-        this.loading = false
-      })
-    },
-    handleEdit(row) {
-      this.$router.push({
-        path: '/report/new/project/manage',
-        query: {
-          id: row.id
-        }
-      })
-    },
-    handleDownLoad(row) {
-      if (row.reportUrl) {
-        downLoad2(row.reportUrl)
-      } else {
-        this.$message.error('暂未生成报告文件')
-      }
-    },
-    handleDelete(row) {
-      this.$confirm('确认删除本条数据吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.loading = true
-        this.$api.deleteNewReport({id: row.id}).then(response => {
-          this.$message.success('删除成功')
-          this.loading = false
-          this.getList()
-        }).catch(error => {
-          this.loading = false
-        })
-      })
-    }
-  }
-}
-</script>
-
-<style lang="less">
-.download-report-btn {
-  cursor: pointer;
-}
-</style>

+ 0 - 70
src/views/components/common/PatentDetails/index.vue

@@ -1,70 +0,0 @@
-<template>
-    <div>
-        <Patent-Details :patentNo="patentNo" :reportId="reportId"></Patent-Details>
-    </div>
-</template>
-<script>
-import PatentDetails from '@/views/workspace/folder/articles/ContrastIndex.vue'
-export default{
-    components:{
-        PatentDetails
-    },
-    data() {
-        return {
-        }
-    },
-    computed:{
-        patentNo(){
-            return this.$route.query.patentNo
-        },
-        reportId(){
-            return this.$route.query.reportId
-        },
-        piZhuContrastList() {
-            return this.$store.state.report.piZhuContrastList
-        }
-  },
-  created() {
-    },
-  mounted() {
-    },
-    methods: {
-        // 查询批注
-    getPiZhuContrastList(val) {
-      if (val) {
-        var index = this.piZhuContrastList.findIndex(item => {
-          item.patentNo == val
-        })
-        if (index != -1) {
-          return false;
-        }
-      }
-      let params = {
-        patentNo: val?val:this.patentNo,
-        id: this.reportId,
-        createFrom:this.reportId?2:0
-      }
-      this.$api.scratchWordsQuery(params).then(response => {
-        if (response.code==200) {
-          if (this.piZhuContrastList.length > 0) {
-             var a = this.piZhuContrastList.filter(item => {
-              return item.patentNo != params.patentNo
-             }).concat(response.data)
-          } else {
-             var a = response.data
-          }
-           this.$store.commit('SET_PATENT_PIZHU_CONTRAST', a)
-        }
-      })
-    },
-    },
-}
-</script>
-
-<style lang="scss" scoped>
-.btn{
-    display: flex;
-    justify-content: flex-end;
-}
-
-</style>

+ 0 - 8
src/views/components/common/RichText/index.js

@@ -1,8 +0,0 @@
-import RichText from './index.vue'
-const myRichText = {
-    install: function(Vue) {
-        // 注册并获取组件,然后在main.js中引用,在Vue.use()就可以了
-        Vue.component('myRichText', RichText)
-    }
-}
-export default myRichText

+ 0 - 222
src/views/components/common/RichText/index.vue

@@ -1,222 +0,0 @@
-<template>
-  <div>
-    <div class="edit-box div_MAX_Height" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
-        @blur="saveValue($event)" @click="getFocus($event)" v-on:paste="handlePaste($event)">
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props:{
-        value:{
-            type:String,
-            default:(value)=>{
-                  return ""
-            }
-        },
-        placeholder:{
-            type:String,
-            default:()=>{
-                return "请输入"
-            }
-        },
-        keys:{
-          type:String,
-          default:()=>{
-            const len = 6
-            const codeList = []
-            const chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789'
-            const charsLen = chars.length
-            for (let i = 0; i < len; i++) {
-              codeList.push(chars.charAt(Math.floor(Math.random() * charsLen)))
-            }
-            return  codeList.join('')
-          }
-        }
-    },
-  data() {
-    return {
-        content: this.value||"", // 内容
-    };
-  },
-  watch: {
-    value(val){
-      this.content = val
-    },
-  },
-  computed: {},
-  created() {},
-  mounted() {},
-  methods: {
-    open(){
-      console.log(1)
-    },
-   async handlePaste(event){
-      
-      const items = (event.clipboardData || window.clipboardData).items;
-      let file = null;
-      if (!items || items.length === 0) {
-        this.$message.error("当前浏览器不支持本地");
-        return;
-      }
-      for (let i = 0; i < items.length; i++) {
-        // if (items[i].type.indexOf("text") !== -1) {
-        //   var text =  (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('在这里输入文本');
-        //   //清除回车
-        //   text = text.replace(/\[\d+\]|\n|\r/ig,"")
-        //   var content = event.target.innerHTML
-        //   var str2 = content.slice(0, index.endOffset) + text + content.slice(index.endOffset);
-        //   event.target.innerHTML = str2
-        //   this.saveValue(event)
-        //   // this.$forceUpdate()
-        //   // if(this.tableHeight){
-        //   //   this.setHeight()
-        //   // }
-        //   break;
-        // }
-        if (items[i].type.indexOf("image") !== -1) {
-          var e = event || window.event
-          e.preventDefault();
-          file = items[i].getAsFile();
-          break;
-        }
-      }
-      if (!file) {
-        return;
-      }
-      var content = event.target.innerHTML
-      var str = await this.fileToBase64(file)
-      var randNum=Math.floor(Math.random()*(9999-1000))+1000;;
-      var new_img = '<img key="'+ randNum +'" src="' + str + '" style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle">';
-
-      // 创建新的光标对象
-//       var range = document.createRange();
-//                 // 将光标对象的范围界定为新建的表情节点
-//                 range.selectNodeContents(new_img);
-//                 // 定位光标位置在表情节点的最大长度位置
-//                 range.setStart(new_img, new_img.length);
-
-//                 // 将选区折叠为一个光标
-//                 range.collapse(true);
-//                 // 清除所有光标对象
-//                 selection.removeAllRanges();
-//                 // 添加新的光标对象
-//                 selection.addRange(range);
-// console.log(event.target.innerHTML)
-      var index = window.getSelection().getRangeAt(0)
-      var indexText = this.getColumn(event.target,window.getSelection())
-      var index2 = 0
-      var str2 = content.slice(0, indexText) + new_img + content.slice(indexText);
-      event.target.innerHTML = str2
-      this.$nextTick(()=>{
-        var selectedText = window.getSelection();
-      var selectedRange = document.createRange();
-      try{
-        for(var i=0;i<event.target.childNodes.length;i++){
-          if(event.target.childNodes[i].outerHTML == new_img){
-            index2 = i
-            throw new Error()
-          }
-        }
-      }catch{
-
-      }
-      selectedRange.setStart(event.target,index2+1);
-      selectedRange.collapse(true);
-      selectedText.removeAllRanges();
-      selectedText.addRange(selectedRange);
-      event.target.parentNode.focus(); 
-      })
-      
-      // this.saveValue(event)
-      // var selection = window.getSelection()
-      // window.getSelection().addRange(this.index)
-      // console.log(window.getSelection().getRangeAt(0))
-     
-    },
-    getColumn(node, selectObj) {
-      var baseNode = node;
-      var anchorNodePosition = this.getPosition(baseNode, selectObj.anchorNode, selectObj.anchorOffset);
-      var focusNodePosition = this.getPosition(baseNode, selectObj.focusNode, selectObj.focusOffset);
-      var num = Math.min(anchorNodePosition, focusNodePosition)
-      return num;
-    },
-    getNodes(baseNode, path) {
-      // 拿到所有类型的节点
-      var temPath = path;
-      if (baseNode != null) {
-        temPath.push(baseNode);
-        if (baseNode.childNodes.length > 0) {
-          for (let i = 0; i < baseNode.childNodes.length; i++) {
-            this.getNodes(baseNode.childNodes[i], temPath);
-          }
-        }
-      }
-    },
-    getPosition(baseNode, node, offset) {
-      //根据节点获取给定node中offset位置在栏位中的实际位置
-      let path = [];
-      this.getNodes(baseNode, path);
-      var retIdx = 0;
-      for (let i = 0; i < path.length; i++) {
-        if (path[i] == node) {
-          retIdx += offset;
-          return retIdx;
-        } else {
-          if (path[i].nodeType == 3) {
-              retIdx += path[i].nodeValue.length;
-          }else if(i!=0 && path[i].nodeType == 1){
-            retIdx += path[i].outerHTML.length;
-          }
-        }
-      }
-    },
-    // 将file文件上传转化为base64进行显示
-    fileToBase64(file) {
-        return new Promise((resolve, reject) => {
-            const reader = new FileReader()
-            //开始读文件
-            reader.readAsDataURL(file)
-            reader.onload = () => resolve(reader.result)
-            // 失败返回失败的信息
-            reader.onerror = error => reject(error)
-        })
-    },
-    getFocus(event){
-      event.target.parentNode.focus();
-    },
-    saveValue(event){
-        var a  = event.target.innerHTML
-        this.$emit('input',a)
-    }
-  },
-};
-</script>
-<style lang="scss" scoped>
-.edit-box{
-  overflow-x: hidden;
-    text-overflow: ellipsis;
-  padding: 0 15px;
-    min-height:40px;
-    line-height: 40px;
-    outline: #dcdfe6;
-    border:1px solid #DCDFE6;
-    border-radius:5px;
-    div{
-      height:30px !important;
-      line-height: 30px !important;
-    }
-}
-.edit-box:empty::before {
-    content: attr(placeholder);
-    // margin-left:15px;
-    font-style: normal;
-    white-space: nowrap;
-    color: #cacdd4;
-}
-// .edit-box:focus::before {
-//     content:none;
-// }
-</style>

+ 0 - 238
src/views/components/common/RichText/index3.vue

@@ -1,238 +0,0 @@
-<template>
-    <div class="boxs">
-      <!-- <el-upload
-        class="avatar-uploader"
-        name="file"
-        action=""
-        :show-file-list="false"
-        :data="uploadData"
-        :http-request="uploadHttpRequest"
-      >
-      </el-upload> -->
-      <quill-editor v-model="content" ref="myQuillEditor" :options="editorOption" @blur="saveHtml" @change="saveHtml1" @focus="getFocus"></quill-editor>
-      <!-- 富文本内容 -->
-    </div>
-</template> 
-<script>
-  import { quillEditor } from "vue-quill-editor";
-  import ImageBlot from './reviewClass'
-  // 工具栏配置
-//   const toolbarOptions = [
-//     ["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
-//     ["blockquote", "code-block"], // 引用  代码块
-//     [{ header: 1 }, { header: 2 }], // 1、2 级标题
-//     [{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
-//     [{ script: "sub" }, { script: "super" }], // 上标/下标
-//     [{ indent: "-1" }, { indent: "+1" }], // 缩进
-//     // [{'direction': 'rtl'}],                         // 文本方向
-//     [{ size: ["small", false, "large", "huge"] }], // 字体大小
-//     [{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
-//     [{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
-//     [{ font: [] }], // 字体种类
-//     [{ align: [] }], // 对齐方式
-//     ["clean"], // 清除文本格式
-//     ["link", "image", "video"], // 链接、图片、视频
-//   ];
-  export default {
-    props:{
-        value:{
-            type:String,
-            default:(value)=>{
-                  return ""
-            }
-        },
-        placeholder:{
-            type:String,
-            default:()=>{
-                return "请输入"
-            }
-        },
-        filed:{
-            type:String,
-            default:()=>{
-                return ''
-            }
-        },
-        keys:{
-          type:String,
-          default:()=>{
-            const len = 6
-            const codeList = []
-            const chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789'
-            const charsLen = chars.length
-            for (let i = 0; i < len; i++) {
-              codeList.push(chars.charAt(Math.floor(Math.random() * charsLen)))
-            }
-            return  codeList.join('')
-          }
-        }
-    },
-    data() {
-      return {
-        uploadData: {}, // 图片文件
-        content: this.value||"", // 内容
-        // content: null,
-        editorOption: {
-          placeholder: this.placeholder,
-          key:this.keys,
-        //   modules: {
-        //     toolbar: {
-        //       container: toolbarOptions,
-        //       handlers: {
-        //         image: function (value) {
-        //           if (value) {
-        //             // 触发input框选择图片文件
-        //             document.querySelector(".avatar-uploader input").click();
-        //           } else {
-        //             this.quill.format("image", false);
-        //           }
-        //         },
-        //       },
-        //     },
-        //   },
-        },
-      };
-    },
-    watch:{
-        value(val){
-          // var a = this.content.replace(/<p>|<\/p>/g,'')
-            if(this.content!=val){
-              this.content = val
-            }
-        },
-    },
-    computed:{
-      quill(){
-        return this.$refs.myQuillEditor.quill
-      }
-    },
-    mounted() {
-      // let quill = this.$refs.myQuillEditor.quill
-      // this.quill.enable(false)
-      //     this.$nextTick(()=>{
-            this.quill.enable(true)
-          // })
-      this.$forceUpdate()
-      this.quill.root.addEventListener('paste', evt => {
-        if (evt.clipboardData && evt.clipboardData.files && evt.clipboardData.files.length) {
-          evt.preventDefault();
-          [].forEach.call(evt.clipboardData.files,async file => {
-            if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
-              return
-            }
-          // 获取光标所在位置
-          let length = this.quill.selection.savedRange.index
-          var str = await this.fileToBase64(file)
-        //  this.quill.insertEmbed(length, 'image',{
-        //     url:str,
-        //     width:'',
-        //     height:'',
-        //     style:'width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle'
-        //   })
-        this.quill.insertEmbed(length, 'image',str)
-        // var html = `<img style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle" src="${str}">`
-        // // this.$nextTick(()=>{
-        //   this.content = this.content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/g,html)
-        //   console.log(this.content)
-        //   this.$set(this.quill.container.children[0],'innerHTML',this.content)
-        //   this.$forceUpdate()
-        //   this.quill.container.children[0].innerHTML = this.content
-          
-          this.$nextTick(()=>{
-            // this.content = this.imgTagAddStyle1(this.content)
-            this.quill.setSelection(length + 1)
-          })
-          
-          })
-        }
-      }, false)
-    },
-    methods: {
-      // 将file文件上传转化为base64进行显示
-        fileToBase64(file) {
-            return new Promise((resolve, reject) => {
-                ///FileReader类就是专门用来读文件的
-                const reader = new FileReader()
-                //开始读文件
-                reader.readAsDataURL(file)
-                reader.onload = () => resolve(reader.result)
-                // 失败返回失败的信息
-                reader.onerror = error => reject(error)
-            })
-        },
-      //失去焦点
-      saveHtml(event) {
-        // this.quill.enable(false)
-        // console.log("this.content", this.content);
-        // this.content = this.content.replace(/<p>|<\/p>/g,'')
-        //   this.$emit('input',this.content)
-        //   this.$nextTick(()=>{
-        //     this.quill.enable(true)
-        //   })
-          
-        // this.$emit('value',{
-        //     filed:this.filed,
-        //     content:this.content
-        // })
-      },
-      //值变化
-      saveHtml1(event) {
-        // var html = `<img style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle" src="${str}">`
-        //   this.content = this.content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/g,html)
-        // var a = this.content.replace(/<p>|<\/p>/g,'')
-          // this.content = this.imgTagAddStyle(this.content)
-          var a = this.content
-          console.log(a)
-          this.$emit('input',a)
-      },
-     imgTagAddStyle1(htmlStr){
-      var regex1 = new RegExp("(i?)(\<img)(?!(.*?style=['\"](.*)['\"])[^\>]+\>)","gmi");
-      //给不含style="" 或 style='' 的img标签加上style=""
-      htmlStr = htmlStr.replace(regex1, "$2 style=\"\"$3");
-      //正则匹配含有style的img标签
-      var regex2 = new RegExp("(i?)(\<img.*?style=['\"])([^\>]+\>)","gmi");
-      //在img标签的style里面增加css样式(这里增加的样式:display:block;max-width:100%;height:auto;border:5px solid red;)
-      htmlStr = htmlStr.replace(regex2, "$2width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle$3");
-      return htmlStr;
-    },
-      getFocus(){
-            this.quill.enable(true)
-      },
-    },
-  };
-</script> 
-<style lang="scss">
-  .boxs {
-    /* line-height: normal !important;
-    height: 500px;
-    width: 700px;
-    margin: 20px auto; */
-    height: 100%;
-    .ql-toolbar{
-        display: none;
-    }
-    .quill-editor{
-        border:1px solid #dcdfe6;
-        border-radius: 5px;
-       .ql-container
-       {
-        border:0;
-        .ql-editor{
-          // display: flex;
-          // flex-wrap: nowrap;
-          align-items: end;
-        }
-       }
-    }
-    .quill-editor:focus {
-      border:1px solid #409eff;
-    }  
-    .ql-editor.ql-blank::before {
-        font-style: normal;
-        color: #cacdd4;
-      }
-
-  }
-</style>   
-  
-  

+ 0 - 6
src/views/components/common/RichText/mixins.js

@@ -1,6 +0,0 @@
-import RichText from './index.vue'
-export const RichText1 ={
-    components:{
-        RichText
-    }
-}

+ 0 - 59
src/views/components/common/RichText/reviewClass.js

@@ -1,59 +0,0 @@
-
-import {Quill} from 'vue-quill-editor'
-const BlockEmbed = Quill.import('blots/block/embed')
-const inline = Quill.import('blots/inline')
-// 添加插入图片
-class ImageBlot extends BlockEmbed {
-  static create(value) {
-    const node = super.create(value)
-    console.log(node)
-    node.setAttribute('src', value.url)
-    // node.setAttribute('title', value.name)
-    // node.setAttribute('controls', value.controls)
-    // node.setAttribute('controlslist', value.controlslist)
-    node.setAttribute('width', value.width)
-    node.setAttribute('height', value.height)
-    // node.setAttribute('webkit-playsinline', true)
-    // node.setAttribute('playsinline', true)
-    // node.setAttribute('x5-playsinline', true)
-    node.setAttribute('style', value.style)
-    // if (value.autoplay) {
-    //   node.setAttribute('autoplay', value.autoplay)
-    // }
-    return node
-  }
- 
-  static value(node) {
-    return {
-      url: node.getAttribute('src'), // 注意这里和上面的属性和值反过来相对
-    //   name: node.getAttribute('title'),
-    //   autoplay: node.getAttribute('autoplay'),
-    //   controls: node.getAttribute('controls'),
-    //   controlslist: node.getAttribute('controlslist'),
-      width: node.getAttribute('width'),
-      height: node.getAttribute('height'),
-      style: node.getAttribute('style')
-    }
-  }
-}
- 
-ImageBlot.blotName = 'image1' //quill使用时的名称
-ImageBlot.tagName = 'img' //定义的html标签名
-Quill.register(ImageBlot) // 注册
-
-
-
-
-class WordBox extends inline {
-  static create(value) {
-    const node = super.create(value);
-    //设置需要的样式
-    node.setAttribute('style', 'width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle');
-    return node;
-  }
-}
-
-WordBox.blotName = 'wordBox'; //工具栏中的名字与此名字需保持一致
-WordBox.tagName = 'wordBox';  //需要添加的标签名
-
-Quill.register(WordBox);

+ 0 - 187
src/views/components/common/SplitScreen.js

@@ -1,187 +0,0 @@
-export const splitScreen = {
-    data() {
-        return {
-            radio:1,
-            height:null,
-            height2:null,
-            positionList:[
-                {
-                    label:'tab展示',
-                    value:1
-                },
-                {
-                    label:'上边展示',
-                    value:2
-                },
-                {
-                    label:'下边展示',
-                    value:3
-                },
-                {
-                    label:'左边展示',
-                    value:4
-                },
-                {
-                    label:'右边展示',
-                    value:5
-                },
-            ],
-            activeMenu2:'',
-        }
-    },
-    watch:{
-        activeMenu2(){
-            this.radio = 1
-            this.changePosition(this.radio)
-          },
-    },
-    mounted() {
-        this.$nextTick(()=>{
-            this.$set(this,'height',document.getElementsByClassName('el-main')[0].offsetHeight-200 + 'px')
-            this.height2 = this.height
-         })
-    },
-    methods: {
-        ending(val){
-            this.activeMenu2 = val
-            return false
-          },
-        //修改附图展示方式
-    changePosition(val){
-        var dom = document.getElementsByClassName('dom')
-        var height = document.getElementsByClassName('patent-articles-content-left')[0].offsetHeight+20
-        // console.log(height)
-        var left1 = document.getElementsByClassName('left1')
-        var mid1 = document.getElementsByClassName('mid1')
-        switch(val){
-          case 1://tab展示
-            dom[0].style.flexDirection = ''
-            this.height = document.getElementsByClassName('el-main')[0].offsetHeight-200 + 'px'
-            this.$nextTick(()=>{
-              left1[0].style.width = '100%'
-            })
-            break;
-          case 2://上边展示
-            dom[0].style.flexDirection = 'column-reverse'
-            this.height = (height - 300) + 'px'
-            this.$nextTick(()=>{
-              mid1[0].style.width = '100%'
-              left1[0].style.width = '100%'
-            })
-            break;
-          case 3://下边展示
-            dom[0].style.flexDirection = 'column'
-            this.height = (height - 400) + 'px'
-            this.$nextTick(()=>{
-              mid1[0].style.width = '100%'
-              left1[0].style.width = '100%'
-            })
-            break;
-          case 4://左边展示
-            dom[0].style.flexDirection = 'row-reverse'
-            this.height = (height) + 'px'
-            break;
-          case 5://右边展示
-            dom[0].style.flexDirection = 'row'
-            this.height = (height) + 'px'
-            break;    
-        }
-      },
-    },
-}
-export const splitScreen1 = {
-    data() {
-        return {
-            radio:1,
-            height:null,
-            height2:null,
-            positionList:[
-                {
-                    label:'tab展示',
-                    value:1
-                },
-                {
-                    label:'上边展示',
-                    value:2
-                },
-                {
-                    label:'下边展示',
-                    value:3
-                },
-                {
-                    label:'左边展示',
-                    value:4
-                },
-                {
-                    label:'右边展示',
-                    value:5
-                },
-            ],
-            activeMenu2:'',
-        }
-    },
-    watch:{
-        activeMenu2(){
-            this.radio = 1
-            this.changePosition(this.radio)
-          },
-    },
-    mounted() {
-      this.$nextTick(() => {
-          if (document.getElementsByClassName('patent-articles-content-left').length>0) {
-             this.$set(this,'height',document.getElementsByClassName('el-main')[0].offsetHeight-200 + 'px')
-          }
-            if(this.height == '20px'){
-                this.$set(this,'height',document.getElementsByClassName('el-main')[0].offsetHeight-200 + 'px')
-                this.height2 = this.height
-            }
-         })
-    },
-    methods: {
-        ending(val){
-            this.activeMenu2 = val
-            return false
-          },
-        //修改附图展示方式
-        changePosition(val){
-            var dom = document.getElementsByClassName('dom1')
-            var height = document.getElementsByClassName('patent-articles-content-left1')[0].offsetHeight + 20
-            // var left1 = document.getElementsByClassName('left1')
-            // var mid1 = document.getElementsByClassName('mid1')
-            // console.log(left1)
-            switch(val){
-              case 1://tab展示
-                dom[0].style.flexDirection = ''
-                this.height = document.getElementsByClassName('el-main')[0].offsetHeight-200 + 'px'
-                // this.$nextTick(()=>{
-                //   left1[0].style.width = '100%'
-                // })
-                break;
-              case 2://上边展示
-                dom[0].style.flexDirection = 'column-reverse'
-                this.height = (height - 300) + 'px'
-                // this.$nextTick(()=>{
-                //   mid1[0].style.width = '100%'
-                //   left1[0].style.width = '100%'
-                // })
-                break;
-              case 3://下边展示
-                dom[0].style.flexDirection = 'column'
-                this.height = (height - 400) + 'px'
-                // this.$nextTick(()=>{
-                //   mid1[0].style.width = '100%'
-                //   left1[0].style.width = '100%'
-                // })
-                break;
-              case 4://左边展示
-                dom[0].style.flexDirection = 'row-reverse'
-                this.height = (height) + 'px'
-                break;
-              case 5://右边展示
-                dom[0].style.flexDirection = 'row'
-                this.height = (height) + 'px'
-                break;    
-            }
-          },
-    },
-}

+ 0 - 8
src/views/components/common/retrieval/index.js

@@ -1,8 +0,0 @@
-import search from './search.vue'
-const mySearch = {
-    install: function(Vue) {
-        // 注册并获取组件,然后在main.js中引用,在Vue.use()就可以了
-        Vue.component('mySearch', search)
-    }
-}
-export default mySearch

+ 0 - 60
src/views/components/common/retrieval/index.vue

@@ -1,60 +0,0 @@
-<template>
-  <div>
-    <search :SearchFields="data" @search="search"></search>
-  </div>
-</template>
-
-<script>
-import search from './search.vue';
-export default {
-  components: {
-    search
-  },
-  props: {},
-  data() {
-    return {
-        data:[
-            {
-                label:'文本',
-                value:'text',
-                type:1
-            },
-            {
-                label:'时间',
-                value:'date',
-                type:2
-            },
-            {
-                label:'选择',
-                value:'select',
-                type:3,
-                options:[
-                    {
-                        label:'1',
-                        value:'1'
-                    },
-                    {
-                        label:'2',
-                        value:'2'
-                    }, {
-                        label:'3',
-                        value:'3'
-                    },
-                ]
-            }
-        ]
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {},
-  methods: {
-    search(val){
-        // console.log(val)
-    }
-  },
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 0 - 295
src/views/components/common/retrieval/search.vue

@@ -1,295 +0,0 @@
-<template>
-  <div class="searchComponent">
-    <div class="field">
-      <el-select
-        v-model="label"
-        size="small"
-        @change="getObject"
-      >
-        <el-option
-          v-for="item in SearchFields"
-          :key="item.value"
-          :label="item.label"
-          :value="item.value"
-        ></el-option>
-      </el-select>
-    </div>
-    <div class="value">
-      <div
-        v-if="field.type == 2"
-        style="display: flex; width: 100%"
-      >
-        <el-date-picker
-          v-model="value"
-          type="date"
-          style="width: 100%"
-          size="small"
-          value-format="yyyy-MM-dd"
-          :placeholder="getPlaceholder()"
-        >
-        </el-date-picker>
-      </div>
-      <div v-else-if="field.type == 3" style="width: 100%">
-        <el-select
-          v-model="value"
-          size="small"
-          multiple
-          filterable
-          collapse-tags
-          :placeholder="getPlaceholder()"
-          style="width: 100%"
-        >
-            <el-option
-                v-for="item in field.options || []"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-            >
-            </el-option>
-        </el-select>
-      </div>
-      <div v-else style="width: 100%">
-        <el-input
-          size="small"
-          style="width: 100%"
-          v-model="value"
-          :placeholder="getPlaceholder()"
-        ></el-input>
-      </div>
-    </div>
-    <div class="btn">
-        <el-button size="small" type="primary" @click="search" class="indicia-top-button" style="width:100%" :disabled="disabled">搜 索</el-button>
-    </div>
-    <div class="option" v-if="searchOptions.length>0">
-        <el-popover placement="bottom" title="" width="300" trigger="hover" class="margin-left_10">
-            <div class="main">
-                <div v-for="(item, index) in searchOptions" :key="item.value" class="box">
-                  <el-alert type="success" :closable="false" >
-                    <div class="content">
-                      <div class="color-black">{{ item.label }}</div>
-                      <b class="padding-right_10">AND</b>
-                      <span class="color-black">
-                        <span v-if="item.type == 3">
-                          <span class="padding_0_5">(</span>
-                          <span v-for="(data, i) in item.searchValue" :key="data.label">
-                            <span class="query-data-label" @click="handleCancelQueryParams(item, index, i)">{{ data.label }}<i class="el-icon-close"></i></span>
-                            <b v-if="item.searchValue.length - 1 > i" class="padding_0_5 color-primary">OR</b>
-                          </span>
-                          <span class="padding_0_5">)</span>
-                        </span>
-                        <span v-else>
-                            <span class="query-data-label" @click="handleCancelQueryParams(item, index)">{{ item.searchValue.label }}<i class="el-icon-close"></i></span>
-                        </span>
-                      </span>
-                    </div>
-                  </el-alert>
-                </div>
-            </div>
-            <el-button slot="reference" size="small" type="primary" style="width:100%">
-                    检索条件<i class="el-icon-arrow-down el-icon--right"></i>
-            </el-button>
-        </el-popover>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props: {
-    SearchFields: {
-      default: () => {
-        return [];
-      },
-    },
-    disabled:{
-        default:false
-    },
-    searchValue:{
-        default: () => {
-            return {};
-        },
-    }
-  },
-  data() {
-    return {
-        inner:false,
-      label: '',
-      value: null,
-      field:{},
-      searchOptions:[]
-    };
-  },
-  watch: {
-    SearchFields(){
-        this.getLabel()
-    },
-    searchValue: {
-      deep: true,
-      handler(n, o) {
-        if(!this.inner){
-           this.getSearchOptions() 
-        }else{
-            this.inner = false
-        }
-        
-      }
-    }
-  },
-  computed: {},
-  created() {},
-  mounted() {
-    this.getLabel()
-    this.getSearchOptions()
-  },
-  methods: {
-    getSearchOptions(){
-        this.searchOptions = []
-        if(Object.keys(this.searchValue).length>0){
-            Object.keys(this.searchValue).forEach(key=>{
-                if(this.searchValue[key] || (typeof this.searchValue[key] == 'object' && this.searchValue[key].length>0)){
-                var field = this.SearchFields.find(item=>{
-                    return item.value == key
-                })
-                if(typeof this.searchValue[key] == 'object'){
-                   this.searchOptions.push(
-                        {
-                            ...field,
-                            searchValue : field.options.filter(item=>{
-                                return this.searchValue[key].indexOf(item.value)!=-1
-                            })
-                        }
-                    ) 
-                }else{
-                    this.searchOptions.push(
-                        {
-                            ...field,
-                            searchValue :{
-                                        label:this.searchValue[key]
-                                    }
-                        }
-                    ) 
-                }
-              }  
-            })
-        }
-    },
-    getLabel(){
-        if(this.SearchFields.length>0){
-            this.label = this.SearchFields[0].value
-            this.getObject(this.label)
-        }
-    },
-    handleCancelQueryParams(data, index, i) {
-        this.inner = true
-      if(data.type==3){
-        data.searchValue.splice(i,1)
-        if(data.searchValue.length == 0){
-            this.searchOptions.splice(index,1)
-        }
-      }else{
-        this.searchOptions.splice(index,1)
-      }
-      this.$emit('search',this.searchOptions)
-    },
-    search(){
-        this.inner = true
-        if(this.value || this.value.length>0){
-            var searchValue = {}
-            if(this.field.type == 3){
-                searchValue = this.field.options.filter(item=>{
-                    return this.value.indexOf(item.value)!=-1
-                })
-            }else{
-                searchValue = {
-                    label:this.value
-                }
-            }
-            this.searchOptions.push(
-                {
-                    ...this.field,
-                    searchValue:searchValue
-                }
-            )
-            this.getValue()
-        }
-        
-        this.$emit('search',this.searchOptions)
-    },
-    getObject(val) {
-        this.field = this.SearchFields.find(item=>{
-            return item.value == val
-        })
-        this.getValue()
-    },
-    getValue(){
-        if(this.field.type == 3){
-            this.value = []
-        }else{
-            this.value = ''
-        }
-    },
-    getPlaceholder(){
-        var placeholder = '请输入'
-        if(this.field.placeholder){
-            placeholder = this.field.placeholder
-        }else{
-            if(this.field.type){
-                if(this.field.type == 1){
-                    placeholder = '请输入'
-                }else if(this.field.type == 2){
-                    placeholder = '请选择时间'
-                }else if(this.field.type == 3){
-                    placeholder = '请选择'
-                }
-            }
-        }
-        return placeholder
-    }
-  },
-};
-</script>
-<style lang="scss" scoped>
-.main {
-  padding: 0 !important;
-  height: 250px;
-  overflow-y: auto;
-  .box {
-    margin-top: 10px;
-    .content {
-      line-height: 30px;
-      font-size: 14px;
-    }
-  }
-}
-.query-data-label {
-  cursor: pointer;
-  &:hover {
-    text-decoration: underline;
-    color: red;
-  }
-}
-.searchComponent{
-    padding:0 10px;
-    display: flex;
-    width:100%;
-}
-.searchComponent>*{
-    margin-right:10px;
-    width:100%;
-}
-.value{
-    width:100%
-}
-.btn{
-    width:100px;
-    margin-right:0;
-}
-.field{
-    max-width:150px;
-}
-.option{
-    width:100px;
-    margin-right:0;
-}
-</style>

+ 0 - 312
src/views/components/import/PatentNoImport/download.vue

@@ -1,312 +0,0 @@
-<template>
-    <div style="background: white;padding: 20px;height: 100%;">
-      <div style="float:right" v-if="downloadId==9">
-        <el-button type="primary" @click="settingUser">账号配置</el-button>
-      </div>
-      <div style="width: 800px;margin: 0 auto;">
-        <div v-if="downloadId==9" >
-          <el-form :inline="true" :model="queryParams" :rules="rules" ref="from" class="demo-form-inline" style="display: flex;justify-content: space-between;">
-            <el-form-item label="来源网站" prop="configId">
-              <el-select v-model="queryParams.configId" placeholder="请选择网站" >
-                  <el-option v-for="item in website"
-                    :key="item.id"
-                    :label="item.webName"
-                    :value="item.id">
-                  </el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="下载内容" prop="configCells">
-              <el-select v-model="queryParams.configCells"  multiple collapse-tags placeholder="请选择下载内容" style="width: 100%;">
-                  <el-option v-for="item in download"
-                    :key="Number(item.cellValue)"
-                    :label="item.cellName"
-                    :value="Number(item.cellValue)">
-                  </el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="是否更新" prop="taskType">
-              <el-switch v-model="queryParams.taskType" :active-value="1" :inactive-value="0" active-color="#13ce66" inactive-color="#ff4949" @change="change3">  </el-switch>
-            </el-form-item>
-          </el-form>
-          <div v-show="queryParams.taskType"  >
-            <el-form :inline="true" ref="from" :model="queryParams" :rules="rules" class="demo-form-inline" style="display: flex;justify-content: space-between;">
-              <el-form-item label="更新间隔" prop="dateType">
-                <el-select v-model="queryParams.dateType" @change="getDateType" clearable placeholder="请选择更新时间间隔" style="margin-right: 20px;">
-                  <el-option v-for="item in options"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value">
-                  </el-option>
-                </el-select>
-              </el-form-item>
-              <el-form-item label="选择更新具体时间" v-if="queryParams.dateType" >
-                <timeChoose :type="queryParams.dateType" @value="handleData" :cron="queryParams.crons" style="width:300px"></timeChoose>
-              </el-form-item>
-            </el-form>
-          </div>
-          </div>
-          <!-- <div style="display: flex;margin-bottom: 10px;" v-if="queryParams.configType==2">
-            <p style="width:150px;margin-right:10px;margin-bottom: 10px;">数据库:</p>
-            <div>
-              <el-checkbox-group v-model="queryParams.database">
-                <el-checkbox v-for="item in database" :key="item.value" :label="item.value" style="margin:5px">{{ item.label }}</el-checkbox>
-              </el-checkbox-group>
-            </div>
-          </div> -->
-          <!-- 搜索 -->
-          <div style="display: flex;justify-content: center;width: 100%;align-items:center">
-            <span style="width: 100%;">
-               <el-input v-model="queryParams.conditions" :placeholder="downloadId==9?'请输入检索信息':'请输入专利号(多个专利号同时添加中间请用符号“|”隔开)'" ></el-input>
-            </span>
-            <span style="margin-left:8px" v-if="queryParams.configType==2">
-              <el-tooltip class="item" effect="dark" content="检索说明" placement="top">
-                <i class="el-icon-question" style="font-size:28px" @click="checkConceal(3)" ></i>
-              </el-tooltip>
-            </span>
-              <el-button @click="imports" type="primary" icon="el-icon-upload el-icon--right" style="margin-left:20px"> 导入 </el-button>
-          </div>  
-      </div>
-      
-      <div>
-         <SystemTask :form="9" :reportId="reportId" :productId="productId" :projectId="projectId"></SystemTask> 
-      </div>
-    </div>
-</template>
-
-<script>
-import SystemTask from "@/views/task/index.vue";
-import { cron } from "@/views/workspace/components/common/mixins";
-import timeChoose from "@/views/workspace/components/common/timeChoose.vue";
-
-export default {
-  mixins:[cron],
-  props:['reportId','downloadId','asCompare','productId','projectId'],
-  components: {
-    SystemTask,
-    timeChoose,
-  },
-  data() {
-    const dateTypeRule = (rule, value, callback) => {
-      // console.log(value)
-      if (this.queryParams.taskType == 1) {
-        if (value) {
-          callback()
-        } else {
-          callback(new Error('请选择更新周期'))
-        }
-      } else {
-        callback()
-      }
-    }
-    return {
-      database:[
-        {
-          label:'中国发明专利',
-          value:'FMZL'
-        },
-        {
-          label:'中国发明授权',
-          value:'FMSQ'
-        },
-        {
-          label:'中国实用新型',
-          value:'SYXX'
-        },
-        {
-          label:'中国外观专利',
-          value:'WGZL'
-        },
-        {
-          label:'美国',
-          value:'USPATENT'
-        },
-        {
-          label:'英国',
-          value:'GBPATENT'
-        },
-        {
-          label:'法国',
-          value:'FRPATENT'
-        },
-        {
-          label:'德国',
-          value:'DEPATENT'
-        },
-        {
-          label:'瑞士',
-          value:'CHPATENT'
-        },
-        {
-          label:'日本',
-          value:'JPPATENT'
-        },
-        {
-          label:'俄罗斯',
-          value:'RUPATENT'
-        },
-        {
-          label:'韩国',
-          value:'KRPATENT'
-        },
-        {
-          label:'欧洲专利局',
-          value:'EPPATENT'
-        },
-        {
-          label:'世界知识产权组织',
-          value:'WOPATENT'
-        },
-
-      ],
-      website:[],//选择网站
-      download: [],//选择下载内容
-      options: [
-        {label:'每天',value:'day'},
-        {label:'每周',value:'week'},
-        {label:'每月',value:'month'},
-        {label:'每年',value:'year'},
-      ],
-      queryParams: {
-        database:[],
-        reportId: this.reportId,
-        productId: this.productId,
-        projectId: this.projectId,
-        crons:'',
-        conditions:'',//搜索条件
-        configId: '',//网站
-        configType:'',
-        configCells: [],//下载内容
-        dateType:'',
-        dates: '',
-        taskType:0,//0普通任务1定时任务
-        taskState:0,//任务状态 0等待1进行2成功3失败
-      },
-      isGetList:false,
-      rules: {
-        configId: [{ required: true, message: '请选择来源网站', trigger: 'change' },],
-        configCells: [{ required: true, message: '请选择下载内容', trigger: 'change' },],
-        taskType: [{ required: true, message: '请选择', trigger: 'change' },],
-        dateType: [{ required: true,  validator:dateTypeRule, trigger: 'change' },],
-      },
-    }
-  },
-  created() {
-
-  },
-  watch: {
-    'queryParams.configId'(val) {//更换网站
-      let a= this.website.filter(item => {
-        return item.id==val
-      })
-      this.queryParams.configType = a[0].webType
-      this.downloads()
-    },
-
-  },
-  mounted() {
-    // this.getList()
-  },
-  methods: {
-    checkConceal(id) {
-      const router = this.$router.resolve({
-        path: '/agreeConceal',
-        query: {
-          id:id
-        }
-      })
-      window.open(router.href, '_blank')
-      // const router1 = this.$router.resolve({
-      //   path: '/downPatentList',
-        
-      // })
-      // window.open(router1.href, '_blank')
-    },
-    //打开账号配置
-    settingUser(){
-      this.$refs.settingUser.open(this.website)
-    },
-    change3(val) {
-      // console.log(val);
-    },
-    getDateType(val) {
-      // console.log(val)
-      this.queryParams.crons = ''
-    },
-    // 获取时间
-    handleData(val) {
-      if (this.queryParams.dateType=='') {
-        this.$message.error('请先选择更新周期')
-        return false
-      }
-      this.queryParams.crons=val
-    },
-    // 请求全部网站
-    getList() {
-      this.$api.getAllConfig({}).then(res => {
-        if (res.code==200) {
-          this.website = res.data
-        }
-      })
-    },
-    // 请求当前网站可下载项
-    async downloads() {
-      await this.$api.getConfigCell({type:this.queryParams.configType}).then(res => {
-        if (res.code==200) {
-          this.download = res.data
-          this.queryParams.configCells=this.download.map(item=>{ return Number(item.cellValue) })
-        }
-      })
-    },
-    // 导入
-    imports() {
-      if (this.queryParams.conditions == '') {
-        if (this.downloadId == 9) {
-          this.$message.error('请输入检索信息')
-        } else {
-          this.$message.error('请输入专利号')
-        }
-        return false
-      }
-      if (this.downloadId == 8) {
-        this.queryParams.patentNo = this.queryParams.conditions
-        this.queryParams.conditions = ''
-        this.queryParams.asCompare=this.asCompare
-        this.$api.importByNos(this.queryParams).then(res => {
-          // console.log(res.code);
-          if (res.code == 200) {
-            if (res.data && res.data.length > 0) {
-              // if (!res.data.includes('')) {
-              // this.alterMessage(res.data)
-              // }
-            } else {
-              this.$message.success('创建任务完成,正在导入!')
-            }
-           
-            this.queryParams.patentNo = ''
-            // this.getList()
-          }
-        }).catch(error => {
-        })
-        return false
-      }
-      this.$refs.from.validate((valid) => {
-        if (valid) {
-          this.$api.addTask(this.queryParams).then(res => {
-            if (res.code==200) {
-              this.$message.success('创建任务完成,正在导入!')
-              this.queryParams.conditions = ''
-              this.isGetList=!this.isGetList
-            }
-          })
-        }
-        
-      })
-     
-    },
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>

+ 0 - 43
src/views/components/import/PatentNoImport/index.vue

@@ -1,43 +0,0 @@
-<template>
-  <div>
-    <download :reportId="reportId" :downloadId="option" :asCompare="asCompare" :productId="productId" :projectId="projectId"></download>
-  </div>
-</template>
-
-<script>
-import download from "./download.vue";
-export default {
-  components: {
-    download
-  },
-  data() {
-    return {
-
-    }
-  },
-  computed: {
-    reportId() {
-      return this.$route.query.reportId
-    },
-    projectId() {
-      return this.$route.query.projectId
-    },
-    productId() {
-      return this.$route.query.productId
-    },
-    option() {
-      return this.$route.query.option
-    },
-    asCompare() {
-      return this.$route.query.asCompare
-    }
-  },
-  methods: {
-
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>

+ 0 - 96
src/views/components/import/conditionImport/AdvancedSearch.vue

@@ -1,96 +0,0 @@
-<template>
-  <div class="advancedSearch">
-    <div>
-        <el-input type="textarea" v-model="condition" :rows="3" placeholder='高级检索语句,例:TI=(石墨烯 NOT 石墨烯薄膜 OR "graphene film") AND AD=2018 AND GD=20180205~20190101'></el-input>
-        <div style="display:flex;justify-content: flex-end;margin-top:20px">
-            <el-button type="danger" plain size="small" style="width:100px" @click="cancel">清空</el-button>
-            <el-button type="primary" size="small" style="width:100px" @click="search">检索</el-button>
-        </div>
-    </div>
-    <div>
-        <div>
-            <div><b>表达式与语法:</b></div>
-            检索条件表达式,可支持AND、OR、NOT等逻辑运算符号(不区分大小写)和等于(=)比较符号,其中:<br>
-            1、日期栏位的值支持yyyy. yyyyMM、 yyyyMMdd等格式;已知时间的连续范围为“2006-02-02”到“2009-01-01”,应输入:<span class="red">AD=20060202~20090101</span>;注意:日期的范围检索必须精确到日。<br>
-            2、专利类型(PT)栏位的值包括:1、8 为发明 检索发明,2、9 为新型,3 为外观(注意:仅中国专利);例:<span class="red">PT=1</span><br>
-            3、法律状态(LG)栏位的值包括:1:有效、2:失效、3:审中(注意:仅中国专利);例:<span class="red">LG=1</span><br>
-            4、国家〔地区)相关栏位的值为国家地区代码,需要大写,例如:CN代表中国、US代表美国、JP代表日本等;<br>
-            5、搜索条件中有空格把整个搜索条件前后加上英文双引号,例如:<span class="red">TI=(石墨烯 NOT 石墨烯薄膜 OR "graphene film") AND AD=2018 AND GD=20180205~20190101</span>;<br>
-        </div>
-        <div>
-            <div><b>检索栏位包括:</b></div>
-            <div class="field">
-                <p v-for="item in field.filter(item=>{return item.type != (this.DBType=='WD'?1:2)})" :key="item.label"><span style="color:red">{{ item.value }}</span>:{{ item.label }}</p>
-            </div>
-            <div><b>省市代码(仅中国专利):</b></div>
-            <div v-html="changeRed('province')">
-               
-            </div>
-            <div><b>国别代码:</b></div>
-            <div>
-                <span v-for="(item) in countryList" :key="item.value"><span class="red">{{ item.value }}</span>&nbsp;{{ item.label }}&nbsp;&nbsp;</span>
-            </div>
-        </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props:['countryList','DBType'],
-  data() {
-    return {
-        condition:'',
-        field:this.$constants.searchField,
-    };
-  },
-  watch: {
-  },
-  computed: {},
-  
-  created() {},
-  mounted() {
-    this.field = [].concat(...this.field.map(item=>{return item.children}))
-  },
-  methods: {
-    changeRed(val){
-        if(val == 'province'){
-            var str = ' 北京 12 天津 13 河北 14 山西 15 内蒙 21 辽宁 22 吉林 23 黑龙江 31 上海 32 江苏 33'
-                    +'浙江 34 安徽 35 福建 36 江西 37 山东 41 河南 42 湖北 43 湖南 44 广东 45 广西 51 四' 
-                    +'川 52 贵州 53 云南 54 西藏 61 陕西 62 甘肃 63 青海 64 宁夏 65 新疆 66 海南 71 台'
-                    +'湾 81 广州 83 武汉 85 重庆 87 西安 89 沈阳 91 大连 93 哈尔滨 94 深圳 95 青岛 97 宁'
-                    +'波 HK 香港'
-            var regx = new RegExp("[0-9A-Z]+", "g")
-        }
-        return "<span style='color:red'>11 </span>"+str.replace(regx,"<span style='color:red'>&nbsp;&nbsp; $& </span>")
-    },
-    cancel(){
-        this.condition = ''
-    },
-    search(){
-        var a = this.condition
-        // if(a.trim().indexOf('(')!=0){
-        //     a = `${a}`
-        // }
-        this.$emit('search',a.trim())
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.advancedSearch{
-    padding: 10px;
-}
-.field{
-    display: flex;
-    flex-wrap:wrap;
-    p{
-        width:200px;
-        margin:5px;
-    }
-}
-.red{
-    color:red
-}
-</style>

+ 0 - 271
src/views/components/import/conditionImport/FormSearch.vue

@@ -1,271 +0,0 @@
-<template>
-    <div class="formSearch">
-        <el-form :model="form" label-width="120px" size="small" label-position="right">
-            <template  v-for="item in constants.searchField" >
-                <div :key="item.label" v-if="(dbType ==2 && item.value!='typeAndStatus')||dbType !=2 ">
-                    <div>
-                        <span>{{item.label}}</span>
-                        <el-divider></el-divider>
-                    </div>
-                    <div>
-                        <el-row>
-                            <el-col :span="24">
-                                <div v-for="(i,index) in item.children" :key="i.value">
-                                    <div v-if="index%2==0">
-                                        <el-col :span="12" v-if="(item.children[index].type == dbType || item.children[index].type == 3)">
-                                            <el-form-item :label="item.children[index].label+':'">
-                                                <!-- <el-select v-model="form[item.children[index].value]" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
-                                                    <el-option
-                                                    v-for="item in constants[item.children[index].value]"
-                                                    :key="item.value"
-                                                    :label="item.label"
-                                                    :value="item.value">
-                                                    </el-option>
-                                                </el-select> -->
-                                                <div v-if="item.children[index].dataType==2" style="display:flex;width:100%">
-                                                    <el-date-picker
-                                                        v-model="form[item.children[index].value][0]"
-                                                        style="width:50%"
-                                                        type="date"
-                                                        size='small'
-                                                        value-format="yyyyMMdd"
-                                                        placeholder="开始,例:20000101">
-                                                    </el-date-picker>
-                                                    <el-date-picker
-                                                        style="width:50%"
-                                                        v-model="form[item.children[index].value][1]"
-                                                        type="date"
-                                                        size='small'
-                                                        value-format="yyyyMMdd"
-                                                        placeholder="结束,例:20001231">
-                                                    </el-date-picker>
-                                                </div>
-                                                <div v-else-if="item.children[index].dataType==3" style="width:100%">
-                                                    <el-select v-model="form[item.children[index].value]" size="small" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
-                                                        <el-option
-                                                            v-for="item in item.children[index].value=='GJ'?countryList:constants[item.children[index].value]"
-                                                            :key="item.value"
-                                                            :label="item.label"
-                                                            :value="item.value">
-                                                        </el-option>
-                                                    </el-select>
-                                                </div>
-                                                <div v-else style="width:100%"><el-input size='small' style="width:100%" v-model="form[item.children[index].value]" :placeholder="item.children[index].placeholder"></el-input> </div>
-                                            </el-form-item>
-                                        </el-col>
-                                        <el-col :span="12" v-if="(item.children[index+1]) && (item.children[index+1].type == dbType || item.children[index+1].type == 3)" >
-                                            <el-form-item :label="item.children[index+1].label+':'">
-                                                <!-- <el-select v-model="form[item.children[index+1]?.value]" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
-                                                    <el-option
-                                                    v-for="item in constants[item.children[index+1]?.value]"
-                                                    :key="item.value"
-                                                    :label="item.label"
-                                                    :value="item.value">
-                                                    </el-option>
-                                                </el-select> -->
-                                                <div v-if="item.children[index+1].dataType==2" style="display:flex;width:100%">
-                                                    <el-date-picker
-                                                        v-model="form[item.children[index+1].value][0]"
-                                                        style="width:50%"
-                                                        type="date"
-                                                        size='small'
-                                                        value-format="yyyyMMdd"
-                                                        placeholder="开始,例:20000101">
-                                                    </el-date-picker>
-                                                    <el-date-picker
-                                                        style="width:50%"
-                                                        v-model="form[item.children[index+1].value][1]"
-                                                        type="date"
-                                                        size='small'
-                                                        value-format="yyyyMMdd"
-                                                        placeholder="结束,例:20001231">
-                                                    </el-date-picker>
-                                                </div>
-                                                <div v-else-if="item.children[index+1].dataType==3" style="width:100%">
-                                                    <el-select v-model="form[item.children[index+1].value]" size="small" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
-                                                        <el-option
-                                                            v-for="item in item.children[index+1].value=='GJ'?countryList:constants[item.children[index+1].value]"
-                                                            :key="item.value"
-                                                            :label="item.label"
-                                                            :value="item.value">
-                                                        </el-option>
-                                                    </el-select>
-                                                </div>
-                                                <div v-else style="width:100%"><el-input size='small' style="width:100%" v-model="form[item.children[index+1].value]" :placeholder="item.children[index+1].placeholder"></el-input> </div>
-
-                                            </el-form-item>
-                                        </el-col>
-                                    </div>
-                                    
-                                </div>
-                                
-                            </el-col>
-                        </el-row>
-                    </div>
-                </div>
-            </template>
-        </el-form>
-        <div style="display:flex;justify-content: center;">
-            <el-button type="danger" plain size="small" style="width:100px" @click="cancel">清空</el-button>
-            <el-button type="primary" size="small" style="width:100px" @click="search">检索</el-button>
-        </div>
-    </div>
-</template>
-<script>
-export default {
-    props:['countryList','DBType'],
-    data() {
-        return {
-            form:{
-                // AD:[],
-                // PD:[],
-                // GD:[]
-            },
-            dbType:this.DBType=='WD'?'2':'1',
-            constants:this.$constants,
-            option1:[//法律状态
-                {
-                    label:'有效',
-                    value:1
-                },
-                {
-                    label:'无效',
-                    value:2
-                },
-                {
-                    label:'审中',
-                    value:3
-                },
-            ],
-            option2:[//专利类型
-                {
-                    label:'发明',
-                    value:1
-                },
-                {
-                    label:'新型',
-                    value:2
-                },
-                {
-                    label:'外观',
-                    value:3
-                },
-            ],
-        }
-    },
-    watch:{
-        DBType(val){
-            this.dbType = val == 'WD'?'2':'1'
-        }
-    },
-    mounted() {
-        
-    },
-    methods: {
-        selectAll () {
-            if (this.form.GJ.length < this.countryList.length) { // 非全选时,点击选择全部
-                this.form.GJ = this.countryList.map((item) => {
-                    return item.value
-                })
-                // this.form.GJ.unshift('-1')
-            } else { // 全选时,点击置空
-                this.form.GJ = []
-            }
-        },
-        cancel(){
-            this.form = {
-                AD:[],
-                PD:[],
-                GD:[]
-            }
-        },
-        search(){
-            var str = ''
-            var keys = Object.keys(this.form)
-            for(let i = 0;i<keys.length;i++){
-                var str1 = ''
-                if(typeof this.form[keys[i]] == 'object'){
-                    if(this.form[keys[i]].length>0){
-                        if(keys[i]=='PD' || keys[i]=='GD' || keys[i]=='AD'){
-                            if(this.form[keys[i]].length>0){
-                                // if(this.form[keys[i]][0]){
-                                //     str1 = str1 + keys[i] + '>=' + this.form[keys[i]][0]  
-                                // }
-                                // console.log(this.form[keys[i]])
-                                if(!this.form[keys[i]][0] && !this.form[keys[i]][1]){
-
-                                }else{
-                                    if( this.form[keys[i]][0] && this.form[keys[i]][1] ){
-                                        // str1 = str1 + ' AND ' + keys[i] + '<=' + this.form[keys[i]][1] 
-                                        str1 = str1 + keys[i] + '=' + this.form[keys[i]][0] +'~'+this.form[keys[i]][1]
-                                    }else if(!this.form[keys[i]][0] || !this.form[keys[i]][1]){
-                                        // str1 = str1 + keys[i] + '<=' + this.form[keys[i]][1] 
-                                        str1 = str1 + keys[i] + '=' + (this.form[keys[i]][0] || this.form[keys[i]][1])
-                                    }
-                                }
-                                
-                            }
-                        }else{
-                            // this.form[keys[i]].forEach((item,index)=>{
-                            //     if(index<this.form[keys[i]].length-1){
-                            //         str1 = str1 + keys[i] + '=' + item + ' AND '
-                            //     }else{
-                            //         str1 = str1 + keys[i] + '=' + item
-                            //     }
-                            // })
-                            // if(keys[i] == 'GJ'){
-                            //     var index = this.form.GJ.findIndex(item=>{return item == '-1'})
-                            //     if(index!=-1){
-                            //         this.form.GJ.splice(index,1)
-                            //     }
-                            // }
-                            if(this.form[keys[i]].length>1){
-                                str1 = str1 + keys[i] + '=(' + this.form[keys[i]].join(" OR ") +')'
-                            }else{
-                                str1 = str1 + keys[i] + '=' + this.form[keys[i]][0]
-                            }
-                            
-                        }
-                    }
-                }else{
-                    if(this.form[keys[i]]){
-                        var a = this.form[keys[i]].replace(/("[^"]*"|'[^']*')/g,'')
-                        var arr = a.match(/\s{1}and|AND|OR|or|NOT|not\s{1}/g)
-                        if(arr&&arr.length>0){
-                            str1 = str1 + keys[i] + '=(' + this.form[keys[i]]+')'  
-                        }else{
-                            str1 = str1 + keys[i] + '=' + this.form[keys[i]] 
-                        }
-                        
-                    }
-                    
-                }
-                if(str1!=''){
-                    if(i<keys.length-1){
-                        str = str + str1 + ' AND ' 
-                    }else{
-                        str = str +  str1 
-                    }
-                }
-                
-            }
-            if(str.charAt(str.length-1)==' '){
-                str=str.slice(0,str.length-5);
-            }
-            this.$emit('search',str)
-        },
-    },
-}
-</script>
-<style lang="scss">
-.formSearch .el-divider{
-    margin-top:5px;
-    margin-bottom:24px;
-}
-
-</style>
-<style lang="scss" scoped>
-    .formSearch{
-        padding:10px;
-    }
-</style>

+ 0 - 517
src/views/components/import/conditionImport/components/projectListDialog.vue

@@ -1,517 +0,0 @@
-<template>
-  <div>
-    <el-dialog title="导入到报告" :visible.sync="dialogVisible" width="500px" :before-close="handleClose">
-        <div>
-            <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-              <!-- <el-form-item label="任务名称">
-                <div>
-                  <el-input v-model="form.taskName" placeholder="请输入任务名称"></el-input>
-                </div>
-              </el-form-item> -->
-                <el-form-item label="选择报告" prop="reportId">
-                    <div class="selectButton">
-                        <el-select v-model="form.reportId" filterable remote clearable @change="changeProjectId" placeholder="请选择报告" :loading="loading" v-SelectLazyLoading="lazyLoading" :remote-method="remoteMethod">
-                            <el-option
-                            v-for="item in reportList"
-                            :key="item.id"
-                            :label="item.name"
-                            :value="item.id"
-                            >
-                            </el-option>
-                        </el-select>
-                        <!-- <el-button @click="addProject"><i class="el-icon-plus"></i></el-button> -->
-                    </div>
-                </el-form-item>
-                <!-- <template v-if="form.reportId" >
-                    <div style="margin:10px 0;">
-                        <p>选择需要关联的标引与分类</p>
-                            <el-table :data="tableData" :show-header="false">
-                                <el-table-column type="expand">
-                                    <template slot-scope="props">
-                                        <el-form label-position="top" class="custom-field-form">
-                                            <template v-if="props.row.field === 'folder'">
-                                                <el-tree
-                                                    ref="folderTree"
-                                                    :data="customField.folder"
-                                                    check-strictly
-                                                    :default-checked-keys="form.json.field.folder"
-                                                    show-checkbox
-                                                    node-key="id"
-                                                    :props="defaultProps"
-                                                    @check-change="changeFolder"
-                                                ></el-tree>
-                                            </template>
-                                            <template v-else v-for="(item, index) in customField[props.row.field]">
-                                                <el-form-item :label="`${index + 1}. ${item.name}`">
-                                                    <template v-if="item.type === 0 || item.type === 2">
-                                                    <el-input v-model="form.json.field[item.id].value" placeholder="请输入内容" size="small"></el-input>
-                                                    </template>
-                                                    <template v-if="item.type === 1">
-                                                    <el-date-picker v-model="form.json.field[item.id].value" value-format="yyyy-MM-dd" type="date" size="small" placeholder="选择日期" style="width: 100%;"></el-date-picker>
-                                                    </template>
-                                                    <template v-if="item.type === 3">
-                                                    <el-select v-model="form.json.field[item.id].value" size="small" placeholder="请选择" class="width_100">
-                                                        <el-option v-for="option in item.option" :value="option.id" :label="option.name"></el-option>
-                                                    </el-select>
-                                                    </template>
-                                                    <template v-if="item.type === 4">
-                                                    <el-radio-group v-model="form.json.field[item.id].value">
-                                                        <el-radio v-for="option in item.option" :label="option.id">{{ option.name }}</el-radio>
-                                                    </el-radio-group>
-                                                    </template>
-                                                    <template v-if="item.type === 5">
-                                                    <el-checkbox-group v-model="form.json.field[item.id].value">
-                                                        <el-checkbox v-for="option in item.option" :label="option.id">{{ option.name }}</el-checkbox>
-                                                    </el-checkbox-group>
-                                                    </template>
-                                                    <template v-if="item.type === 6">
-                                                    <el-tree
-                                                        :ref="item.id"
-                                                        :data="item.option"
-                                                        check-strictly
-                                                        :default-checked-keys="form.json.field[item.id].value"
-                                                        show-checkbox
-                                                        node-key="id"
-                                                        :props="defaultProps"
-                                                        @check-change="changeField(item.id)"
-                                                    ></el-tree>
-                                                    </template>
-                                                </el-form-item>
-                                            </template>
-                                        </el-form>
-                                    </template>
-                                </el-table-column>
-                                <el-table-column prop="name" show-overflow-tooltip>
-                                    <template slot-scope="scope">
-                                        <div style="display:flex;justify-content: space-between;align-items:center">
-                                            <span>{{ scope.row.name }}</span>
-                                            <span v-if="scope.row.field === 'folder'"><el-button type="primary" size="small" @click="handleFolder(form.reportId)" :disabled="!($permission('/workspace/common/folder_manage') && $r(form.reportId,[1,2]))">文件夹管理</el-button></span>
-                                            <span v-else><el-button type="primary" size="small" @click="handleManage(form.reportId)" :disabled="!($permission('/workspace/common/customField') && $r(form.reportId,[1,2]))">自定义栏位管理</el-button></span>
-                                        </div>
-                                    </template>
-                                </el-table-column>
-                            </el-table>
-                    </div>
-                </template> -->
-                <el-form-item label="作为对比文件">
-                  <el-switch
-                    v-model="form.asCompare"
-                    active-value="1"
-                    active-text="是"
-                    inactive-text="否">
-                  </el-switch>
-                </el-form-item>
-                <el-form-item label="下载内容">
-                    <el-select v-model="form.configCells" multiple collapse-tags style="width:100%">
-                        <el-option v-for="item in patentField"
-                            :key="item.value"
-                            :label="item.label"
-                            :value="item.value">
-                        </el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="定期更新" prop="taskType">
-                    <el-switch v-model="form.taskType" :active-value="1" :inactive-value="0" active-color="#13ce66" inactive-color="#ff4949" @change="changeTaskType"></el-switch>
-                </el-form-item>
-                <template>
-                    <div v-show="form.taskType">
-                    <el-form-item label="更新间隔" prop="dateType">
-                        <el-select v-model="form.dateType" @change="getDateType" clearable placeholder="请选择更新时间间隔"  style="width:100%">
-                        <el-option v-for="item in options"
-                            :key="item.value"
-                            :label="item.label"
-                            :value="item.value">
-                        </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item label="具体更新时间" v-if="form.dateType"  style="width:100%">
-                        <timeChoose :type="form.dateType" @value="handleData" :cron="form.crons"></timeChoose>
-                    </el-form-item>
-                </div>
-                </template>
-            </el-form>
-            <div class="button">
-                <el-button type="primary" size="small" @click="onSubmit" :loading="btnLoading">导入</el-button>
-                <el-button size="small" @click="handleClose">取消</el-button>
-            </div>
-        </div>
-    </el-dialog>
-   
-<!-- 
-    <project-form-drawer @submit="submitProjectForm" :common-data="commonData" ref="projectFormDrawer"/>
-
-    <project-field-drawer @close="handleClose2" ref="projectFieldDrawer" />
-
-    <project-folder-dialog @close="updateFolder" ref="projectFolderDialog" /> -->
-  </div>
-</template>
-
-<script>
-import timeChoose from "@/views/workspace/components/common/timeChoose.vue";
-export default {
-  components: {
-    timeChoose,
-  },
-  props: [],
-  data() {
-    return {
-      isLazy:true,
-      loading:false,
-      btnLoading:false,
-      customField:{},
-      tableData:[
-        {
-            name: '标引',
-            field: 'index'
-        }, 
-        {
-            name: '分类',
-            field: 'classify'
-        }, 
-        {
-            name: '文件夹',
-            field: 'folder'
-        }
-      ],
-      defaultProps: {
-        children: 'children',
-        label: 'name'
-      },
-      dialogVisible:false,
-      form: {},
-      queryParams:{
-        size:10,
-        current:1
-      },
-      reportList: [],
-      commonData:{},
-      options: [
-        {label:'每天',value:'day'},
-        {label:'每周',value:'week'},
-        {label:'每月',value:'month'},
-        {label:'每年',value:'year'},
-      ],
-    //   /1.著录项目 2.权要 3.说明书文本 4.说明书pdf 6.摘要附图
-      patentField:[
-        {
-            value:'1',
-            label:'著录项目'
-        },
-        {
-            value:'2',
-            label:'权利要求'
-        },
-        {
-            value:'3',
-            label:'说明书文本'
-        },
-        {
-            value:'4',
-            label:'说明书pdf'
-        },
-        {
-            value:'6',
-            label:'摘要附图'
-        },
-      ],
-      rules: {
-          reportId: [
-            { required: true, message: '请选择报告', trigger: 'change' }
-          ],
-      }
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {
-    // this.$api.getCommonData({ keys: 'QUERY_GROUP,ENTERPRISE_APPLICATION_SCENARIO,INVESTIGATION_TYPE' }).then(response => {
-    //   this.commonData = response.data
-    // })
-    this.getReportList();
-  },
-  methods: {
-    open(form){
-        this.form = { 
-            ...form,
-            configCells:['1','2','3','4','6'],
-            taskType2:4,
-            taskType:0,
-            configId:2,
-            json: {
-                reportId: 0,
-                field: [],
-                folder: {}
-            }
-        }
-       if(this.form.reportId){
-        this.$set(this.form,'reportId',Number(this.form.reportId))
-        this.queryParams = {
-            current:1,
-            size:10,
-            reportId:this.form.reportId
-          }
-          var index = this.reportList.findIndex(item=>{
-            return item.id == this.form.reportId
-          })
-          if(index==-1){
-            this.$api.QueryReport(this.queryParams).then(response=>{
-              if(response.code == 200){
-                this.loading = false;
-                this.reportList = [...this.reportList, ...response.data];
-                this.queryParams.reportId = null
-              }
-            }).catch(error=>{
-              this.loading = false;
-            })
-          }
-          
-       } 
-        this.dialogVisible=true
-    },
-    //关闭弹窗
-    handleClose(){
-      this.$refs.form.resetFields()
-      this.dialogVisible=false
-    },
-    //导入
-    onSubmit(){
-      this.$refs.form.validate((valid) => {
-        if (valid) {
-          
-          this.form.fieldList = []
-          this.form.folderIds = this.form.json.field.folder
-          for (let id in this.form.json.field) {
-              const field = this.form.json.field[id]
-              if (!field) {
-                  continue;
-              }
-              const type = field.type
-              const value = field.value
-              if (value) {
-              if (type === 5 || type === 6) {
-                  value.map(option => {
-                      this.form.fieldList.push({
-                      fieldId: parseInt(id),
-                      type: type,
-                      optionId: option
-                  })
-                  })
-              } else {
-                  this.form.fieldList.push({
-                  fieldId: parseInt(id),
-                  type: type,
-                  optionId: [0, 1, 2].indexOf(type) === -1 ? value : 0,
-                  text: value
-                  })
-              }
-              }
-          }
-          if(!this.form.asCompare){
-            this.form.asCompare = 0
-          }
-          this.btnLoading = true
-          this.$api.addTask(this.form).then(response=>{
-            if(response.code == 200){
-              this.$message.success(response.data)
-              this.btnLoading = false
-              this.handleClose()
-              this.getConfirm()
-            }
-          }).catch(error=>{
-            this.loading = false;
-          })
-        }
-      })
-    },
-    //弹窗
-    getConfirm() {
-      const h = this.$createElement;
-      this.$msgbox({
-        title: '提示',
-        message: h('p', null, [
-          h('span', null, '任务正在导入,查看任务进度请前往 '),
-          h('span', {
-            class:'MessageBoxClass' ,on: {
-            click:()=>{
-                this.toTaskList()
-                // 通过close关闭消息弹窗,this.$confirm就是this.$confirm.close(false),其他同理
-                this.$msgbox.close(false)
-            }
-          }},'任务清单',)
-        ]),
-        type: 'warning',
-        showConfirmButton: false,
-      }).then(action => {
-        
-      });
-      
-    },
-    //跳转到任务清单
-    toTaskList() {
-      // 传专题库id是查到当前专题库的导入任务,不传是查看所有导入任务
-      const router = this.$router.resolve({
-        path: '/taskList',
-      })
-      window.open(router.href,'_blank')
-    },
-    //切换专题库
-    changeProjectId(val){
-        // if(val){
-        //    this.getCustomField(val) 
-        // }
-        
-    },
-    //获取标引类型
-    getCustomField(reportId) {
-      this.$api.getCustomField({ reportId: reportId }).then(response => {
-        this.customField = response.data;
-        ['index', 'classify'].map(key => {
-          this.customField[key].map(item => {
-            let value = null
-            if (item.type === 5 || item.type === 6) {
-              value = []
-            }
-            this.$set(this.form.json.field, item.id, { type: item.type, value })
-          })
-        })
-      })
-    },
-    //打开自定义栏位弹窗
-    handleManage(reportId) {
-      this.$refs.projectFieldDrawer.open(reportId)
-    },
-    //关闭自定义栏位弹窗并更新自定义栏位数据
-    handleClose2(reportId) {
-      this.getCustomField(reportId)
-    },
-    //获取选中的分类节点
-    changeField(id){
-        this.form.json.field[id].value = this.$refs[id][0].getCheckedKeys()
-    },
-    //打开文件夹管理弹窗
-    handleFolder(reportId) {
-      this.$refs.projectFolderDialog.open(reportId)
-    },
-    //关闭文件夹弹窗并更新数据
-    updateFolder(reportId) {
-      this.$api.getProjectFolderList({ reportId: reportId, patentTotal: false }).then(response => {
-        this.customField.folder = response.data
-      })
-    },
-    //获取选中的文件夹
-    changeFolder(data, checked, indeterminate){
-        this.form.json.field.folder = this.$refs.folderTree.getCheckedKeys()
-    },
-    //获取更新周期
-    getDateType(val) {
-      this.form.crons = ''
-    },
-    //是否定期更新
-    changeTaskType(val){
-        if(!val){
-            this.form.dateType = ''
-            this.form.crons = ''
-        }
-    },
-     // 获取时间
-     handleData(val) {
-      if (this.form.dateType=='') {
-        this.$message.error('请先选择更新周期')
-        return false
-      }
-      this.form.crons=val
-    },
-    
-    // 下拉框懒加载
-    lazyLoading() {
-      if(!this.isLazy){
-        return false
-      }
-      this.queryParams.current++;
-      this.getReportList();
-    },
-    //远程搜索
-    remoteMethod(query) {
-      this.isLazy = true
-        if (query !== '') {
-          this.loading = true;
-          this.queryParams = {
-            current:1,
-            size:10,
-            name:query
-          }
-          this.$api.QueryReport(this.queryParams).then(response=>{
-            if(response.code == 200){
-              this.loading = false;
-              this.reportList = response.data
-            }
-          }).catch(error=>{
-            this.loading = false;
-          })
-        } else {
-          this.queryParams.name = null
-          this.reportList = [];
-          this.getReportList()
-        }
-      },
-    //查询报告列表
-    getReportList() {
-      if(!this.isLazy){
-        return false
-      }
-      this.$api.QueryReport(this.queryParams).then(response=>{
-        if(response.code == 200){
-          if(response.data && response.data.length == 0){
-            this.isLazy = false
-          }
-          if(this.form.reportId){
-            var index = response.data.findIndex(item=>{
-              return item.id == this.form.reportId
-            })
-            if(index!=-1){
-              response.data.splice(index,1)
-            }
-          }
-          this.reportList = [...this.reportList, ...response.data];
-        }
-      }).catch(error=>{
-      })
-    },
-    //打开新增专题库弹窗
-    addProject() {
-      this.$refs.projectFormDrawer.open(
-        {
-          update: 0,
-          updateTime: "一天",
-          status: "0",
-          sort: 1,
-          typeList: [],
-          scenarioList: [],
-        },
-        "新增专题库"
-      );
-    },
-    //更新列表
-    submitProjectForm(type) {
-      this.getReportList()
-    },
-  },
-};
-</script>
-<style lang="scss">
-@import "@/assets/css/selectButton.scss";
-</style>
-<style lang="scss" scoped>
-.MessageBoxClass{
-  color: red;
-}
-.MessageBoxClass:hover{
-  cursor:pointer;
-  border-bottom:1px solid red ;
-}
-.button{
-    display: flex;
-    justify-content: center;
-}
-</style>

+ 0 - 271
src/views/components/import/conditionImport/components/search_history.vue

@@ -1,271 +0,0 @@
-<template>
-  <div style="background:white;padding:20px 20px 0;">
-    <el-button @click="deletes()"><i class="iconfont icon-shanchu"></i> 删除<span v-if="multipleSelection.length>0">{{ multipleSelection.length }}条</span><span v-else>所有</span>检索记录</el-button>
-    <el-divider></el-divider>
-    <el-table
-      ref="table"
-      :data="tableData"
-      style="width: 100%"
-      :maxHeight="height - 230"
-      v-loading="loading"
-      :row-key="getRowKeys"
-      @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" :reserve-selection="true">
-
-      </el-table-column>
-      <el-table-column prop="conditions" label="检索式"></el-table-column>
-      <el-table-column prop="dbType" label="检索范围" width="140">
-        <template slot-scope="scope">
-          <div>
-            {{ dbType[scope.row.dbType] }}
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column prop="time" label="创建/更新时间" width="240">
-        <template slot-scope="scope">
-          <div class="time">
-            <p>创建:{{ scope.row.retrieveTime }}</p>
-            <p>更新:{{ scope.row.updateTime }}</p>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column prop="totalNum" label="检索结果" width="120">
-        <template slot-scope="scope">
-          <div>
-            {{ scope.row.totalNum }}件
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" width="140">
-        <template slot-scope="scope">
-            <div class="icon">
-                <span @click="editSearch(scope.row)" class="margin-left_10">
-                  <el-tooltip class="item" effect="dark" content="编辑" placement="top">
-                    <i class="iconfont icon-bianji"></i>
-                  </el-tooltip>
-                </span>
-                <span @click="executeSearch(scope.row)" class="margin-left_10">
-                  <el-tooltip class="item" effect="dark" content="再次执行" placement="top">
-                    <i class="iconfont icon-zidongzhihang"></i>
-                  </el-tooltip>
-                </span>
-                <span @click="delSearch(scope.row)" class="margin-left_10">
-                  <el-tooltip class="item" effect="dark" content="删除" placement="top">
-                    <i class="iconfont icon-shanchu"></i>
-                  </el-tooltip>
-                </span>
-            </div>
-        </template>
-      </el-table-column>
-    </el-table>
-<div class="foot">
-  <el-pagination
-          background
-          layout="total, prev, pager, next, jumper"
-          :current-page.sync="queryParams.current"
-          :page-size.sync="queryParams.size"
-          @current-change="handleCurrentChange"
-          @size-change="getList"
-          :total="queryParams.total"
-        >
-        </el-pagination>
-</div>
-    <el-dialog title="编辑检索式" :visible.sync="dialogVisible" width="800px" :before-close="handleClose" :close-on-click-modal="false" append-to-body>
-      <div>
-        <el-form :model="form" label-width="120px" size="small" label-position="right">
-          <el-form-item label="检索范围:">
-            <el-radio-group v-model="form.dbType">
-              <el-radio label="CN">中国专利检索</el-radio>
-              <el-radio label="WD">世界专利检索</el-radio>
-            </el-radio-group>
-          </el-form-item>
-          <el-form-item label="检索式:">
-            <el-input type="textarea" v-model="form.conditions"></el-input>
-          </el-form-item>
-        </el-form>
-      </div>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="handleClose">取 消</el-button>
-        <el-button type="primary" @click="submit" :loading="btnLoading">检 索</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props:['reportId'],
-  data() {
-    return {
-      height:document.documentElement.clientHeight,
-        tableData:[],
-        multipleSelection:[],
-        loading:false,
-        dialogVisible:false,
-        btnLoading:false,
-        queryParams:{
-          size:10,
-          current:1,
-          total:0
-        },
-        dbType:{
-          'CN':'中国专利检索',
-          'WD':'世界专利检索'
-        },
-        form:{},
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {
-    this.getList()
-  },
-  methods: {
-    getRowKeys(row) {
-      return row.id
-    },
-    open(){
-      this.getList()
-    },
-    handleSelectionChange(val){
-        this.multipleSelection = val
-    },
-    //切换页数
-    async handleCurrentChange(val) {
-      this.queryParams.current = val;
-      await this.getList();
-    },
-    //查询检索历史
-    getList(){
-      this.loading = true
-      this.$api.queryRetrieveRecord(this.queryParams).then(response=>{
-        if(response.code == 200){
-          this.tableData = response.data.records
-          this.queryParams.total = response.data.total
-          this.loading = false
-        }
-      }).catch(error=>{
-        this.tableData = []
-        this.loading = false
-      })
-    },
-    //打开编辑检索历史弹窗
-    editSearch(row){
-      this.form = {
-        dbType:row.dbType,
-        id:row.id,
-        conditions:row.conditions,
-      }
-      this.dialogVisible = true
-    },
-    //关闭编辑检索历史弹窗
-    handleClose(){
-      this.form = {}
-      this.dialogVisible = false
-    },
-    //提交编辑内容
-    submit(){
-      // this.btnLoading = true
-      // this.$api.updateRetrieveRecord(this.form).then(response=>{
-      //   if(response.code == 200){
-      //     this.$message.success('编辑成功')
-      //     this.btnLoading = false
-      //     this.handleClose()
-      //     this.getList()
-      //   }
-      // }).catch(error=>{
-
-      // })
-      const router = this.$router.resolve({
-                path: '/searchResult',
-                query: {
-                    condition:this.form.conditions,
-                    DBType:this.form.dbType,
-                    reportId:this.reportId?this.reportId:null,
-                    retrieveRecordId:null
-                }
-            })
-            // this.$s.setSession('retrieveRecordId',0)
-            this.handleClose()
-            this.getList()
-            window.open(router.href, '_blank');
-    },
-    //执行检索历史
-    executeSearch(row){
-      const router = this.$router.resolve({
-                path: '/searchResult',
-                query: {
-                    condition:row.conditions,
-                    DBType:row.dbType,
-                    reportId:this.reportId?this.reportId:null,
-                    retrieveRecordId:null
-                }
-            })
-            // this.$s.setSession('retrieveRecordId',row.id)
-            window.open(router.href, '_blank');
-    },
-    //检索历史id加入到数组
-    delSearch(row){
-      var a = [row.id]
-      this.deletes(a)
-    },
-    //删除检索历史
-    deletes(val){
-      var arr = {
-        isAll:false
-      }
-      if(val){
-        arr.ids = val
-      }else{
-        if(this.multipleSelection.length>0){
-          arr.ids = this.multipleSelection.map(item=>{return item.id})
-        }else{
-          arr.isAll = true
-          arr.ids = []
-        }
-      }
-      this.$confirm('确认删除吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.loading = true
-        this.$api.deleteRetrieveRecord(arr).then(response=>{
-          if(response.code == 200){
-            this.$message.success('删除成功')
-            if(this.multipleSelection.length>0){
-              this.multipleSelection = []
-              this.$refs.table.clearSelection();
-            }
-            
-            this.loading = false
-            this.getList()
-          }
-        }).catch(error=>{
-          this.loading = false;
-        })
-      })
-        
-    }
-  },
-};
-</script>
-<style lang="scss" scoped>
-.time{
-  p{
-    margin:0;
-  }
-}
-.icon{
-  i{
-    font-size:20px;
-  }
-}
-.foot{
-  margin-top:10px;
-  display: flex;
-  justify-content: center;
-}
-</style>

+ 0 - 138
src/views/components/import/conditionImport/customSearch.vue

@@ -1,138 +0,0 @@
-<template>
-  <div class="customSearch">
-    <el-container style=" border: 1px solid #eee" :style="{height:height-70+'px'}">
-        <el-aside v-if="DBType == 'WD'">
-             <div>
-                <div class="clearfix">
-                    <span><el-checkbox v-model="checked" @change="change">全部国家地区</el-checkbox></span>
-                    <span style="float: right; padding: 3px 0" type="text">{{ checkList.length }}/{{countryList.length}}</span>
-                </div>
-                    <div style="overflow-y:auto;overflow-x:hidden;" :style="{height:height-120+'px'}">
-                       <el-checkbox-group v-model="checkList">
-                        <div v-for="item in countryList" :key="item.value" class="item">
-                            <el-checkbox :label="item.value">{{ item.label }}({{ item.value }})</el-checkbox>
-                        </div>
-                            
-                        </el-checkbox-group> 
-                    </div>
-                     
-             </div>
-        </el-aside>
-        <el-main>
-            <div>
-                <search :logical="logical" :logicalProps="logicalProps" :operator="operator" :field="field" :searchValue="true" @search="search"></search>
-            </div>
-        </el-main>
-    </el-container>
-  </div>
-</template>
-
-<script>
-import search from '@/views/workspace/components/common/search.vue'
-export default {
-  components: {
-    search
-  },
-  props: ['countryList','DBType'],
-  data() {
-    return {
-        height:document.getElementsByClassName('el-main')[0].clientHeight,
-        checkList:[],
-        checked:false,
-        //逻辑符
-        logical:[
-                {
-                    name:'并且',
-                    value:'AND'
-                },
-                {
-                    name:'或者',
-                    value:'OR'
-                },
-                {
-                    name:'非',
-                    value:'NOT'
-                },
-            ],
-            logicalProps:{
-                label:'name',
-                value:'value'
-            },
-            //运算符
-            operator:[
-                {
-                    label:'=',
-                    value:'='
-                },
-                // {
-                //     label:'>',
-                //     value:'>'
-                // },
-                // {
-                //     label:'<',
-                //     value:'<'
-                // },
-                // {
-                //     label:'<=',
-                //     value:'<='
-                // },
-            ],
-            //搜索值
-            field:JSON.parse(JSON.stringify(this.$constants.searchField)),
-    };
-  },
-  watch: {
-    'checkList'(val){
-      if(val.length == this.countryList.length){
-        this.checked = true
-      }else{
-        this.checked = false
-      }
-    },
-    DBType(){
-      this.getField()
-    },
-  },
-  computed: {},
-  created() {},
-  mounted() {
-    this.getField()
-  },
-  methods: {
-    getField(){
-      var a = JSON.parse(JSON.stringify(this.$constants.searchField))
-      this.field = a.map(item=>{ 
-        item.children = item.children.filter(item1 =>{return item1.value!='GJ' && item1.type != (this.DBType != 'WD'?'2':'1')}) 
-        return item
-      })
-    },
-    search(val){
-      if(this.DBType == 'WD' && this.checkList.length>0){
-        var str = `${val} AND (GJ=${this.checkList})`
-        this.$emit('search',str)
-      }else{
-        this.$emit('search',`${val}`)
-      }
-      
-    },
-    change(val){
-      if(val){
-        this.checkList = this.countryList.map(item=>item.value)
-      }else{
-        this.checkList = []
-      }
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-
-  .clearfix {
-    // padding-left:20px ;
-    padding:10px 20px ;
-    border-bottom: 1px solid #eeeeee;
-  }
-  .item{
-    padding:10px 20px;
-  }
-</style>

+ 0 - 37
src/views/components/import/conditionImport/index.vue

@@ -1,37 +0,0 @@
-<template>
-  <div style="background:white">
-    <search :reportId="reportId" :asCompare="asCompare" :projectId="projectId"></search>
-  </div>
-</template>
-
-<script>
-import search from './search.vue';
-export default {
-  components: {
-    search
-  },
-  props: {},
-  data() {
-    return {
-    };
-  },
-  watch: {},
-  computed: {
-    reportId(){
-        return this.$route.query.reportId
-    },
-    projectId() {
-      return this.$route.query.projectId
-    },
-    asCompare() {
-      return this.$route.query.asCompare
-    }
-    
-  },
-  created() {},
-  mounted() {},
-  methods: {},
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 0 - 197
src/views/components/import/conditionImport/patentDetails/PatentList.vue

@@ -1,197 +0,0 @@
-<template>
-  <div class="change-patent" style="background:white;display:flex; justify-content:flex-end" key="1"> 
-    <el-button type="" size="small" :disabled="prev==0||ban==1" @click="handleLink(records[index-1],'prev')" >
-      <span class="p"><i class="el-icon-arrow-up"></i>
-        <span>上一篇</span>
-      </span>
-      <span class="n" v-if="prev">
-        <span>{{ records[index-1].patentNo }}</span>
-      </span>
-      <span class="n" v-else>无数据</span>
-    </el-button>
-    <div style="width:120px;height:50px;border-radius:5px ;border:1px solid #DCDCDC;display:flex; justify-content:flex-start;margin:0 10px">
-      <div class="t" style="min-width:50px;text-align:center;line-height:50px;border-right:1px solid #DCDCDC;" v-if="prev>0">{{ prev }}</div>
-      <div class="t" style="min-width:50px;text-align:center;line-height:50px" v-if="next">{{ next }}</div>
-      </div>
-    <el-button type="" size="small" :disabled="next==0||ban==1" @click="handleLink(records[index+1],'next')" >
-      <span class="p">
-        <i class="el-icon-arrow-down"></i>
-        <span>下一篇</span>
-      </span>
-      <span class="n" v-if="next">
-        <span>{{ records[index+1].patentNo }}</span>
-      </span>
-      <span class="n" v-else>无数据</span>
-    </el-button>
-  </div>
-</template>
-
-<script>
-
-export default {
-  mixins: [],
-  props: ['ban'],
-  data() {
-    return {
-      queryParams: {},
-      records: [],
-      total: 0,
-      loading: false,
-      index:0,
-      prev:0,
-      next:0,
-      isNext:false,
-      isPrev:false
-    }
-  },
-  watch: {
-  },
-  async mounted() {
-      var index = this.$s.getSession('params').index
-      this.index = index%10
-      this.queryParams = this.$s.getSession('params').params
-      this.queryParams.PageNum = Math.floor(index/10)+1
-      this.queryParams.RowCount = 10
-      
-      if(this.index == 9){
-        this.isNext = true
-        this.queryParams.RowCount = 20
-      }
-      if(this.index == 0 && this.queryParams.PageNum != 1){
-        this.isPrev = true
-        this.queryParams.PageNum -= 1
-        this.queryParams.RowCount = 20
-        this.index = 10
-      }
-     await this.getPatentList()
-  },
-  methods: {
-   async getPatentList(val) {
-      // this.loading = true
-     await this.$api.patentSelectImport(this.queryParams).then(response=>{
-        if(response.code == 200){
-          var params = this.$s.getSession('params')
-          var prev = ''
-          if(this.index == 9){
-            this.queryParams.RowCount = 10
-            prev = ((this.queryParams.PageNum-1)*this.queryParams.RowCount + this.index)
-          }else{
-            prev = this.queryParams.PageNum>1?((this.queryParams.PageNum-2)*this.queryParams.RowCount + this.index):((this.queryParams.PageNum-1)*this.queryParams.RowCount + this.index)
-          }
-          if(!val){
-            if(this.index == 10){
-              // this.queryParams.PageNum += 1
-              this.queryParams.RowCount = 10
-            }
-          }
-          
-          this.total =response.data.total
-          // this.$set(this,'prev',this.queryParams.PageNum>1?((this.queryParams.PageNum-2)*this.queryParams.RowCount + this.index):((this.queryParams.PageNum-1)*this.queryParams.RowCount + this.index))
-          this.$set(this,'prev',prev)
-          this.$set(this,'next',this.total>2?((this.total - this.prev - 1)<0?0:(this.total - this.prev - 1)):0)
-          // this.prev = (this.queryParams.PageNum-1)*this.queryParams.RowCount + this.index
-          // this.next = this.total>2?((this.total - this.prev - 1)<0?0:(this.total - this.prev - 1)):0
-          if(val == 'prev'){
-            this.$set(this,'records',response.data.records.concat(this.records))
-          }else{
-            this.$set(this,'records',this.records.concat(response.data.records))
-          }
-          // this.records = this.records.concat(response.data.records)
-          params.index = this.prev
-          this.$s.setSession('params',params)
-          // this.loading = false
-          
-        }
-      }).catch(error=>{
-        this.loading = false
-      })
-    },
-  handleLink(item,type) {
-      this.$emit('on-change', item)
-      
-      if(type == 'prev'){
-          this.index =this.index - 1
-          this.prev -=1
-          this.next +=1
-          if(this.index <= 1){
-              if(this.queryParams.PageNum>1){
-                  this.index += 10
-                  if(this.isNext){
-                    this.queryParams.PageNum -= 2
-                  }else{
-                    this.queryParams.PageNum -= 1
-                  }
-                  this.isPrev = true
-                  this.isNext = false
-                  this.getPatentList(type)
-                  this.$nextTick(()=>{
-                      this.records.splice(10,10)
-                  })
-              }
-          }
-      }else{
-        if(this.prev>=9999){
-          this.$message.warning('系统不能查看10000条以后的数据!!!')
-          return false
-        }
-          this.index =this.index + 1
-          this.prev +=1
-          this.next-=1
-          
-          if(this.records.length==20 && this.index == 18){
-              this.index -= 10
-              if(this.isPrev){
-                    this.queryParams.PageNum += 2
-                  }else{
-                    this.queryParams.PageNum += 1
-                  }
-                  this.isPrev = false
-                  this.isNext = true
-              this.getPatentList(type)
-              this.$nextTick(this.records.splice(0,10))
-          }else if(this.records.length<=10 && this.index == 8){
-            this.queryParams.PageNum += 1
-              this.getPatentList(type)
-          }
-      }
-      var params = this.$s.getSession('params')
-      params.index = this.prev
-      this.$s.setSession('params',params)
-    },
-  }
-}
-</script>
-
-<style lang="scss">
-.change-patent {
-  padding: 10px;
-  .el-button {
-    height: 50px;
-    width: 100%;
-    margin-left: 0 !important;
-  
-    // margin-top: 10px;
-    text-align: left;
-    font-size: 12px;
-    .p {
-      display: block;
-      margin-bottom: 5px;
-      color: black;
-      .t {
-        height: 50px;
-        width: 100px;
-        border: 1px solid #797979;
-        padding-left: 10px;
-        color: #1e9fff;
-        font-size: 14px;
-        font-weight: bold;
-      }
-    }
-    .n {
-      margin-left: 18px;
-      font-size: 12px;
-      color: #797979;
-    }
-  }
-}
-</style>

+ 0 - 279
src/views/components/import/conditionImport/patentDetails/patentDetail.vue

@@ -1,279 +0,0 @@
-<template>
-    <div>
-        <div class="patent-articles" >
-            <el-container v-loading="loading">
-                <el-container >
-                    <el-header class="patent-articles-title">
-                        <div class="patent-articles-title-box">
-                            <div style="position:relative">
-                                <img src="@/assets/visual/fixed.png" width="20px" height="20px" v-if="fix===true" @click="qx" style="position:absolute;top:5px;left:5px"/>
-                                <img src="@/assets/visual/unfixed.png" width="20px" height="20px" v-if="fix===false"  @click="gd" style="position:absolute;top:5px;left:5px"/>
-                                <div>
-                                    <span v-html="getViewDom(patent.patentNo)"></span>
-                                    <el-tag type="primary" effect="dark" size="mini" class="margin-left_10">{{ patent.simpleStatus }}</el-tag>
-                                </div>
-                                <div style="color: #6b6868; font-size: 15px;border-bottom: 1px solid #e6e6e6;padding-bottom: 5px;">
-                                    <span v-html="getViewDom2(patent, 'name')"></span>
-                                    <el-link v-if="projectId" type="primary" @click.native="handleChange(patent, 'name')" style="margin-left: 10px;margin-top: -3px;">
-                                        <span v-if="!patent.change">切换译文</span>
-                                        <span v-else>切换原文</span>
-                                    </el-link>
-                                </div>
-                            </div>
-                            <div  style="  position: relative;">
-                                <el-link v-for="item in menuList" :type="activeMenu === item.value ? 'primary' : undefined" v-if="!item.show" @click.native="handleSelect(item.value)">
-                                {{ item.label }}
-                                <!-- <span v-if="item.value == 'PatentImage'|| item.value=='PatentPDF'" @click.stop="ending(item.value)">
-                                    <el-popover
-                                        placement="right"
-                                        width="400"
-                                        trigger="click">
-                                        <el-radio v-for="(item, index) in positionList" :key="index" v-model="radio" @input="changePosition"  :label="item.value">{{item.label}}</el-radio>
-                                        <i class="el-icon-setting" slot="reference"></i>
-                                    </el-popover>
-                                    </span> -->
-                                </el-link>
-                            </div>
-                        </div>
-                    </el-header>
-                    <el-main class="patent-articles-content" style="padding-left:30px">
-                        <div class="patent-articles-content-left">
-                            <!-- <div class="dom1 box1" v-dragControllerDiv1 style="display:flex;width:100%">
-                                <div class="component left1" style="width:100%;overflow-y:auto;overflow-x: hidden;" :style="{height:height}"> -->
-                                    <component style="width:100%;height:100%" :style="{height:height}" :is="componentName" :patent="patent" :patentNo="[patent.patentNo]" :domId="patent.patentNo + '1'"  :pdfType1="(patent.pdf && patent.pdf.length>0)?patent.pdf[0].type:2" @refresh="getPatent(applicationNo)"></component>
-                                <!-- </div> -->
-                                <!-- <div class="resize2" title="收缩侧边栏" v-show="(radio == 2 || radio == 3) && activeMenu != activeMenu2"><p><span>˙</span><span>˙</span><span>˙</span></p></div>
-                                <div class="resize1" title="收缩侧边栏" v-show="(radio == 4 || radio == 5) && activeMenu != activeMenu2"><span>⋮</span></div>
-                                <div v-show="radio != 1 && activeMenu != activeMenu2" class="mid1" :style="{height:(radio == 4 || radio == 5)?height:'280px'}" style="width:450px;height:280px;border:1px solid #E4E7ED;overflow-y:auto;overflow-x: hidden;">
-                                    <component :is="activeMenu2" :patent="patent" :patent-id="patentId" :pdfType1="(patent.pdf && patent.pdf.length>0)?patent.pdf[0].type:2" :sign="true"></component>
-                                </div> -->
-                            <!-- </div> -->
-                        </div>
-                    </el-main>
-                </el-container>
-            </el-container>
-            <div class="content-main" style="padding-left:40px"></div>
-        </div>
-    </div>
-</template>
-
-<script>
-import { changeTranslation, patentKeywordsHighlight } from '@/views/workspace/folder/components/mixins'
-
-import PatentField from '@/views/workspace/folder/articles/components/PatentField'
-import PatentAnnotation from '@/views/workspace/folder/articles/components/PatentAnnotation'
-import PatentBasic from "@/views/workspace/folder/articles/components/PatentBasic"
-import PatentPDF from "@/views/workspace/folder/articles/components/PatentPDF"
-import PatentImage from "@/views/workspace/folder/articles/components/PatentImage"
-import PatentRight from "@/views/workspace/folder/articles/components/PatentRight"
-import PatentInstruction from "@/views/workspace/folder/articles/components/PatentInstruction"
-import PatentFamily from "@/views/workspace/folder/articles/components/PatentFamily"
-import PatentStatus from "@/views/workspace/folder/articles/components/PatentStatus"
-
-export default {
-  components: {
-    PatentField,
-    PatentAnnotation,
-    PatentBasic,
-    PatentPDF,
-    PatentImage,
-    PatentRight,
-    PatentFamily,
-    PatentStatus,
-    PatentInstruction,
-  },
-  props: ['applicationNo','projectId'],
-  mixins: [patentKeywordsHighlight, changeTranslation],
-  data() {
-    return {
-        radio:1,
-        height:null,
-        loading:false,
-        fix:false,
-        activeMenu: 'PatentBasic',
-        activeMenu2:'',
-        componentName: 'PatentBasic',
-        menuList: [
-            {
-                value: 'PatentBasic',
-                label: '基础信息'
-            },
-            {
-                value: 'PatentRight',
-                label: '权利要求'
-            },
-            {
-                value: 'PatentImage' ,
-                label:'附图'
-            },
-            {
-                value: 'PatentInstruction',
-                label: '说明书文本'
-            },
-            {
-                value: 'PatentFamily',
-                label: '同族专利'
-            },
-            {
-                value: 'PatentStatus',
-                label: '事务数据'
-            },
-            {
-                value: 'PatentPDF',
-                label: '说明书'
-            },
-        ],
-        positionList:[
-            {
-                label:'tab展示',
-                value:1
-            },
-            {
-                label:'上边展示',
-                value:2
-            },
-            {
-                label:'下边展示',
-                value:3
-            },
-            {
-                label:'左边展示',
-                value:4
-            },
-            {
-                label:'右边展示',
-                value:5
-            },
-        ],
-        patent:{},
-    };
-  },
-  watch: {
-    applicationNo(val){
-        if(this.fix!=true){
-          this.getPatent(val)
-        }
-    },
-    fix(val){
-        this.$emit('on-change',val)
-    },
-  },
-  computed: {},
-  created() {},
-  async mounted() {
-   await this.getPatent(this.applicationNo)
-   this.changePageTitle()
-   this.$nextTick(()=>{
-        this.$set(this,'height',document.getElementsByClassName('el-main')[0].offsetHeight-200  + 'px')
-     })
-  },
-  methods: {
-     //修改title
-     changePageTitle() {
-      document.title = `${this.patent.patentNo} ${this.patent.name || ''}`
-    },
-    //解除定住,可以切换
-    qx(){
-      this.fix=false
-    },
-    //定住不能切换
-    gd(){
-      this.fix=true
-    },
-    //切换显示内容
-    handleSelect(index) {
-    //   if(index == this.activeMenu2){
-    //     this.activeMenu2 = ''
-    //     this.radio = 1
-    //     this.changePosition(this.radio)
-    //   }
-      this.activeMenu = index
-      this.componentName = index
-    },
-    //获取专利信息
-    async getPatent(applicationNo){
-        var params =this.$s.getSession('params').params
-        params.CurrentQuery = "(AN="+ applicationNo +")"
-        params.PageNum = 1
-        // params.retrieveRecordId = null
-        this.loading = true
-       await this.$api.patentSelectImport(params).then(response=>{
-          if(response.code == 200){
-            this.patent = response.data.records[0]
-            this.loading = false
-          }
-        }).catch(error=>{
-          this.loading = false
-        })
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.patent-articles {
-  width: 100%;
-  height: 100% !important;
-  padding: 0 !important;
-  .patent-articles-menu {
-
-  }
-  .el-menu-item.is-active {
-    background: #ecf5ff !important;
-    color: #409EFF!important;
-  }
-  .patent-articles-title {
-    padding: 0 !important;
-    height: 100px !important;
-    .el-link {
-      margin-right: 20px;
-    }
-    .patent-articles-title-box {
-      font-size: 20px;
-      width: 100%;
-      text-align: center;
-    }
-  }
-  .patent-articles-content {
-    background: #fff;
-    padding: 0;
-    height: 100%;
-    overflow: hidden;
-    .patent-articles-content-left {
-        width:100%;
-      float: left;
-      height: 100%;
-      overflow-y: auto;
-      overflow-x: hidden;
-      padding: 10px;
-    }
-    .patent-articles-content-right {
-      width: 300px;
-      border-left: 1px solid #e6e6e6;
-      float: right;
-      height: 100%;
-      .el-header {
-        height: 50px !important;
-        position: relative !important;
-      }
-      .el-main {
-        padding: 0 12px !important;
-      }
-      .el-container, .el-main {
-        height: 100%;
-      }
-      .patent-articles-option {
-        position: absolute;
-        bottom: 0;
-        height: 100%;
-        left: 50px;
-        .el-tabs {
-          margin-top: 9px;
-        }
-        .el-tabs__header {
-          margin-bottom: 0 !important;
-        }
-      }
-    }
-  }
-}
-</style>

+ 0 - 141
src/views/components/import/conditionImport/patentDetails/patentIndex.vue

@@ -1,141 +0,0 @@
-<template>
-    <div style="height:calc(100% - 50px)">
-        <div style="background:white;display:flex; justify-content:flex-end;align-items: center;">
-            <el-button type="primary" class="margin-right_10" @click="importToProject">导入到报告</el-button>
-            <el-switch
-                v-model="value"
-                :disabled="!$permission('/workspace/details/comparison')"
-                inactive-text="对比"
-                active-color="#00BFFF"
-                inactive-color="#D3D3D3">
-            </el-switch>
-            <PatentList @on-change="onChange" :ban='ban'/>
-        </div> 
-        <div class="box" ref="box" v-dragControllerDiv>
-            <div class="left" :style="{width:width}"><!--左侧div内容-->
-                <PatentDetail :applicationNo="applicationNo" @on-change='changefix' />
-            </div>
-            <div class="resize" title="收缩侧边栏"   v-show="width!='100%'">⋮</div>
-            <div class="mid" v-show="width!='100%'" :style="{width:width}"><!--右侧div内容-->
-                <PatentDetail :applicationNo="applicationNo" @on-change='changefix' />
-            </div>
-        </div> 
-
-        <Project-List-Dialog ref="projectListDialog"></Project-List-Dialog>
-  </div>
-</template>
-
-<script>
-import PatentDetail from './patentDetail.vue';
-import PatentList from './PatentList.vue'
-import ProjectListDialog from '../components/projectListDialog.vue'
-export default {
-  components: {
-    PatentDetail,
-    PatentList,
-    ProjectListDialog
-  },
-  props: {},
-  data() {
-    return {
-        ban:0,
-        value: false,
-        width:'100%',
-        applicationNo:this.$route.query.applicationNo || null,
-        patentNo:this.$route.query.patentNo || null,
-    };
-  },
-  watch: {
-    value(val){
-      if(val==true){
-        this.width='50%'
-      }else{
-        this.width='100%'
-      }
-    },
-  },
-  computed: {
-    contrastList() {
-      return this.$store.state.report.contrastList
-    }
-  },
-  created() {},
-  mounted() {
-    this.getContrastList(this.patentNo)
-  },
-  methods: {
-    //导入到专题库
-    importToProject(){
-      var params =this.$s.getSession('params').params
-      var form = {
-        conditions:"AN="+ this.applicationNo ,
-        DBType:params.DBType,
-        orderBy:params.OrderBy,
-        orderByType:params.OrderByType,
-        startNumber:1,
-        endNumber:0,
-        isAddPatentNos:[this.applicationNo],
-        isDeletePatentNos:[],
-        reportId:this.$s.getSession('params').reportId,
-        asCompare:this.$s.getSession('params').asCompare
-      }
-      this.$refs.projectListDialog.open(form)
-    },
-    //修改定住
-    changefix(){
-
-    },
-    //切换专利
-    async onChange(val){
-        this.applicationNo = val.applicationNo
-        this.patentNo = val.patentNo
-       
-        this.changePageTitle(val.patentNo,val.name)
-        this.getContrastList(val.patentNo)
-        await this.$router.push({
-          path: '/search/patentDetail',
-          query: {
-            applicationNo: val.applicationNo,
-            patentNo: val.patentNo,
-          }
-        })
-    },
-    // 查询批注
-    getContrastList(val) {
-      if (val) {
-        var index = this.contrastList.findIndex(item => {
-          item.patentNo == val
-        })
-        if (index != -1) {
-          return false;
-        }
-      }
-      let params = {
-        patentNo: val?val:this.patentNo,
-        id: this.reportId,
-        createFrom:this.reportId?2:0
-      }
-      this.$api.scratchWordsQuery(params).then(response => {
-        if (response.code==200) {
-          if (this.contrastList.length > 0) {
-             var a = this.contrastList.filter(item => {
-              return item.patentNo != params.patentNo
-             }).concat(response.data)
-          } else {
-             var a = response.data
-          }
-          this.$store.commit('SET_PATENT_PIZHU_CONTRAST', a)
-        }
-      })
-    },
-    //修改title
-    changePageTitle(patentNo,name) {
-      document.title = `${patentNo} ${name || ''}`
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-@import '@/assets/css/activeDiv.scss';
-
-</style>

+ 0 - 147
src/views/components/import/conditionImport/search.vue

@@ -1,147 +0,0 @@
-<template>
-    <div style="background:white">
-        <div class="head">
-            <div class="menu">
-                <span class="type">
-                    <el-radio-group v-model="DBType">
-                        <el-radio label="CN">中国专利检索</el-radio>
-                        <el-radio label="WD">世界专利检索</el-radio>
-                    </el-radio-group>
-                </span>
-                  <el-link :type="isComponent === 'FormSearch' ? 'primary' : undefined" @click="changeComponent('FormSearch')" >表格检索</el-link>
-                  <el-link :type="isComponent === 'customSearch' ? 'primary' : undefined" @click="changeComponent('customSearch')">高级检索</el-link>
-                  <el-link :type="isComponent === 'AdvancedSearch' ? 'primary' : undefined" @click="changeComponent('AdvancedSearch')">专家检索</el-link>  
-                <span class="icon">
-                    <i class="iconfont icon-shouye" @click="openHistory"></i>
-                </span>
-            </div> 
-        </div>
-        
-        <div style="width:70%;margin:0 auto;">
-            <component :is='isComponent' @search="search" :countryList="countryList" :DBType="DBType"></component>
-        </div>
-
-        <el-dialog title="检索历史" :visible.sync="dialogVisible" width="1200px" :close-on-click-modal="false">
-            <div>
-                <searchHistory ref="searchHistory" :reportId="reportId" :projectId="projectId"></searchHistory> 
-            </div>
-        </el-dialog>
-        
-    </div>
-</template>
-<script>
-import FormSearch from './FormSearch.vue';
-import AdvancedSearch from './AdvancedSearch.vue';
-import customSearch from './customSearch.vue'
-
-import searchHistory from './components/search_history.vue';
-export default {
-    components:{
-        FormSearch,
-        AdvancedSearch,
-        customSearch,
-        searchHistory
-    },
-    props:['reportId','asCompare','projectId'],
-    data() {
-        return {
-            isComponent:'FormSearch',
-            countryList:[],
-            DBType:"CN",
-            dialogVisible:false,
-        }
-    },
-    mounted() {
-        this.getCountry()
-    },
-    methods: {
-        //获取国家
-        getCountry(){
-            var str = 'AD 安道尔 AE 阿拉伯联合酋长国 AF 阿富汗 AG 安提瓜和巴布达 AI 安圭拉岛 AL 阿尔巴尼亚 AM 亚'
-                    +'美尼亚 AN 荷属安的列斯群岛 AO 安哥拉 AP 非洲地区工业产权组织(ARIPO) AR 阿根廷 AT 奥地'
-                    +'利 AU 澳大利亚 AW 阿鲁巴岛(荷) BA 波斯尼亚和黑塞哥维那(波黑) BB 巴巴多斯 BD 孟加拉 AZ'
-                    +'阿塞拜疆 BE 比利时 BF 布基纳法索 BG 保加利亚 BH 巴林 BI 布隆迪 BJ 贝宁 BM 百慕大 BN 文'
-                    +'莱 BO 玻利维亚 BR 巴西 BS 巴哈马 BT 不丹 BV 布韦岛 BW 博茨瓦那 BX 比、荷、卢经济联盟商'
-                    +'标局及外观设计局 BY 白俄罗斯 BZ 伯利兹 CA 加拿大 CD 刚果民主共和国 CF 中非共和国 CG 刚'
-                    +'果 CH 瑞士 CI 科特迪瓦 CK 库克群岛 CL 智利 CM 喀麦隆 CN 中国 CO 哥伦比亚 CR 哥斯达黎'
-                    +'加 CU 古巴 CV 佛得角 CY 塞浦路斯 CZ 捷克共和国 DE 德国 DJ 吉布提 DK 丹麦 DM 多米尼克'
-                    +'DO 多米尼加共和国 DZ 阿尔及利亚 EA 欧亚专利组织(EAPO) EC 厄瓜多尔 EE 爱沙尼亚 EG 埃'
-                    +'及 EH 西撒哈拉 EM 内部市场协调局(OHIM) EP 欧洲专利局(EPO) ER 厄立特里亚 ES 西班牙 ET 埃'
-                    +'塞俄比亚 FI 芬兰 FJ 斐济 FK 福克兰群岛(马尔维纳斯群岛) FO 法罗群岛 FR 法国 GA 加蓬 GB 英'
-                    +'国 GD 格林纳达 GH 加纳 GC 海湾地区阿拉伯国家合作委员会专利局(GCC) GE 格鲁吉亚 GI 直布罗'
-                    +'陀 GL 格陵兰 GM 冈比亚 GN 几内亚 GQ 赤道几内亚 GR 希腊 GS 南乔治亚和南三维治群岛 GT'
-                    +'危地马拉 GW 几内亚比绍 GY 圭亚那 HK 中华人民共和国香港特别行政区 HN 洪都拉斯 HR 克罗地'
-                    +'亚 HT 海地 HU 匈牙利  WO 世界知识产权组织国际局(WIPO) ID 印度尼西亚 IE 爱尔兰 IL 以色'
-                    +'列 IN 印度 IQ 伊拉克 IR 伊朗,伊斯兰共和国'
-                var regx = new RegExp("[A-Z]{2} ", "g")
-                var a = str.split(regx)
-                a.splice(0,1)
-                var b = str.match(regx)
-                b.forEach((item,index)=>{
-                    this.countryList.push({
-                        label:a[index],
-                        value:item
-                    })
-                })
-        },
-        changeComponent(val){
-            this.isComponent = val
-        },
-        search(val){
-            this.$router.push({
-                path: '/searchResult',
-                query: {
-                    condition:val,
-                    DBType:this.DBType,
-                    reportId:this.reportId?this.reportId:null,
-                    projectId:this.projectId?this.projectId:null,
-                    retrieveRecordId:null,
-                    asCompare:this.asCompare
-                }
-            })
-            // this.$s.setSession('retrieveRecordId',0)
-            // window.open(router.href, '_blank');
-        },
-        openHistory(){
-            // this.dialogVisible = true
-            // this.$nextTick(()=>{
-            //     this.$refs.searchHistory.open()
-            // })
-            const router = this.$router.resolve({
-                path: '/searchHistory',
-            })
-            window.open(router.href, '_blank');
-        },
-
-    },
-}
-</script>
-<style lang="scss" scoped>
-.head{
-    background: rgb(223 223 223);
-    line-height: 50px;
-    text-align: center;
-}
-.menu{
-    width:70%;
-    margin:0 auto;
-    position: relative;
-    .el-link{
-        margin-right: 20px; 
-    } 
-    .type{
-        position: absolute;
-        left:0;
-        top:0;
-    }
-    .icon{
-        
-        position: absolute;
-        right:0;
-        top:0;
-        i{
-            font-size:24px;
-        }
-    }
-}
-</style>

+ 0 - 507
src/views/components/import/conditionImport/searchResult.vue

@@ -1,507 +0,0 @@
-<template>
-  <div style="background: white; height: 100%">
-    <el-container style="padding: 0 20px">
-      <el-header
-        class="workspace-content-container-header"
-        style="display: flex; justify-content: space-between"
-      >
-        <div>
-          <el-button-group class="margin-left_10">
-            <el-tooltip v-for="item in viewList" class="item" effect="dark" :content="item.title" placement="top">
-              <el-button @click="handleChangeView(item)" size="small" :type="viewSelected === item.value ? 'primary' : ''" :icon="item.btn"></el-button>
-            </el-tooltip>
-          </el-button-group>
-          <span v-if="selectedTotal>0" >
-            已勾选 <b>{{ selectedTotal }}</b> 条
-          </span>
-        </div>
-        
-        <div style="max-width:calc(100% - 620px)">
-          <p><span>条件:</span>{{ condition }}</p>
-        </div>
-        <div>
-          <el-button type="primary" size="small" @click="importToProject">导入到报告</el-button>
-          <el-button size="small" type="warning" @click="handleFieldManage">显示栏位管理</el-button>
-          <el-popover placement="bottom" title="" width="220" trigger="click">
-            <el-main class="patent-fast-edit-popover" v-loading="selectNumberLoading">
-              <div class="btn" @click="handleSelectNumber(0)">本页选择</div>
-              <div class="btn" @click="handleSelectNumber(1)">全部选择</div>
-              <el-divider></el-divider>
-              <div class="select-number">
-                <span>从</span>
-                <el-input size="mini" v-model="queryParams.startNumber" @change="change1"></el-input>
-                <span>到</span>
-                <el-input size="mini" v-model="queryParams.endNumber" @change="change2"></el-input>
-                <el-button type="text" size="" @click="handleSelectNumber(2)">确定</el-button>
-              </div>
-            </el-main>
-            <el-button type="info" size="small" class="margin-left_10" slot="reference"> 选择专利<i class="el-icon-arrow-down el-icon--right"></i></el-button>
-          </el-popover>
-          <el-button type="text" size="small" class="margin-left_10" @click="handleCancelSelectNumber">取消选择</el-button>
-        </div>
-      </el-header>
-      <el-main id="patent-list-container" v-loading="loading">
-        <div :style="{height:divHeight+'px'}">
-          <component
-            ref="patentViewList"
-            :is="viewSelected"
-            @select-change="handleSelect"
-            :selected.sync="queryParams.selected"
-            :patentNoList.sync="patentNoList"
-            :view-field="patentViewField"
-            @on-sort="handleSort"
-            @addSelect="getChoosePatentNo"
-          ></component>
-        </div>
-      </el-main>
-      <el-footer class="workspace-content-patent-page foot-total">
-        <span class="total">共{{ total }}条</span>
-        <el-pagination
-          background
-          layout="total, sizes, prev, pager, next, jumper"
-          :current-page.sync="queryParams.current"
-          :page-size.sync="queryParams.size"
-          :page-sizes="pageSizes"
-          :page-count="getPageCount()"
-          @current-change="handleCurrentChange"
-          @size-change="getList"
-        >
-        </el-pagination>
-      </el-footer>
-    </el-container>
-
-    <patent-view-field @reset="getPatentViewField(true)" @update="updatePatentViewField" ref="patentViewField"/>
-    <Project-List-Dialog ref="projectListDialog"></Project-List-Dialog>
-  </div>
-</template>
-
-<script>
-import PatentViewField from "@/views/product/components/relatedPatents/components/dialog/PatentViewField.vue";
-import PatentTableListView from "./view/Table";
-import PatentAbstractListView from "./view/Abstract";
-import PatentPictureListView from "./view/Picture";
-import ProjectListDialog from "./components/projectListDialog.vue";
-export default {
-  components: {
-    PatentViewField,
-    PatentTableListView,
-    PatentAbstractListView,
-    PatentPictureListView,
-    ProjectListDialog,
-  },
-  props: ["condition", "DBType",'reportId','retrieveRecordId','asCompare'],
-  data() {
-    return {
-      pageSizes:[10, 20, 30, 40, 50],
-      viewSelected: "patent-table-list-view",
-      viewList: [
-        {
-          value: "patent-table-list-view",
-          title: "表格视图",
-          btn: "el-icon-tickets",
-        },
-        {
-          value: "patent-abstract-list-view",
-          title: "摘要视图",
-          btn: "el-icon-news",
-        },
-        {
-          value: "patent-picture-list-view",
-          title: "图片视图",
-          btn: "el-icon-picture-outline",
-        },
-      ],
-      patentNoList: [],
-      queryParams: {
-        selected: [],
-        current: 1,
-        size: 10,
-        isAdd: [],
-        isDelete: [],
-        OrderBy:"AD",
-        OrderByType:"DESC",
-        retrieveRecordId:this.retrieveRecordId,
-        asCompare:this.asCompare
-      },
-      patentViewField: [],
-      tableData:[],
-      total: 0,
-      selectNumberLoading: false,
-      loading: false,
-      selectedTotal:0,
-      startNumber: 1,
-      endNumber: 0,
-      quickSelect: false,
-      quickSelectArr:[],
-      divHeight:null
-    };
-  },
-  watch: {},
-  computed: {
-    records() {
-      return this.$store.state.patent.records;
-    },
-  },
-  created() {},
-  async mounted() {
-    if(this.$s.getSession('queryParams')&&this.$s.getSession('queryParams').params.retrieveRecordId){
-        this.queryParams.retrieveRecordId = this.$s.getSession('queryParams').params.retrieveRecordId
-      }
-    this.$nextTick(()=>{
-      this.divHeight = document.getElementsByClassName('el-main')[0].offsetHeight - 250
-    })
-  await  this.getList();
-    this.getPatentViewField();
-    
-  },
-  methods: {
-    //导入到专题库
-    importToProject() {
-      var form = {
-        conditions:this.condition,
-        DBType:this.DBType,
-        orderBy:this.queryParams.OrderBy,
-        orderByType:this.queryParams.OrderByType,
-        startNumber:this.selectedTotal>0?this.startNumber:1,
-        endNumber:this.selectedTotal>0?this.endNumber:this.total,
-        isAddPatentNos:this.queryParams.isAdd,
-        isDeletePatentNos:this.queryParams.isDelete,
-        reportId:this.reportId,
-        asCompare:this.asCompare,
-      }
-      this.$refs.projectListDialog.open(form);
-    },
-    //切换页数
-    async handleCurrentChange(val) {
-      this.queryParams.current = val;
-      this.patentNoList = []
-      await this.getList();
-      this.$nextTick(()=>{
-        if(this.quickSelect){
-          this.commonSwitch()
-        }else{
-          if(this.queryParams.isAdd.length>0){
-            this.getHaveChoose([])
-          }
-        }
-      })
-    },
-    //获取最大页数
-    getPageCount(){
-      var a = Math.ceil(Number(this.total)/Number(this.queryParams.size))
-      return a>200?200:a
-    },
-    //开始条数校验
-    change1(val) {
-      if (!isNaN(val)) {
-         if (!val || val <= 0) {
-          this.queryParams.startNumber=1
-        } else {
-          if (this.queryParams.startNumber>this.total) {
-            this.queryParams.startNumber=this.total
-          }
-        }
-      } else {
-        this.queryParams.startNumber=1
-      }
-    },
-     //结束条数校验
-    change2(val) {
-      if (!isNaN(val)) {
-        if (!val || val <= 0) {
-          this.queryParams.endNumber = this.total
-        } else {
-          if (this.queryParams.endNumber > this.total) {
-            this.queryParams.endNumber = this.total
-          }
-        }
-      }else {
-        this.queryParams.endNumber=this.total
-      }
-    },
-    //查询专利
-    async getList() {
-      let queryParams = JSON.parse(JSON.stringify(this.queryParams));
-      var params = {
-        CurrentQuery: this.condition, //检索式
-        DBType: this.DBType, //”CN”或”WD”,表示检索中文库或世界库
-        PageNum: this.queryParams.current, //页码(最多 200 页)
-        RowCount: this.queryParams.size, //每页返回条数(最多 50 条)
-        OrderBy: this.queryParams.OrderBy, //排序字段:“AD”,“PD”,“GD”, “ID”(检索引擎自生成字段,排序顺序固定)
-        OrderByType: this.queryParams.OrderByType, //排序方式:“ASC”,“DESC” 即正序倒序
-        retrieveRecordId:this.queryParams.retrieveRecordId
-      };
-      // console.log(this.$s.getSession('retrieveRecordId'),)
-      queryParams.params = params;
-      queryParams.reportId = this.reportId
-      this.$store.commit("SET_PATENT_PARAMS", queryParams);
-      this.$store.commit("SET_PATENT_RECORDS", []);
-      this.loading = true;
-      await this.$api.patentSelectImport(params).then((response) => {
-          if (response.code == 200) {
-            this.total = response.data.total;
-            this.$set(this.queryParams,'startNumber',this.endNumber > 0 ? this.startNumber : 1)
-              this.$set(this.queryParams,'endNumber',this.endNumber > 0 ? this.endNumber : this.total)
-            let records = response.data.records;
-            this.tableData = records
-            params.retrieveRecordId = response.data.retrieveRecordId
-            this.queryParams.retrieveRecordId = response.data.retrieveRecordId
-            this.$store.commit("SET_PATENT_PARAMS", queryParams);
-            this.$s.setSession('queryParams',queryParams)
-            this.$store.commit("SET_PATENT_RECORDS", records);
-            this.loading = false;
-          }
-        })
-        .catch((error) => {
-          this.loading = false;
-        });
-        
-    },
-    handleSelect(data) {
-      // this.queryParams.selected = data
-    },
-    async handleChangeView(item) {
-      // console.log(item)
-      if(this.viewSelected==item.value){
-        return false
-      }
-      if(this.viewSelected!="patent-picture-list-view" && item.value!="patent-picture-list-view"){
-        this.queryParams.size = 10;
-        this.viewSelected = item.value;
-      }else if(this.viewSelected=="patent-picture-list-view" || item.value=="patent-picture-list-view"){
-        if (item.value === "patent-picture-list-view") {
-          this.$set(this.queryParams, "size", 20);
-        } else {
-          this.queryParams.size = 10;
-        }
-        this.viewSelected = item.value;
-        this.getList();
-      }
-return 
-
-      this.viewSelected = item.value;
-      if (this.viewSelected === "patent-picture-list-view") {
-        this.$set(this.queryParams, "size", 20);
-      } else {
-        this.queryParams.size = 10;
-      }
-      // await this.getPatentViewField();
-      this.getList();
-    },
-    async handleFieldManage() {
-      // await this.getPatentViewField()
-      this.$refs.patentViewField.open(
-        this.patentViewField,
-        this.queryParams.retrieveRecordId,
-        this.viewSelected
-      );
-    },
-    async getPatentViewField(refresh) {
-      var arr = ['标签','简单同族','Inpadoc同族','扩展同族','[标]权利人','[标]申请人','引用专利数量','被引用数量','权利要求数']
-      let params = {
-        project:this.queryParams.retrieveRecordId,
-        type: "list",
-        view: this.viewSelected,
-        refresh: refresh,
-      };
-      const { data } = await this.$api.getUserSettingField(params);
-      this.patentViewField = data.filter(item=>{ return arr.indexOf(item.name) == -1});
-    },
-    updatePatentViewField(data) {
-      this.patentViewField = data;
-    },
-    //快速选择
-    handleSelectNumber(type) {
-      switch (type) {
-        case 0: //本页选择
-          this.patentNoList = [...new Set(this.patentNoList.concat(this.$store.state.patent.records.map((item) => item.applicationNo))),];
-          this.queryParams.isAdd = [...new Set(this.queryParams.isAdd.concat(this.$store.state.patent.records.map((item) => item.applicationNo))),];
-          break;
-        case 1: //全部选择
-          this.startNumber = 1;
-          this.endNumber = this.total;
-          this.$set(this.queryParams,'startNumber',1)
-          this.$set(this.queryParams,'endNumber',this.total)
-        case 2: //范围选择
-          this.queryParams.isDelete = [];
-          this.queryParams.isAdd = [];
-          this.patentNoList = [];
-          this.quickSelect = true;
-          if (type == 2) {
-            if (!Number(this.queryParams.startNumber) ||!Number(this.queryParams.endNumber)) {
-              this.$set(this.queryParams,'startNumber',this.endNumber > 0 ? this.startNumber : 1)
-              this.$set(this.queryParams,'endNumber',this.endNumber > 0 ? this.endNumber : this.total)
-              break;
-            }
-            this.startNumber = this.queryParams.startNumber;
-            this.endNumber = this.queryParams.endNumber;
-          }
-          this.commonSwitch();
-          break;
-      }
-      this.getSelectedTotal()
-    },
-    //每页全部选择或范围选择的专利
-    commonSwitch() {
-      var arr = []
-      if (this.queryParams.size * this.queryParams.current >= this.startNumber) {
-        if (this.queryParams.size * this.queryParams.current >=this.endNumber) {
-          if (this.queryParams.size * (this.queryParams.current - 1) + 1 <=this.startNumber) {
-            var a =this.startNumber -(this.queryParams.size * (this.queryParams.current - 1) + 1);
-            var b =this.endNumber -(this.queryParams.size * (this.queryParams.current - 1) + 1);
-            for (var y = a; y <= b; y++) {
-              arr.push(this.tableData[y].applicationNo)
-            }
-          } else {
-            var a =this.queryParams.size * (this.queryParams.current - 1) +1 -(this.queryParams.size * (this.queryParams.current - 1) + 1);
-            var b = this.endNumber -(this.queryParams.size * (this.queryParams.current - 1) + 1);
-            for (var y = a; y <= b; y++) {
-              arr.push(this.tableData[y].applicationNo)
-            }
-          }
-        } else {
-          if (this.queryParams.size * (this.queryParams.current - 1) + 1 <=this.startNumber) {
-            var a =this.startNumber -(this.queryParams.size * (this.queryParams.current - 1) + 1);
-            var b =this.queryParams.size * this.queryParams.current -(this.queryParams.size * (this.queryParams.current - 1) + 1);
-            for (var y = a; y <= b; y++) {
-              arr.push(this.tableData[y].applicationNo)
-            }
-          } else {
-            var a =this.queryParams.size * (this.queryParams.current - 1) +1 -(this.queryParams.size * (this.queryParams.current - 1) + 1);
-            var b =this.queryParams.size * this.queryParams.current -(this.queryParams.size * (this.queryParams.current - 1) + 1);
-            for (var y = a; y <= b; y++) {
-              arr.push(this.tableData[y].applicationNo)
-            }
-          }
-        }
-      }
-      // this.patentNoList = JSON.parse(JSON.stringify(arr))
-      this.quickSelectArr = JSON.parse(JSON.stringify(arr))
-      this.getHaveChoose(arr)
-    },
-    //获取已选择的专利
-    getHaveChoose(arr){
-      var arr1 = [...new Set(arr.concat(this.queryParams.isAdd))]
-      this.patentNoList = arr1.filter((x) => this.queryParams.isDelete.indexOf(x)==-1)
-    },
-    //获取已选择的总条数
-    getSelectedTotal(){
-      this.selectedTotal = Number(this.endNumber) - Number(this.startNumber) + 1 + Number(this.queryParams.isAdd.length) - Number(this.queryParams.isDelete.length)
-    },
-    //获取手动选择的专利
-    getChoosePatentNo(patentNo){
-      if(this.quickSelect){
-        var index = this.queryParams.isDelete.findIndex(item=>{
-          return item == patentNo
-        })
-        if(index == -1){
-          var index2 = this.quickSelectArr.findIndex(item=>{
-            return item == patentNo
-          })
-          if(index2==-1){
-            this.setIsAdd(patentNo)
-          }else{
-            this.queryParams.isDelete.push(patentNo)
-          }
-        }else{
-          this.queryParams.isDelete.splice(index,1)
-        }
-      }else{
-        this.setIsAdd(patentNo)
-      }
-      this.getSelectedTotal()
-    },
-    //是否加入isAdd里面
-    setIsAdd(patentNo){
-      var index = this.queryParams.isAdd.findIndex(item=>{
-          return item == patentNo
-        })
-      if(index!=-1){
-        this.queryParams.isAdd.splice(index,1)
-      }else{
-        this.queryParams.isAdd.push(patentNo)
-      }
-    },
-    //取消选择
-    handleCancelSelectNumber() {
-        this.patentNoList = [];
-        this.queryParams.isAdd = []
-        this.queryParams.isDelete = []
-        this.startNumber = 1
-        this.queryParams.startNumber = 1
-        this.queryParams.endNumber = this.total
-        this.endNumber = 0
-        this.quickSelect = false
-        this.selectedTotal = 0
-      // this.getList()
-    },
-    //排序
-    handleSort(data) {
-      console.log(data);
-      const o = {
-        publicAccreditDate: "GD",
-        publicDate: "PD",
-        applicationDate: "AD",
-      };
-      this.queryParams.OrderBy = o[data.prop];
-      this.queryParams.OrderByType = data.order.toUpperCase();
-      this.getList();
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.total{
-  margin-right: 10px;
-    font-weight: 400;
-    color: #606266;
-    display: inline-block;
-    font-size: 13px;
-    min-width: 35.5px;
-    height: 28px;
-    line-height: 28px;
-    vertical-align: top;
-    box-sizing: border-box;
-}
-.foot-total{
-  display: flex;
-  align-items: center;
-}
-.patent-fast-edit-popover {
-  padding: 0 !important;
-  .btn {
-    color: #000;
-    line-height: 40px;
-    border-radius: 5px;
-    padding-left: 10px;
-    text-align: left;
-    font-size: 14px;
-    cursor: pointer;
-    &:hover {
-      background: #adadad;
-      color: #fff;
-    }
-  }
-  .disabled {
-    cursor: not-allowed !important;
-  }
-  .bottom {
-    text-align: right;
-    color: #1e9fff;
-    line-height: 40px;
-    padding-left: 10px;
-    font-size: 18px;
-  }
-  .el-divider--horizontal {
-    margin: 10px 0 !important;
-  }
-  .select-number {
-    .el-input {
-      width: 70px;
-    }
-    span {
-      padding: 0 3px;
-    }
-  }
-}
-</style>

+ 0 - 44
src/views/components/import/conditionImport/searchResultIndex.vue

@@ -1,44 +0,0 @@
-<template>
-  <div>
-    <search-Result :condition="condition"  :DBType="DBType" :reportId="reportId" :retrieveRecordId="retrieveRecordId" :asCompare="asCompare"></search-Result>
-  </div>
-</template>
-
-<script>
-import searchResult from './searchResult.vue';
-export default {
-  components: {
-    searchResult
-  },
-  props: {},
-  data() {
-    return {
-    };
-  },
-  watch: {},
-  computed: {
-    condition(){
-        return this.$route.query.condition
-    },
-    DBType(){
-        return this.$route.query.DBType
-    },
-    reportId(){
-        return this.$route.query.reportId
-    },
-    retrieveRecordId(){
-      return this.$route.query.retrieveRecordId
-    },
-    asCompare(){
-      return this.$route.query.asCompare
-    }
-  },
-  methods: {},
-  created() {},
-  mounted() {
-    
-  }
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 0 - 373
src/views/components/import/conditionImport/view/Abstract.vue

@@ -1,373 +0,0 @@
-<template>
-  <div class="patent-abstract-list-view">
-    <div class="patent-abstract-card" v-for="(patent, index) in records">
-      <div class="patent-abstract-card-wrapper">
-        <table class="patent-abstract-card-table">
-          <tbody>
-            <tr>
-              <td v-if="refresh"><el-checkbox :label="patent.id" @change="changeSelect(patent)" :checked="selected.indexOf(patent.id) !== -1 || patentNoList.indexOf(patent.patentNo)!== -1"></el-checkbox></td>
-              <td>
-                <div class="patent-abstract-index-container">
-                  <span>{{ (index + 1) + ((params.current - 1) * params.size) }}</span>
-                  <span v-if="reportId">
-                    <el-tag :type="patent.read === 0 ? 'danger' : 'success'" v-if="$permission('/workspace/folder/isRead')" effect="dark" size="small" @click="handleChangeRead(patent)">{{ readType[patent.read] }}</el-tag>
-                    <el-tag type="info" v-else effect="dark" size="small" >{{ readType[patent.read] }}</el-tag>
-                  </span>
-                  
-                </div>
-                <!-- <el-popover placement="right-start" width="600" trigger="hover">
-                  <img :src="getPatentAbstractImage(patent.abstractPath)" height="400" width="100%">
-                  <div class="patent-abstract-image-container" slot="reference">
-                    <img :src="getPatentAbstractImage(patent.abstractPath)">
-                  </div>
-                </el-popover> -->
-                <div class="picture text-align_center patent-abstract-image-container" style="">
-                    <el-image v-if="(!reportId && patent.abstractPath2)||reportId" :src="patent.abstractPath2?patent.abstractPath2:getImagePath1(patent)" :preview-src-list="[patent.abstractPath2]" style="margin:0 auto;vertical-align:middle;" :style="{width:patent.imgWidth?patent.imgWidth:'100%',height:patent.imgHeight?patent.imgHeight:'100%'}">
-                    <div slot="error" class="image-slot">
-                      <el-image :src="getErrorImage(patent)" :preview-src-list="[getErrorImage(patent)]">
-                        <div slot="error" class="image-slot">
-                          <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
-                        </div>
-                      </el-image>
-                    </div>
-                  </el-image>
-
-                </div>
-                <div class="patent-abstract-pdf-button-container">
-                  <el-button :disabled="!$permission('/workspace/folder/PDFdownload')" class="width_100" size="small" type="primary" @click="handleDownload(patent)">PDF 下载</el-button>
-                </div>
-              </td>
-              <td width="850px">
-                <div class="patent-abstract-title">
-                  <el-link :disabled="!$permission('/workspace/details')" :class="$permission('/workspace/details')?'':'jinzhi'" type="success" @click.native="handleLink(patent)">
-                    <span v-html="getViewDom(patent.patentNo)"></span>
-                  </el-link>
-                  <el-tag class="margin-left_10" type="primary" effect="dark" size="small" v-if="patent.simpleStatus">{{ patent.simpleStatus }}</el-tag>
-                </div>
-                <div style="font-size: 13px;">
-                  <el-row>
-                    <el-col :span="24" v-if="t()">
-                      <span class="patent-abstract_label">标题:</span>
-                      <span class="patent-abstract_text">
-                        <span v-html="getViewDom2(patent, 'name')"></span>
-                        <el-link v-if="reportId" type="primary" @click.native="handleChange(patent, 'name')" style="margin-left: 10px;">
-                          <span v-if="!patent.change">切换译文</span>
-                          <span v-else>切换原文</span>
-                        </el-link>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row>
-                    <el-col :span="8" v-if="t()">
-                      <span class="patent-abstract_label">申请日:</span>
-                      <span class="patent-abstract_text">
-                        <span v-html="getViewDom(patent.applicationDate)"></span>
-                      </span>
-                    </el-col>
-                    <el-col :span="8" v-if="t()">
-                      <span class="patent-abstract_label">公开日:</span>
-                      <span class="patent-abstract_text">
-                        <span v-html="getViewDom(patent.publicDate)"></span>
-                      </span>
-                    </el-col>
-                    <el-col :span="8" v-if="t()">
-                      <span class="patent-abstract_label">申请号:</span>
-                      <span class="patent-abstract_text">
-                        <span v-html="getViewDom(patent.applicationNo)"></span>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row v-if="t()">
-                    <el-col :span="24">
-                      <span class="patent-abstract_label">权利人:</span>
-                      <span class="patent-abstract_text" v-if="patent.applicant">
-                        <template v-for="(item, index) in patent.applicant.filter(a => a.dataType === 1)">
-                          <el-link type="primary">
-                            <span v-html="getViewDom(item.name)"></span>
-                          </el-link>
-                          <span class="patent-abstract_semicolon">;</span>
-                        </template>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row v-if="t()">
-                    <el-col :span="24">
-                      <span class="patent-abstract_label">申请人:</span>
-                      <span class="patent-abstract_text" v-if="patent.applicant">
-                        <template v-for="(item, index) in patent.applicant.filter(a => a.dataType === 2)">
-                          <el-link type="primary">
-                            <span v-html="getViewDom(item.name)"></span>
-                          </el-link>
-                          <span class="patent-abstract_semicolon">;</span>
-                        </template>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row v-if="t()">
-                    <el-col :span="24">
-                      <span class="patent-abstract_label">发明人:</span>
-                      <span class="patent-abstract_text">
-                        <template v-for="(item, index) in patent.inventor">
-                          <el-link type="primary">
-                            <span v-html="getViewDom(item.name)"></span>
-                          </el-link>
-                          <span class="patent-abstract_semicolon">;</span>
-                        </template>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row v-if="t()">
-                    <el-col :span="24">
-                      <span class="patent-abstract_label">IPC分类号:</span>
-                      <span class="patent-abstract_text">
-                        <template v-for="(item, index) in patent.ipcList">
-                          <el-link type="primary">
-                            <span v-html="getViewDom(item)"></span>
-                          </el-link>
-                          <span class="patent-abstract_semicolon">;</span>
-                        </template>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row v-if="t('simpleFamily')">
-                    <el-col :span="24">
-                      <span class="patent-abstract_label">简单同族:</span>
-                      <span class="patent-abstract_text">
-                        <template v-for="(item, index) in patent.family.simple">
-                          <el-link type="primary" @click.native="handleFamily(item)">
-                            <span v-html="getViewDom(item)"></span>
-                          </el-link>
-                          <span class="patent-abstract_semicolon">;</span>
-                        </template>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row v-if="t('inpadocFamily')">
-                    <el-col :span="24">
-                      <span class="patent-abstract_label">INPADOC同族:</span>
-                      <span class="patent-abstract_text">
-                        <template v-for="(item, index) in patent.family.inpadoc">
-                          <el-link type="primary" @click.native="handleFamily(item)">
-                            <span v-html="getViewDom(item)"></span>
-                          </el-link>
-                          <span class="patent-abstract_semicolon">;</span>
-                        </template>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row v-if="t('patSnapFamily')">
-                    <el-col :span="24">
-                      <span class="patent-abstract_label">PatSnap同族:</span>
-                      <span class="patent-abstract_text">
-                        <template v-for="(item, index) in patent.family.patSnap">
-                          <el-link type="primary" @click.native="handleFamily(item)">
-                            <span v-html="getViewDom(item)"></span>
-                          </el-link>
-                          <span class="patent-abstract_semicolon">;</span>
-                        </template>
-                      </span>
-                    </el-col>
-                  </el-row>
-                  <el-row v-if="t()">
-                    <el-col :span="24">
-                      <span class="patent-abstract_label">摘要:</span>
-                      <div>
-                        <span v-html="getViewDom2(patent, 'abstractStr')"></span>
-                        <el-link v-if="reportId" type="primary" @click.native="handleChange(patent, 'abstractStr')">
-                          <span v-if="!patent.change2">切换译文</span>
-                          <span v-else>切换原文</span>
-                        </el-link>
-                      </div>
-                    </el-col>
-                  </el-row>
-                </div>
-              </td>
-            </tr>
-          </tbody>
-        </table>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { commonMixins } from "@/views/workspace/folder/articles/components/mixins"
-import { patentViewList, patentKeywordsHighlight } from '@/views/workspace/folder/components/mixins.js'
-
-export default {
-  props: ['viewField'],
-  mixins: [patentViewList, patentKeywordsHighlight,commonMixins],
-  data() {
-    return {
-      checkList: [],
-      readType: {
-        1: '已读',
-        0: '未读'
-      },
-      statusType: {
-
-      },
-      row: {}
-    }
-  },
-  watch: {
-    records(val,oldval) {
-      if(val != oldval){
-        this.$nextTick(() => {
-          this.addRecords()
-          this.refreshCheckBox()
-        })
-      }
-      
-    }
-  },
-  computed: {
-    columnList() {
-      return this.viewField.filter(item => !item.hidden)
-    },
-    customField() {
-      return this.viewField.filter(item => !item.hidden && (item.type !== 'list' || item.key === 'label'))
-    },
-  },
-  mounted() {
-
-  },
-  methods: {
-    handleFamily(item) {
-      this.$api.getPatentIdByPatentNo({ patentNo: item }).then(response => {
-        if (response.data === 0) {
-          this.$alert('专利暂未收录', '请求错误', {
-            confirmButtonText: '确定',
-            type: 'error',
-            callback: action => {}
-          });
-        } else {
-          this.handleLink({ id: response.data })
-        }
-      })
-    },
-    getColumnValue(patent, column) {
-      if (column.key !== 'label') {
-        const field = patent.field.find(item => item.id === parseInt(column.key))
-        if (field) {
-          return field.selected
-        }
-      } else {
-        return patent.label.map(item => item.name)
-      }
-      return []
-    },
-    handleIndexSetting(row, field) {
-      this.$emit('index-setting', row, field)
-    },
-    t(key) {
-      if (key) {
-        return this.columnList.map(item => item.key).indexOf(key) !== -1
-      }
-      return true
-    },
-    getPatentAbstractImage(path) {
-      if (!path) {
-        return ''
-      }
-      return this.$p + path
-    },
-    openPatentAbstractImage(abstractPath) {
-      // console.log(abstractPath)
-    },
-    handleDownload(patent) {
-      this.$emit('download', patent)
-    },
-    handleChangeRead(patent) {
-      const status = patent.read === 1 ? 0 : 1
-      this.$emit('change-read', [patent.id], status)
-    }
-  }
-}
-</script>
-
-<style lang="scss">
-.patent-abstract-list-view {
-  .patent-abstract-card {
-    width: 100%;
-    border-bottom: 1px solid #e5e5e5;
-    .patent-abstract-card-wrapper {
-      padding: 10px;
-      min-height: 200px;
-      .patent-abstract-card-table {
-        height: 100%;
-        .patent-abstract-index-container {
-          font-size: 13px;
-          padding-left: 10px;
-          margin-bottom: 10px;
-          .el-tag {
-            margin-left: 10px;
-            cursor: pointer;
-          }
-        }
-        .patent-abstract-image-container {
-          // padding: 10px;
-          border: 1px solid #bcc2cc;
-          border-radius: 4px;
-          width: 120px;
-          height: 150px;
-          line-height: 150px;
-          // img {
-          //   width: 100%;
-          //   height: 100%;
-          // }
-        }
-        .patent-abstract-pdf-button-container {
-          text-align: center;
-          margin-top: 10px;
-        }
-        .patent-abstract-title {
-          margin-bottom: 5px;
-        }
-        .patent-custom-field {
-          line-height: 35px;
-          font-size: 14px;
-          border-bottom: 1px solid #ebecf0;
-          .name {
-            width: 200px;
-            float: left;
-          }
-          .data {
-            width: calc(100% - 200px);
-            float: right;
-          }
-        }
-        .patent-abstract_label {
-          color: #495973;
-          padding-right: 8px;
-        }
-        .patent-abstract_text {
-          .el-link {
-            position: relative;
-            top: -2px;
-          }
-        }
-        .patent-abstract_semicolon {
-          padding-left: 5px;
-          padding-right: 5px;
-          display: inline-block;
-          color: #495973;
-        }
-        tbody, tr, td {
-          height: 100%;
-          vertical-align: top;
-        }
-      }
-      .el-checkbox__label {
-        display: none;
-      }
-    }
-  }
-  .el-card__header {
-    font-weight: normal;
-    font-size: 14px;
-    padding: 18px 20px;
-    border-bottom: 1px solid #EBEEF5;
-  }
-}
-</style>

+ 0 - 89
src/views/components/import/conditionImport/view/Picture.vue

@@ -1,89 +0,0 @@
-<template>
-  <div class="pic">
-    <div class="item" style="padding:10px;display: flex;flex-wrap: wrap;">
-      <!-- <el-row :gutter="24" style="padding: 10px;display: flex;flex-wrap: wrap;">
-      <el-col :span="6" v-for="(item,index) in records" class="c"> -->
-        <el-card  shadow="hover" v-for="(item,index) in records" style="width:200px" >
-          <div slot="header" style="width: 100%; white-space: nowrap;overflow-x: hidden;text-overflow: ellipsis;font-size:12px;" >
-            <div>序号:{{ (index + 1) + ((params.current - 1) * params.size) }}</div>
-            <el-divider></el-divider>
-            <!-- <hr style="background-color: #DCDFE6;"> -->
-           <span v-if="refresh"> <el-checkbox :label="item.id" @change="changeSelect(item)" :checked="selected.indexOf(item.id) !== -1 || patentNoList.indexOf(item.patentNo)!== -1">
-              
-                <el-link  :disabled="!$permission('/workspace/details')" :class="$permission('/workspace/details')?'':'jinzhi'" :type="item.read === 1 ? 'success' : 'danger'" @click.native.prevent="handleLink(item)">
-                  <span v-html="getViewDom(item.patentNo)"></span>
-                </el-link>
-              
-            </el-checkbox>  </span>
-            <el-tooltip effect="dark" :content="item.name" placement="top">
-                <span style="" v-html="getViewDom(item.name)"></span>
-              </el-tooltip>
-          </div>
-          <div class="picture text-align_center" style="height: 200px;width:100%;line-height:200px;">
-              <el-image v-if="(!reportId && item.abstractPath2)||reportId" :src="item.abstractPath2?item.abstractPath2:getImagePath1(item)" :preview-src-list="[item.abstractPath2]" style="margin:0 auto;vertical-align:middle;" :style="{width:item.imgWidth?item.imgWidth:'100%',height:item.imgHeight?item.imgHeight:'100%'}">
-              <div slot="error" class="image-slot">
-                <el-image :src="getErrorImage(item)" :preview-src-list="[getErrorImage(item)]">
-                  <div slot="error" class="image-slot">
-                    <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
-                  </div>
-                </el-image>
-              </div>
-            </el-image>
-
-          </div>
-        </el-card>
-<!--      
-      </el-col>
-    </el-row> -->
-    </div>
-  </div>
-</template>
-
-<script>
-import { commonMixins } from "@/views/workspace/folder/articles/components/mixins.js"
-import { patentViewList, patentKeywordsHighlight } from '@/views/workspace/folder/components/mixins.js'
-export default {
-  props: [],
-  mixins:[commonMixins,patentViewList, patentKeywordsHighlight ],
-  data() {
-    return {
-
-    }
-  },
-  computed: {
-    // records() {
-    //   return this.$store.state.patent.records
-    // }
-  },
-  watch: {
-    records(val,oldval) {
-      if(val != oldval){
-        this.$nextTick(() => {
-          this.addRecords()
-          this.refreshCheckBox()
-        })
-      }
-    }
-  },
-  mounted() {
-
-  },
-  methods: {
-
-  },
-}
-</script>
-
-<style lang="scss">
- .pic{
-  .el-divider{
-    margin: 5px 0px;
-  }
-  .el-card__header{
-    padding:5px !important
-  }
-  .el-card__body{
-    padding:0px !important
-  }
- }
-</style>

+ 0 - 302
src/views/components/import/conditionImport/view/Table.vue

@@ -1,302 +0,0 @@
-<template>
-  <div class="patent-table-list-view">
-    <el-table
-        v-if="refreshData"
-        ref="table"
-        class="view-table"
-        :data="records"
-        style=""
-        border
-        :height="tableHeight"
-        header-row-class-name="custom-table-header"
-        @cell-click="handleClick"
-        :cell-class-name="cellClassName"
-    >
-      <el-table-column width="80" align="center">
-        <template slot="header">
-          <patent-table-view-sort prop="id" @on-sort="onSort" />
-        </template>
-        <template slot-scope="scope">
-          <div v-if="refresh">
-            <el-checkbox :label="scope.row.id" @change="changeSelect(scope.row)" :checked="selected.indexOf(scope.row.id) !== -1 || patentNoList.indexOf(scope.row.patentNo)!== -1 || patentNoList.indexOf(scope.row.applicationNo)!== -1 ">
-              <span>{{ (scope.$index + 1) + ((params.current - 1) * params.size) }}</span>
-            </el-checkbox>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column label="专利号" show-overflow-tooltip align="center" width="180">
-        <template slot="header">
-          <patent-table-view-sort title="专利号" prop="patentNo" @on-sort="onSort" />
-        </template>
-        <template slot-scope="scope">
-          <el-popover placement="right-start" width="500" trigger="hover" >
-            <table class="patent-popover-table" >
-              <tr>  
-                <td>
-                  <div class="patent-abstract-image text-align_center" >
-                    <!-- <img :src="getPatentAbstractImage(scope.row.abstractPath)"> -->
-                    <!-- <img :src="getImagePath1(scope.row)"> -->
-                    <el-image v-if="(!reportId && scope.row.abstractPath2)||reportId" :src="scope.row.abstractPath2?scope.row.abstractPath2:getImagePath1(scope.row)" :preview-src-list="[scope.row.abstractPath2]" style="vertical-align:middle;" :style="{width:scope.row.imgWidth?scope.row.imgWidth:'100%',height:scope.row.imgHeight?scope.row.imgHeight:'100%'}">
-                      <div slot="error" class="image-slot">
-                        <el-image :src="getErrorImage(scope.row)" :preview-src-list="[getErrorImage(scope.row)]">
-                          <div slot="error" class="image-slot">
-                            <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
-                          </div>
-                        </el-image>
-                      </div>
-                    </el-image>
-                  </div>
-                </td>
-                <td>
-                  <p v-html="getViewDom2(scope.row, 'abstractStr')"></p>
-                  <el-link v-if="reportId" type="primary" @click.native="handleChange(scope.row, 'abstractStr')">
-                    <span v-if="!scope.row.change2">切换译文</span>
-                    <span v-else>切换原文</span>
-                  </el-link>
-                </td>
-              </tr>
-            </table>
-            <el-link slot="reference" :disabled="!$permission('/workspace/details')" :class="$permission('/workspace/details')?'':'jinzhi'" :type="scope.row.read === 1 ? 'success' : 'danger'" @click.native="handleLink(scope.row,scope.$index)">
-              <span v-html="getViewDom(scope.row.patentNo)"></span>
-            </el-link>
-          </el-popover>
-        </template>
-      </el-table-column>
-      <el-table-column v-for="column in columnList" :label="column.name" show-overflow-tooltip align="center">
-        <template slot="header">
-          <patent-table-view-sort :title="column.name" :prop="column.key" :reportId="reportId" @on-sort="onSort" />
-        </template>
-        <template slot-scope="scope">
-          <div style="" v-for="data in getColumnValue(scope.row, column)">
-            <template v-if="column.key === 'name'">
-              <span v-html="getViewDom2(scope.row, 'name')"></span>
-              <br>
-              <el-link v-if="reportId" type="primary" @click.native="handleChange(scope.row, 'name')">
-                <span v-if="!scope.row.change">切换译文</span>
-                <span v-else>切换原文</span>
-              </el-link>
-            </template>
-            <template v-else-if="column.key === 'abstractStr'">
-              <span v-html="getViewDom2(scope.row, 'abstractStr')"></span>
-              <br>
-              <el-link v-if="reportId" type="primary" @click.native="handleChange(scope.row, 'abstractStr')">
-                <span v-if="!scope.row.change2">切换译文</span>
-                <span v-else>切换原文</span>
-              </el-link>
-            </template>
-            <template v-else>
-              <span v-html="getViewDom(data)"></span>
-            </template>
-          </div>
-        </template>
-      </el-table-column>
-    </el-table>
-  </div>
-</template>
-
-<script>
-import { commonMixins } from "@/views/workspace/folder/articles/components/mixins.js"
-import { patentViewList, patentKeywordsHighlight } from '@/views/workspace/folder/components/mixins.js'
-import PatentTableViewSort from "./TableSort";
-
-export default {
-  props: ['viewField'],
-  mixins: [patentViewList, patentKeywordsHighlight,commonMixins],
-  components: {
-    PatentTableViewSort
-  },
-  data() {
-    return {
-      tableData: [],
-      tableHeight: null,
-      refreshData: false
-    }
-  },
-  watch: {
-    viewField: {
-      handler(n, o) {
-        this.refreshTable()
-      },
-      deep: true
-    },
-    records(val,oldval) {
-      
-      if(val != oldval){
-        this.$nextTick(() => {
-          this.addRecords()
-          this.refreshCheckBox()
-          this.setHeight()
-        })
-      }
-      
-    },
-    refreshData(val){
-      if(val){
-        this.$nextTick(()=>{
-          this.setHeight()
-        })
-        
-      }
-    }
-  },
-  activated() {
-    // this.refreshTable()
-  },
-  computed: {
-    columnList() {
-      return this.viewField.filter(item => !item.hidden)
-    }
-  },
-  created(){
-
-  },
-  mounted() {
-    if(this.viewField.length>0){
-      this.refreshTable()
-    }
-    this.$nextTick(()=>{
-      this.addRecords()
-    })
-    // console.log(this.columnList);
-  },
-  methods: {
-    getPatentAbstractImage(path) {
-      if (!path) {
-        return ''
-      }
-      return this.$p + path
-    },
-    onSort(data) {
-      this.$emit('on-sort', data)
-    },
-    setHeight() {
-      const offsetTop = window.innerHeight -250
-      const body = document.querySelector('.el-table__body')
-      if (!body) {
-        return false
-      }
-      const offsetBodyHeight = body.offsetHeight
-      if (this.records.length && offsetBodyHeight < offsetTop) {
-        this.tableHeight = offsetBodyHeight + 75
-      } else if (!this.records.length) {
-        this.tableHeight = null
-      } else {
-        this.tableHeight = offsetTop
-      }
-    },
-    refreshTable() {
-      this.refreshData = false
-      this.$nextTick(() => {
-        this.refreshData = true
-      })
-    },
-    getColumnValue(row, column) {
-      if (column.type !== 'list') {
-        const field = row.field.find(item => item.id === parseInt(column.key))
-        if (field) {
-          return field.selected
-        }
-      } else if (column.key === 'label') {
-        if(row.label)
-        return row.label.map(item => item.name)
-      } else {
-        const value = row[column.key]
-        if (column.key === 'inventor' || column.key === 'agent') {
-          if(value)
-          return value.map(item => item.name)
-        }
-        if (column.key === 'applicant1') {
-          if(row.applicant)
-          return row.applicant.filter(a => a.dataType === 1).map(item => item.shortName)
-        }
-        if (column.key === 'applicant2') {
-          if(row.applicant)
-          return row.applicant.filter(a => a.dataType === 1).map(item => item.name)
-        }
-        if (column.key === 'applicant3') {
-          if(row.applicant)
-          return row.applicant.filter(a => a.dataType === 2).map(item => item.shortName)
-        }
-        if (column.key === 'applicant4') {
-          if(row.applicant)
-          return row.applicant.filter(a => a.dataType === 2).map(item => item.name)
-        }
-        if (column.key === 'simpleFamily') {
-          return [row.family.simple.length]
-        }
-        if (column.key === 'inpadocFamily') {
-          return [row.family.inpadoc.length]
-        }
-        if (column.key === 'patSnapFamily') {
-          return [row.family.patSnap.length]
-        }
-        if (column.key === 'agency' && value) {
-          return [value.name]
-        }
-        if (value instanceof Array) {
-          return value
-        } else if (typeof value === 'string' || typeof value === 'number') {
-          return [value]
-        }
-        return ''
-      }
-    },
-    cellClassName({ row, column, rowIndex, columnIndex }) {
-      if (this.validationCustomField(column.label)) {
-        return 'custom-field-cell'
-      }
-    },
-    validationCustomField(label) {
-      const customField = this.viewField.filter(item => item.type !== 'list' || item.key === 'label')
-      const field = customField.find(item => item.name === label)
-      if (field) {
-        return field
-      }
-      return false
-    },
-    handleClick(row, column, cell,event) {
-
-      const field = this.validationCustomField(column.label)
-      if (field) {
-        this.$emit('index-setting', row, field)
-      }
-    },
-  }
-}
-</script>
-
-<style lang="scss">
-.patent-popover-table {
-  tbody, tr, td {
-    height: 100%;
-    vertical-align: top;
-  }
-  p {
-    padding: 0 !important;
-    margin: 0 !important;
-  }
-  .patent-abstract-image {
-    padding: 10px;
-    border: 1px solid #bcc2cc;
-    border-radius: 4px;
-    width: 120px;
-    height: 150px;
-    line-height: 150px;
-    img {
-      width: 100%;
-      height: 100%;
-    }
-  }
-}
-.patent-table-list-view {
-  .view-table {
-    width: 100%;
-  }
-  .el-table .cell {
-    white-space: pre-line !important;
-  }
-  .custom-field-cell {
-    cursor: pointer;
-  }
-}
-</style>

+ 0 - 117
src/views/components/import/conditionImport/view/TableSort.vue

@@ -1,117 +0,0 @@
-<template>
-  <div>
-    <span>{{ title }}</span>
-    <template v-if="showList.indexOf(prop) !== -1">
-      <el-dropdown size="small" :class="{ 'float_right' : title !== '' }">
-        <div class="el-dropdown-link">
-          <i class="el-icon-arrow-down el-icon--right"></i>
-        </div>
-        <el-dropdown-menu slot="dropdown">
-          <el-dropdown-item v-for="item in dropdown[type]" @click.native="handleClick(item)">
-            <i :class="item.icon"></i>
-            <span>{{ item.label }}</span>
-          </el-dropdown-item>
-        </el-dropdown-menu>
-      </el-dropdown>
-    </template>
-  </div>
-</template>
-
-<script>
-export default {
-  props: {
-    title: {
-      type: String,
-      default: ''
-    },
-    prop: {
-      type: String,
-      default: null
-    },
-    projectId: {
-      // type: Number,
-      default: null
-    }
-  },
-  data() {
-    return {
-      type: 1,
-      dropdown: [[
-        {
-          label: '最旧 -> 最新',
-          value: 'asc',
-          icon: 'el-icon-top'
-        },
-        {
-          label: '最新 -> 最旧',
-          value: 'desc',
-          icon: 'el-icon-bottom'
-        },
-      ], [
-        {
-          label: 'A -> Z',
-          value: 'asc',
-          icon: 'el-icon-top'
-        },
-        {
-          label: 'Z -> A',
-          value: 'desc',
-          icon: 'el-icon-bottom'
-        },
-      ], [
-        {
-          label: '0 -> 9',
-          value: 'asc',
-          icon: 'el-icon-top'
-        },
-        {
-          label: '9 -> 0',
-          value: 'desc',
-          icon: 'el-icon-bottom'
-        },
-      ]],
-      showList: [
-        'id',
-        'publicAccreditDate',
-        'publicDate',
-        'applicationDate',
-        'rightNum',
-        'quoteNum',
-        'quotedNum',
-        'name',
-        'patentNo',
-        'applicationNo',
-        '',
-        '',
-      ]
-    }
-  },
-  mounted() {
-    if (['id', 'publicAccreditDate', 'publicDate', 'applicationDate'].indexOf(this.prop) !== -1) {
-      this.type = 0
-    }
-    if (['rightNum', 'quoteNum', 'quotedNum'].indexOf(this.prop) !== -1) {
-      this.type = 2
-    }
-    if(!this.projectId){
-      this.showList= [
-        'publicAccreditDate',
-        'publicDate',
-        'applicationDate',
-      ]
-    }
-  },
-  methods: {
-    handleClick(item) {
-      this.$emit('on-sort', {
-        prop: this.prop,
-        order: item.value
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss">
-
-</style>

+ 0 - 181
src/views/components/import/excelImport/importPatent.vue

@@ -1,181 +0,0 @@
-<template>
-    <div class="import-patent">
-    <el-container class="import-patent">
-      <el-aside class="import-patent-main" style="width:450px">
-        <el-container class="import-patent-action">
-          <el-main class="import-patent-action-main" v-loading="loading">
-            <el-form :model="form" > 
-              <el-form-item label="数据来源:">
-                <select style="width:300px;border:0;outline:none" name="" id="" v-model="sourceId">
-                  <option value="">请选择数据来源</option>
-                  <option v-for="item in customField.dataType" :value="item.id">{{item.name}}</option>
-                </select>
-                <el-divider ></el-divider>
-              </el-form-item>
-              <el-form-item label="选择需要上传的专利信息导入文件">
-                <el-upload class="upload-file" drag action="#" :auto-upload="false" :show-file-list="false" :on-change="onChange">
-                  <i :class="!form.file ? 'el-icon-upload' : 'el-icon-refresh'"></i>
-                  <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-                  <div class="el-upload__tip" slot="tip"></div>
-                </el-upload>
-              </el-form-item>
-            </el-form>
-          </el-main>
-        </el-container>
-
-        
-      </el-aside>
-      <el-main>
-        <systemTask ref="systemTask" :form="1" :reportId="reportId" :productId="productId" :projectId="projectId"></systemTask>
-      </el-main>
-    </el-container>
-  </div>
-</template>
-
-<script>
-// import systemTask from './systemTask.vue'
-import systemTask from '@/views/task/index.vue'
-export default {
-  props:['reportId','asCompare','productId','projectId'],
-  components: {
-    systemTask
-  },
-  data() {
-    return {
-      form: {},
-      sourceId: '',
-      customField: [],
-      loading:false,
-    }
-  },
-  computed: {},
-  mounted() {
-    this.getCustomField()
-  },
-  methods: {
-    getCustomField() {
-      this.$api.getCustomField({ projectId: 0, patentTotal: false }).then(response => {
-        this.customField = response.data
-      })
-    },
-    getQueueList() {
-      this.$refs.systemTask.getQueueList()
-    },
-    onChange(file, fileList) {
-      this.form.file = file.raw
-      this.handleConfirm()
-    },
-    handleConfirm() {
-      const json = JSON.parse(JSON.stringify(this.form))
-      const refs = this.$refs
-     
-      let data = {
-        reportId: this.reportId,
-        productId: this.productId,
-        projectId: this.projectId,
-        sourceId:this.sourceId,
-        fieldList: [],
-        folderIds: refs.folderTree ? refs.folderTree.getCheckedKeys() : [],
-        asCompare:this.asCompare
-      }
-      for (let uid in json.field) {
-        const field = json.field[uid]
-        if (!field) {
-          continue;
-        }
-        const type = field.type
-        const value = field.value
-        if (value) {
-          if (type === 5) {
-            value.map(option => {
-              data.fieldList.push({
-                fieldId: parseInt(id),
-                type: type,
-                optionId: option
-              })
-            })
-          } else if (type === 6) {
-            const tree = refs[id]
-            if (tree) {
-              const treeNode = tree[0].getCheckedKeys()
-              treeNode.map(node => {
-                data.fieldList.push({
-                  fieldId: parseInt(id),
-                  type: type,
-                  optionId: node
-                })
-              })
-            }
-          } else {
-            data.fieldList.push({
-              fieldId: parseInt(id),
-              type: type,
-              optionId: [0, 1, 2].indexOf(type) === -1 ? value : 0,
-              text: value
-            })
-          }
-        }
-      }
-      if (!this.form.file) {
-        this.$message.error('请选择文件')
-        return false
-      }
-      if (!this.sourceId) {
-        this.$message.error('请选择数据类型')
-        return false
-      }
-      let formData = new FormData()
-      formData.append('file', this.form.file)
-      formData.append('json', JSON.stringify(data))
-      this.btnLoading = true
-      this.loading = true
-      // console.log(formData)
-      this.$api.importProjectPatent(formData).then(response => {
-        this.$message.success('任务创建成功')
-        this.form.file = null
-        this.btnLoading = false
-        this.loading = false
-        // this.handleClose()
-        this.getQueueList()
-      }).catch(error => {
-        this.btnLoading = false
-        this.loading = false
-      })
-    }
-  },
-}
-</script>
-
-<style lang="scss">
-.el-divider--horizontal{
-  margin:0
-}
-.import-patent {
-  height: 100%;
-  .import-patent-main {
-    overflow-x: hidden;
-    padding: 0;
-    height: 100%;
-    background: #fff;
-  }
-  .import-patent-action {
-    width: 450px;
-    height: 100%;
-    border-right: 1px solid #d2d2d2;
-    float: left;
-    .custom-field-form .el-form-item__label {
-      font-weight: bold !important;
-    }
-    .import-patent-action-form {
-      margin-left: 20px;
-    }
-    .import-patent-action-main {
-      padding: 10px;
-    }
-  }
-  .import-patent-button {
-    height: 70px !important;
-    text-align: right;
-  }
-}
-</style>

+ 0 - 41
src/views/components/import/excelImport/index.vue

@@ -1,41 +0,0 @@
-<template>
-  <div>
-    <importPatent :reportId="reportId" :asCompare="asCompare" :productId="productId" :projectId="projectId"></importPatent>
-  </div>
-</template>
-
-<script>
-import importPatent from './importPatent.vue'
-export default {
-  components: {
-    importPatent
-  },
-  data() {
-    return {
-
-    }
-  },
-  computed: {
-    reportId() {
-      return this.$route.query.reportId
-    },
-    projectId() {
-      return this.$route.query.projectId
-    },
-    productId() {
-      return this.$route.query.productId
-    },
-    asCompare() {
-      return this.$route.query.asCompare
-    }
-  },
-  mounted() {
-
-  },
-  methods: {},
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>

+ 0 - 344
src/views/components/import/index.vue

@@ -1,344 +0,0 @@
-<template>
-  <div class="import-patent">
-    <el-container class="import-patent">
-      <el-main class="import-patent-main">
-        <el-container class="import-patent-action">
-          <!-- <el-header>
-            <el-form :inline="true" class="import-patent-action-form">
-              <el-form-item>
-                <el-button size="small" type="primary" @click="handleManage" :disabled="!($permission('/workspace/common/customField') && $r(projectId,[1,2]))">自定义栏位管理</el-button>
-                <el-button size="small" type="success" @click="handleFolder" :disabled="!($permission('/workspace/common/folder_manage') && $r(projectId,[1,2]))">文件夹管理</el-button>
-              </el-form-item>
-            </el-form>
-          </el-header> -->
-          <el-main class="import-patent-action-main" v-loading="loading">
-            <el-form :model="form">
-              <!-- <el-form-item label="选择需要关联的标引与分类">
-                <el-table :data="tableData" :show-header="false">
-                  <el-table-column type="expand">
-                    <template slot-scope="props">
-                      <el-form label-position="top" class="custom-field-form">
-                        
-                        <template v-if="props.row.field === 'folder'">
-                          <el-tree
-                              ref="folderTree"
-                              :data="customField.folder"
-                              check-strictly
-                              :default-checked-keys="form.json.field.folder"
-                              show-checkbox
-                              node-key="id"
-                              :props="defaultProps"
-                          ></el-tree>
-                        </template>
-                        <template v-else v-for="(item, index) in customField[props.row.field]">
-                          <el-form-item :label="`${index + 1}. ${item.name}`">
-                            <template v-if="item.type === 0 || item.type === 2">
-                              <el-input v-model="form.json.field[item.id].value" placeholder="请输入内容" size="small"></el-input>
-                            </template>
-                            <template v-if="item.type === 1">
-                              <el-date-picker v-model="form.json.field[item.id].value" value-format="yyyy-MM-dd" type="date" size="small" placeholder="选择日期" style="width: 100%;"></el-date-picker>
-                            </template>
-                            <template v-if="item.type === 3">
-                              <el-select v-model="form.json.field[item.id].value" size="small" placeholder="请选择" class="width_100">
-                                <el-option v-for="option in item.option" :value="option.id" :label="option.name"></el-option>
-                              </el-select>
-                            </template>
-                            <template v-if="item.type === 4">
-                              <el-radio-group v-model="form.json.field[item.id].value">
-                                <el-radio v-for="option in item.option" :label="option.id">{{ option.name }}</el-radio>
-                              </el-radio-group>
-                            </template>
-                            <template v-if="item.type === 5">
-                              <el-checkbox-group v-model="form.json.field[item.id].value">
-                                <el-checkbox v-for="option in item.option" :label="option.id">{{ option.name }}</el-checkbox>
-                              </el-checkbox-group>
-                            </template>
-                            <template v-if="item.type === 6">
-                              <el-tree
-                                  :ref="item.id"
-                                  :data="item.option"
-                                  check-strictly
-                                  :default-checked-keys="form.json.field[item.id].value"
-                                  show-checkbox
-                                  node-key="id"
-                                  :props="defaultProps"
-                              ></el-tree>
-                            </template>
-                          </el-form-item>
-                        </template>
-                      </el-form>
-                    </template>
-                  </el-table-column>
-                  <el-table-column prop="name" show-overflow-tooltip></el-table-column>
-                </el-table>
-              
-              </el-form-item>
-              <el-form-item label="数据来源:">
-                <select style="width:390px;border:0;outline:none" name="" id="" v-model="sourceId">
-                  <option value="">请选择数据来源</option>
-                  <option v-for="item in customField.dataType" :value="item.id">{{item.name}}</option>
-                </select>
-                <el-divider ></el-divider>
-              </el-form-item>  -->
-              
-              <el-form-item label="选择需要上传的专利信息导入文件">
-                <el-upload class="upload-file" drag action="#" :auto-upload="false" :show-file-list="false" :on-change="onChange">
-                  <i :class="!form.file ? 'el-icon-upload' : 'el-icon-refresh'"></i>
-                  <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-                  <div class="el-upload__tip" slot="tip"></div>
-                </el-upload>
-              </el-form-item>
-            </el-form>
-          </el-main>
-        </el-container>
-
-        <system-task ref="systemTask" :form="1" :reportId="reportId" />
-      </el-main>
-<!--      <el-footer class="import-folder-button">-->
-<!--        <el-button @click="handleClose">关 闭</el-button>-->
-<!--        <el-button type="primary" @click="handleConfirm" :loading="btnLoading">确 定</el-button>-->
-<!--      </el-footer>-->
-    </el-container>
-
-    <!-- <project-field-drawer @close="handleClose2" ref="projectFieldDrawer" />
-
-    <project-folder-dialog @close="updateFolder" ref="projectFolderDialog" /> -->
-  </div>
-</template>
-
-<script>
-// import ProjectFieldDrawer from "../../layout/components/field.vue";
-// import ProjectFolderDialog from "../common/Folder.vue";
-import SystemTask from '../task/index1.vue'
-import { mapGetters } from "vuex";
-
-export default {
-  components: {
-    // ProjectFieldDrawer,
-    // ProjectFolderDialog,
-    SystemTask
-  },
-  data() {
-    return {
-      sourceId: '',
-      reportId: this.$route.query.id,
-      asCompare:this.$route.query.asCompare,
-      title: '',
-      customField: {},
-      loading: false,
-      btnLoading: false,
-      total: 0,
-      tableData2: [],
-      form: {
-        file: null,
-        json: {
-          projectId: 0,
-          field: [],
-          folder: {}
-        }
-      },
-      fieldTypeObj: {
-        0: '数字',
-        1: '日期',
-        2: '文本',
-        3: '下拉框',
-        4: '单选',
-        5: '多选',
-        6: '树',
-      },
-      tableData: [
-        {
-          name: '标引',
-          field: 'index'
-        }, {
-          name: '分类',
-          field: 'classify'
-        }, {
-          name: '文件夹',
-          field: 'folder'
-        }],
-      defaultProps: {
-        children: 'children',
-        label: 'name'
-      },
-    }
-  },
-  computed: {
-    ...mapGetters(['webSocket', 'userinfo'])
-  },
-  mounted() {
-
-    this.reportId = this.$route.query.id
-    this.asCompare = this.$route.query.asCompare
-    // this.getCustomField()
-  },
-  // watch:{
-  //   sourceId(val){
-  //     console.log(val)
-  //   }
-  // },
-  methods: {
-
-    getQueueList() {
-      this.$refs.systemTask.getQueueList()
-    },
-    cancel() {
-      this.dialogVisible = false
-    },
-    updateFolder() {
-      this.$api.getProjectFolderList({ projectId: this.projectId, patentTotal: false }).then(response => {
-        this.customField.folder = response.data
-      })
-    },
-    handleManage() {
-      this.$refs.projectFieldDrawer.open(this.projectId)
-    },
-    handleFolder() {
-      this.$refs.projectFolderDialog.open(this.projectId)
-    },
-    onChange(file, fileList) {
-      this.form.file = file.raw
-      this.handleConfirm()
-    },
-    handleClose() {
-
-    },
-    handleClose2() {
-      this.getCustomField()
-    },
-    getCustomField() {
-      this.$api.getCustomField({ projectId: this.projectId }).then(response => {
-        this.customField = response.data;
-        ['index', 'classify'].map(key => {
-          this.customField[key].map(item => {
-            let value = null
-            if (item.type === 5 || item.type === 6) {
-              value = []
-            }
-            this.$set(this.form.json.field, item.id, { type: item.type, value })
-          })
-        })
-        // console.log(this.customField);
-      })
-    },
-    handleConfirm() {
-      // const json = JSON.parse(JSON.stringify(this.form.json))
-      // const refs = this.$refs
-
-      // let data = {
-      //   projectId: this.projectId,
-      //   sourceId: this.sourceId,
-      //   fieldList: [],
-      //   folderIds: refs.folderTree ? refs.folderTree.getCheckedKeys() : []
-      // }
-      // for (let id in json.field) {
-      //   const field = json.field[id]
-      //   if (!field) {
-      //     continue;
-      //   }
-      //   const type = field.type
-      //   const value = field.value
-      //   if (value) {
-      //     if (type === 5) {
-      //       value.map(option => {
-      //         data.fieldList.push({
-      //           fieldId: parseInt(id),
-      //           type: type,
-      //           optionId: option
-      //         })
-      //       })
-      //     } else if (type === 6) {
-      //       const tree = refs[id]
-      //       if (tree) {
-      //         const treeNode = tree[0].getCheckedKeys()
-      //         treeNode.map(node => {
-      //           data.fieldList.push({
-      //             fieldId: parseInt(id),
-      //             type: type,
-      //             optionId: node
-      //           })
-      //         })
-      //       }
-      //     } else {
-      //       data.fieldList.push({
-      //         fieldId: parseInt(id),
-      //         type: type,
-      //         optionId: [0, 1, 2].indexOf(type) === -1 ? value : 0,
-      //         text: value
-      //       })
-      //     }
-      //   }
-      // }
-      if (!this.form.file) {
-        this.$message.error('请选择文件')
-        return false
-      }
-      // if (!this.sourceId) {
-      //   this.$message.error('请选择数据类型')
-      //   return false
-      // }
-      let formData = new FormData()
-      formData.append('reportId', this.reportId)
-      if(this.asCompare){
-        formData.append('asCompare',this.asCompare)
-      }
-      
-      formData.append('file', this.form.file)
-      // formData.append('json', JSON.stringify(data))
-      this.btnLoading = true
-      this.loading = true
-      // console.log(formData)
-      this.$api.import(formData).then(response => {
-        this.$message.success('任务创建成功')
-        this.form.file = null
-        this.btnLoading = false
-        this.loading = false
-        // this.handleClose()
-        this.getQueueList()
-      }).catch(error => {
-        this.btnLoading = false
-        this.loading = false
-      })
-    }
-  }
-}
-</script>
-<style lang="scss">
-.el-divider--horizontal {
-  margin: 0
-}
-
-.import-patent {
-  height: 100%;
-
-  .import-patent-main {
-    padding: 0;
-    height: 100%;
-    background: #fff;
-  }
-
-  .import-patent-action {
-    width: 500px;
-    height: 100%;
-    border-right: 1px solid #d2d2d2;
-    float: left;
-
-    .custom-field-form .el-form-item__label {
-      font-weight: bold !important;
-    }
-
-    .import-patent-action-form {
-      margin-left: 20px;
-    }
-
-    .import-patent-action-main {
-      padding: 10px;
-    }
-  }
-
-  .import-patent-button {
-    height: 70px !important;
-    text-align: right;
-  }
-}
-</style>

+ 0 - 153
src/views/feedback/components/feedback.vue

@@ -1,153 +0,0 @@
-<template>
-  <div>
-    <el-dialog   
-      title="意见反馈"
-      :visible.sync="feedbackVisible"
-      width="700px"
-      append-to-body
-      :close-on-click-modal="false"
-      :before-close="feedbackClose">
-
-        <div style="padding: 10px;">
-          <!-- <h2>用户反馈</h2>
-          <hr style="height: 2px;background: #21b7f4;margin: 10px auto;"> -->
-          <div>
-            <div style="font-size: 20px;font-weight: 700;margin: 0 10px 10px">尊敬的用户:</div>
-            <span style="font-size: 16px;"> &nbsp;&nbsp;&nbsp;&nbsp; 您在知识产权风控与组织记忆系统中遇到产品使用的问题,请在这里告诉我们,欢迎提出意见和建议,我们将参考您的建议来改善我们的服务。 </span>
-            <h3 style="font-size: 20px;font-weight: 700"> 感谢您的关注和支持! </h3>
-          </div>
-          <div>
-            <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-              <el-form-item label="反馈类型" prop="feedBackType">
-                <el-select v-model="form.feedBackType" style="width: 50%;" placeholder="请选择反馈类型">
-                  <el-option
-                    v-for="item in options"
-                    :key="item.feedBackType"
-                    :label="item.label"
-                    :value="item.feedBackType">
-                  </el-option>
-                </el-select>
-              </el-form-item>
-              <el-form-item label="电子邮件" prop="email">
-              <el-input v-model="form.email" style="width: 50%;" placeholder="请输入您的Email"></el-input>
-              </el-form-item>
-              <el-form-item label="详细描述" prop="feedBackContent">
-                <el-input type="textarea" v-model="form.feedBackContent" placeholder="请输入详细描述"></el-input>
-              </el-form-item>
-            </el-form>
-          </div>
-          <!-- <div style="display: flex; justify-content: flex-end;">
-            <el-button type="primary" size="" @click="submit" > 提 交 </el-button>
-          </div> -->
-        
-        </div>
-
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="feedbackClose">取 消</el-button>
-        <el-button type="primary" @click="finish">确 定</el-button>
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    const isEmail = (rule, value, callback) => {
-      const mailReg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\.\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
-      if (!this.form.email) {
-        return callback(new Error("邮箱不能为空"));
-      }
-      setTimeout(() => {
-        if (mailReg.test(value)) {
-          callback();
-        } else {
-          callback(new Error("请输入正确的邮箱格式"));
-        }
-      }, 100);
-    };
-    return {
-      form: {
-        feedBackType:'1'
-      },
-      options: [{
-        feedBackType: '1',
-          id:1,
-          label: 'BUG反馈'
-        }, {
-          feedBackType: '2',
-          id:2,
-          label: '数据纠错'
-        }, {
-          feedBackType: '3',
-          id:3,
-          label: '意见建议'
-        }],
-      feedbackVisible:false,
-      rules: {
-        feedBackType:[ { required: true, message: '请选择反馈类型', trigger: 'change' },],
-        email:[{ required: true, validator: isEmail, trigger: 'blur' },],
-        feedBackContent:[{ required: true, message: '请输入详细描述', trigger: 'blur' },],
-      }
-    }
-  },
-  computed: {},
-  mounted() { },
-  methods: {
-    open() {
-      this.feedbackVisible=true
-    },
-    finish() {
-      this.$refs.form.validate((valid) => {
-        if (valid) {
-          // console.log(this.form);
-           this.$api.addUserFeedBack(this.form).then(res => {
-             if (res.code == 200) {
-               this.feedbackClose()
-                this.$message.success('您的反馈已收到,让我们携手共行,共创美好未来')
-              }
-           })
-        }
-      })
-    },
-    feedbackClose() {
-      this.form.email=''
-      this.form.feedBackContent = ''
-      this.$refs.form.resetFields()
-      this.feedbackVisible=false
-    },
-  },
-}
-</script>
-<style>
-/* .el-dialog__body {
-    padding: 0px 20px;
-    color: #606266;
-    font-size: 14px;
-    word-break: break-all;
-} */
-</style>
-<style lang="scss" scoped>
-.absoParent{
-  position: relative;
-  top: 100px;
-  left: 0;
-}
-.abso{
-  width: 100px;
-  height: 50px;
-  position: absolute;
-  top: 0;
-  right: 0px;
-  border: 1px solid #1a65b8;
-  border-radius:10px; 
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-.absoParent :hover{
-  background: #1a65b8;
-  color: white;
-}
-
-</style>

+ 0 - 28
src/views/feedback/index.vue

@@ -1,28 +0,0 @@
-<template>
-  <div>
-    <feedback></feedback>
-  </div>
-</template>
-
-<script>
-import feedback from './components/feedback.vue'
-export default {
-  components: {
-    feedback
-  },
-  data() {
-    return {
-
-    }
-  },
-  computed: {},
-  mounted() { },
-  methods: {
-
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>

+ 0 - 171
src/views/indicia/components/card.vue

@@ -1,171 +0,0 @@
-<template>
-  <div class="indiciaCard" v-loading="loading">
-    <!-- <el-row :gutter="24">
-      <el-col :span="6" v-for="(item, index) in cardData" :key="item.index"> -->
-      <template v-if="cardData && cardData.length > 0"  >
-        <el-card class="box-card" v-for="(item, index) in cardData" :key="index">
-          <div slot="header" class="clearfix">
-            <!-- <el-checkbox @change="changeRemark(item)" :value="remarkList.indexOf(item.id) !== -1"> -->
-              <span v-if="componentType == 'indiciaCard'" style="font-weight: 700;"> 序号:{{ (index + 1) + (queryParams.current - 1) * queryParams.size }}</span>
-              <span v-else style="font-weight: 700; "> 序号:{{ index + 1 }}</span>
-            <!-- </el-checkbox> -->
-          </div>
-          <div class="card-context text">
-            <div style="display: flex;" class="text textPRight context-marginTop">
-              <span style="font-weight: 700;">标注:</span>
-              <el-tooltip placement="top">
-                <template slot="content">
-                  <div style="max-width:500px;">{{ item.remark }}</div>
-                </template>
-                <span class="textPRight">{{ item.remark }}</span>
-              </el-tooltip>
-            </div>
-            <div class="text context-marginTop">
-              <span style="font-weight: 700;">标注人/时间:</span>
-              <span>{{ item.name }}</span> <span>{{ item.date }}</span>
-            </div>
-            <div style="display: flex;align-items: center;">
-              <!-- 文字前方颜色方块 -->
-              <!-- <div :style="{ 'background': item.color }"
-                style="width: 5px;height: 20px;border-radius: 5px;margin-right: 5px;margin-top: 18px;">
-              </div> -->
-              <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>
-                </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.scratchType == 1"  :style="{ 'background': item.color }" style="color: aliceblue;"
-                  class="textPRight textP">{{ '[' + item.scratchField + ']' + item.text }}</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>
-              </el-tooltip>
-            </div>    
-            
-            <div class="text">
-              <span style="font-weight: 700;">专利号:</span>
-              <el-link @click.native="handleLink(item)">
-                <span style="color: #409EFF;">{{ item.patentNo }}</span>
-              </el-link>
-            </div>
-            <div class="text textPRight context-marginTop">
-              <span style="font-weight: 700;">专利标题:</span>
-              <el-tooltip placement="top">
-                <template slot="content">
-                  <div style="max-width:500px;">{{ item.patentTitle }}</div>
-                </template>
-                <span>{{ item.patentTitle }}</span>
-              </el-tooltip>
-            </div>
-            <div class="text context-marginTop">
-              <!-- <span style="font-weight: 700;">标注人:</span>
-              <span>{{ item.name }}</span> -->
-            </div>
-           
-          </div>
-
-        </el-card>
-      </template>
-      <template v-else>
-        <el-card class="box-card" >
-          <p style="margin-left: 10px;"> 暂 无 数 据 </p>
-        </el-card>
-      </template>
-      <!-- </el-col>
-    </el-row> -->
-  </div>
-</template>
-
-<script>
-export default {
-  props: ['dataArr','queryParams','loading','componentType'],
-  data() {
-    return {
-      remarkList: [],
-    }
-  },
-  computed: {
-    cardData() {
-      return this.dataArr
-    },
-  },
-  watch: {
-  },
-  mounted() {
-
-  },
-  methods: {
-    // 跳转专利详情
-    handleLink(row, index) {
-      var router = this.$router.resolve({
-        path: 'patentDetails',
-          query:{
-            patentId:row.patentId,
-            patentNo:row.patentNo,
-            id:row.patentId?true:null
-          }
-      })
-      // this.$s.setSession('params', this.params)
-      window.open(router.href, '_blank');
-    },
-    // 选中标注
-    changeRemark(row) {
-      const index1 = this.remarkList.indexOf(row.id)
-      if (index1 === -1) {
-        this.remarkList.push(row.id)
-      } else {
-        this.remarkList.splice(index1, 1)
-      }
-    },
-  },
-}
-</script>
-<style lang="scss">
-.indiciaCard {
-  .el-card__header {
-    padding: 10px 20px 0px 20px !important;
-  }
-
-  .box-card {
-    cursor: default;
-  }
-}
-</style>
-<style lang="scss" scoped>
-.card-context {
-  padding: 0 20px 20px 20px;
-}
-
-.text {
-  font-size: 14px;
-}
-
-.textP {
-  line-height: 25px;
-  // margin-bottom: 0px;
-  margin: 0px;
-}
-
-// .textLineRow {
-//   overflow-y: hidden; //多出的隐藏
-//   text-overflow: ellipsis; //多出部分用...代替
-//   display: -webkit-box; //定义为盒子模型显示
-//   -webkit-line-clamp: 1; //用来限制在一个块元素显示的文本的行数
-//   -webkit-box-orient: vertical; //从上到下垂直排列子元素(设置伸缩盒子的子元素排列方式)
-// }
-
-.textPRight {
-  word-break: keep-all;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.context-marginTop{
-  margin-top: 10px;
-}
-</style>

+ 0 - 75
src/views/indicia/components/collapse.vue

@@ -1,75 +0,0 @@
-<template>
-  <div>
-    <el-collapse v-model="activeName" accordion @change="handleChange" v-loading="loading">
-      <!-- //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]">
-          <div :style="{'height':sonHeight-(collapseList.length>1?'150':'100') +'px'}" style="padding: 10px;overflow-y: auto;">
-            <indiciaCard :dataArr="dataArr" :queryParams="params" ></indiciaCard>
-          </div>
-        </el-collapse-item>
-      </template>
-      <template v-else>
-        <el-collapse-item title="暂无数据" name="0">
-          <indiciaCard></indiciaCard>
-        </el-collapse-item>
-      </template>
-
-    </el-collapse>
-  </div>
-</template>
-
-<script>
-import indiciaCard from './card.vue'
-export default {
-  components: {
-    indiciaCard
-  },
-  //collapse测试数据
-  props: ['dataArr','collapseList','queryParams','sonHeight','loading'],
-  data() {
-    return {
-      activeName: '',
-      params: {
-        current: this.queryParams.current,
-        size:this.queryParams.size
-      }
-    }
-  },
-  computed: {
-    // activeName() {
-    //   let activeName = this.active
-    //   return activeName
-    // },
-  },
-  watch: {
-    'collapseList'(val) {
-      if (val) {
-        this.params={
-        current: this.queryParams.current,
-        size:this.queryParams.size
-      }
-        let data = val[0][this.queryParams.grouping]
-        this.activeName=data
-      } else {
-        this.activeName=''
-      }
-    },
-  },
-  mounted() { 
-
-  },
-  methods: {
-    handleChange(val) {
-      if (val) {
-        this.$emit('collapseVal',val)
-      }
-    },
-  },
-}
-</script>
-
-<style lang="scss">
-
-</style>

+ 0 - 286
src/views/indicia/components/indicia.vue

@@ -1,286 +0,0 @@
-<template>
-  <div class="indicia">
-    <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>
-        </div>
-        <div>
-          <span>分组查询:</span>
-          <el-select v-model="groupingValue" size="small" @change="changeGrouping" class="indicia-top-select">
-            <el-option v-for="item in groupingOption" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-          <!-- <el-button size="small" type="primary" @click="importBtn" class="indicia-top-button">导 出</el-button> -->
-        </div>
-      </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">
-        </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" >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import indiciaCard from './card.vue'
-import indiciaCollapse from './collapse.vue'
-import { importExcel } from './mixins'
-// import { downLoad2 } from "@/utils";
-export default {
-  components: {
-    indiciaCollapse,
-    indiciaCard,
-  },
-  mixins:[importExcel,],
-  data() {
-    return {
-      componentType: 'indiciaCard',//切换组件,默认card组件
-      screenOptions: [
-        {
-          label: '标注',
-          value: 'remark',
-          placeholder: '请输入标注',
-        },
-        {
-          label: '专利号',
-          value: 'patentNo',
-          placeholder: '请输入专利号',
-        },
-        // {
-        //   label: '标注的位置',
-        //   value: 'address',
-        //   placeholder: '请输入标注的位置'
-        // },
-        {
-          label: '标注人',
-          value: 'name',
-          placeholder: '请输入标注人',
-        },
-        {
-          label: '标注时间',
-          value: 'date',
-          placeholder: '请选择标注时间',
-        },
-      ],//筛选
-      groupingOption: [
-        {
-          label: '不分组',
-          value: 'noGrouping',
-        },
-        {
-          label: '专利号',
-          value: 'patentNo',
-        },
-        {
-          label: '标注人',
-          value: 'name',
-        },
-        {
-          label: '标注时间',
-          value: 'date',
-        },
-      ],//分组
-      screenValue: 'remark',//筛选的值
-      screenInputValue: '',//筛选输入的值
-      groupingValue: 'noGrouping',//分组的值
-      queryParams: {
-        current: 1,
-        size: 10,
-      },
-      total: 0,
-      tableCollapseList: [],//获取的数据
-      collapseList: [],//collapse数据
-      sonHeight: document.documentElement.clientHeight -230,//页面高度
-      loading: false,
-      searchOptions:[],//检索条件
-    }
-  },
-  watch: {
-   
-  },
-  mounted() {
-    this.getList()
-  },
-  methods: {
-    // 请求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 })
-        var params = {
-          search:a
-        }
-      } else {
-        var params = {
-          //...扩展、展开
-          ...this.queryParams,
-          search:this.searchOptions,
-        }
-      }
-      this.$api.queryScratchS(params).then((res) => {
-        if (res.code == 200) {
-          this.tableCollapseList = res.data.records
-          if (!val) {
-            this.total=res.data.total
-          }
-          this.loading=false
-        }
-      }).catch(error => {
-        this.tableCollapseList = []
-        if (!val) {
-          this.total=0
-         }
-        this.loading=false
-      })
-    },
-    // 查询分组
-    getCollapse() {
-      this.loading = true
-      let params = {
-        //...扩展、展开
-        search:this.searchOptions,
-        ...this.queryParams,
-      }
-      this.$api.queryGroupScratchS(params).then((res) => { 
-        if (res.code == 200) {
-          this.collapseList = res.data.records
-          this.total=res.data.total
-          this.loading = false
-          if (this.collapseList.length > 0) {
-            this.getList(this.collapseList[0][this.queryParams.grouping])
-          }
-        }
-      }).catch(error => {
-        this.collapseList = []
-        this.total=0
-        this.loading=false
-      })
-    },
-    // 判断是查询分组还是只检索
-    isCollapse() {
-      if (this.componentType == 'indiciaCard') {
-        this.getList()
-      } else {
-        this.getCollapse()
-      }
-    },
-    // 搜索事件
-    screenBtn() { 
-      this.editSearchOptions()
-      this.isCollapse()
-      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) { 
-      this.queryParams.current = 1
-      if (val == 'noGrouping') {//不分组
-        this.componentType='indiciaCard'
-      } else {
-        this.componentType = 'indiciaCollapse'
-        this.queryParams.grouping = val
-      }
-      this.isCollapse()
-    },
-    // 分页
-    handleCurrentChange(val) {
-      this.queryParams.current = val
-      this.isCollapse()
-    },
-    // 获取输入框提示信息
-    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()
-    },
-    // 子组件
-    collapseVal(val) {
-      this.getList(val)
-    },
-  },
-}
-</script>
-<style lang="scss" scoped>
-.indicia {
-  width: 100%;
-  height: 100%;
-  min-width: 950px;
-  background: white;
-
-  .indicia-top-components {
-    margin-bottom: 20px;
-    // padding-right: 40px;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-  }
-
-  .indicia-top-select {
-    width: 150px;
-  }
-
-  .indicia-top-button {
-    margin-left: 10px;
-  }
-
-  .indicia-components {
-    margin-bottom: 20px;
-    overflow: auto;
-    // padding-right: 40px;
-  }
-  
-}
-</style>

+ 0 - 98
src/views/indicia/components/mixins.js

@@ -1,98 +0,0 @@
-export const importExcel = {
-  data() {
-    return {
-      res:'',//存储excel导出的tr、td
-    }
-  },
-  methods: {
-    importBtn() {
-      if (this.selected && this.selected.length>0) {//部分导出
-        
-      } else {//全部导出
-        
-      }
-      if (this.selected.length > 0) {
-        // 点击导出时获取勾选中标注的信息,放在selectedExportExcel数组中
-        this.selected.forEach(item => {
-          if (this.componentType == 'indiciaCard') {
-            var a = tableCollapseList.find(item1 => {
-              return item == item1.id
-            })
-            this.selectedExportExcel.push(a)
-            
-          }
-          // else {
-          //   this.collapseList.forEach(itemForEach => {
-          //     var a= itemForEach.data.find(item1 => {
-          //       return item == item1.scratchId
-          //     })
-          //     this.selectedExportExcel.push(a)
-          //   })
-          // }
-        })
-        // const fields = ['专利号','专利标题','标注','标注的位置','标注人','标注时间']
-        // this.importExcel(fields, this.selectedExportExcel)
-        const fields = {
-          remark: '标注',
-          nameAndDate: '标注人/时间',
-          // date: '标注时间',
-          address: '标注的位置',
-          patentNo: '专利号',
-          pName: '专利标题',
-        }
-        let title = '标注库'
-        this.exportExcel(fields, this.selectedExportExcel, title)
-        this.isExcel = !this.isExcel
-        this.selectedExportExcel = []
-        this.selected = []
-      } else {
-        this.$message.error('请先勾选标注再进行导出')
-        return false
-      }
-    },
-      // 导出excel方法
-      exportExcel(filesValue,dataExcel,title) {
-        // 拼接标题行
-        const head = Object.values(filesValue).map(item => {
-          return `<td style='background:#FFC000;font-weight: bold;'>${item}</td>`
-        }).join('')
-        // 拼接数据行
-        dataExcel.map(item => {
-          this.getStr(item, filesValue)
-        }).join()
-        const body = this.res
-        this.res=''
-        const worksheet = title
-        const url = 'data:application/vnd.ms-excel;base64,'
-  
-        // 下载的表格模板数据
-        const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office"
-                        xmlns:x="urn:schemas-microsoft-com:office:excel"
-                        xmlns="http://www.w3.org/TR/REC-html40">
-                        <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
-                        <x:Name>${worksheet}</x:Name>
-                        <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
-                        </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
-                      </head><body><table><tr style="mso-number-format:'\@';height:45px;line-height:45px;text-align:center;width:150px;">${head}</tr>${body}</table></body></html>`
-        // 下载模板
-        let link = document.createElement('a')
-        link.setAttribute('href', url + window.btoa(unescape(encodeURIComponent(template))))
-        link.setAttribute('download', title + '.xls')
-        link.click()
-        
-      },
-      getStr(item, filesValue) {
-        this.res += `<tr style="mso-number-format:'\@';height:80px;line-height:80px;text-align:center;" >`
-        for (const key in filesValue) {
-          if (key == 'address') {
-            this.res += `<td style='width:150px'>${'[' + item.scratchField + ']' + item.text}</td>`
-          } else if (key == 'nameAndDate') {
-            this.res += `<td style='width:150px'>${ item.name + '&nbsp;' + item.date}</td>`
-          } else {
-            this.res += `<td style='width:150px'>${item[key]}</td>`
-          }
-        }
-        this.res += '</tr>'
-      },
-  },
-}

+ 0 - 30
src/views/indicia/index.vue

@@ -1,30 +0,0 @@
-<template>
-  <div>
-      <indicia></indicia>
-  </div>
-</template>
-
-<script>
-import indicia from './components/indicia.vue'
-export default {
-  components: {
-    indicia
-  },
-  data() {
-    return {
-
-    }
-  },
-  computed: {
-    
-  },
-  mounted() { 
-    
-  },
-  methods: {
-
-  },
-}
-</script>
-
-<style lang="scss" scoped></style>

+ 0 - 9
src/views/layout/components/UserBar.vue

@@ -2,13 +2,6 @@
   <div class="admin-user-bar">
     <div class="menu">
       <el-link :underline="false" v-for="item in menu" :key="item.path" @click="changePage(item.path)" :type="item.label==title?'danger':'default'">{{ item.label }}</el-link>
-      <!-- <el-link :underline="false" @click="changePage(5)">场景可视化</el-link>
-      <el-link :underline="false" @click="changePage(1)">专题库</el-link>
-      <el-link :underline="false" @click="changePage(4)">报告</el-link>
-      <el-link :underline="false" @click="changePage(2)">产品</el-link>
-      <el-link :underline="false" @click="changePage(3)">事件</el-link>
-      <el-link :underline="false" @click="changePage(6)">专利挖掘</el-link>
-      <el-link :underline="false" @click="importPatent">专利检索</el-link> -->
       <el-dropdown @command="importPatent">
         <el-link :underline="false" :type="title == '专利检索'?'danger':'default'" class="el-dropdown-link">
           专利检索<i class="el-icon-arrow-down el-icon--right"></i>
@@ -39,8 +32,6 @@
           <el-dropdown-item command="userinfo">个人信息</el-dropdown-item>
           <el-dropdown-item command="changePwd" v-if="$permission('/admin/updatePassword')" >修改密码</el-dropdown-item>
           <el-dropdown-item command="setStyle">文本样式设置</el-dropdown-item>
-          <!-- <el-dropdown-item command="importPatent" v-if="$permission('/workspace/common/retrieval')">专利检索</el-dropdown-item> -->
-          <el-dropdown-item command="taskList">任务清单</el-dropdown-item>
           <el-dropdown-item command="indicia" v-if="$permission('/workspace/scratchWords')">标注库</el-dropdown-item>
           <el-dropdown-item command="clientble" v-if="$permission('/workspace/clientManage')">客户管理</el-dropdown-item>
           <el-dropdown-item divided command="doLogout">退出登录</el-dropdown-item>

+ 0 - 28
src/views/login/index.vue

@@ -193,34 +193,6 @@ export default {
     }else{
       this.show = true
     }
-    // if(!this.canShow){
-    //   var url=location.href;
-    // var params=url.split("?");
-    //   //  console.log(params);
-    //    if(params[1]){
-    //      var a = params[1]
-    //       var b= a.split("=")
-    //       // console.log(b[1])
-    //       if(b){
-    //         var token=b[1]
-    //         this.$api.IsAdminLogin({token:token}).then(response=>{
-    //           // console.log(response)
-    //           if(response.data==true){
-    //              this.$router.push({
-    //                 path: '/admin'
-    //               })
-    //           }else{
-    //             this.$message.error('您未登录,请重新登录!')
-    //           }
-              
-    //         })
-             
-    //       }
- 
-    //    }
-    // }
-    
-   
     this.initTime();
    
   },

+ 0 - 140
src/views/patentMining/components/basicMessage.vue

@@ -1,140 +0,0 @@
-<template>
-  <!-- 基本信息及流程 -->
-  <div class="basicMessage">
-    <div style="margin-bottom: 40px;">
-      <span>项目基本信息</span>
-      <el-divider></el-divider>
-      <el-descriptions class="margin-top" title="" :column="column" size="" border>
-        <el-descriptions-item>
-          <template slot="label"> 
-            <i class="el-icon-user"></i> 项目名称 
-          </template> 
-          {{ row.name }}
-        </el-descriptions-item>
-        <el-descriptions-item> 
-          <template slot="label"> 
-            <i class="el-icon-mobile-phone"></i> 项目产出
-          </template>
-          {{ row.type }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-location-outline"></i> 技术方向
-          </template>
-          {{ row.type }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-tickets"></i> 产品阶段
-          </template>
-          {{ row.type }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 是否检索
-          </template>
-          {{ row.type }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 负责人
-          </template>
-          {{ row.type }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 相关竞争对手
-          </template>
-          {{ row.type }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 技术关键词
-          </template>
-          {{ row.type }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 审核状态
-          </template>
-          <el-tag size="small">{{ row.status }}</el-tag>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 审核进度
-          </template>
-          <el-tag size="small">{{ row.status }}</el-tag>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 创建人
-          </template>
-          {{ row.createPerson }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 参与人
-          </template>
-         {{ row.createPerson }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template slot="label">
-            <i class="el-icon-office-building"></i> 附件
-          </template>
-          {{ row.type }}
-        </el-descriptions-item>
-      </el-descriptions>
-    </div>
-    <div style="width: 100%;">
-      <!-- 项目流程 -->
-      <projectPath></projectPath>
-    </div>
-  </div>
-</template>
-
-<script>
-import projectPath from './projectPath.vue'
-export default {
-  components: {
-    projectPath,
-  },
-  props:['row'],
-  data() {
-    return {
-      column:4,
-      queryParams:{}
-    }
-  },
-  mounted() {
-    window.addEventListener('resize', (e) => {
-      let width = window.innerWidth
-      if (width > 2200) {  
-        this.column = 6;  
-      } else if (width < 1000) {  
-        this.column = 3;  
-      } else if (width < 1400) {  
-        this.column = 4;  
-      } else if (width < 1800) {  
-        this.column = 5;  
-      }  
-    })
-  },
-  methods: {
-    
-  },
-}
-</script>
-
-<style lang="scss">
-.basicMessage {
-  .el-divider--horizontal {
-    margin: 10px 0;
-  }
-}
-</style>
-<style lang="scss" scoped>
-.basicMessage{
-  width: 100%;
-  height: 100%;
-}
-</style>

+ 0 - 59
src/views/patentMining/components/details/index.vue

@@ -1,59 +0,0 @@
-<template>
-  <!-- 详情 -->
-  <div class="details">
-    <el-tabs v-model="activeName" type="card" @tab-click="handleClick" style="height: 100%;">
-      <el-tab-pane label="基本信息" name="basicMessage">
-        <BasicMessage :row="row"></BasicMessage>
-      </el-tab-pane>
-      <el-tab-pane label="挖掘任务" name="excavateTask" style="height: 100%;">
-        <ExcavateTaskIndex style="height: 100%;"></ExcavateTaskIndex>
-      </el-tab-pane>
-      <el-tab-pane label="文件列表" name="fileMessage" style="height: 100%;">
-        <FileMessage style="height: 100%;"></FileMessage>
-      </el-tab-pane>
-    </el-tabs>
-  </div>
-</template>
-
-<script>
-import BasicMessage from '../basicMessage.vue'
-import ExcavateTaskIndex from '../excavateTask/index.vue'
-import FileMessage from '../fileMessage.vue'
-export default {
-  components: {
-    BasicMessage,
-    ExcavateTaskIndex,
-    FileMessage,
-  },
-  data() {
-    return {
-      activeName: 'basicMessage'
-    };
-  },
-  computed: {
-    row() {
-      return this.$route.query
-    },
-  },
-  mounted() {
-
-  },
-  methods: {
-    handleClick(tab, event) {
-      console.log(tab, event);
-    }
-  }
-};
-</script>
-
-<style lang="scss">
-.details {
-  width: calc(100% - 40px);
-  height: calc(100% - 40px) !important;
-  padding: 20px;
-  .el-tabs__content{
-    height: calc(100% - 40px);
-    overflow: auto;
-  }
-}
-</style>

+ 0 - 185
src/views/patentMining/components/dialog/addAndEditProject.vue

@@ -1,185 +0,0 @@
-<template>
-  <div>
-    <el-dialog :title="title" :visible.sync="dialogVisible" width="800" :before-close="handleClose">
-      <el-form :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-ruleForm">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="项目名称:" prop="name">
-              <el-input v-model="form.name" placeholder="请输入项目名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="技术方向:">
-              <el-input v-model="form.type" placeholder="请输入技术方向"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="产品阶段:">
-              <el-input v-model="form.name" placeholder="请输入产品阶段"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="产出:">
-              <el-input v-model="form.type" placeholder="请输入产出"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="相关竞争对手:">
-              <el-input v-model="form.name" placeholder="请输入相关竞争对手"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="技术关键词:">
-              <el-input v-model="form.type" placeholder="请输入技术关键词"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="参与人:">
-              <el-select v-model="form.value" placeholder="请选择负责人" style="width: 100%;">
-                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="负责人:">
-              <el-select v-model="form.value" placeholder="请选择负责人" style="width: 100%;">
-                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="是否检索:">
-              <el-switch v-model="form.delivery" active-color="#13ce66" inactive-color="#ff4949">
-              </el-switch>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="是否审核:">
-              <el-switch v-model="form.delivery2" active-color="#13ce66" inactive-color="#ff4949">
-              </el-switch>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <template v-if="form.delivery2">
-          <el-row >
-            <el-col :span="12">
-              <el-form-item label="审核人:">
-                <el-select v-model="form.value" placeholder="请选择负责人" style="width: 100%;">
-                  <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-                  </el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="12">
-              <el-form-item label="截止时间:">
-                <el-date-picker style="width: 100%" v-model="form.endTime" type="datetime"
-                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="请选择截止日期时间">
-                </el-date-picker>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <el-form-item label="审核备注:">
-                <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="form.remark"></el-input>
-              </el-form-item>
-            </el-col>
-          </el-row>
-        </template>
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="附件:">
-              <el-upload ref="upload" class="upload-file" drag action="#" :auto-upload="false" :show-file-list="true"
-                :on-change="onChange" :on-remove="handleRemove" :on-preview="handlePreview">
-                <i :class="fileList.length != 0 ? 'el-icon-upload' : 'el-icon-refresh'"></i>
-                <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-                <div class="el-upload__tip" slot="tip"></div>
-              </el-upload>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="项目备注:">
-              <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="form.remark"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="handleClose">取 消</el-button>
-        <el-button type="primary" @click="submit">确 定</el-button>
-      </span>
-    </el-dialog>
-
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props: {},
-  data() {
-    return {
-      dialogVisible: false,
-      title: '',
-      form: {},
-      rules: {
-        name: [{ required: true, message: '请输入项目名称', trigger: 'blur' },],
-      },
-      options: [],//负责人数组
-      value: '',//负责人
-      fileList: []//文件数组
-    };
-  },
-  watch: {},
-  computed: {},
-  created() { },
-  mounted() { },
-  methods: {
-    onChange(file, fileList) { },
-    handlePreview(file, fileList) { },
-    handleRemove(file, fileList) { },
-    //打开弹窗
-    open(form) {
-      this.form = JSON.parse(JSON.stringify(form))
-      if (this.form.id) {
-        this.title = '编辑专利挖掘项目'
-      } else {
-        this.title = '新增专利挖掘项目'
-      }
-      this.dialogVisible = true
-    },
-    //关闭弹窗
-    handleClose() {
-      this.$refs.upload.clearFiles()
-      this.$refs.form.resetFields()
-      this.form = {}
-      this.dialogVisible = false
-    },
-    //提交数据
-    submit() {
-      this.$refs.form.validate((valid) => {
-        if (valid) {
-          this.handleClose()
-        } else {
-          this.$message.error('信息未输入完整')
-        }
-      });
-      
-    }
-  },
-
-};
-</script>
-<style lang="scss" scoped></style>

+ 0 - 69
src/views/patentMining/components/dialog/auditRecords.vue

@@ -1,69 +0,0 @@
-<template>
-  <!-- 任务审核记录 -->
-  <div class="auditRecords">
-    <el-dialog title="查看审核记录" :visible.sync="dialogVisible" width="1000px" :before-close="handleClose" :close-on-click-modal="false">
-      <el-table :data="tableData" style="width: 100%;" border header-row-class-name="custom-table-header">
-        <el-table-column label="#" align="center" width="60px">
-          <template slot-scope="scope">
-            <div>
-              {{ (queryParams.current - 1) * queryParams.size + scope.$index + 1 }}
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column prop="name" label="任务名称" align="center"></el-table-column>
-        <el-table-column prop="type" label="任务类型" align="center"></el-table-column>
-        <el-table-column prop="createPerson" label="发起人" align="center"></el-table-column>
-        <el-table-column prop="handlePerson" label="处理人" align="center"></el-table-column>
-        <el-table-column prop="createTime" label="创建时间" align="center"></el-table-column>
-        <el-table-column prop="endTime" label="截止时间" align="center"></el-table-column>
-        <el-table-column prop="status" label="状态" align="center"></el-table-column>
-      </el-table>
-      <div style="text-align: center;padding-top: 20px;">
-        <el-pagination background layout="total, prev, pager, next, jumper" :current-page.sync="queryParams.current"
-          :page-size.sync="queryParams.size" @current-change="handleCurrentChange" :total="queryParams.total">
-        </el-pagination>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="handleClose">关 闭</el-button>
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      tableData: [],
-      dialogVisible: false,
-      queryParams: {
-        current: 1,
-        size: 10,
-        total: 0,
-      },
-    }
-  },
-  mounted() {
-
-  },
-  methods: {
-    getList() { },
-    // 打开弹窗
-    open() {
-      // this.getList()
-      this.dialogVisible = true
-    },
-    handleClose() {
-      this.dialogVisible = false
-    },
-    // 分页查询
-    handleCurrentChange(val) {
-      this.queryParams.current=val
-      this.getList()
-    },
-    
-  },
-}
-</script>
-
-<style lang="scss" scoped></style>

+ 0 - 100
src/views/patentMining/components/dialog/createTask.vue

@@ -1,100 +0,0 @@
-<template>
-  <!-- 创建挖掘任务弹窗 -->
-  <div class="createTask">
-    <el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="handleClose" :close-on-click-modal="false">
-      <el-form :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-ruleForm">
-        <el-form-item label="任务名称:" prop="taskName">
-          <el-input v-model="form.taskName" placeholder="请输入任务名称"></el-input>
-        </el-form-item>
-        <el-form-item label="任务流程:" prop="taskPath">
-          <el-select v-model="form.taskPath" placeholder="请选择流程" style="width: 100%;">
-            <el-option v-for="item in pathOptions" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="处理人:" prop="taskPerson">
-          <el-select v-model="form.taskPerson" placeholder="请选择处理人" style="width: 100%;">
-            <el-option v-for="item in personOptions" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="截止时间:" prop="endTime">
-          <el-date-picker style="width: 100%" v-model="form.endTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择截止日期时间">
-          </el-date-picker>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="handleClose">取 消</el-button>
-        <el-button type="primary" @click="submit">确 定</el-button>
-      </span>
-    </el-dialog>
-
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props: {},
-  data() {
-    return {
-      dialogVisible: false,
-      title: '',
-      form: {},
-      rules: {},
-      personOptions: [],//处理人
-      pathOptions: [
-        {label:'创新点流程',value:'1'},
-        {label:'查新检索',value:'2'},
-        {label:'保护主题规划',value:'3'},
-        {label:'独权撰写',value:'4'},
-        {label:'从权撰写',value:'5'},
-        {label:'申请文件定稿',value:'6'},
-        { label: '说明书规划撰写', value: '7' },
-      ],//流程
-      rules: {
-        taskName: [{ required: true, message: '请输入任务名称', trigger: 'blur' },],
-        taskPath: [{ required: true, message: '请选择流程', trigger: 'change' },],
-        taskPerson: [{ required: true, message: '请选择处理人', trigger: 'change' },],
-        endTime: [{ required: true, message: '请选择截止时间', trigger: 'change' },],
-      }
-    };
-  },
-  watch: {},
-  computed: {},
-  created() { },
-  mounted() { },
-  methods: {
-    //打开弹窗
-    open(form) {
-      this.form = JSON.parse(JSON.stringify(form))
-      // if(this.form.id){
-      //     this.title = '编辑任务'
-      // }else{
-      //     this.title = '创建任务'
-      // }
-      this.title = '创建任务'
-      this.dialogVisible = true
-    },
-    //关闭弹窗
-    handleClose() {
-      this.$refs.form.resetFields()
-      this.form = {}
-      this.dialogVisible = false
-    },
-    //提交数据
-    submit() {
-      this.$refs.form.validate((valid) => {
-        if (valid) {
-          this.handleClose()
-        } else {
-          this.$message.error('信息未输入完整')
-        }
-      });
-    }
-  },
-
-};
-</script>
-<style lang="scss" scoped></style>

+ 0 - 169
src/views/patentMining/components/dialog/handleTask1.vue

@@ -1,169 +0,0 @@
-<template>
-  <!-- 处理挖掘任务1(审核任务) -->
-  <div class="handleTask1">
-    <el-dialog :title="title" :visible.sync="dialogVisible" width="800px" :before-close="handleClose" :close-on-click-modal="false">
-      <el-form :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-ruleForm" :disabled="!form.isLook">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="项目名称:" prop="name">
-              <el-input v-model="form.name" placeholder="请输入项目名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="技术方向:">
-              <el-input v-model="form.type" placeholder="请输入技术方向"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="产品阶段:">
-              <el-input v-model="form.name" placeholder="请输入产品阶段"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="产品产出:">
-              <el-input v-model="form.type" placeholder="请输入产品产出"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="相关竞争对手:">
-              <el-input v-model="form.name" placeholder="请输入相关竞争对手"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="技术关键词:">
-              <el-input v-model="form.type" placeholder="请输入技术关键词"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="参与人:">
-              <el-input v-model="form.name" placeholder="请输入参与人"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="负责人:">
-              <el-select v-model="form.value" placeholder="请选择负责人" style="width: 100%;">
-                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="是否检索:" >
-              <el-switch
-                v-model="form.delivery"
-                active-color="#13ce66"
-                inactive-color="#ff4949">
-              </el-switch>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="附件:" prop="file">
-              <el-upload class="upload-demo" ref="upload" action="#" :auto-upload="false" :show-file-list="true"
-                :on-change="onChange" multiple :on-preview="handlePreview" :on-remove="handleRemove"
-                :file-list="fileList">
-                <i class="el-icon-upload2" style="font-size: 18px;"></i>
-              </el-upload>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="handleClose" size="small">取 消</el-button>
-        <el-dropdown v-if="form.isLook" split-button type="primary" @click="submit" size="small">
-          <p>{{ btn.label }}</p>
-          <el-dropdown-menu slot="dropdown" class="text-align_center">
-            <el-dropdown-item v-for="item in btnObj" :key="item.label" @click.native="onChangeFamily(item)">{{ item.label
-            }}</el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
-      </span>
-    </el-dialog>
-
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props: {},
-  data() {
-    return {
-      dialogVisible: false,
-      title: '',
-      form: {},
-      rules: {
-        name: [{ required: true, message: '请输入项目名称', trigger: 'blur' },],
-      },
-      btnObj: [
-        {
-          label: '同意创建',
-          value: 1
-        },
-        {
-          label: '取消创建',
-          value: 4
-        },
-        {
-          label: '缺少材料',
-          value: 5
-        }
-      ],
-      btn: {
-        label: '同意创建',
-        value: 1
-      },
-      options: [],
-      fileList: [],
-    };
-  },
-  watch: {},
-  computed: {},
-  created() { },
-  mounted() { },
-  methods: {
-    onChange(file, fileList) { },
-    handlePreview(file, fileList) { },
-    handleRemove(file, fileList) { },
-    // 切换按钮
-    onChangeFamily(val) {
-      this.btn = val
-    },
-    //打开弹窗
-    open(form,val) {
-      this.form = JSON.parse(JSON.stringify(form))
-      this.form.isLook=val
-      // if(this.form.id){
-      //     this.title = '编辑任务'
-      // }else{
-      //     this.title = '创建任务'
-      // }
-      if (this.form.isLook) {
-        this.title = '处理任务'
-      } else {
-        this.title = '查看任务'
-      }
-      this.dialogVisible = true
-    },
-    //关闭弹窗
-    handleClose() {
-      this.form = {}
-      this.dialogVisible = false
-    },
-    //提交数据
-    submit() {
-      this.dialogVisible = false
-    }
-  },
-
-};
-</script>
-<style lang="scss" scoped></style>

+ 0 - 166
src/views/patentMining/components/dialog/handleTask2.vue

@@ -1,166 +0,0 @@
-<template>
-  <!-- 处理挖掘任务2(分配任务) -->
-  <div class="handleTask2">
-    <el-dialog ref="dialog" :title="title" :visible.sync="dialogVisible" width="800px" :before-close="handleClose"
-      :close-on-click-modal="false">
-
-      <el-upload class="upload-demo" ref="upload" action="#" :auto-upload="false" :show-file-list="false"
-        :on-change="onChange" multiple :on-preview="handlePreview" :on-remove="handleRemove" :file-list="fileList">
-        <el-button size="small" type="primary">上传文件</el-button>
-      </el-upload>
-
-      <el-table class="elTable" :data="tableData" border style="width: 100%" header-row-class-name="custom-table-header">
-        <el-table-column prop="name" label="文件名称" align="center"></el-table-column>
-        <el-table-column prop="time" label="文件上传时间" align="center"> </el-table-column>
-        <el-table-column prop="type" label="文件类型" align="center"> </el-table-column>
-        <el-table-column label="操作" align="center" width="140">
-          <el-button @click="deleteFile" size="small" type="text" style="color: red;">删除</el-button>
-        </el-table-column>
-      </el-table>
-      <div class="explain">
-        <span>说明:</span>
-        <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="textarea"></el-input>
-      </div>
-
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="handleClose" size="small">取 消</el-button>
-        <el-button @click="handleSave" size="small" type="primary">保 存</el-button>
-        <el-button @click="submit" size="small" type="primary">提交审核</el-button>
-
-      </span>
-    </el-dialog>
-
-
-    <el-dialog title="审核任务" :visible.sync="auditTask" width="600px" :before-close="auditTaskClose"
-      :close-on-click-modal="false">
-      <el-form :model="examineForm" status-icon :rules="examineRules" ref="examineForm" label-width="120px"
-        class="demo-ruleForm">
-        <el-form-item label="任务名称:" prop="name">
-          <el-input v-model="examineForm.name" placeholder="请输入任务名称"></el-input>
-        </el-form-item>
-        <el-form-item label="审核人:" prop="examineId">
-          <el-select v-model="examineForm.examineId" placeholder="请选择审核人" style="width: 100%;">
-            <el-option v-for="item in examinePerson" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="任务备注:" prop="remark">
-          <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="examineForm.remark"></el-input>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="auditTaskClose" size="small">取 消</el-button>
-        <el-button @click="sure" size="small" type="primary">确 定</el-button>
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props: {},
-  data() {
-    return {
-      title: '',
-      tableData: [
-        {
-          name: '创新文件',
-          time: '2023-10-8',
-          type: 'excel',
-        }
-      ],
-      dialogVisible: false,
-      auditTask: false,
-      fileList: [],
-      textarea: '',
-      examineForm: {},
-      examinePerson: [],
-      examineRules: {
-        name: [{ required: true, message: '请输入任务名称', trigger: 'blur' },],
-        examineId: [{ required: true, message: '请选择审核人', trigger: 'change' },],
-      }
-    };
-  },
-  watch: {},
-  computed: {},
-  created() { },
-  mounted() { },
-  methods: {
-    // 删除文件
-    deleteFile(row) { },
-    // 上传文件
-    onChange(file, fileList) { },
-    handlePreview(file, fileList) { },
-    handleRemove(file, fileList) { },
-    //打开弹窗
-    open(row, val) {
-      // let row = JSON.parse(JSON.stringify(row))
-      // if(this.form.id){
-      //     this.title = '编辑任务'
-      // }else{
-      //     this.title = '创建任务'
-      // }
-      this.tableData[0].isLook = val
-      this.title = '任务名称:' + row.name
-      this.dialogVisible = true
-    },
-    //关闭弹窗
-    handleClose() {
-      this.dialogVisible = false
-    },
-    //提交数据
-    submit() {
-      this.examineForm.name = this.$refs.dialog.title.split(':')[1]
-      // this.examineForm.name =
-      this.auditTask = true
-    },
-    // 保存
-    handleSave() { },
-    // 审核弹窗确定
-    sure() {
-      this.$refs.examineForm.validate((valid) => {
-        if (valid) {
-          this.handleClose()
-          this.auditTaskClose()
-        } else {
-          this.$message.error('信息未输入完整')
-        }
-      });
-    },
-    // 审核弹窗关闭
-    auditTaskClose() {
-      this.$refs.examineForm.resetFields()
-      this.examineForm = {}
-      this.auditTask = false
-    },
-  },
-
-};
-</script>
-<style lang="scss">
-.handleTask2 {
-  .el-dialog__body {
-    padding: 10px 20px;
-  }
-}
-</style>
-<style lang="scss" scoped>
-.handleTask2 {
-  .handleTask2Dialog {
-    background: red;
-  }
-
-  .upload-demo {
-    float: right;
-    margin-bottom: 10px;
-  }
-
-  .explain {
-    margin-top: 10px;
-
-    span {
-      font-size: 16px;
-    }
-  }
-}</style>

+ 0 - 127
src/views/patentMining/components/dialog/uploadFile.vue

@@ -1,127 +0,0 @@
-<template>
-  <div class="uploadFile">
-    <el-dialog :title="title" :visible.sync="dialogVisible" width="600px" :before-close="handleClose"
-      :close-on-click-modal="false" label-width="300px">
-      <el-form :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-ruleForm">
-        <el-form-item label="文件名称:" prop="name">
-          <el-input v-model="form.name" placeholder="请输入文件名称"></el-input>
-        </el-form-item>
-        <el-form-item label="是否为最终文件:" prop="delivery" style="width: 20px;">
-          <el-switch v-model="form.delivery" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
-        </el-form-item>
-        <el-form-item label="文件类型:">
-          <el-select v-model="form.type" placeholder="请选择文件类型" style="width: 100%;">
-            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="发生时间:">
-          <el-date-picker v-model="form.time" value-format="yyyy-MM-dd" type="date" placeholder="选择日期"
-            style="width: 100%;">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="是否审核:" prop="delivery">
-          <el-switch v-model="form.delivery2" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
-        </el-form-item>
-        <template v-if="form.delivery2">
-          <el-form-item label="审核人:">
-            <el-select v-model="form.type" placeholder="请选择审核人" style="width: 100%;">
-              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="审核备注:">
-            <el-input v-model="form.remark2" type="textarea" placeholder="请输入内容"></el-input>
-          </el-form-item>
-        </template>
-        
-        <el-form-item label="附件:" prop="delivery">
-          <el-upload ref="upload" class="upload-file" drag action="#" :auto-upload="false" :show-file-list="true"
-            :on-change="onChange" :on-remove="handleRemove" :on-preview="handlePreview">
-            <i :class="fileList.length != 0 ? 'el-icon-upload' : 'el-icon-refresh'"></i>
-            <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-            <div class="el-upload__tip" slot="tip"></div>
-          </el-upload>
-        </el-form-item>
-        <el-form-item label="备注:">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="handleClose" size="small">取 消</el-button>
-        <el-button @click="submit" size="small" type="primary">确 定</el-button>
-
-      </span>
-    </el-dialog>
-
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props: {},
-  data() {
-    return {
-      dialogVisible: false,
-      title: '',
-      form: {},
-      rules: {
-        name: [{ required: true, message: '请输入文件名称', trigger: 'blur' },],
-      },
-      options: [],
-      value: '',
-      delivery: '',
-      fileList: [],
-    };
-  },
-  watch: {},
-  computed: {},
-  created() { },
-  mounted() { },
-  methods: {
-    onChange(file, fileList) { },
-    handlePreview(file, fileList) { },
-    handleRemove(file, fileList) { },
-    // 切换按钮
-    onChangeFamily(val) {
-      this.btn = val
-    },
-    //打开弹窗
-    open(row) {
-      if (row.id) {
-        this.title = '编辑文件'
-      } else {
-        this.title = '上传文件'
-      }
-      // this.title = '上传文件'
-      this.dialogVisible = true
-    },
-    //关闭弹窗
-    handleClose() {
-      this.$refs.form.resetFields()
-      this.form = {}
-      this.dialogVisible = false
-    },
-    //提交数据
-    submit() {
-      this.$refs.form.validate((valid) => {
-        if (valid) {
-          this.handleClose()
-        } else {
-          this.$message.error('信息未输入完整')
-        }
-      });
-    }
-  },
-
-};
-</script>
-<style lang="scss">
-.uploadFile {
-  .el-dialog__body {
-    padding: 0px 20px;
-  }
-}
-</style>
-<style lang="scss" scoped></style>

+ 0 - 235
src/views/patentMining/components/excavateTask/excavateTask.vue

@@ -1,235 +0,0 @@
-<template>
-  <!-- 挖掘任务 -->
-  <div class="excavateTask">
-    <el-container>
-      <el-header style="display: flex;justify-content: space-between;align-items: center;">
-        <div>
-          <mySearch :SearchFields="searchFiled" @search="search" :searchValue="searchOption"></mySearch>
-        </div>
-        <div style="display:flex;margin-right:10px">
-          <el-button type="primary" size="small" @click="createTask">创建任务</el-button>
-        </div>
-      </el-header>
-      <el-main>
-        <el-table :data="tableData" style="width: 100%;" border header-row-class-name="custom-table-header">
-          <el-table-column label="#" align="center" width="80px">
-            <template slot-scope="scope">
-              <div>
-                {{ (queryParams.current - 1) * queryParams.size + scope.$index + 1 }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="name" label="任务名称" align="center"></el-table-column>
-          <el-table-column prop="taskType" label="任务类型" align="center">
-            <template slot-scope="scope">
-              <div>
-                {{ taskType[scope.row.taskType] }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="createPerson" label="发起人" align="center"></el-table-column>
-          <el-table-column prop="handlePerson" label="处理人" align="center"></el-table-column>
-          <el-table-column prop="createTime" label="创建时间" align="center"></el-table-column>
-          <el-table-column prop="endTime" label="截止时间" align="center"></el-table-column>
-          <el-table-column prop="status" label="状态" align="center"></el-table-column>
-          <el-table-column label="操作" align="center" width="180px">
-            <template slot-scope="scope">
-              <div>
-                <el-dropdown split-button type="primary" size="small" @command="handleCommand($event, scope.row)"
-                  @click="handleTask(scope.row)">
-                  <p v-if="scope.row.status == '已完成' || scope.row.handlePerson != userInfo.name">查 看</p>
-                  <p v-else>处 理</p>
-                  <el-dropdown-menu slot="dropdown">
-                    <el-dropdown-item command="1">查看审核记录</el-dropdown-item>
-                    <el-dropdown-item command="2" style="color: red;text-align: center;">删除</el-dropdown-item>
-                  </el-dropdown-menu>
-                </el-dropdown>
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
-      </el-main>
-      <el-footer>
-        <div>
-          <el-pagination background layout="total, prev, pager, next, jumper" :current-page.sync="queryParams.current"
-            :page-size.sync="queryParams.size" @current-change="handleCurrentChange" :total="queryParams.total">
-          </el-pagination>
-        </div>
-      </el-footer>
-    </el-container>
-
-    <createTask ref="createTaskDialog"></createTask>
-    <handleTask1 ref="handleTask1Dialog"></handleTask1>
-    <!-- <handleTask2 ref="handleTask2Dialog"></handleTask2> -->
-    <handleTask2 ref="handleTask2Dialog"></handleTask2>
-    <auditRecords ref="auditRecords"></auditRecords>
-  </div>
-</template>
-
-<script>
-import createTask from '../dialog/createTask.vue'
-import handleTask1 from '../dialog/handleTask1.vue'
-import handleTask2 from '../dialog/handleTask2.vue'
-import auditRecords from '../dialog/auditRecords.vue'
-export default {
-  components: {
-    createTask,
-    handleTask1,
-    handleTask2,
-    auditRecords,
-  },
-  data() {
-    return {
-      tableData: [
-        {
-          name: '加热器专利挖掘1',
-          taskType: '1',
-          createPerson: '朱豪',
-          handlePerson: '张三',
-          createTime: '2023-9-28 13:52',
-          endTime: '2023-9-28 18:02',
-          status: '未完成'
-        },
-        {
-          name: '加热器专利挖掘2',
-          taskType: '1',
-          createPerson: '朱豪',
-          handlePerson: '朱豪',
-          createTime: '2023-9-28 13:52',
-          endTime: '2023-9-28 18:02',
-          status: '未完成'
-        },
-        {
-          name: '加热器专利挖掘3',
-          taskType: '2',
-          createPerson: '张三',
-          handlePerson: '朱豪',
-          createTime: '2023-9-28 13:52',
-          endTime: '2023-9-28 18:02',
-          status: '未完成'
-        },
-        {
-          name: '加热器专利挖掘4',
-          taskType: '3',
-          createPerson: '朱豪',
-          handlePerson: '朱豪',
-          createTime: '2023-9-28 13:52',
-          endTime: '2023-9-28 18:02',
-          status: '未完成',
-          taskPath: '创新点梳理',
-          endTime: '2023-10-10',
-        },
-        {
-          name: '加热器专利挖掘5',
-          taskType: '1',
-          createPerson: '张三',
-          handlePerson: '朱豪',
-          createTime: '2023-9-28 13:52',
-          endTime: '2023-9-28 18:02',
-          status: '已完成'
-        },
-        {
-          name: '加热器专利挖掘6',
-          taskType: '1',
-          createPerson: '朱豪',
-          handlePerson: '张三',
-          createTime: '2023-9-28 13:52',
-          endTime: '2023-9-28 18:02',
-          status: '已完成'
-        },
-      ],
-      taskType: {
-        1: '项目审核任务',
-        2: '文件分配任务',
-        3: '文件审核任务',
-      },
-      queryParams: {
-        current: 1,
-        size: 10,
-        total: 0,
-      },
-      searchFiled: [
-        {
-          label: '任务名称',
-          value: 'taskName',
-          type: 1,
-          placeholder: '请输入任务名称'
-        },
-        {
-          label: '创建人',
-          value: 'createPerson',
-          type: 1,
-          placeholder: '请输入创建人名称'
-        },
-      ],
-      searchOption: {}
-    }
-  },
-  computed: {
-    userInfo() {
-      return this.$store.state.user.userinfo
-    },
-  },
-  mounted() {
-    // this.getList()
-  },
-  methods: {
-    //处理任务 
-    handleTask(row) {
-      if (row.status == '已完成' || row.handlePerson != this.userInfo.name) {
-        if (row.taskType == '1') {
-          this.$refs.handleTask1Dialog.open(row,false)
-        } else if (row.taskType == '2') {
-          this.$refs.handleTask2Dialog.open(row,false)
-        }
-      } else {
-        if (row.taskType == '1') {
-          this.$refs.handleTask1Dialog.open(row,true)
-        } else if (row.taskType == '2') {
-          this.$refs.handleTask2Dialog.open(row,true)
-        } else {
-          let router = this.$router.resolve({
-            path: '/handleExamine',
-            query: {
-              row: JSON.stringify(row)
-            }
-          })
-          window.open(router.href, '_blank')
-        }
-      }
-    },
-    handleCommand(ev, row) {
-      switch (ev) {
-        case '1'://查看审核记录
-          this.$refs.auditRecords.open()
-          break;
-        case '2'://删除任务
-
-          break;
-
-        default:
-          break;
-      }
-    },
-    // 左侧搜索
-    search() {
-
-    },
-    // 创建任务事件
-    createTask() {
-      this.$refs.createTaskDialog.open({})
-    },
-    // 初始化请求数据
-    getList() { },
-    // 分页
-    handleCurrentChange(val) {
-      // this.queryParams.current = val
-      // this.getList()
-    },
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-.excavateTask {}
-</style>

+ 0 - 28
src/views/patentMining/components/excavateTask/index.vue

@@ -1,28 +0,0 @@
-<template>
-  <div>
-    <excavateTask style="height: 100%;"></excavateTask>
-  </div>
-</template>
-
-<script>
-import excavateTask from './excavateTask.vue'
-export default {
-  components: {
-    excavateTask
-  },
-  data() {
-    return {
-
-    }
-  },
-  computed: {},
-  mounted() {
-
-  },
-  methods: {
-
-  },
-}
-</script>
-
-<style lang="scss" scoped></style>

+ 0 - 128
src/views/patentMining/components/fileMessage.vue

@@ -1,128 +0,0 @@
-<template>
-  <!-- 详情文件 -->
-  <div class="fileMessage">
-    <el-container>
-      <el-header style="display: flex;justify-content: space-between;align-items: center;">
-        <div>
-          <mySearch :SearchFields="searchFiled" @search="search" :searchValue="searchOption" ></mySearch>
-        </div>
-        <div style="display:flex;margin-right:10px">
-          <!-- <el-button-group class="margin-left_10">
-                    <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-button type="primary" size="small" @click="uploadFile">上传文件</el-button>
-        </div>
-      </el-header>
-      <el-main>
-        <el-table :data="tableData" style="width: 100%;" border header-row-class-name="custom-table-header">
-          <el-table-column label="#" align="center" width="100px">
-            <template slot-scope="scope">
-              <div>
-                {{ (queryParams.current - 1) * queryParams.size + scope.$index + 1 }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="fileName" label="文件名称" align="center">
-            <!-- <template slot-scope="scope">
-              <div>
-                <el-link type="primary" @click="toDetails(scope.row)">{{ scope.row.name }}</el-link>
-              </div>
-            </template> -->
-          </el-table-column>
-          <el-table-column prop="uploader" label="文件上传人" align="center"></el-table-column>
-          <el-table-column prop="status" label="文件状态" align="center"></el-table-column>
-          <el-table-column prop="uploadTime" label="文件上传时间" align="center"></el-table-column>
-          <el-table-column prop="type" label="文件类型" align="center"></el-table-column>
-          <el-table-column prop="endFile" label="是否最终文件" align="center"></el-table-column>
-          <el-table-column label="操作" align="center" width="200px">
-            <template slot-scope="scope">
-              <div>
-                <el-button type="primary" size="small" @click="handleEdit(scope.row)">编辑</el-button>
-                <el-button type="danger" size="small" @click="handleDelete(scope.row)">删除</el-button>
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
-      </el-main>
-      <el-footer>
-        <div>
-          <el-pagination background layout="total, prev, pager, next, jumper" :current-page.sync="queryParams.current"
-            :page-size.sync="queryParams.size" @current-change="handleCurrentChange" :total="queryParams.total">
-          </el-pagination>
-        </div>
-      </el-footer>
-    </el-container>
-
-    <uploadFile ref="uploadFile"></uploadFile>
-  </div>
-</template>
-
-<script>
-import uploadFile from './dialog/uploadFile.vue'
-export default {
-  components: {
-    uploadFile
-  },
-  data() {
-    return {
-      tableData: [
-        {
-          fileName:'加热器',
-          uploader:'朱豪',
-          status:'处理中',
-          uploadTime:'2023-9-28 17:09',
-          type:'',
-          endFile: '否',
-          id:1
-        }
-      ],
-      queryParams: {
-        current: 1,
-        size: 10,
-        total: 0,
-      },
-      searchFiled: [
-        {
-          label: '文件名称',
-          value: 'fileName',
-          type: 1,
-          placeholder: '请输入文件名称'
-        },
-        {
-          label: '上传人',
-          value: 'createPerson',
-          type: 1,
-          placeholder: '请输入上传人名称'
-        },
-      ],
-      searchOption: {}  
-    }
-  },
-  mounted() {
-    
-  },
-  methods: {
-    // 搜索
-    search(){},
-    // 上传文件
-    uploadFile() { 
-      this.$refs.uploadFile.open({})
-    },
-    // 编辑
-    handleEdit(row) {
-      this.$refs.uploadFile.open(row)
-    },
-    // 删除
-    handleDelete(row) { 
-      
-    },
-    // 分页
-    handleCurrentChange(val) {
-      
-    },
-  },
-}
-</script>
-
-<style lang="scss" scoped></style>

+ 0 - 160
src/views/patentMining/components/handleExamine/handleExamine.vue

@@ -1,160 +0,0 @@
-<template>
-  <div class="handleExamine">
-    <myView style="height: 100%;width: 100%;" position="row">
-      <div slot="left" style="height: 100%;width:100%;padding: 20px 10px 0 10px;">
-        <div>任务详情:</div>
-        <el-divider></el-divider>
-        <el-descriptions title="" :column="2" size="" border style="margin-bottom: 20px;">
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-user"></i> 任务名称
-            </template>
-            {{ row.name }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-mobile-phone"></i> 所属项目
-            </template>
-            {{ row.name }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-location-outline"></i> 所属流程
-            </template>
-            {{ row.taskPath }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              <i class="el-icon-tickets"></i> 截止时间
-            </template>
-            {{ row.endTime }}
-          </el-descriptions-item>
-        </el-descriptions>
-
-        <el-table :data="tableData" border>
-          <el-table-column prop="name" label="文件名称" align="center"></el-table-column>
-          <el-table-column prop="time" label="文件上传时间" align="center"> </el-table-column>
-          <el-table-column prop="type" label="文件类型" align="center"> </el-table-column>
-          <el-table-column label="操作" align="center">
-            <template slot-scope="scope">
-              <div>
-                <el-dropdown split-button type="primary" size="small" @command="handleCommand($event, scope.row)"
-                  @click="handleQuote(scope.row)">
-                  <p>引 用</p>
-                  <el-dropdown-menu slot="dropdown">
-                    <el-dropdown-item command="1">预览</el-dropdown-item>
-                    <el-dropdown-item command="2">下载</el-dropdown-item>
-                  </el-dropdown-menu>
-                </el-dropdown>
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
-        <div class="div_margin">说明:</div>
-        <el-input type="textarea" :rows="3" readonly v-model="row.textarea"></el-input>
-      </div>
-      <div slot="right" style="height: 100%;width:100%;padding: 20px 10px 0 10px;">
-        <div>审核:</div>
-        <el-divider></el-divider>
-        <el-upload class="upload_demo" ref="upload" action="#" :auto-upload="false" :show-file-list="false"
-          :on-change="onChange" multiple :on-preview="handlePreview" :on-remove="handleRemove" :file-list="fileList">
-          <el-button size="small" type="primary">上传文件</el-button>
-        </el-upload>
-        <el-table :data="examineData" border style="width: 100%" header-row-class-name="custom-table-header">
-          <el-table-column prop="name" label="文件名称" align="center"></el-table-column>
-          <el-table-column prop="time" label="文件上传时间" align="center"> </el-table-column>
-          <el-table-column prop="type" label="文件类型" align="center"> </el-table-column>
-          <el-table-column label="操作" align="center">
-            <el-button @click="deleteFile" size="small" type="text" style="color: red;">删除</el-button>
-          </el-table-column>
-        </el-table>
-        <div class="div_margin">下一个审核人:</div>
-        <el-select v-model="nextPersonId" placeholder="请选择下一个审核人" style="width: 100%;">
-          <el-option v-for="item in personOptions" :key="item.value" :label="item.label" :value="item.value">
-          </el-option>
-        </el-select>
-        <div class="div_margin">审核意见:</div>
-        <el-input type="textarea" :rows="3" v-model="reviewComments" style="margin-bottom: 20px;"></el-input>
-        <el-button type="primary" size="small" @click="sure" style="float: right;">确 认</el-button>
-      </div>
-    </myView>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ['row'],
-  data() {
-    return {
-      tableData: [
-        {
-          name: '创新文件',
-          time: '2023-10-8',
-          type: 'excel',
-        }
-      ],//任务详情文件
-      examineData: [
-        {
-          name: '创新文件2',
-          time: '2023-10-10',
-          type: 'excel',
-        }
-      ],//审核文件
-      reviewComments: '',//评审意见
-      nextPersonId: '',//下一个审核人
-      personOptions: '',//下一个审核人数组
-      fileList: [],//文件数组
-    }
-  },
-  mounted() {
-
-  },
-  methods: {
-    // 审核确认
-    sure() { },
-    // 删除文件
-    deleteFile(row) { },
-    // 上传文件
-    onChange(file, fileList) { },
-    handlePreview(file, fileList) { },
-    handleRemove(file, fileList) { },
-    // 引用
-    handleQuote(row) { },
-    // 引用下拉菜单胡处理
-    handleCommand(ev, row) {
-      switch (ev) {
-        case '1'://预览
-
-          break;
-        case '2'://下载
-
-          break;
-
-        default:
-          break;
-      }
-    },
-  },
-}
-</script>
-
-<style lang="scss">
-.handleExamine {
-  .el-divider--horizontal {
-    margin: 10px 0;
-  }
-}
-</style>
-<style lang="scss" scoped>
-.handleExamine {
-  .upload_demo {
-    display: flex;
-    justify-content: flex-end;
-    margin-bottom: 10px;
-  }
-
-  .div_margin {
-    margin: 20px 0 10px 0;
-  }
-}
-</style>

+ 0 - 28
src/views/patentMining/components/handleExamine/index.vue

@@ -1,28 +0,0 @@
-<template>
-  <div>
-    <handleExamine :row=row style="height: 100%;"></handleExamine>
-  </div>
-</template>
-
-<script>
-import handleExamine from './handleExamine.vue'
-export default {
-  components: {
-    handleExamine,
-  },
-  data() {
-    return {
-      
-    }
-  },
-  computed: {
-    row() {
-      return JSON.parse(this.$route.query.row)
-    }
-  },
-  mounted() { },
-  method:{},
-}
-</script>
-
-<style lang="scss" scoped></style>

+ 0 - 126
src/views/patentMining/components/projectPath.vue

@@ -1,126 +0,0 @@
-<template>
-  <!-- 项目流程 -->
-  <div class="projectPath" style="width: 100%;height:100%;">
-    <span>项目流程</span>
-    <el-divider></el-divider>
-    <svg viewBox="0 0 1800 400" width="100%" height="100%">
-      <g transform=translate(0,0) class="svgG">
-        <rect width="200" height="120" :fill="getColor('创新点流程')" @click="toFilePage('创新点流程')"> </rect>
-        <text x="30" y="65">创新点流程</text>
-        <circle cx="150" cy="60" r="16" stroke-width="1" stroke="#fff" :fill="getColor('创新点流程')" />
-        <text :x="getNumber('创新点流程') >9? '140':'145'" y="65" fill="#fff">{{ getNumber('创新点流程') }}</text>
-        <line x1="200" y1="60" x2="350" y2="60" stroke='#333'></line>
-        <polygon points="350,55,360,60,350,65"></polygon>
-      </g>
-      <g transform="translate(360,0)" class="svgG">
-        <rect width="200" height="120" :fill="getColor('查新检索')" @click="toFilePage('查新检索')"> </rect>
-        <text x="30" y="65">查新检索</text>
-        <circle cx="150" cy="60" r="15" stroke-width="1" stroke="#fff" :fill="getColor('查新检索')" />
-        <text :x="getNumber('查新检索') >9? '140':'145'" y="65" fill="#fff">{{ getNumber('查新检索') }}</text>
-        <line x1="200" y1="60" x2="350" y2="60" stroke='#333'></line>
-        <polygon points="350,55,360,60,350,65"></polygon>
-      </g>
-      <g transform="translate(720,0)" class="svgG">
-        <rect width="200" height="120" :fill="getColor('保护主题规划')" @click="toFilePage('保护主题规划')"> </rect>
-        <text x="30" y="65">保护主题规划</text>
-        <circle cx="150" cy="60" r="15" stroke-width="1" stroke="#fff" :fill="getColor('保护主题规划')" />
-        <text x="145" y="65" fill="#fff">{{ getNumber('保护主题规划') }}</text>
-        <line x1="200" y1="60" x2="350" y2="60" stroke='#333'></line>
-        <polygon points="350,55,360,60,350,65"></polygon>
-      </g>
-      <g transform="translate(1080,0)" class="svgG">
-        <rect width="200" height="120" :fill="getColor('独权撰写')" @click="toFilePage('独权撰写')"> </rect>
-        <text x="30" y="65">独权撰写</text>
-        <circle cx="150" cy="60" r="15" stroke-width="1" stroke="#fff" :fill="getColor('独权撰写')" />
-        <text x="145" y="65" fill="#fff">{{ getNumber('独权撰写') }}</text>
-        <line x1="200" y1="60" x2="350" y2="60" stroke='#333'></line>
-        <polygon points="350,55,360,60,350,65"></polygon>
-      </g>
-      <g transform="translate(1440,0)" class="svgG">
-        <rect width="200" height="120" :fill="getColor('从权撰写')" @click="toFilePage('从权撰写')"> </rect>
-        <text x="30" y="65">从权撰写</text>
-        <circle cx="150" cy="60" r="15" stroke-width="1" stroke="#fff" :fill="getColor('从权撰写')" />
-        <text x="145" y="65" fill="#fff">{{ getNumber('从权撰写') }}</text>
-        <line x1="100" y1="120" x2="100" y2="190" stroke='#333'></line>
-        <polygon points="95,190,100,200,105,190"></polygon>
-      </g>
-      <!-- <g transform="translate(1080,200)" class="svgG">
-        <rect width="200" height="120" :fill="getColor('从权撰写')" @click="toFilePage('从权撰写')">  </rect>
-        <text x="30" y="65">从权撰写</text>
-        <circle cx="150" cy="60" r="15" stroke-width="1" stroke="#fff" :fill="getColor('从权撰写')" />
-        <text x="145" y="65" fill="#fff">{{ getNumber('从权撰写') }}</text>
-        <line x1="0" y1="60" x2="-150" y2="60" stroke='#333'></line>
-        <polygon points="-150,55,-160,60,-150,65"></polygon>
-      </g> -->
-      <g transform="translate(1440,200)" class="svgG">
-        <rect width="200" height="120" :fill="getColor('申请文件定稿')" @click="toFilePage('申请文件定稿')"> </rect>
-        <text x="30" y="65">申请文件定稿</text>
-        <circle cx="150" cy="60" r="15" stroke-width="1" stroke="#fff" :fill="getColor('申请文件定稿')" />
-        <text x="145" y="65" fill="#fff">{{ getNumber('申请文件定稿') }}</text>
-        <line x1="0" y1="60" x2="-150" y2="60" stroke='#333'></line>
-        <polygon points="-150,55,-160,60,-150,65"></polygon>
-      </g>
-      <g transform="translate(1080,200)" class="svgG">
-        <rect width="200" height="120" :fill="getColor('说明书规划撰写')" @click="toFilePage('说明书规划撰写')"> </rect>
-        <text x="15" y="65" xml:space='preserve'>说明书规划撰写
-        </text>
-        <circle cx="150" cy="60" r="15" stroke-width="1" stroke="#fff" :fill="getColor('说明书规划撰写')" />
-        <text x="145" y="65" fill="#fff">{{ getNumber('说明书规划撰写') }}</text>
-      </g>
-
-    </svg>
-
-
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      numObj: {
-        '创新点流程':12,
-        '查新检索': 0,
-        '保护主题规划': 0,
-        '独权撰写': 0,
-        '从权撰写': 0,
-        '申请文件定稿': 0,
-        '说明书规划撰写': 0,
-      },
-    }
-  },
-  computed: {},
-  mounted() {
-
-  },
-  methods: {
-    // 获取文件数量
-    getNumber(str) {
-      return this.numObj[str]
-    },
-    // 获取背景颜色
-    getColor(str) {
-     return this.getNumber(str)>0?'#5ed325':'pink'
-    },
-    // 跳转文件列表界面
-    toFilePage(str) {
-      console.log(str);
-    },
-  },
-}
-</script>
-
-<style lang="scss">
-.projectPath {
-  .el-divider--horizontal {
-    margin: 10px 0;
-  }
-}
-</style>
-<style lang="scss" scoped>
-.projectPath{
-  .svgG{
-    cursor: pointer;
-  }
-}
-</style>

+ 0 - 84
src/views/patentMining/components/view/commonTable.vue

@@ -1,84 +0,0 @@
-<template>
-  <div>
-    <el-table :data="tableData" border style="width: 100%" header-row-class-name="custom-table-header">
-      <el-table-column label="#" align="center" width="100px">
-        <template slot-scope="scope">
-          <div>
-            {{ (params.current - 1) * params.size + scope.$index + 1 }}
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column prop="name" label="项目名称" align="center">
-        <template slot-scope="scope">
-          <div>
-            <el-link type="primary" @click="toDetails(scope.row)">{{ scope.row.name }}</el-link>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column prop="type" label="产出" align="center"></el-table-column>
-      <el-table-column prop="type" label="技术方向" align="center"></el-table-column>
-      <el-table-column prop="type" label="技术关键词" align="center"></el-table-column>
-      <el-table-column prop="type" label="相关竞争对手" align="center"></el-table-column>
-      <el-table-column prop="status" label="状态" align="center"></el-table-column>
-      <el-table-column prop="createPerson" label="创建人" align="center"></el-table-column>
-      <el-table-column label="操作" align="center" width="200px">
-        <template slot-scope="scope">
-          <div>
-            <el-dropdown split-button type="primary" size="small" @command="handleCommand($event, scope.row)">
-              <p @click="handleCommand('e', scope.row)">编辑</p>
-              <el-dropdown-menu slot="dropdown" style="text-align: center;">
-                <!-- <el-dropdown-item command="0">设置定时更新</el-dropdown-item> -->
-                <el-dropdown-item divided class="color-red" command="1" >删除</el-dropdown-item>
-              </el-dropdown-menu>
-            </el-dropdown>
-          </div>
-        </template>
-      </el-table-column>
-    </el-table>
-  </div>
-</template>
-  
-<script>
-export default {
-  components: {},
-  props: {
-    params: Object
-  },
-  data() {
-    return {
-      tableData: [
-        {
-          name: 'xxx有限公司',
-          type: '本公司专利数据库',
-          status: '进行中',
-          createPerson: '朱豪',
-          id:1,
-        }
-      ]
-    };
-  },
-  watch: {},
-  computed: {},
-  created() { },
-  mounted() { },
-  methods: {
-    // 跳转详情页面
-    toDetails(row) {
-      let router=this.$router.resolve({
-        path: '/details',
-        query: {
-          name: row.name,
-          type: row.type,
-          status: row.status,
-          createPerson: row.createPerson,
-        }
-      })
-      window.open(router.href,'_blank')
-    },
-    handleCommand(option, row) {
-      this.$emit('option', { option, row })
-    },
-  },
-};
-</script>
-<style lang="scss" scoped></style>

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


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov