38adc0f1c2f6c63ccebe813ceb269e220ebc8ce7.svn-base 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <template>
  2. <el-tree ref="attrList"
  3. class="el-treeWhite"
  4. :data="treeData"
  5. show-checkbox
  6. @check-change="handleCheckChange"
  7. :props="treeProps"
  8. :expand-on-click-node="false"
  9. @node-click="nodeClick"
  10. node-key="id"
  11. :default-expanded-keys="tableDefaultExpandedKeys"
  12. lazy
  13. :load="loadAddvData"
  14. style="max-height:100%;overflow:auto;"
  15. default-expand-all
  16. ></el-tree>
  17. <!--default-expand-all-->
  18. </template>
  19. <script>
  20. import {getNodeByPidAndCode} from "../../api/duChaAPI.js";
  21. import {getadCodeByPresId} from "../../api/duChaAPI.js";
  22. export default {
  23. components: {},
  24. props: ['pid','type','pidNodes'],
  25. // props:['rootCode','rootType'],
  26. data() {
  27. return {
  28. treeData: [],
  29. code:'45',
  30. tableDefaultExpandedKeys: [],
  31. treeProps: {
  32. label: "pnm",
  33. children: "children",
  34. disabled: false,
  35. expandOnClickNode: false,
  36. first: true,
  37. },
  38. checkedData: [],
  39. };
  40. },
  41. mounted: function () {
  42. this.loadTreeListData();
  43. },
  44. computed: {
  45. userId: function () {
  46. return localStorage.getItem("userid")
  47. ? localStorage.getItem("userid")
  48. : "1098101939614724096";
  49. }
  50. },
  51. methods: {
  52. // 初始化加载树的方法
  53. loadTreeListData: function () {
  54. //
  55. try {
  56. // 根据用户ID获取县的行政区划
  57. getadCodeByPresId(this.userId,this.type).then((data) => {
  58. this.code = data.data;
  59. // 获取节点数据根据节点ID和行政区划
  60. let _pid = this.pid;
  61. getNodeByPidAndCode(this.pid,this.code,this.type).then((res) => {
  62. console.log(res);
  63. let children = [];
  64. res.data.forEach((element, index) => {
  65. children.push(element);
  66. })
  67. console.log(children);
  68. if(children.length == 0 && _pid.length == 12){
  69. this.pidNodes.forEach((element, index) => {
  70. children.push(element);
  71. })
  72. }
  73. this.treeData = children;
  74. }, (err) => {});
  75. }, (err) => {
  76. console.log(err);
  77. });
  78. } catch (e) {
  79. this.$message.error('超时');
  80. }
  81. },
  82. // 节点点击事件
  83. nodeClick: function (data) {
  84. // alert(data.id);
  85. },
  86. // 加载子节点数据的方法
  87. loadAddvData: function (node, resolve) {
  88. console.log(node.data)
  89. //
  90. try {
  91. if (this.first) {
  92. this.first = false;
  93. } else {
  94. if(node.data.id != null){
  95. getNodeByPidAndCode(node.data.id, this.code,this.type).then(
  96. response => {
  97. var data = response.data;
  98. var children = [];
  99. data.forEach((element, index) => {
  100. children.push(element);
  101. })
  102. console.log(children);
  103. resolve(children);
  104. },
  105. response => {
  106. }
  107. );
  108. }else{
  109. // node.store.defaultExpandAll = false;
  110. resolve()
  111. // node.store.defaultExpandAll = false;
  112. }
  113. }
  114. } catch (e) {
  115. }
  116. },
  117. // 选中或取消事件
  118. handleCheckChange: function (data, checked, indeterminate) {
  119. // this.loadAddvData(data);
  120. let _self = this;
  121. if (checked) {
  122. _self.checkedData.push({
  123. 'id': data.id,
  124. 'pnm': data.pnm,
  125. 'code': data.code,
  126. 'objId': data.objId,
  127. 'engId': data.engId
  128. });
  129. } else {
  130. let newCheckedData = [];
  131. _self.checkedData.forEach((element, index) => {
  132. if (element.id == data.id || element.engId == data.engId) {
  133. console.log("进来了");
  134. } else {
  135. newCheckedData.push(element);
  136. }
  137. });
  138. _self.checkedData = newCheckedData;
  139. }
  140. console.log('newChecked:' + _self.checkedData);
  141. this.$emit('treeCheckedDataChange', {
  142. 'newCheckedArray': _self.checkedData,
  143. 'changedItem': data,
  144. 'newStatus': checked
  145. });
  146. },
  147. }
  148. };
  149. </script>
  150. <style scoped>
  151. </style>