doc_template.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <div class="ele-body" style="height: 60vh; overflow: auto">
  3. <el-card shadow="never" v-loading="loading">
  4. <ele-split-layout
  5. width="210px"
  6. allow-collapse
  7. :right-style="{ overflow: 'hidden' }"
  8. >
  9. <div>
  10. <!-- 操作按钮 -->
  11. <ele-toolbar class="ele-toolbar-actions">
  12. <div style="margin: 5px 0"> </div>
  13. </ele-toolbar>
  14. <div
  15. class="ele-border-lighter sys-organization-list"
  16. style="height: 65vh"
  17. >
  18. <el-tree
  19. ref="tree"
  20. :data="data"
  21. highlight-current
  22. :draggable="true"
  23. node-key="id"
  24. :props="{ label: 'name', children: 'sonDirectoryList' }"
  25. :expand-on-click-node="false"
  26. :default-expand-all="true"
  27. @node-click="onNodeClick"
  28. >
  29. <span class="custom-tree-node" slot-scope="{ node, data }">
  30. <ElementTreeLine
  31. :node="node"
  32. :showLabelLine="true"
  33. :indent="20"
  34. >
  35. <img src="../../assets/wjj.png" />
  36. <span>{{ node.label }}</span>
  37. </ElementTreeLine>
  38. </span>
  39. </el-tree>
  40. </div>
  41. </div>
  42. <template v-slot:content>
  43. <FileTableList
  44. ref="tableRef"
  45. :parentData="current"
  46. :disabledTableList="disabledTableList"
  47. />
  48. </template>
  49. </ele-split-layout>
  50. </el-card>
  51. <!-- {{current?.id}} -->
  52. </div>
  53. </template>
  54. <script>
  55. //
  56. import FileTableList from './file-table-listTemplate.vue';
  57. import { getDocTreeListAPI } from './api';
  58. import { mapGetters } from 'vuex';
  59. import ElementTreeLine from 'element-tree-line';
  60. // css
  61. import 'element-tree-line/dist/style.scss';
  62. export default {
  63. components: { FileTableList, ElementTreeLine },
  64. data() {
  65. return {
  66. loading: true,
  67. // 列表数据
  68. data: [],
  69. fileType: 0,
  70. // 选中数据
  71. current: {}
  72. };
  73. },
  74. props: {
  75. lcyStatus: '', //1:文档工作区 2:文档归档区 3:文档发布区 4:文档废止区
  76. disabledTableList: {
  77. //已选择列表
  78. default: () => []
  79. }
  80. },
  81. computed: {
  82. ...mapGetters(['user'])
  83. },
  84. created() {
  85. this.query();
  86. },
  87. methods: {
  88. /* 查询 */
  89. async query() {
  90. this.loading = true;
  91. let query = {
  92. type: this.fileType,
  93. currentUserId: this.user.info.userId
  94. };
  95. this.data = await getDocTreeListAPI(query);
  96. this.current = null;
  97. this.$nextTick(() => {
  98. this.$refs.tree.setCurrentKey(this.data[0].id);
  99. this.onNodeClick(this.data[0]);
  100. });
  101. this.loading = false;
  102. },
  103. /* 选择数据 */
  104. onNodeClick(row) {
  105. if (row) {
  106. this.current = row;
  107. this.$nextTick(() => {
  108. this.$refs.tableRef.reload();
  109. });
  110. } else {
  111. this.current = null;
  112. }
  113. },
  114. getTableList() {
  115. return this.$refs.tableRef.getTableList();
  116. }
  117. }
  118. };
  119. </script>
  120. <style lang="scss" scoped>
  121. .sys-organization-list {
  122. height: calc(100vh - 180px);
  123. box-sizing: border-box;
  124. border-width: 1px;
  125. border-style: solid;
  126. overflow: auto;
  127. }
  128. .sys-organization-list :deep(.el-tree-node__content) {
  129. height: 30px;
  130. & > .el-tree-node__expand-icon {
  131. margin-left: 10px;
  132. }
  133. }
  134. .custom-tree-node {
  135. display: flex;
  136. align-items: center;
  137. }
  138. :deep(.el-popover) {
  139. min-width: 50px;
  140. position: fixed;
  141. }
  142. :deep(.el-link--inner) {
  143. padding: 3px 0;
  144. }
  145. // :deep(.element-tree-node-line-hor) {
  146. // border-bottom: 1px solid #dcdfe6;
  147. // }
  148. // :deep(.element-tree-node-line-ver) {
  149. // border-left: 1px solid #dcdfe6;
  150. // }
  151. </style>
  152. <style lang="scss">
  153. .el-tree
  154. > .el-tree-node
  155. > .el-tree-node__content:nth-of-type(1)
  156. .element-tree-node-line-hor {
  157. border: none;
  158. }
  159. .el-tree
  160. > .el-tree-node
  161. > .el-tree-node__content:nth-of-type(1)
  162. .element-tree-node-line-ver {
  163. border: none;
  164. }
  165. </style>