397697b4b0ca03839f0518ee3e6ce533ceffe8b8.svn-base 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <template>
  2. <el-container>
  3. <el-main style="padding: 10px 10px;" class="problem_view">
  4. <el-row :gutter="10">
  5. <el-col :span="10">
  6. <el-input
  7. clearable
  8. placeholder="输入关键字搜索"
  9. v-model="filterText">
  10. </el-input>
  11. <el-tree
  12. v-loading="showTree"
  13. :highlight-current="true"
  14. class="filter_tree"
  15. icon-class="el-icon-document"
  16. node-key="id"
  17. :current-node-key="firstNode.id"
  18. :data="treeDataLists"
  19. :props="defaultProps"
  20. :default-expand-all="true"
  21. :filter-node-method="filterNode"
  22. @node-click = 'treeNodeClickHandler'
  23. ref="tree">
  24. <div class="custom-tree-node" slot-scope="{ node, data }" style="width: calc(100% - 50px)">
  25. <span v-if="data.children!=undefined" style="display: block;width: 100%;overflow: hidden;word-wrap: break-word;word-break: break-all;text-overflow: ellipsis;color:#333333;font-weight: bold" :title="node.label">{{ node.label}}</span>
  26. <span v-else :title="node.label" style="display: block;width: 100%;overflow: hidden;word-wrap: break-word;word-break: break-all;text-overflow: ellipsis;">{{ node.label}}</span>
  27. </div>
  28. </el-tree>
  29. </el-col>
  30. <el-col :span="14">
  31. <div class="read_law_wrapper">
  32. <h4>{{lawTitle}}</h4>
  33. <p class="doc_num">{{lawNum}}</p>
  34. <p><pre>&#x3000;&#x3000;{{lawContent}}</pre></p>
  35. </div>
  36. </el-col>
  37. </el-row>
  38. </el-main>
  39. </el-container>
  40. </template>
  41. <script>
  42. import request from '@util/gw_ajax_request.js'
  43. export default {
  44. props:['lawName'],
  45. data(){
  46. return{
  47. // 数据加载慢 使用loading模拟延迟加载
  48. showTree: true,
  49. treeDataLists: [
  50. ],
  51. defaultProps: {
  52. children: 'children',
  53. label: 'lawKeyword'
  54. },
  55. filterText: '',
  56. lawTitle: '',
  57. lawNum: '',
  58. lawContent: '',
  59. firstNode: null
  60. }
  61. },
  62. mounted(){
  63. this.getTreeData()
  64. setTimeout(()=>{
  65. this.showTree = false
  66. },3000)
  67. },
  68. methods:{
  69. getTreeData(){
  70. request.get('/tac/slb/law/index/tree').then(res=>{
  71. if(res.success){
  72. let treeDataLists = res.data
  73. treeDataLists.forEach(ele=>{
  74. this.treeDataLists.push({docId:ele.docId,lawKeyword:ele.lawTitle,children:ele.children,id:'0'+ele.docId})
  75. })
  76. // 默认展示第一个子节点的内容
  77. this.firstNode = this.treeDataLists[0].children[0]
  78. this.treeNodeClickHandler(this.firstNode)
  79. this.$nextTick(()=>{
  80. this.filterText = this.lawName;
  81. })
  82. }else{
  83. this.$message.error(res.message)
  84. }
  85. })
  86. },
  87. // 树节点过滤方法
  88. filterNode(value, data) {
  89. if (!value) return true;
  90. // console.log(data.class1Name.indexOf(value))
  91. if(data.lawKeyword){
  92. return data.lawKeyword.indexOf(value) !== -1;
  93. }
  94. },
  95. treeNodeClickHandler(data){
  96. this.lawTitle = data.lawKeyword
  97. this.lawNum = data.lawModify
  98. this.lawContent = data.bookContent
  99. this.lawContent = this.lawContent.replace(this.lawTitle, '');
  100. this.lawContent = this.lawContent.replace(this.lawNum, '');
  101. }
  102. },
  103. watch: {
  104. filterText(val) {
  105. this.$refs.tree.filter(val);
  106. }
  107. },
  108. }
  109. </script>
  110. <style lang="scss">
  111. .filter_tree{
  112. height: calc(100vh - 140px);
  113. overflow: auto;
  114. }
  115. .el-tree /deep/ .current-node{
  116. width: 100%;
  117. }
  118. .el-tree /deep/ .current-node span{
  119. display: block;
  120. width: 100%;
  121. overflow: hidden;
  122. word-wrap: break-word;
  123. word-break: break-all;
  124. text-overflow: ellipsis;
  125. }
  126. .read_law_wrapper{
  127. height: calc(100vh - 140px);
  128. overflow: auto;
  129. padding: 10px;
  130. font-size: 16px;
  131. color: #333;
  132. h4{
  133. font-size: 18px;
  134. text-align: center;
  135. }
  136. .doc_num{
  137. color: #555;
  138. // margin-bottom: 20px;
  139. margin-top: 10px;
  140. font-size: 14px;
  141. text-align: center;
  142. }
  143. // pre {
  144. // white-space: pre-wrap;
  145. // word-wrap: break-word;
  146. // font-size: 16px;
  147. // }
  148. }
  149. .problem_view .el-tree-node__expand-icon.expanded{
  150. -webkit-transform: rotate(0deg);
  151. transform: rotate(0deg);
  152. }
  153. </style>