PatentRight.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. <template>
  2. <div class="patent-articles-patent-right height_100" @mouseup="mouseup">
  3. <el-container>
  4. <el-header class="basic_header">
  5. <el-tabs v-model="name" @tab-click="handleClick" style="width:100%">
  6. <el-tab-pane v-for="item in tabs" :key="item.label" :label="item.label" :name="item.name">
  7. <span slot="label">
  8. <span>{{ item.label }}</span>
  9. <span v-if="item.icon && !outside" class="margin-left_10">
  10. <i :class="item.icon" @click.stop="exportData(item.value)"></i>
  11. </span>
  12. </span>
  13. </el-tab-pane>
  14. </el-tabs>
  15. <div>
  16. <el-checkbox v-model="checkedRightTree" @change="changeShowRightTree">权要树</el-checkbox>
  17. </div>
  18. </el-header>
  19. <el-main style="overflow: hidden;">
  20. <div class="height_100 claim" v-loading="loading" v-if="!checkedRightTree" :style="setStyle()" >
  21. <div class="height_100" v-html="getViewDom(this[tabItem.field], '权利要求'+tabItem.label, 'column')" :data-type="name == 2?'权利要求原文':'权利要求'+tabItem.label" ref="yuanwen"></div>
  22. <div class="height_100" v-if="name == 2" v-html="getViewDom(contentOut, '权利要求译文', 'column')" :data-type="'权利要求译文'" ref="yiwen"></div>
  23. </div>
  24. <div v-else class="height_100">
  25. <my-view>
  26. <div slot="left">
  27. <myTree :list="patent.patentRightTree" style="height: 100%" :props="{
  28. name:'content',
  29. children:'children'
  30. }" nodeKey="sort" :expends="expends">
  31. <template v-slot:default="data">
  32. <div>{{ data.data[tabItem.field] }}</div>
  33. <div v-if="tabItem.name == 2" style="background:#f3f4f8;">
  34. {{ data.data.contentOut }}
  35. </div>
  36. </template>
  37. </myTree>
  38. </div>
  39. <div slot="right" style="position: relative;">
  40. <div id="charts" style="max-width: 100%; min-width: 300px;position:relative;padding-top: 10px;" v-if="show">
  41. <div v-for="(item,index) in this.patent.patentRightTree" :key="index" :id="'chart'+index" style="width:500px;margin:0 auto;"></div>
  42. </div>
  43. <div style="position:absolute;top:10px;right:20px;">
  44. <el-link type="primary" @click="imageDownLoad">下载为图片</el-link>
  45. </div>
  46. </div>
  47. </my-view>
  48. </div>
  49. </el-main>
  50. </el-container>
  51. </div>
  52. </template>
  53. <script>
  54. import { patentDetails } from './mixins';
  55. import html2canvas from "html2canvas"
  56. export default {
  57. mixins: [patentDetails],
  58. data() {
  59. return {
  60. expends: [],
  61. show:false,
  62. isClickId: "",
  63. height: null,
  64. fullHeight: document.documentElement.clientHeight,
  65. records: {
  66. original: [],
  67. translation: [],
  68. },
  69. scrollTop:0,
  70. isClick:false,
  71. tabs:[
  72. {
  73. label:'原文',
  74. name:'0',
  75. field:'content'
  76. },
  77. {
  78. label:'译文',
  79. name:'1',
  80. field:'contentOut'
  81. },
  82. {
  83. label:'双语',
  84. name:'2',
  85. field:'content'
  86. },
  87. ],
  88. tabItem:{
  89. label:'原文',
  90. name:'0',
  91. field:'content'
  92. },
  93. checkedRightTree:false,
  94. rightData:[],
  95. content:'',
  96. contentOut:'',
  97. activeIndex:0,
  98. isClick:false
  99. };
  100. },
  101. watch: {
  102. // fullHeight() {
  103. // this.refresh();
  104. // },
  105. patentNo() {
  106. this.showTabs()
  107. this.initData();
  108. if(this.checkedRightTree){
  109. this.show = false
  110. this.expends = []
  111. this.isClickId = ''
  112. this.$nextTick(()=>{
  113. this.handleClick()
  114. })
  115. }
  116. },
  117. name(){
  118. if(!this.checkedRightTree){
  119. this.show = false
  120. }
  121. },
  122. // activeIndex(){
  123. // this.to(this.activeIndex,this.scrollTop)
  124. // }
  125. },
  126. created() {
  127. window.addEventListener("resize", this.handleResize);
  128. },
  129. mounted() {
  130. this.showTabs()
  131. this.handleResize();
  132. this.initData();
  133. },
  134. methods: {
  135. showTabs(){
  136. if(!this.haveTranslatedText(this.patent,'claim') || this.outside){
  137. this.tabs = [
  138. {
  139. label:'原文',
  140. name:'0',
  141. field:'content',
  142. icon:'el-icon-refresh',
  143. value:'3'
  144. },
  145. ]
  146. }else{
  147. this.tabs = [
  148. {
  149. label:'原文',
  150. name:'0',
  151. field:'content',
  152. icon:'el-icon-refresh',
  153. value:'3'
  154. },
  155. {
  156. label:'译文',
  157. name:'1',
  158. field:'contentOut'
  159. },
  160. {
  161. label:'双语',
  162. name:'2',
  163. field:'content'
  164. },
  165. ]
  166. }
  167. },
  168. scrollDom(e,ref='yuanwen'){
  169. if(this.isClick){
  170. setTimeout(()=>{
  171. this.isClick = false
  172. },500)
  173. return
  174. }
  175. var dom1 = this.$refs[ref]
  176. var scrollTop = dom1.scrollTop
  177. var sectionTop = 0
  178. for (let i = 0; i < dom1.children.length; i++) {
  179. sectionTop = dom1.children[i].offsetTop-dom1.offsetTop;
  180. if (scrollTop+(dom1.offsetHeight / 2) >= sectionTop) {
  181. this.activeIndex = i;
  182. var dom = 'yuanwen'
  183. if(ref == 'yuanwen'){
  184. dom = 'yiwen'
  185. }
  186. this.to(this.activeIndex,dom)
  187. } else {
  188. break;
  189. }
  190. }
  191. // this.activeIndex = activeIndex
  192. // this.scrollTop = scrollTop
  193. // console.log(activeIndex,sectionTop)
  194. },
  195. to(activeIndex,ref='yiwen'){
  196. var dom2 = this.$refs[ref]
  197. //方案三
  198. dom2.children[activeIndex].scrollIntoView(
  199. {
  200. behavior: "smooth",
  201. block:'center'
  202. // block:'nearest'
  203. }
  204. )
  205. this.heightLight(activeIndex)
  206. },
  207. heightLight(activeIndex){
  208. var dom2 = this.$refs.yiwen
  209. var dom1 = this.$refs.yuanwen
  210. for (let i = 0; i < dom1.children.length; i++) {
  211. if (i == activeIndex) {
  212. dom1.children[i].classList.add('highlight');
  213. dom2.children[i].classList.add('highlight');
  214. } else {
  215. // 清除之前的高亮
  216. dom1.children[i].classList.remove('highlight');
  217. dom2.children[i].classList.remove('highlight');
  218. }
  219. }
  220. },
  221. extractNumbers(str) {
  222. // 匹配一个或多个数字
  223. const regex = /\d+/g;
  224. let matches;
  225. const numbers = [];
  226. // 使用exec()方法迭代所有匹配项
  227. while ((matches = regex.exec(str)) !== null) {
  228. // matches[0]是完整的匹配项
  229. numbers.push(Number(matches[0]));
  230. }
  231. return numbers;
  232. } ,
  233. clickDom(e){
  234. this.isClick = true
  235. var dom = e.target.id
  236. var arr = this.extractNumbers(dom)
  237. var ref = 'yiwen'
  238. if(dom.indexOf('claimContentOut')!=-1){
  239. ref = 'yuanwen'
  240. }
  241. if(arr && arr.length>0){
  242. this.to(arr[0],ref)
  243. }
  244. // var refDom = this.$refs.yuanwen
  245. // var activeIndex = 0
  246. // for (let i = 0; i < refDom.children.length; i++) {
  247. // if (refDom.children[i].id == dom) {
  248. // activeIndex = i
  249. // break
  250. // }
  251. // }
  252. // this.to(activeIndex)
  253. },
  254. handleClick(tab, event) {
  255. this.tabItem = this.tabs.find(item=>{
  256. return item.name == this.name
  257. })
  258. if(this.name == 2 && !this.checkedRightTree){
  259. this.$nextTick(()=>{
  260. var dom1 = this.$refs.yuanwen
  261. var dom2 = this.$refs.yiwen
  262. dom1.addEventListener('scroll',this.scrollDom)
  263. dom1.addEventListener('click',this.clickDom)
  264. dom2.addEventListener('click',this.clickDom)
  265. // dom2.addEventListener('scroll',(e)=>{
  266. // this.scrollDom(e,'yiwen')
  267. // })
  268. })
  269. }else{
  270. var dom1 = this.$refs.yuanwen
  271. var dom2 = this.$refs.yiwen
  272. if(dom2){
  273. dom2.removeEventListener('click',this.clickDom)
  274. // dom2.removeEventListener('scroll',this.scrollDom)
  275. }
  276. if(dom1){
  277. dom1.removeEventListener('scroll',this.scrollDom)
  278. dom1.removeEventListener('click',this.clickDom)
  279. }
  280. }
  281. },
  282. changeShowRightTree(){
  283. this.show = true
  284. if (this.checkedRightTree && !this.patent.patentRightTree) {
  285. var data = [
  286.     {
  287.         "sort": 0,
  288.         "parentSorts": [
  289.             -1
  290.         ],
  291.         "content": "1. Apparatus for supporting data storage elements and supplying stored data, said apparatus comprising: \r\na support unit having a plurality of connectors for connecting to a plurality of data storage elements; \r\na cable having a first end connected to said support unit and a second end connected to a main part; \r\na main part defining a first space containing a portion of said cable, and a second space for containing said support unit, such that said support unit is movable between (i) a first position providing access to said data storage elements and (ii) a second position in which said data storage elements are located within said second space; and \r\nguide means configured to cause said cable to develop at least two loops within said first space while said support unit is moved to said second position. \r\n",
  292.         "contentOut":'1.一种用于支持数据存储元件和提供存储数据的装置,所述装置 包括: 支撑单元,具有用于连接多个数据存储元件的多个连接器; 电缆具有连接到所述支撑单元的第一端和连接到主要部分的第二端; 主要部分限定了包含所述电缆的一部分的第一空间和用于容纳所述支撑单元的第二空间,使得所述支撑单元能够在(i)提供对所述数据存储元件的访问的第一位置和(ii)之间移动 所述数据存储元件位于所述第二空间内的第二位置; 和 引导装置被配置为在所述支撑单元移动到所述第二位置时使所述电缆在所述第一空间内形成至少两个环',
  293.         "children": [
  294.             {
  295.                 "sort": 1,
  296.                 "parentSorts": [
  297.                     0
  298.                 ],
  299.                 "content": "2. Apparatus according to claim 1, wherein said apparatus further comprises a plurality of data storage elements, each said data storage element being connected to one of said connectors. \r\n",
  300.                 "contentOut":'2.根据权利要求1所述的设备, 其中 所述设备还包括多个数据存储元件,每个所述数据存储元件连接到所述连接器之一。',
  301.                 "children": [
  302.                     {
  303.                         "sort": 3,
  304.                         "parentSorts": [
  305.                             1
  306.                         ],
  307.                         "content": "4. Apparatus according to claim 2 or claim 3, wherein said guide means comprises a retractable guide member configured to extend along a \r\nportion of said cable as said support unit is moved between said second position and said first position. \r\n",
  308.                         "contentOut":'4.根据权利要求2或3所述的设备, 其中 所述引导装置包括可伸缩的引导构件,该引导构件构造成沿一 当所述支撑单元在所述第二位置和所述第一位置之间移动时,所述电缆的一部分。',
  309.                         "children": [
  310.                             {
  311.                                 "sort": 5,
  312.                                 "parentSorts": [
  313.                                     3
  314.                                 ],
  315.                                 "content": "6. Apparatus according to claim 4 or claim 5, wherein said second space is defined by a box having a second floor, and said cable is arranged to extend between said second floor and a portion of said guide member when said guide member extends through said second space. \r\n",
  316.                                 "contentOut":'6.根据权利要求4或5所述的设备, 其中 所述第二空间由具有第二层的箱体限定,并且当所述引导构件延伸穿过所述第二空间时,所述电缆布置成在所述第二层和所述引导构件的一部分之间延伸。',
  317.                                 "children": []
  318.                             },
  319.                        
  320.                         ]
  321.                     }
  322.                 ]
  323.             },
  324.             {
  325.                 "sort": 2,
  326.                 "parentSorts": [
  327.                     0
  328.                 ],
  329.                 "content": "3. Apparatus according to claim 1 or claim 2, wherein said first space is defined by a box having a floor, and said cable is arranged to extend between said floor and said guide means. \r\n",
  330.                 "contentOut":'3.根据权利要求1或2所述的设备, 其中 所述第一空间由具有地板的盒子限定,并且所述电缆布置成在所述地板和所述引导装置之间延伸。',
  331.                 "children": []
  332.             }
  333.         ]
  334.     },
  335.     {
  336.         "sort": 4,
  337.         "parentSorts": [
  338.             -1
  339.         ],
  340.         "content": "5. Apparatus according to any of claims 2 to 4, wherein said guide means comprises a retractable guide member movable between a first configuration in which a portion of said guide member extends through said second space to a second configuration in which at least a part of said portion is retracted into said first space. \r\n",
  341.         contentOut:'5.根据权利要求2至4中任一项所述的设备, 其中 所述引导装置包括可缩回的引导构件,所述引导构件可在所述引导构件的一部分延伸穿过所述第二空间的第一构造与所述部分的至少一部分缩回所述第一空间的第二构造之间移动。',
  342.         "children": []
  343.     },
  344.     {
  345.         "sort": 6,
  346.         "parentSorts": [
  347.             -1
  348.         ],
  349.         "content": "7. Apparatus according to any of claims 4 to 6, wherein one end of said guide member is retained within said second space. \r\n",
  350.         contentOut:'7.根据权利要求4至6中任一项所述的设备, 其中 所述导向件的一端保持在所述第二空间内。',
  351.         "children": []
  352.     },
  353.     {
  354.         "sort": 7,
  355.         "parentSorts": [
  356.             -1
  357.         ],
  358.         "content": "8. Apparatus according to any of claims 4 to 7, wherein said guide member is configured to roll up while said support unit is moved between said first position and said second position. \r\n",
  359.         contentOut:'8.根据权利要求4至7中任一项所述的设备, 其中 所述引导构件构造成在所述支撑单元在所述第一位置和所述第二位置之间移动时卷起。',
  360.         "children": []
  361.     },
  362.     {
  363.         "sort": 8,
  364.         "parentSorts": [
  365.             -1
  366.         ],
  367.         "content": "9. Apparatus according to any of claims 4 to 8, wherein said guide member is an elongate shape configured to bend easily in one direction and less easily in an opposite direction, so that said guide member bends in a first direction when rolling up, and resists bending in the opposite direction when guiding said cable. \r\n",
  368.         contentOut:'9.根据权利要求4至8中任一项所述的设备, 其中 所述引导件为细长形状,被配置为在一个方向上容易弯曲而在相反方向上不易弯曲,使得所述引导件在卷起时沿第一方向弯曲,并且在引导所述电缆时抵抗相反方向上的弯曲。',
  369.         "children": []
  370.     },
  371.     {
  372.         "sort": 9,
  373.         "parentSorts": [
  374.             -1
  375.         ],
  376.         "content": "10. Apparatus according to any of claims 4 to 9, wherein said guide means comprises a spring, such that force generated by the spring urges said guide member to a retracted configuration. \r\n",
  377.         contentOut:'10.根据权利要求4至9中任一项所述的设备, 其中 所述引导装置包括弹簧,使得由弹簧产生的力将所述引导构件推到缩回构造。',
  378.         "children": []
  379.     },
  380.     {
  381.         "sort": 10,
  382.         "parentSorts": [
  383.             -1
  384.         ],
  385.         "content": "11. Apparatus according to any of claims 4 to 10, wherein said guide member comprises a constant force spring, such that force generated by the constant force spring urges said guide member into a retracted configuration. \r\n",
  386.         contentOut:'11.根据权利要求4至10中任一项所述的设备, 其中 所述引导构件包括恒力弹簧,使得由所述恒力弹簧产生的力将所述引导构件推入缩回配置。',
  387.         "children": []
  388.     },
  389.  
  390. ]
  391. this.$set(this.patent, "patentRightTree", data);
  392. this.$nextTick(()=>{
  393. this.getEchart();
  394. })
  395. // let params = {
  396. // patentNo: this.patent.patentNo,
  397. // appNo: this.patent.rowApplicationNo,
  398. // }
  399. // this.$api
  400. // .getPatentRightTree(params)
  401. // .then((response) => {
  402. // if (response.code == 200) {
  403. // this.$set(this.patent, "patentRightTree", response.data.data);
  404. // this.$nextTick(()=>{
  405. // this.getEchart();
  406. // })
  407. // }
  408. // });
  409. } else if(this.checkedRightTree && this.patent.patentRightTree) {
  410. this.$nextTick(()=>{
  411. this.getEchart();
  412. })
  413. }
  414. },
  415. imageDownLoad(){
  416. var dom = document.getElementById('charts')
  417. html2canvas(dom).then(canvas => {
  418. // 转成图片,生成图片地址
  419. var imgUrl = canvas.toDataURL("image/png");
  420. var blob = this.base64ToBlob(imgUrl)
  421. var eleLink = document.createElement("a");
  422. eleLink.href = URL.createObjectURL(blob); // 转换后的图片地址
  423. eleLink.download = "权要树";
  424. document.body.appendChild(eleLink);
  425. // 触发点击
  426. eleLink.click();
  427. // 然后移除
  428. document.body.removeChild(eleLink);
  429. // const link = document.createElement('a')
  430. // let url = URL.createObjectURL(blob)
  431. // link.href = url
  432. // link.download = item.url.substring(0,item.url.indexOf('?'))
  433. // link.click()
  434. });
  435. },
  436. base64ToBlob(data){
  437. var dataUrl = data.replace('data:image/png;base64,','')
  438. let bstr = window.atob(dataUrl)
  439. let n = bstr.length
  440. let u8arr = new Uint8Array(n)
  441. while (n--) {
  442. u8arr[n] = bstr.charCodeAt(n);
  443. }
  444. return new Blob([u8arr], { type: "image/png" });
  445. },
  446. getData(data) {
  447. data.forEach((item) => {
  448. item.name = Number(item.sort) + 1;
  449. if (item.children && item.children.length > 0) {
  450. this.getData(item.children);
  451. }
  452. });
  453. },
  454. getEchart() {
  455. var data = JSON.parse(JSON.stringify(this.patent.patentRightTree));
  456. this.getData(data);
  457. var that = this
  458. data.forEach((item,index) => {
  459. var option = {
  460. // height: "100%",
  461. backgroundColor: "#fbfbfb",
  462. series: [
  463. {
  464. itemStyle: {
  465. normal: {
  466. color: "#06c",
  467. borderColor: "#06c",
  468. },
  469. emphasis: {
  470. borderColor: "#06c",
  471. color: "#06c",
  472. },
  473. },
  474. lineStyle: {
  475. color: "#2979ff",
  476. },
  477. type: "tree",
  478. data: [item],
  479. // top: "1%",
  480. left: "100px",
  481. // bottom: "1%",
  482. right: "100px",
  483. symbolSize: 0,
  484. symbol: "emptyCircle",
  485. label: {
  486. position: "left",
  487. verticalAlign: "middle",
  488. align: "right",
  489. color: "#293c55",
  490. margin: [2, 4],
  491. borderWidth: 1,
  492. borderColor: "#aaa",
  493. backgroundColor: "white",
  494. borderRadius: 2,
  495. padding: [5, 4],
  496. rich: {
  497. keywords: {
  498. color: "red",
  499. fontSize: "12",
  500. },
  501. index: {
  502. fontSize: 12,
  503. color: "#2979ff",
  504. position: "10%",
  505. },
  506. },
  507. formatter: function(data, data1) {
  508. // rgb(178, 215, 255)
  509. if(data.data.sort+'' == that.isClickId){
  510. data.data.label = {
  511. fontSize: 12,
  512. padding: [5, 4],
  513. backgroundColor: 'rgb(178, 215, 255)',
  514. borderColor: '#aaa',
  515. color: '#293c55',
  516. }
  517. // }else{
  518. // data.data.label = {
  519. // fontSize: 12,
  520. // padding: [5, 4],
  521. // backgroundColor: 'white',
  522. // borderColor: '#aaa',
  523. // color: '#293c55',
  524. // }
  525. }
  526. },
  527. },
  528. leaves: {
  529. label: {
  530. position: "right",
  531. verticalAlign: "middle",
  532. align: "left",
  533. },
  534. },
  535. expandAndCollapse: false,
  536. animationDuration: 550,
  537. animationDurationUpdate: 750,
  538. }
  539. ],
  540. };
  541. this.sendingChart(option,index);
  542. });
  543. },
  544. sendingChart(option,index) {
  545. var myChart = this.$echarts.init(document.getElementById("chart"+index));
  546. myChart.clear();
  547. var option = option;
  548. option && myChart.setOption(option);
  549. myChart.on("click", (param) => {
  550. this.showRightPosition(param.data.sort);
  551. var dom = document.getElementById("chart")
  552. if(!this.isClick){
  553. this.scrollTop = dom.scrollTop
  554. }
  555. this.isClick = true
  556. this.show = false
  557. this.$nextTick(()=>{
  558. this.show = true
  559. this.$nextTick(()=>{
  560. this.getEchart()
  561. this.isClick = false
  562. document.getElementById("chart").scrollTop = this.scrollTop
  563. })
  564. })
  565. });
  566. const eleArr = Array.from(new Set(myChart._chartsViews[0]._data._graphicEls))
  567. const itemHeight = 50
  568. const currentHeight = itemHeight * (eleArr.length-1) || itemHeight
  569. const newHeight = Math.max(currentHeight,itemHeight)
  570. myChart.resize({
  571. height:newHeight+50
  572. })
  573. },
  574. showRightPosition(id) {
  575. var index = this.expends.indexOf(id);
  576. if (index == -1) {
  577. this.expends.push(id);
  578. }else{
  579. this.expends.splice(1,index)
  580. this.expends.push(id);
  581. }
  582. if (this.isClickId + "") {
  583. var dom1 = document.getElementById("right" + this.isClickId);
  584. dom1.style.background = "";
  585. }
  586. this.isClickId = id;
  587. var dom = document.getElementById("right" + id);
  588. dom.style.background = "rgb(178, 215, 255)";
  589. this.$nextTick(()=>{
  590. this.tiaozhuan(id)
  591. })
  592. },
  593. tiaozhuan(id) {
  594. const href = `#right${id}`
  595. const anchor = document.createElement('a');
  596. anchor.href = href;
  597. anchor.style.display = "none";
  598. document.body.appendChild(anchor);
  599. setTimeout(function () {
  600. anchor.click();
  601. document.body.removeChild(anchor);
  602. }, 66);
  603. return true;
  604. },
  605. initData() {
  606. if (this.outside) {
  607. var params = {
  608. // patentCell: 1,
  609. appNo: this.patent.rowApplicationNo,
  610. // pageNum: 1,
  611. // pageSize:10,
  612. // appNo: this.patent.applicationNo,
  613. };
  614. this.loading = true
  615. this.$api.queryExternalClaim(params).then((response) => {
  616. if (response.code == 200) {
  617. this.$set(this.patent, "claim", response.data.claimContent);
  618. this.loading = false
  619. }
  620. }).catch(error=>{
  621. this.loading = false
  622. })
  623. }else{
  624. this.rightData = [
  625.             {
  626.               content:'1. Apparatus for supporting data storage elements and supplying stored data, said apparatus comprising: a support unit having a plurality of connectors for connecting to a plurality of data storage elements; a cable having a first end connected to said support unit and a second end connected to a main part; a main part defining a first space containing a portion of said cable, and a second space for containing said support unit, such that said support unit is movable between (i) a first position providing access to said data storage elements and (ii) a second position in which said data storage elements are located within said second space; and guide means configured to cause said cable to develop at least two loops within said first space while said support unit is moved to said second position.',
  627.               contentOut:'1.一种用于支持数据存储元件和提供存储数据的装置,所述装置 包括: 支撑单元,具有用于连接多个数据存储元件的多个连接器; 电缆具有连接到所述支撑单元的第一端和连接到主要部分的第二端; 主要部分限定了包含所述电缆的一部分的第一空间和用于容纳所述支撑单元的第二空间,使得所述支撑单元能够在(i)提供对所述数据存储元件的访问的第一位置和(ii)之间移动 所述数据存储元件位于所述第二空间内的第二位置; 和 引导装置被配置为在所述支撑单元移动到所述第二位置时使所述电缆在所述第一空间内形成至少两个环。'
  628.             },
  629.             {
  630.               content:'2. Apparatus according to claim 1, wherein said apparatus further comprises a plurality of data storage elements, each said data storage element being connected to one of said connectors.',
  631.               contentOut:'2.根据权利要求1所述的设备, 其中 所述设备还包括多个数据存储元件,每个所述数据存储元件连接到所述连接器之一。'
  632.             },
  633.             {
  634.               content:'3. Apparatus according to claim 1 or claim 2, wherein said first space is defined by a box having a floor, and said cable is arranged to extend between said floor and said guide means.',
  635.               contentOut:'3.根据权利要求1或2所述的设备, 其中 所述第一空间由具有地板的盒子限定,并且所述电缆布置成在所述地板和所述引导装置之间延伸。'
  636.             },
  637.             {
  638.               content:'4. Apparatus according to claim 2 or claim 3, wherein said guide means comprises a retractable guide member configured to extend along a portion of said cable as said support unit is moved between said second position and said first position.',
  639.               contentOut:'4.根据权利要求2或3所述的设备, 其中 所述引导装置包括可伸缩的引导构件,该引导构件构造成沿一 当所述支撑单元在所述第二位置和所述第一位置之间移动时,所述电缆的一部分。'
  640.             },
  641.             {
  642.               "content": "5. Apparatus according to any of claims 2 to 4, wherein said guide means comprises a retractable guide member movable between a first configuration in which a portion of said guide member extends through said second space to a second configuration in which at least a part of said portion is retracted into said first space. \r\n",
  643.               contentOut:'5.根据权利要求2至4中任一项所述的设备, 其中 所述引导装置包括可缩回的引导构件,所述引导构件可在所述引导构件的一部分延伸穿过所述第二空间的第一构造与所述部分的至少一部分缩回所述第一空间的第二构造之间移动。',
  644.             },
  645.             {
  646.               "content": "6. Apparatus according to claim 4 or claim 5, wherein said second space is defined by a box having a second floor, and said cable is arranged to extend between said second floor and a portion of said guide member when said guide member extends through said second space. \r\n",
  647.               "contentOut":'6. 根据权利要求4或5所述的设备, 其中 所述第二空间由具有第二层的箱体限定,并且当所述引导构件延伸穿过所述第二空间时,所述电缆布置成在所述第二层和所述引导构件的一部分之间延伸。',
  648.                                
  649.             },
  650.             {
  651.               "content": "7. Apparatus according to any of claims 4 to 6, wherein one end of said guide member is retained within said second space. \r\n",
  652.               contentOut:'7.根据权利要求4至6中任一项所述的设备, 其中 所述导向件的一端保持在所述第二空间内。',
  653.             },
  654.             {
  655.               "content": "8. Apparatus according to any of claims 4 to 7, wherein said guide member is configured to roll up while said support unit is moved between said first position and said second position. \r\n",
  656.               contentOut:'8.根据权利要求4至7中任一项所述的设备, 其中 所述引导构件构造成在所述支撑单元在所述第一位置和所述第二位置之间移动时卷起。',
  657.             },
  658.             {
  659.               "content": "9. Apparatus according to any of claims 4 to 8, wherein said guide member is an elongate shape configured to bend easily in one direction and less easily in an opposite direction, so that said guide member bends in a first direction when rolling up, and resists bending in the opposite direction when guiding said cable. \r\n",
  660.               contentOut:'9.根据权利要求4至8中任一项所述的设备, 其中 所述引导件为细长形状,被配置为在一个方向上容易弯曲而在相反方向上不易弯曲,使得所述引导件在卷起时沿第一方向弯曲,并且在引导所述电缆时抵抗相反方向上的弯曲。',
  661.             },
  662.             {
  663.               "content": "10. Apparatus according to any of claims 4 to 9, wherein said guide means comprises a spring, such that force generated by the spring urges said guide member to a retracted configuration. \r\n",
  664.               contentOut:'10.根据权利要求4至9中任一项所述的设备, 其中 所述引导装置包括弹簧,使得由弹簧产生的力将所述引导构件推到缩回构造。',
  665.             },
  666.             {
  667.               "content": "11. Apparatus according to any of claims 4 to 10, wherein said guide member comprises a constant force spring, such that force generated by the constant force spring urges said guide member into a retracted configuration. \r\n",
  668.               contentOut:'11.根据权利要求4至10中任一项所述的设备, 其中 所述引导构件包括恒力弹簧,使得由所述恒力弹簧产生的力将所述引导构件推入缩回配置。',
  669.             }
  670.           ]
  671. var content = ''
  672. var contentOut = ''
  673. this.rightData.forEach((item,index)=>{
  674. content += '<div id="claimContent'+ index +'" >'
  675. content += item.content
  676. content += '</div>'
  677. contentOut += '<div id="claimContentOut'+ index +'">'
  678. contentOut += item.contentOut
  679. contentOut += '</div>'
  680. })
  681. this.content = content
  682. this.contentOut = contentOut
  683. }
  684. },
  685. handleResize(event) {
  686. this.fullHeight = document.documentElement.clientHeight;
  687. this.height = this.fullHeight - 350;
  688. },
  689. },
  690. };
  691. </script>
  692. <style lang="scss">
  693. .patent-articles-patent-right {
  694. // margin-bottom: 20px;
  695. .common {
  696. // font-size: 14px;
  697. margin-top: 0;
  698. padding-right: 5px;
  699. word-break: break-all;
  700. }
  701. .title {
  702. font-weight: bold;
  703. border-bottom: 1px solid #e6e6e6;
  704. padding-bottom: 5px;
  705. margin-top: 0;
  706. }
  707. }
  708. .highlight{
  709. background: #c7ebaa;
  710. }
  711. </style>
  712. <style lang="scss" scoped>
  713. .claim{
  714. display: flex;
  715. &>div{
  716. width: 100%;
  717. overflow: auto;
  718. padding: 0 5px;
  719. }
  720. }
  721. </style>