81bc3c5bdf3d6a6d2c212eff232c94bf7efcf5b6.svn-base 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <template>
  2. <div>
  3. <el-button size="mini" :class="tabType==1 ? 'active' : 'normal'" @click="tabChange('1')">当前数据</el-button>
  4. <!-- <el-button size="mini" :class="tabType==2 ? 'active' : 'normal'" @click="tabChange('2')">历史数据</el-button>-->
  5. <el-button size="mini" :class="tabType==0 ? 'active' : 'normal'" @click="tabChange('0')">全部数据</el-button>
  6. <div class="tree" style="height: 100%;width: 200px;overflow: auto;display: inline-flex;">
  7. <el-tree
  8. class="el-treeWhite"
  9. :data="treeData"
  10. :props="treeProps"
  11. :expand-on-click-node="true"
  12. @node-click="nodeClick"
  13. node-key="id"
  14. :default-expanded-keys="tableDefaultExpandedKeys"
  15. >
  16. <span class="custom-tree-node" slot-scope="{ node, data }">
  17. <span>{{ data.nm }}</span>
  18. <span v-if="data.id.length == 2" style="float:right;color:blue;">
  19. ({{data.children.length}})
  20. </span>
  21. </span>
  22. </el-tree>
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. import { getDuChaFenGongList, getTableId_ny} from "../api/duChaTianBao.js";
  28. export default {
  29. components: {},
  30. props:['rootCode','rootType'],
  31. data() {
  32. return {
  33. treeData: [],
  34. lyjg:[],
  35. tableDefaultExpandedKeys: [],
  36. treeProps: {
  37. label: "nm",
  38. children: "children",
  39. disabled: false,
  40. expandOnClickNode: false ,
  41. first:true
  42. },
  43. staticProvData:{
  44. '11':'北京市' ,
  45. '12':'天津市' ,
  46. '13':'河北省' ,
  47. '14':'山西省' ,
  48. '15':'内蒙古自治区' ,
  49. '21':'辽宁省' ,
  50. '22':'吉林省' ,
  51. '23':'黑龙江省' ,
  52. '31':'上海市' ,
  53. '32':'江苏省' ,
  54. '33':'浙江省' ,
  55. '34':'安徽省' ,
  56. '35':'福建省' ,
  57. '36':'江西省' ,
  58. '37':'山东省' ,
  59. '41':'河南省' ,
  60. '42':'湖北省' ,
  61. '43':'湖南省' ,
  62. '44':'广东省' ,
  63. '45':'广西壮族自治区' ,
  64. '46':'海南省' ,
  65. '50':'重庆市' ,
  66. '51':'四川省' ,
  67. '52':'贵州省' ,
  68. '53':'云南省' ,
  69. '54':'西藏自治区' ,
  70. '61':'陕西省' ,
  71. '62':'甘肃省' ,
  72. '63':'青海省' ,
  73. '64':'宁夏回族自治区' ,
  74. '65':'新疆维吾尔自治区' ,
  75. '66':'新疆生产建设兵团' ,
  76. },
  77. currentEngId:'',
  78. tabType:"0"
  79. };
  80. },
  81. mounted: function() {
  82. this.loadTreeListData();
  83. },
  84. activated(){
  85. console.log('nongyin_tiaobao_activated_tree');
  86. this.loadTreeListData();
  87. },
  88. computed: {
  89. userId: function() {
  90. return localStorage.getItem("userid")
  91. ? localStorage.getItem("userid")
  92. : "1098101939614724096";
  93. }
  94. },
  95. methods: {
  96. tabChange(tabType){
  97. this.tabType = tabType;
  98. this.loadTreeListData();
  99. this.$emit('changeTabType',tabType)
  100. },
  101. loadTreeListData:function(){
  102. try{
  103. getDuChaFenGongList(this.userId,100,this.tabType).then((res) =>{
  104. let _self = this;
  105. _self.lyjg = [];
  106. console.log(res);
  107. var children = [];
  108. var tempTreeData = [];
  109. var hasProv = false;
  110. if(res.data==null || res.data.length==0){
  111. this.treeData = [];
  112. this.$emit('treeNoData',false);
  113. return;
  114. }
  115. res.data.forEach(ele => {
  116. if(ele.id.length == 6){
  117. _self.lyjg.push(ele);
  118. }
  119. });
  120. _self.$emit("emitLyjgList",_self.lyjg);
  121. // res.data.forEach((element,index)=>{
  122. // tempTreeData.forEach((provNode)=>{
  123. // if(element.code.startsWith(provNode.code)){
  124. // provNode['children'].push(element);
  125. // hasProv = true;
  126. // }
  127. // });
  128. // if(!hasProv){
  129. // let newProvNode = {};
  130. // newProvNode['nm'] = _self.staticProvData[element.code.substr(0,2)];
  131. // newProvNode['code'] = element.code.substr(0,2);
  132. // newProvNode['children'] = [];
  133. // newProvNode['children'].push(element);
  134. // tempTreeData.push(newProvNode);
  135. // }
  136. // hasProv = false;
  137. // children.push(element);
  138. // this.$emit('treeNoData',true);
  139. // })
  140. // console.log(tempTreeData);
  141. let data = res.data
  142. data = _self.getTrees(data)
  143. _self.treeData = data;
  144. _self.$emit("emitCurrentNodeId",data[0]);
  145. // _self.treeData = tempTreeData;
  146. // this.$emit("provTreeSelectChange", { 'code':children[0].code, 'name': children[0].nm,'objCode':children[0].objId});
  147. // this.$emit("provTreeSelectChange1", { 'code':'', 'name':'','objCode':''});
  148. // this.$emit("LoadingCompleted",{'type':false});
  149. },(err) =>{});
  150. }catch(e){
  151. this.$message.error('超时');
  152. }
  153. },
  154. //格式化树形数据
  155. getTrees(list) {
  156. //@wxcwater重写方法 适应多个树
  157. let highLevelLength = 99;//预设最大节点id长度,目前最大应该为12,所以设置为99保证正常
  158. let _self =this;
  159. list.forEach((item,index)=>{
  160. item['pidLength'] = item.pid&&item.pid!=''?item.pid.length:0;
  161. if(highLevelLength>item.pidLength){
  162. highLevelLength = item.pidLength;
  163. }
  164. });
  165. console.log(highLevelLength);
  166. let heightLevelNode = [];
  167. list.forEach((item,index)=>{
  168. if(highLevelLength>=item.pidLength){
  169. heightLevelNode.push(item);
  170. }
  171. });
  172. list.forEach((item,index)=>{
  173. heightLevelNode.forEach((pItem)=>{
  174. _self.addTreeNode(pItem,item);
  175. });
  176. });
  177. console.log(heightLevelNode);
  178. return heightLevelNode;
  179. },
  180. addTreeNode:function(treeNode,leafNode){
  181. let _self = this;
  182. if(!treeNode.hasOwnProperty('children')){
  183. treeNode['children'] = [];
  184. }
  185. if(leafNode.pid == treeNode.id){
  186. treeNode.children.push(leafNode);
  187. return;
  188. }
  189. treeNode.children.forEach((item) => {
  190. _self.addTreeNode(item,leafNode);
  191. });
  192. },
  193. /**利用递归格式化每个节点**/
  194. nodeClick: function(data) {
  195. // alert(data.code+data.name+data.type);
  196. //修改逻辑 如果是行政区划 给两个code 一个完整code 一个likecode 用于like查询 省的就是两位 市县的四位 以此类推
  197. // let likeCode = data.code;
  198. // if(data.type == 2){ //行政区
  199. // likeCode = likeCode.endsWith('0000000000')?likeCode.substr(0,likeCode.length-10):likeCode;
  200. // likeCode = likeCode.endsWith('00000000')?likeCode.substr(0,likeCode.length-8):likeCode;
  201. // likeCode = likeCode.endsWith('000000')?likeCode.substr(0,likeCode.length-6):likeCode;
  202. // likeCode = likeCode.endsWith('000')?likeCode.substr(0,likeCode.length-3):likeCode;
  203. // }
  204. // if(data.code.length>2){
  205. // this.$emit("provTreeSelectChange", { 'code':data.code, 'name': data.nm,'objCode':data.objId});
  206. // this.$emit("provTreeSelectChange1", { 'code':data.code, 'name': data.nm,'objCode':data.objId});
  207. // }
  208. console.log(data);
  209. if (data.engId == '' || data.engId == null) {
  210. if(data.noteType=='county'){
  211. getTableId_ny(data.objId,this.persId).then((res)=>{
  212. data.engId = res.data.engId;
  213. data['objId'] = data.objId;
  214. data['id'] = data.id;
  215. // this.loadTreeListData();
  216. console.log("获取的engid是" + data.engId);
  217. this.$emit("emitCurrentNodeId",data);
  218. })
  219. }else{
  220. this.$emit("emitCurrentNodeId",data);
  221. }
  222. }else{
  223. this.$emit("emitCurrentNodeId",data);
  224. }
  225. },
  226. }
  227. };
  228. </script>
  229. <style scoped>
  230. .active{
  231. background: #3f8eff;
  232. color:white;
  233. margin-top: 5px;
  234. margin-bottom: 5px;
  235. width: 60px !important;
  236. padding: 7px 0px !important;
  237. margin-left: 0px !important;
  238. }
  239. .normal{
  240. background: white;
  241. margin-top: 5px;
  242. margin-bottom: 5px;
  243. width: 60px !important;
  244. padding: 7px 0px !important;
  245. margin-left: 0px !important;
  246. }
  247. </style>