index.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. <template>
  2. <div class="height_100">
  3. <el-container>
  4. <!-- 统计 -->
  5. <el-aside class="height_100" :width="showLeft ? '300px' : '0px'" v-show="showLeft">
  6. <div class="height_100">
  7. <customFields ref="customFields" :projectId="projectId" :searchOption="searchStr" :customFields="customFields"
  8. @customTab="handleCustomFields" :searchPatentCheck="searchPatentCheck">
  9. </customFields>
  10. </div>
  11. </el-aside>
  12. <!-- 专利列表 -->
  13. <el-container>
  14. <el-header style="display:flex;justify-content:space-between">
  15. <div style="display:flex">
  16. <el-tooltip class="item" effect="dark" :content="(showLeft ? '隐藏' : '显示') + '左侧菜单'" placement="top">
  17. <i :class="showLeft ? 'el-icon-s-fold' : 'el-icon-s-unfold'"
  18. style="font-size: 25px;position: relative; top: 5px; color: #2f2f2f; cursor: pointer"
  19. @click="showLeft = !showLeft"></i>
  20. </el-tooltip>
  21. <searchPatent ref="searchPatent" :searchFiled="searchFiled" :searchPatentCheck="searchPatentCheck"
  22. @searchValue="handleSearchValue"></searchPatent>
  23. <!-- <mySearch :SearchFields="searchFiled" @search="search" :searchValue="searchOption"></mySearch> -->
  24. <el-popover placement="bottom" title="关键词高亮" width="320" trigger="click">
  25. <!-- <patent-keywords-highlight :project-id="projectId" /> -->
  26. <el-button slot="reference" size="small" type="primary" class="margin-right_10 margin-left_10"
  27. :disabled="!$permission('/workspace/common/highlight')">
  28. 高亮<i class="el-icon-arrow-down el-icon--right"></i>
  29. </el-button>
  30. </el-popover>
  31. </div>
  32. <div>
  33. <el-button-group class="margin-left_10">
  34. <el-tooltip v-for="item in viewList" :key="item.value" class="item" effect="dark" :content="item.title"
  35. placement="top">
  36. <el-button @click="handleChangeView(item)" size="small"
  37. :type="viewSelected === item.value ? 'primary' : ''">
  38. <i :class="item.btn" style="font-size: 12px !important;"></i>
  39. </el-button>
  40. </el-tooltip>
  41. </el-button-group>
  42. <el-dropdown trigger="click" split-button type="primary" size="small">
  43. <span @click="handleFieldManage">显示栏位管理</span>
  44. <el-dropdown-menu slot="dropdown" class="text-align_center">
  45. <el-dropdown-item @click.native="handleFile">报告文档</el-dropdown-item>
  46. <!-- <el-dropdown-item @click.native="handleQuestion" v-if="$permission('/workspace/event')">事
  47. 件</el-dropdown-item> -->
  48. <el-dropdown-item @click.native="handleField" v-disabled="false">自定义栏位管理</el-dropdown-item>
  49. <el-dropdown-item @click.native="exportPDF">导出PDF首页</el-dropdown-item>
  50. <!-- <el-dropdown-item @click.native="handleBatch"
  51. :disabled="!($permission('/workspace/folder/batchUploadSpecification') && $r(projectId, [1, 2]))">批量上传说明书</el-dropdown-item>
  52. <el-dropdown-item> -->
  53. <el-dropdown trigger="hover" placement="right-start">
  54. <p>
  55. 导出专利<i class="el-icon-arrow-right el-icon--right"></i>
  56. </p>
  57. <el-dropdown-menu slot="dropdown">
  58. <el-dropdown-item @click.native="handleExport(false)">当前全部</el-dropdown-item>
  59. <el-dropdown-item @click.native="handleExport(true)">当前所选</el-dropdown-item>
  60. </el-dropdown-menu>
  61. </el-dropdown>
  62. <el-dropdown-item>
  63. <el-dropdown trigger="hover" placement="right-start">
  64. <p>
  65. {{ familyObj[queryParams.groupField] }}<i class="el-icon-arrow-right el-icon--right"></i>
  66. </p>
  67. <el-dropdown-menu slot="dropdown">
  68. <el-dropdown-item v-for="(item, key) in familyObj" :key="key" @click.native="onChangeFamily(key)">{{
  69. item }}</el-dropdown-item>
  70. </el-dropdown-menu>
  71. </el-dropdown>
  72. </el-dropdown-item>
  73. <el-dropdown-item :disabled="!$permission('/workspace/folder/merge')">
  74. <el-dropdown trigger="hover" placement="right-start">
  75. <p>
  76. 合并<i class="el-icon-arrow-right el-icon--right"></i>
  77. </p>
  78. <el-dropdown-menu slot="dropdown">
  79. <!-- <el-dropdown-item @click.native="handleMerge2"
  80. :disabled="!($permission('/workspace/folder/merge/inventorMerge') && $r(projectId, [1, 2]))">发明人</el-dropdown-item>
  81. <el-dropdown-item @click.native="handleMerge"
  82. :disabled="!($permission('/workspace/folder/merge/applicationMerge') && $r(projectId, [1, 2]))">申请人/权利人</el-dropdown-item> -->
  83. <el-dropdown-item @click.native="handleMerge(2)">发明人</el-dropdown-item>
  84. <el-dropdown-item @click.native="handleMerge(0)">申请人/权利人</el-dropdown-item>
  85. </el-dropdown-menu>
  86. </el-dropdown>
  87. </el-dropdown-item>
  88. <el-dropdown-item v-if="$permission('/workspace/createReport')">
  89. <el-dropdown trigger="hover" placement="right-start">
  90. <p>
  91. 创建报告<i class="el-icon-arrow-right el-icon--right"></i>
  92. </p>
  93. <el-dropdown-menu slot="dropdown" style="margin-top:0px">
  94. <!-- 遍历按钮 -->
  95. <el-dropdown-item @click.native="handleAnalysesFto"
  96. v-if="$permission('/workspace/createReport/FTO')">FTO调查</el-dropdown-item>
  97. </el-dropdown-menu>
  98. </el-dropdown>
  99. </el-dropdown-item>
  100. <!-- <el-dropdown-item @click.native="handleAnalyse('custom')"
  101. :disabled="!($permission('/workspace/folder/analyticSystem/chartAnalysis') && $r(projectId, [1, 2, 4]))">图表分析</el-dropdown-item> -->
  102. <el-dropdown-item @click.native="handleAnalyses">图表分析</el-dropdown-item>
  103. </el-dropdown-menu>
  104. </el-dropdown>
  105. </div>
  106. </el-header>
  107. <el-main v-loading="loading">
  108. <div class="height_100">
  109. <component ref="patentViewList" :is="viewSelected" @download="handleDownload" @change-read="handleChangeRead"
  110. :projectId="projectId" :patentNoList.sync="patentNoList" @addSelect="getChoosePatentNo"
  111. @clickPatentNo="handleClick" :column="customList" @index-setting="handleIndexSetting" @on-sort="handleSort"
  112. :queryParams="queryParams" :tableData="tableData" :refresh='refresh'></component>
  113. </div>
  114. </el-main>
  115. <el-footer class="pagination" style="display:flex;justify-content:space-between;align-items:center">
  116. <div style="display:flex;align-items:center">
  117. <span v-if="selectedTotal > 0">
  118. 已勾选 <b>{{ selectedTotal }}</b> 条
  119. </span>
  120. <el-popover placement="bottom" title="" width="220" trigger="click">
  121. <el-main class="patent-fast-edit-popover" v-loading="selectNumberLoading">
  122. <div class="btn" @click="handleCancelSelectNumber">取消选择</div>
  123. <div class="btn" @click="handleSelectNumber(0)">本页选择</div>
  124. <div class="btn" @click="handleSelectNumber(1)">全部选择</div>
  125. <el-divider></el-divider>
  126. <div class="select-number">
  127. <span>从</span>
  128. <el-input size="mini" v-model="queryParams.startNumber" @change="change1"></el-input>
  129. <span>到</span>
  130. <el-input size="mini" v-model="queryParams.endNumber" @change="change2"></el-input>
  131. <el-button type="text" size="" @click="handleSelectNumber(2)">确定</el-button>
  132. </div>
  133. </el-main>
  134. <el-button type="info" size="small" class="margin-left_10" slot="reference"> 选择专利<i
  135. class="el-icon-arrow-down el-icon--right"></i></el-button>
  136. </el-popover>
  137. <div v-show="patentNoList.length" class="margin-left_10">
  138. <el-dropdown size="medium">
  139. <el-button type="primary" size="small" :disabled="!$permission('/workspace/folder/batchOperation')">
  140. 批量操作<i class="el-icon-arrow-down el-icon--right"></i>
  141. </el-button>
  142. <el-dropdown-menu slot="dropdown">
  143. <el-dropdown-item @click.native="handleRead(1)"
  144. :disabled="!$permission('/workspace/folder/isRead')">已读</el-dropdown-item>
  145. <el-dropdown-item @click.native="handleRead(0)"
  146. :disabled="!$permission('/workspace/folder/isRead')">未读</el-dropdown-item>
  147. <!-- <el-dropdown-item @click.native="handleIndex"
  148. :disabled="!($permission('/workspace/folder/batchOperation/batchIndexing') && $r(projectId, [1, 2]))">批量标引</el-dropdown-item> -->
  149. <el-dropdown-item @click.native="handleIndex">批量标引</el-dropdown-item>
  150. <el-dropdown-item @click.native="checkPatentWorth"
  151. v-if="patentNoList.length && $permission('/workspace/patent/worth')">价值曲线</el-dropdown-item>
  152. </el-dropdown-menu>
  153. </el-dropdown>
  154. </div>
  155. <!-- 编辑暂时隐藏,默认置为true -->
  156. <!-- <div class="margin-left_10">
  157. <el-checkbox @change="changeRefresh" :checked="refresh">
  158. <span>编辑</span>
  159. </el-checkbox>
  160. </div> -->
  161. </div>
  162. <div>
  163. <el-pagination background layout="total, sizes, prev, pager, next, jumper"
  164. :current-page.sync="queryParams.current" :page-sizes="sizeArr" :page-size.sync="queryParams.size"
  165. @current-change="handleCurrentChange" @size-change="getList" :total="total">
  166. </el-pagination>
  167. </div>
  168. </el-footer>
  169. </el-container>
  170. </el-container>
  171. <Field-Drawer ref="FieldDrawer"></Field-Drawer>
  172. <field ref="field" type="patent" @getFieldList="getFieldList"></field>
  173. <!-- 报告文档 -->
  174. <reportFileDrawer ref="reportFileDrawer"></reportFileDrawer>
  175. <!-- 创建FTO报告 -->
  176. <addAndEditReport ref="addAndEditReport"></addAndEditReport>
  177. <!-- 批量那个标引 -->
  178. <PatentBatchIndexVue ref="PatentBatchIndexVue" :projectId="projectId"></PatentBatchIndexVue>
  179. <!-- 合并发明人/合并权利人、申请人 -->
  180. <patentInventorMergeDrawer ref="patentInventorMergeDrawer" @mergeClose="mergeClose"></patentInventorMergeDrawer>
  181. </div>
  182. </template>
  183. <script>
  184. import { downLoad2, getTreeDataList, getTreeLastChildren, getPatentCountry } from "@/utils"
  185. import { fastSelectPatent } from './components/mixins/fastSelectPatent'
  186. import FieldDrawer from '@/views/components/drawer/Field.vue'
  187. import PatentAbstractListView from './components/views/Abstract'
  188. import PatentTableListView from './components/views/Table.vue'
  189. import PatentPictureListView from './components/views/Picture'
  190. // import PatentPDFListView from './components/views/PDF.vue'
  191. import field from '@/views/components/dialog/fields.vue';
  192. import customFields from '@/views/report/components/patentList/components/customFields/index.vue';
  193. import searchPatent from '@/views/report/components/patentList/components/searchPatent.vue';
  194. import reportFileDrawer from '@/views/report/components/drawer/reportFileDrawer.vue'
  195. import addAndEditReport from '@/views/report/components/dialog/addAndEditReport.vue'
  196. import PatentBatchIndexVue from './components/dialog/PatentBatchIndex.vue'
  197. import patentInventorMergeDrawer from './components/drawer/MergeInventor.vue'
  198. export default {
  199. mixins: [fastSelectPatent],
  200. components: {
  201. FieldDrawer,
  202. PatentAbstractListView,
  203. PatentTableListView,
  204. PatentPictureListView,
  205. field,
  206. customFields,
  207. searchPatent,
  208. reportFileDrawer,
  209. addAndEditReport,
  210. PatentBatchIndexVue,
  211. patentInventorMergeDrawer,
  212. },
  213. props: {},
  214. data() {
  215. return {
  216. //是否隐藏左侧
  217. showLeft: true,
  218. //检索字段
  219. searchFiled: [],
  220. // //检索条件
  221. // searchOption: {
  222. // name: localStorage.searchContent,
  223. // },
  224. //视图方式
  225. viewList: [
  226. {
  227. value: 'patent-table-list-view',
  228. title: '表格视图',
  229. btn: 'el-icon-tickets',
  230. },
  231. {
  232. value: 'patent-abstract-list-view',
  233. title: '摘要视图',
  234. btn: 'el-icon-news',
  235. },
  236. {
  237. value: 'patent-picture-list-view',
  238. title: '图片视图',
  239. btn: 'el-icon-picture-outline',
  240. },
  241. {
  242. value: 'PatentPDFListView',
  243. title: 'PDF视图',
  244. btn: 'iconfont icon-pdf',
  245. }
  246. ],
  247. //选择的视图
  248. viewSelected: "patent-table-list-view",
  249. //显示栏位
  250. customList: [],
  251. //同族
  252. familyObj: {
  253. '0': '不区分同族',
  254. 'simpleFamilyId': '简单同族',
  255. 'inpadocFamilyId': 'INPADOC同族',
  256. 'patsnapFamilyId': '扩展同族',
  257. },
  258. //页大小
  259. sizeArr: [10, 20, 30, 40, 50, 100],
  260. //排序
  261. sort: [],
  262. //加载
  263. loading: false,
  264. // 统计勾选的值(专利著录(专利本身))
  265. searchPatentCheck: [],
  266. // 存放专利本身检索条件
  267. searchStr: '',
  268. // 存放自定义栏位的检索条件
  269. customFields: [],
  270. };
  271. },
  272. watch: {},
  273. computed: {
  274. // 专题库id
  275. projectId() {
  276. return this.$route.query.id
  277. },
  278. },
  279. created() { },
  280. async mounted() {
  281. this.customList = await this.$commonJS.getCustomField('patent', { projectId: this.projectId, taskId: this.taskId })
  282. await this.getColumn()
  283. // 获取专利信息
  284. this.getList()
  285. },
  286. methods: {
  287. // 处理后的条件
  288. handleSearchValue({ searchStr, customFields }) {
  289. this.searchStr = searchStr
  290. this.customFields = customFields
  291. this.$refs.customFields.close()
  292. this.getList()
  293. },
  294. // 统计组件传的值
  295. handleCustomFields(val) {
  296. this.searchPatentCheck = []
  297. val.forEach(item => {
  298. if (item.check && item.check.length > 0) {
  299. if (item.filedKind == -1) {
  300. this.searchPatentCheck.push(item)
  301. } else {
  302. var checkName = []
  303. if (item.type == 'Array' || item.type == 'tree' || item.type == 'DateTime') {
  304. checkName = item.options.filter(item2 => item.check.includes(item2.id || item2.name)).map(item3 => item3.name);
  305. }
  306. var obj = {
  307. value: item.value,
  308. name: item.name,
  309. filedKind: item.filedKind,
  310. check: item.check,
  311. checkName: checkName,//自定义栏位多选
  312. type: item.type,
  313. ifHaveChild: this.ifHaveChild
  314. }
  315. // return
  316. this.searchPatentCheck.push(obj)
  317. }
  318. }
  319. })
  320. this.$nextTick(() => {
  321. this.$refs.searchPatent.search2()
  322. })
  323. },
  324. // 点击专利号进行跳转
  325. handleClick(row, location) {
  326. var search = {
  327. searchOption: this.searchOption,
  328. location: location,
  329. }
  330. this.$s.setSession('search', search)
  331. this.$router.push(
  332. {
  333. path: '/patentDetails/' + row.patentNo,
  334. query: {
  335. projectId: this.projectId
  336. }
  337. }
  338. )
  339. },
  340. //获取table栏位及分组字段、检索字段
  341. //获取检索字段
  342. async getColumn() {
  343. // let params = ['patent']//原获取检索字段
  344. // await this.$api.getParamsCommon(params).then(res => {
  345. // if (res.code == 200) {
  346. // let conditionDTOList = JSON.parse(JSON.stringify(res.data[0].conditionDTOList))
  347. // // 搜索字段
  348. // this.searchFiled = this.$commonJS.getField(conditionDTOList, (u) => u.ifSearch == true, {
  349. // label: 'name',
  350. // value: 'value',
  351. // type: 'type',
  352. // })
  353. // }
  354. // })
  355. let params = [{
  356. tableName: 'patent',
  357. projectId: this.projectId,
  358. }]
  359. await this.$api.getQueryFields(params).then(res => {
  360. if (res.code == 200) {
  361. let conditionDTOList = JSON.parse(JSON.stringify(res.data.data[0].conditionDTOList))
  362. let field = conditionDTOList.filter(item => {
  363. return item.group == 'nos'
  364. })
  365. let custom = conditionDTOList.filter(item => {
  366. return item.group == 'customField'
  367. })
  368. let customField = custom.filter(item => {
  369. return item.type != 'tree' && item.type != 'Array'
  370. })
  371. let arr = field.concat(customField)
  372. // 搜索字段
  373. this.searchFiled = this.$commonJS.getField(arr, (u) => u.ifSearch == true, {
  374. label: 'name',
  375. value: 'field',
  376. type: 'type',
  377. group: 'group',
  378. fieldType: 'fieldType',
  379. groupBy: 'groupBy',
  380. })
  381. }
  382. })
  383. },
  384. //检索
  385. // search(val) {
  386. // let params = {}
  387. // val.forEach(item => {
  388. // if (item.type == 3) {
  389. // params[item.value] = item.searchValue.map(itemValue => {
  390. // return itemValue.value
  391. // })
  392. // } else {
  393. // params[item.value] = item.searchValue.label
  394. // }
  395. // })
  396. // // 返回字符串
  397. // this.searchOption = params
  398. // // 调用查询接口
  399. // this.queryParams.current = 1
  400. // this.getList()
  401. // },
  402. //切换视图
  403. async handleChangeView(item) {
  404. this.viewSelected = item.value
  405. this.queryParams.current = 1
  406. // if (this.viewSelected == 'PatentPDFListView') {
  407. // return false
  408. // }
  409. if (this.viewSelected === 'patent-picture-list-view') {
  410. this.$set(this.queryParams, 'size', 20)
  411. } else {
  412. this.queryParams.size = 10
  413. }
  414. this.getList()
  415. },
  416. //获取专利信息
  417. getList(size) {
  418. if (size) {
  419. this.queryParams.size = size
  420. }
  421. let params = {
  422. ...this.queryParams,//分页信息及区分同族类型
  423. projectId: this.projectId,
  424. searchQuery: this.searchStr || '',//检索条件
  425. customFields: this.customFields || [],
  426. orderDTOList: this.sort,//排序信息
  427. }
  428. // this.$store.commit("SET_PATENT_PARAMS", params);
  429. this.$store.commit("SET_PATENT_RECORDS", []);
  430. this.$api.QueryPatent(params).then(res => {
  431. if (res.code == 200) {
  432. this.tableData = res.data.data
  433. this.total = res.data.total
  434. this.$set(this.queryParams, 'startNumber', this.endNumber > 0 ? this.startNumber : 1)
  435. this.$set(this.queryParams, 'endNumber', this.endNumber > 0 ? this.endNumber : this.total)
  436. // this.$store.commit("SET_PATENT_PARAMS", params);
  437. this.$store.commit("SET_PATENT_RECORDS", res.data.data);
  438. if (this.quickSelect) {
  439. this.commonSwitch()
  440. }
  441. this.isRefresh()
  442. }
  443. }).catch(error => {
  444. this.tableData = []
  445. this.total = 0
  446. })
  447. },
  448. //排序
  449. handleSort({ column, prop, order }) {
  450. //如需要多个字段排序,则不需要清空
  451. var params = {
  452. sort: this.sort,
  453. column,
  454. prop,
  455. order,
  456. }
  457. this.sort = this.$commonJS.getSortData(params)
  458. this.queryParams.current = 1
  459. this.getList()
  460. },
  461. //分页
  462. handleCurrentChange(val) {
  463. this.queryParams.current = val;
  464. this.getList();
  465. },
  466. //自定义栏位管理
  467. handleField() {
  468. this.$refs.FieldDrawer.open(this.projectId)
  469. },
  470. //获取自定义栏位
  471. getFieldList(data) {
  472. this.customList = data
  473. },
  474. //显示栏位管理
  475. async handleFieldManage() {
  476. this.$refs.field.open(this.customList)
  477. },
  478. //报告文档
  479. handleFile() {
  480. this.$refs.reportFileDrawer.open(this.projectId)
  481. },
  482. //创建FTO报告
  483. handleAnalysesFto() {
  484. var form = {
  485. reportType: 3,
  486. signPatentNo: '',
  487. matterId: [],
  488. scenarioId: [],
  489. }
  490. this.$refs.addAndEditReport.open(form)
  491. },
  492. //切换同族
  493. onChangeFamily(key) {
  494. this.queryParams.current = 1
  495. this.queryParams.groupField = key
  496. this.getList()
  497. },
  498. // 批量标引
  499. handleIndex() {
  500. let obj = {
  501. selectQuery: {
  502. isAdd: this.queryParams.isAdd,
  503. isDelete: this.queryParams.isDelete,
  504. startNumber: this.startNumber,
  505. endNumber: this.endNumber,
  506. },
  507. searchQuery: this.searchStr,
  508. customFields: this.customFields
  509. }
  510. this.$refs.PatentBatchIndexVue.open(obj)
  511. },
  512. //导出专利
  513. async handleExport(val) {
  514. if (val) {
  515. if (this.startNumber < 0 && this.endNumber < 1 || this.queryParams.isAdd.length == 0) {
  516. this.$message.error('请先选择专利')
  517. return false
  518. }
  519. }
  520. let obj = {
  521. selectQuery: {
  522. isAdd: this.queryParams.isAdd,
  523. isDelete: this.queryParams.isDelete,
  524. startNumber: this.startNumber,
  525. endNumber: this.endNumber,
  526. },
  527. searchQuery: this.searchStr,
  528. customFields: this.customFields
  529. }
  530. let router = this.$router.resolve({
  531. path: '/exportPatent',
  532. query: {
  533. projectId: this.projectId,
  534. condition: JSON.stringify(obj)
  535. }
  536. })
  537. window.open(router.href, '_blank')
  538. },
  539. //PDF首页导出
  540. exportPDF() {
  541. let params = {
  542. projectId: this.projectId,
  543. searchQuery: this.searchStr || '',//检索条件
  544. customFields: this.customFields || [],//自定义字段的检索
  545. isAdd: this.queryParams.isAdd,
  546. isDelete: this.queryParams.isDelete,
  547. startNumber: this.startNumber,
  548. endNumber: this.endNumber,
  549. }
  550. this.$api.pdfFirstPage(params).then(res => {
  551. if (res.code == 200) {
  552. const h = this.$createElement;
  553. this.$msgbox({
  554. title: '提示',
  555. message: h('p', null, [
  556. h('span', null, '任务正在导入,查看任务进度请前往 '),
  557. h('span', {
  558. style: 'color: #ff7d38;cursor: pointer;',
  559. on: {
  560. click: () => {//
  561. let router = this.$router.resolve({
  562. path: '/taskList',
  563. query: {
  564. projectId: this.projectId,
  565. }
  566. })
  567. window.open(router.href, '_blank')
  568. this.$msgbox.close(false)
  569. }
  570. }
  571. }, '立即前往',)
  572. ]),
  573. type: 'warning',
  574. showConfirmButton: false,
  575. }).then(action => {
  576. });
  577. }
  578. })
  579. // let params = JSON.parse(JSON.stringify(this.queryParams))
  580. // params.tree.map(tree => {
  581. // let field = params.field.filter(item => item.key === tree.key)
  582. // if (field.length === 0) {
  583. // params.field.push(tree)
  584. // }
  585. // })
  586. // params.tree = undefined
  587. // this.$api.pdfFirstPage(params).then(response => {
  588. // if (response.code == 200) {
  589. // const router = this.$router.resolve({
  590. // path: '/taskList',
  591. // query: {
  592. // projectId: this.projectId,
  593. // }
  594. // })
  595. // window.open(router.href, '_blank')
  596. // }
  597. // })
  598. },
  599. //图表分析
  600. async handleAnalyses() {
  601. // this.chartLoading = true
  602. // const key = await this.saveSelectPatent(false)
  603. // this.chartLoading = false
  604. let key = '6da6c3df8b54450aac71617dce3e8a71'
  605. // this.$store.commit('SET_PATENT_KEY', key)
  606. const router = this.$router.resolve({
  607. path: '/customChart',
  608. query: {
  609. projectId: this.projectId,
  610. key: key
  611. }
  612. })
  613. window.open(router.href, '_blank');
  614. },
  615. //合并发明人//合并申请人、权利人
  616. handleMerge(type) {
  617. let obj = {
  618. projectId: this.projectId,
  619. type: type
  620. }
  621. this.$refs.patentInventorMergeDrawer.open(obj)
  622. },
  623. // 合并发明人、申请人、权利人后子组件发送的消息
  624. mergeClose() {
  625. this.getList()
  626. },
  627. //下载PDF
  628. async handleDownload(patent) {
  629. const { data } = await this.$api.getPatentInstructionList({ current: 1, size: 9999, patentNo: patent.patentNo })
  630. if (data.records.length !== 0) {
  631. downLoad2(data.records[0].url)
  632. } else {
  633. this.$alert('专利暂未上传说明书文档', '请求错误', {
  634. confirmButtonText: '确定',
  635. type: 'error',
  636. callback: action => { }
  637. });
  638. }
  639. },
  640. //切换已读未读
  641. handleChangeRead(ids, status) {
  642. let params = {
  643. patentIds: ids,
  644. projectId: this.projectId,
  645. status: status,
  646. folder: this.queryParams.folder
  647. }
  648. this.fastEditLoading = true
  649. this.$api.updatePatentReadStatus(params).then(response => {
  650. this.$refs.patentQueryFilter.getPatentReadTotal()
  651. this.fastEditLoading = false
  652. this.getList()
  653. }).catch(error => {
  654. this.fastEditLoading = false
  655. })
  656. },
  657. //自定义栏位以及标签设置值
  658. handleIndexSetting(patent, field) {
  659. if (field) {
  660. this.$refs.patentIndexSetting.open(this.queryParams.projectId, patent, field)
  661. }
  662. },
  663. //取消编辑
  664. // changeRefresh() {
  665. // this.patentNoList = []
  666. // // this.refresh = !this.refresh
  667. // },
  668. },
  669. };
  670. </script>
  671. <style lang="scss" scoped>
  672. .patent-fast-edit-popover {
  673. padding: 0 !important;
  674. .btn {
  675. color: #000;
  676. line-height: 30px;
  677. border-radius: 5px;
  678. padding-left: 10px;
  679. text-align: left;
  680. font-size: 14px;
  681. cursor: pointer;
  682. &:hover {
  683. background: #adadad;
  684. color: #fff;
  685. }
  686. }
  687. .disabled {
  688. cursor: not-allowed !important;
  689. }
  690. .bottom {
  691. text-align: right;
  692. color: #1e9fff;
  693. line-height: 40px;
  694. padding-left: 10px;
  695. font-size: 18px;
  696. }
  697. .el-divider--horizontal {
  698. margin: 10px 0 !important;
  699. }
  700. .select-number {
  701. .el-input {
  702. width: 70px;
  703. }
  704. span {
  705. padding: 0 3px;
  706. }
  707. }
  708. }
  709. </style>