item.vue 1.86 KB
<style scoped>
.item {
  cursor: pointer; 
}

.chrild-ul {
  padding-left: 21px;
  line-height: 1.5em;
  list-style-type: dot;
} 
</style>
<template>
    <!-- <li>
        <div @click='toggle'>
            <i v-if='isFolder' class="fa " :class="[open?'fa-folder-open':'fa-folder']"></i> 
            <i v-if='!isFolder' class="fa fa-file-text"></i> {{model.hdeptname}}
        </div>
        <ul v-show="open" v-if='isFolder' style="color: red; margin-left: 15px;">
            <items v-for='cel in model.chrild' :model='cel'></items>
        </ul>
    </li> -->
    <li>
    <div  class="item group-btns f-size14" v-on:click="toggle(model.guid)" @dblclick="changeType">    <!-- :class="{bold: isFolder}" -->
      <span class="tbtn tb-add-q" v-if="isFolder && !open"></span><span class="tbtn tb-remove-q" v-if="isFolder && open"></span>{{model.hdeptname}}  <!-- [{{open ? '-' : '+'}}] -->
    </div>
    <ul class="chrild-ul" v-show="open" v-if="isFolder">
      <item class="item" v-for="model in model.chrild" :model="model"></item> 
    </ul>
  </li>

</template>

<script type="text/javascript">
    export default {
        name: 'items',
        props: ['model'],
        components: {},
        data: function () {
            return {
              open: false, 
            }
          },
        computed: {
            isFolder: function() {
                return this.model.chrild && this.model.chrild.length
            }
        },
        methods: {
            toggle: function(guid,hdeptname) { 
                this.$dispatch('child-say',guid); 
                if(this.isFolder) {
                    this.open = !this.open
                }
            },
            changeType: function () {
              if (!this.isFolder) {
                // Vue.set(this.model, 'children', []) 
                this.open = true;
              }
            },  
        }
    }
</script>