123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463 |
- import { patentKeywordsHighlight } from '../../components/mixins'
- const colourBlend = (c1, c2, ratio) => {
- ratio = Math.max(Math.min(Number(ratio), 1), 0)
- let r1 = parseInt(c1.substring(1, 3), 16)
- let g1 = parseInt(c1.substring(3, 5), 16)
- let b1 = parseInt(c1.substring(5, 7), 16)
- let r2 = parseInt(c2.substring(1, 3), 16)
- let g2 = parseInt(c2.substring(3, 5), 16)
- let b2 = parseInt(c2.substring(5, 7), 16)
- let r = Math.round(r1 * (1 - ratio) + r2 * ratio)
- let g = Math.round(g1 * (1 - ratio) + g2 * ratio)
- let b = Math.round(b1 * (1 - ratio) + b2 * ratio)
- r = ('0' + (r || 0).toString(16)).slice(-2)
- g = ('0' + (g || 0).toString(16)).slice(-2)
- b = ('0' + (b || 0).toString(16)).slice(-2)
- return '#' + r + g + b
- }
- export const commonMixins = {
- props: ['patent', 'reportId', 'patentId','projectId','patentNo'],
- mixins: [patentKeywordsHighlight],
- data() {
- return {
- style:{
- height:'100%',
- width:'100%'
- },
- size:{}
- }
- },
- mounted() {
- window.addEventListener('resize', this.changeWidth)
- },
- methods: {
- changeWidth() {
- var dom = document.querySelector('.picture')
- var maxWidth = null
- var maxHeight = null
- if(dom){
- maxWidth = dom.clientWidth - 30
- maxHeight = 200
- }else{
- maxWidth = 120
- maxHeight = 150
- }
- var size = JSON.parse(JSON.stringify(this.size))
- const scale = Math.min(maxWidth / size.width, maxHeight / size.height);
- size.width=scale * size.width
- size.height=scale * size.height
- this.$set(this.style,'width',size.width+'px')
- this.$set(this.style, 'height', size.height + 'px')
- if (this.patent) {
- this.$set(this.patent,'imgWidth',size.width+'px')
- this.$set(this.patent,'imgHeight',size.height+'px')
- }
- },
- getImagePath(url) {
- if (!url) {
- return ''
- }
- if(this.reportId){
- var url1 = this.$p2 + url
- }else{
- var url1 = url
- }
- return url1
- },
- getImagePath1(patent) {
- if(Object.keys(patent).length==0){
- return ''
- }
- if(!patent.abstractPath){
- return this.getErrorImage(patent)
- }
- var url = this.$p2 + patent.abstractPath
- this.$set(patent,'abstractPath2',url)
- this.getHeight(url, patent)
- return url
- },
- async getHeight(url,patent){
- let size = await this.getImageSize(url);
- var dom = document.querySelector('.picture')
-
- var maxWidth = null
- var maxHeight = null
- if (dom) {
- maxWidth = dom.clientWidth -5
- maxHeight = dom.clientHeight -5
- }else{
- maxWidth = 120
- maxHeight = 150
- }
- const scale = Math.min(maxWidth / size.width, maxHeight / size.height);
- this.size = size
- size.width=scale * size.width
- size.height=scale * size.height
- this.$set(this.style,'width',size.width+'px')
- this.$set(this.style, 'height', size.height + 'px')
- this.$set(patent,'imgWidth',size.width+'px')
- this.$set(patent,'imgHeight',size.height+'px')
-
- return size
- },
- getImageSize(url) {
- return new Promise(function (resolve, reject) {
- let image = new Image();
- image.onload = function () {
- resolve({
- width: image.width,
- height: image.height
- });
- };
- image.onerror = function () {
- // reject(new Error('error'));
- };
- image.src = url;
- });
- },
- getErrorImage(patent){
- if(Object.keys(patent).length==0){
- return ''
- }
- if(!patent.publicNo){
- return ''
- }
- var cc = patent.publicNo.substring(0,2)
- if(patent.publicAccreditDate){
- var date = patent.publicAccreditDate.replace(/-/g,'')
- }else{
- var date = patent.publicDate.replace(/-/g,'')
- }
- var NR = patent.publicNo.substring(2,patent.publicNo.length)
- var KD = patent.publicNo.substring(patent.publicNo.length-2,patent.publicNo.length)
- var a = 'http://worldwide.espacenet.com/espacenetImage.jpg?flavour=firstPageClipping&locale=en_EP&FT=D&date='+ date +'&CC='+ cc +'&NR='+ NR +'&KD='+ KD +'&bg='
- return a
- }
- }
- }
- export const addContrast = {
- props:['reportId','activeName','evidenceFlieId','signPatentNo','reportType','taskId','type','projectId'],
- data() {
- return {
- mX: 0,
- mY: 0,
- isSelecting: false,
- anchorOffset: 0,
- currentSelectObj:{},
- contrast: {},
- currentColor:null,
- duiBiCurrentSelectObj: {},
- name:this.activeName,
- }
- },
- computed: {
- index() {
- return JSON.stringify(this.$store.state.patent.index)
- },
- contrastList() {
- return this.$store.state.report.contrastList
- },
- opinionContrastList() {
- return this.$store.state.report.opinionContrastList
- },
- },
- watch: {
- index(val) {
- var index1 = JSON.parse(val)
- this.currentColor = index1.color
- },
- activeName(val) {
- this.name = val
- },
- },
- mounted() {
- window.pizhu = this.pizhu
- window.hiddenPizhu = this.hiddenPizhu
- window.selectMark = this.selectMark
- window.addDuiBi = this.addDuiBi
- },
- methods: {
- // 点击对比按钮
- addDuiBi() {
- this.duiBiCurrentSelectObj=this.$store.state.patent.index
- // open打开弹窗
- if (this.duiBiCurrentSelectObj.Id) {
- this.duiBiCurrentSelectObj.patentNo = this.duiBiCurrentSelectObj.pno
- this.$emit('openContrast',this.duiBiCurrentSelectObj)
- }
- },
- //点击图标回显数据
- selectMark(id, selectType) {
- if(!this.$reportPermission(this.reportId,[0,1])){
- return false
- }
- var Id = id.substring(1,id.length)
- if (selectType=='p') {
- var index = this.piZhuContrastList.findIndex(item => {
- if (item.id == Id) {
- // 清空currentSelectObj,否则Id与id同时存在
- this.currentSelectObj = {}
- this.$store.commit("SET_PATENT_INDEX", this.currentSelectObj)
- this.contrast = item
- this.$store.commit('SET_PATENT_INDEX', this.contrast)
- }
- return item.id == Id
- })
- if (index != -1) {
- this.showPizhu()
- }
- } else if (selectType == 'c') {
- let a=this.contrastList.find(item => {
- return item.id==Id
- })
- this.$emit('openContrast', a)
- } else if (selectType == 'o') {
- let a=this.opinionContrastList.find(item => {
- return item.id==Id
- })
- this.$emit('openOpinioncontrast', a)
- }
-
- },
- mousemove(e) {
- this.mX = e.pageX;
- this.mY = e.pageY;
- },
- mouseup(e) {
- sessionStorage.mY = this.mY
- sessionStorage.mX = this.mX
- this.isSelecting = true;
- if (this.isSelecting) {
- this.isSelecting = false;
- let selectObj = document.getSelection();
- this.anchorOffset = 0;
- let temSelectObj = this.getSelectobj(selectObj);
- var tempdt = this.getColumnName(selectObj.anchorNode);
- if (tempdt != undefined && selectObj.toString() != '') {
- this.currentSelectObj = temSelectObj;
- this.currentSelectObj.color = this.currentColor;
- this.currentSelectObj.Type = 0;
- this.currentSelectObj.patentNo = this.patent.patentNo
- // rangeId(专题库id/报告id)
- this.currentSelectObj.rangeId = this.reportId
- // 创建来源(默认0/专题库1/报告2)
- this.currentSelectObj.createFrom = 2
- // this.showPizhu();
- this.currentSelectObj.remark = ''
- }
- else {
- this.currentSelectObj = {};
- this.$store.commit("SET_CONTEXT_MENU",
- {
- displayContextMenu: false,
- }
- )
- }
- if (this.currentSelectObj.Id) {
- var a = JSON.parse(this.index)
- a.Id = this.currentSelectObj.Id
- a.patentNo = this.currentSelectObj.patentNo
- a.pno = this.patent.patentNo
- a.text = this.currentSelectObj.text
- a.rangeId = this.reportId
- a.scratchField = this.currentSelectObj.column
- a.position = this.currentSelectObj.index
- a.id = null
- a.remark = null
- // a.color = this.currentSelectObj.color
- a.createFrom = this.reportId?2:0
- a.Type = 0
- a.rightSort=this.currentSelectObj.rightSort
- a.evidenceFlieId = this.evidenceFlieId
- a.signPatentNo = this.signPatentNo
- a.reportType = this.reportType ?this.reportType:this.type
- a.taskId = this.taskId
- a.rightPosition = this.currentSelectObj.rightPosition
- this.$store.commit("SET_PATENT_INDEX", a)
- this.showPizhu()
- // this.$store.commit("SET_CONTEXT_MENU",
- // {
- // clientX: e.clientX, // left
- // clientY: e.clientY,
- // displayContextMenu: true,
- // menuContent:[
- // {
- // name:'对比',
- // methods:'contrast'
- // }
- // ]
- // })
- }
- }
- },
-
- // 打开批注框
- pizhu() {
- if (this.contrast.id == undefined) {
- this.currentSelectObj = JSON.parse(this.index)
- }
- if (this.currentSelectObj.Id != undefined || this.contrast.id != undefined) {
- // 划词进入
- // if (this.currentSelectObj.Id != undefined) {
- // console.log(2,this.currentSelectObj);
- // this.$store.commit('SET_PATENT_INDEX', this.currentSelectObj)
- // }
- this.currentSelectObj.Type = 2;
- this.hiddenPizhu();
- this.showPizhu2()
- this.contrast = {}
- }
- },
- showPizhu2() {//展示批注
- let dl = document.getElementsByClassName("pizhu");
- let mX = sessionStorage.mX
- let mY = sessionStorage.mY
- if ((document.body.clientWidth - mX - 380) < 0) {
- mX = document.body.clientWidth - 390;
- }
- if ((document.body.clientHeight - mY - 40) < 0) {
- mY = document.body.clientHeight - 40;
- }
- if ((document.body.clientHeight - mY) < 420) {
- mY = mY - 410
- }
- if ((document.body.clientWidth - mX) < 330) {
- mX = mX - 330
- }
- dl[0].setAttribute("style", "user-select:none;box-shadow: 10px 10px 5px #888888;display:block;position:absolute;left:" + mX.toString() + "px;top:" + mY.toString() + "px;background-color: #F7EED6;border-radius: 15px 15px;padding: 10px;width:380px;z-index: 2;");
- },
- showPizhu() {//展示菜单
- let mX = sessionStorage.mX
- let mY = sessionStorage.mY
- let dl = document.getElementsByClassName("caidan");
- if ((document.body.clientWidth - mX - 420) < 0) {
- mX = document.body.clientWidth - 420;
- }
- if ((document.body.clientHeight - mY - 40) < 0) {
- mY = document.body.clientHeight - 40;
- }
- dl[0].setAttribute("style", "opacity:0.95;box-shadow: 10px 10px 5px #888888;display:block;position:absolute;left:" + mX.toString() + "px;top:" + mY.toString() + "px;background-color: white;border-radius: 15px 15px;height:30px;display: flex;align-items: center;padding: 10px;user-select:none");
- },
- // 关闭菜单
- hiddenPizhu() {
- let dl = document.getElementsByClassName("caidan");
- dl[0].setAttribute("style", "display:none;");
- },
- getSelectobj(selectObj) {
- var temNode = selectObj.anchorNode;
- var a = temNode.parentElement
- NotIncludeDataType(a)
- function NotIncludeDataType(node) {
- if (node.getAttribute("data-type") != null) {
- temNode = node
- } else {
- if(node.parentElement){
- NotIncludeDataType(node.parentElement);
- }else{
- temNode = temNode.parentElement
- }
-
- }
- }
- var rightSort = null
- if(temNode.getAttribute("data-type") == null){
- return false
- }
- if (this.reportType == 7 && temNode.getAttribute("data-type").includes('权利要求')) {
- var node1 = null
- getRightSort(a)
- function getRightSort(node) {
- if (node.getAttribute("right-sort") != null) {
- rightSort = node.getAttribute("right-sort")
- node1 = node
- } else {
- getAttribute(node.parentElement);
- }
- }
- var rightPosition = this.getColumn(node1, selectObj)
- }
- this.getColumn(temNode, selectObj);
- this.isFirst = true
- return { "Id": this.uuid(), "column": temNode.getAttribute("data-type"), "index": this.anchorOffset, "text": selectObj.toString(), 'temNode': temNode.innerHTML,'rightSort':rightSort,'rightPosition':rightPosition };
- },
- getColumn(node, selectObj) {
- var baseNode = this.getColumnNode(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)
- this.anchorOffset = num
- return num;
- },
- getColumnNode(node) {
- //获取节点所在的栏位节点
- if (node != null) {
- if (node.nodeType != 3 && node.getAttribute("data-type") != null) {
- return node;
- } else {
- if (node == document.root) {
- return node;
- } else {
- return this.getColumnNode(node.parentNode);
- }
- }
- }
- },
- 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);
- let 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;
- }
- }
- }
- },
- uuid() {
- var s = [];
- var hexDigits = "0123456789abcdef";
- for (var i = 0; i < 36; i++) {
- s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
- }
- s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
- s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
- s[8] = s[13] = s[18] = s[23] = "-";
- var uuid = s.join("");
- return uuid;
- },
- getColumnName(el) {
- let root = el;
- if (el == undefined) {
- return undefined;
- }
- if (!(el instanceof HTMLElement)) {
- root = el.parentElement;
- }
- let dt = root.getAttribute("data-Type");
- if (dt != undefined) {
- return root;
- }
- return dt = this.getColumnName(root.parentElement);
- },
- },
- }
|