| ¶Ô±ÈÐÂÎļþ | 
|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <div class="tree"> | 
|---|
|  |  |  | <div v-for="(item, index) of list" :key="index" @click.stop="clickIten(item)"> | 
|---|
|  |  |  | <div class="tree_item"> | 
|---|
|  |  |  | <i class="el-icon-caret-bottom" :class="{ 'activeColor': item.actived === 1 }" v-show="item.fsStatus === 1 && item.childList.length > 0"></i> | 
|---|
|  |  |  | <i class="el-icon-caret-right color" v-show="item.childList.length > 0 && (item.fsStatus === 0 || !item.fsStatus)"></i> | 
|---|
|  |  |  | <div class="tree_item_label long-title-style" :title="item.name" :class="{ 'activeColor':  item.actived === 1 }">{{ item.name }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="tree_childern" v-show="item.fsStatus === 1"> | 
|---|
|  |  |  | <tree | 
|---|
|  |  |  | :list="item.childList" | 
|---|
|  |  |  | :alllist="alllist" | 
|---|
|  |  |  | :defaultProps="defaultProps" | 
|---|
|  |  |  | @callback="callback" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <!-- @callback="callback" --> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | // import Bus from '@/utils/eventBus' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'tree', | 
|---|
|  |  |  | props: { | 
|---|
|  |  |  | list: { | 
|---|
|  |  |  | type: Array, | 
|---|
|  |  |  | required: false, | 
|---|
|  |  |  | default: () => [] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | alllist: { | 
|---|
|  |  |  | type: Array, | 
|---|
|  |  |  | required: false, | 
|---|
|  |  |  | default: () => [] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | defaultProps: { | 
|---|
|  |  |  | type: Object, | 
|---|
|  |  |  | require: false, | 
|---|
|  |  |  | default: () => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | name: 'name', | 
|---|
|  |  |  | status: 'status', | 
|---|
|  |  |  | children: 'children', | 
|---|
|  |  |  | id: 'id', | 
|---|
|  |  |  | erpId: 'erpId' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | tempItem: { | 
|---|
|  |  |  | id: null, | 
|---|
|  |  |  | name: null, | 
|---|
|  |  |  | erpId: null | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | listForList(){ | 
|---|
|  |  |  | // console.log('===============================',this.alllist) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // ç¹å»å½å项 | 
|---|
|  |  |  | clickIten (item) { | 
|---|
|  |  |  | // this.listForList() | 
|---|
|  |  |  | const fsDate = item.fsDate === 0 || !item.fsDate ? 1 : 0 | 
|---|
|  |  |  | this.alllist.forEach(i => { | 
|---|
|  |  |  | i.fsDate = 0 | 
|---|
|  |  |  | i.actived = 0 | 
|---|
|  |  |  | this.recursion1(i.childList) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | item.fsDate = fsDate | 
|---|
|  |  |  | item.actived = 1 | 
|---|
|  |  |  | if (item.childList.length > 0) { | 
|---|
|  |  |  | item.fsStatus === 0 || !item.fsStatus ? item.fsStatus = 1 : item.fsStatus = 0 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.$emit('callback', item, item) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | recursion1 (children) { | 
|---|
|  |  |  | if (!children || children.length === 0){ | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | children.forEach(item => { | 
|---|
|  |  |  | item.actived = 0 | 
|---|
|  |  |  | if (item.childList && item.childList.length > 0) { | 
|---|
|  |  |  | this.recursion1(item.childList) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // item[this.defaultProps.status] = false | 
|---|
|  |  |  | // if (item[this.defaultProps.children]) { | 
|---|
|  |  |  | //   this.recursion(item[this.defaultProps.children]) | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | callback (data, item) { | 
|---|
|  |  |  | if (this.tempItem.id === data.id) { | 
|---|
|  |  |  | this.tempItem = {} | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.tempItem.id = data.id | 
|---|
|  |  |  | this.tempItem.name = data.name | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.$emit('callback', data, item) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | .tree { | 
|---|
|  |  |  | /*width: 100%;*/ | 
|---|
|  |  |  | /*height: auto;*/ | 
|---|
|  |  |  | /*border-radius: 5px;*/ | 
|---|
|  |  |  | /*overflow: hidden;*/ | 
|---|
|  |  |  | /*border: 1px solid #eeeeee;*/ | 
|---|
|  |  |  | /*box-sizing: border-box;*/ | 
|---|
|  |  |  | .tree_childern { | 
|---|
|  |  |  | margin-left: 20px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .activeItem { | 
|---|
|  |  |  | background: #F4F7FC; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .tree_item { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | height: 48px; | 
|---|
|  |  |  | cursor: pointer; | 
|---|
|  |  |  | padding-left: 10px; | 
|---|
|  |  |  | .tree_item_label { | 
|---|
|  |  |  | font-size: 14px; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #333333; | 
|---|
|  |  |  | white-space: nowrap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | i { | 
|---|
|  |  |  | margin-right: 5px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .color { | 
|---|
|  |  |  | color: #999999 !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .activeColor { | 
|---|
|  |  |  | color: #305ED5 !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|