details_2.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <template>
  2. <div class="height_100">
  3. <el-container>
  4. <!-- <el-header>
  5. <div class="head">
  6. <el-button type="primary" size="small" v-if="isEdit" @click="cancel" class="margin-right_10">取消编辑</el-button>
  7. <el-button type="primary" size="small" v-if="isEdit" @click="save" class="margin-right_10">保存</el-button>
  8. <el-button type="primary" size="small" v-else @click="edit" class="margin-right_10">编辑</el-button>
  9. </div>
  10. </el-header> -->
  11. <el-main v-DivHeight="getDivHeight" class="Evidence_details">
  12. <el-table :data="tableData" border v-loading="loading" :maxHeight="tableHeight">
  13. <el-table-column v-for="item in column"
  14. :render-header="$commonJS.renderHeaderMethods" :key="item.value" :prop="item.field" :label="item.name"
  15. align="center">
  16. <template slot-scope="scope">
  17. <my-RichText v-model="scope.row[item.value]" v-if="isEdit"></my-RichText>
  18. <div class="text" v-else v-html="scope.row[item.value]"></div>
  19. </template>
  20. </el-table-column>
  21. </el-table>
  22. </el-main>
  23. </el-container>
  24. </div>
  25. </template>
  26. <script>
  27. import { getTableHeight } from '@/views/components/mixins'
  28. export default {
  29. components: {},
  30. mixins:[getTableHeight],
  31. props: {},
  32. data() {
  33. return {
  34. tableData2:[],
  35. tableData:[],
  36. column:[],
  37. loading:false,
  38. isEdit:false,
  39. };
  40. },
  41. watch: {},
  42. computed: {},
  43. created() {},
  44. mounted() {
  45. this.init()
  46. },
  47. methods: {
  48. async init(){
  49. // if(this.str){
  50. // var data = JSON.parse(this.str)
  51. // this.column = data.column
  52. // this.tableData = data.tableData
  53. // return
  54. // }
  55. var str = localStorage.getItem('details_2')
  56. if(str){
  57. var data = JSON.parse(str)
  58. this.column = data.column
  59. this.tableData = data.tableData
  60. return
  61. }
  62. var url = './三性表格.html'
  63. this.loading = true
  64. await fetch(url).then(res => res.text() ).then(data => {
  65. var html = data
  66. const parser = new DOMParser();
  67. // 解析包含 HTML 实体的字符串
  68. const doc = parser.parseFromString(html, "text/html");
  69. console.log(doc.body.getElementsByTagName('tr'))
  70. var trList = doc.body.getElementsByTagName('tr')
  71. var head = trList[0]
  72. console.log(head.getElementsByTagName('td'))
  73. var headList = head.getElementsByTagName('td')
  74. var column = []
  75. for(var i = 0;i<headList.length;i++){
  76. var obj = {
  77. value:headList[i].innerText,
  78. field:headList[i].innerText,
  79. name:headList[i].innerText
  80. }
  81. column.push(obj)
  82. }
  83. var tableData = []
  84. for(var i = 1;i<trList.length;i++){
  85. var bodyList = trList[i].getElementsByTagName('td')
  86. var obj = {}
  87. for(var j = 0;j<bodyList.length;j++){
  88. obj[headList[j].innerText] = bodyList[j].innerHTML
  89. }
  90. tableData.push(obj)
  91. }
  92. this.column = column
  93. this.tableData = tableData
  94. this.loading = false
  95. })
  96. },
  97. //编辑
  98. async edit(){
  99. this.tableData2 = JSON.parse(JSON.stringify(this.tableData))
  100. this.isEdit = true
  101. },
  102. //保存
  103. save(){
  104. var data = {
  105. column:this.column,
  106. tableData:this.tableData
  107. }
  108. // console.log(JSON.stringify(data))
  109. localStorage.setItem('details_1',JSON.stringify(data))
  110. this.isEdit = false
  111. },
  112. //取消编辑
  113. cancel(){
  114. this.tableData = JSON.parse(JSON.stringify(this.tableData2))
  115. this.isEdit = false
  116. },
  117. },
  118. };
  119. </script>
  120. <style lang="scss" scoped>
  121. .head{
  122. width:100%;
  123. display: flex;
  124. flex-direction: row-reverse;
  125. }
  126. .text{
  127. text-align: left;
  128. }
  129. </style>
  130. <style lang="scss">
  131. .Evidence_details .el-table .el-table__cell {
  132. vertical-align: top;
  133. /* 其他样式... */
  134. }
  135. </style>