赞
踩
把公共的部分单独拆出来,封装到一个新的vue文件夹中, 里面的数据通过父传子的方式传递,子通过props接受(静态代码实现的树状图细看代码展示)
- <template>
- <!-- 组织架构 放一个el-tree -->
- <el-row
- type="flex"
- justify="space-between"
- align="middle"
- style="height: 40px; width: 100%"
- >
- <el-col>
- <!-- 左侧内容 -->
- <span>{{ treeNode.name }}</span>
- </el-col>
- <el-col :span="4">
- <el-row type="flex" justify="end">
- <el-col>{{ treeNode.manager }}</el-col>
- <el-col>
- <!-- 放置下拉菜单 -->
- <el-dropdown>
- <!-- 内容 -->
- <span>
- 操作
- <i class="el-icon-arrow-down" />
- </span>
- <!-- 具名插槽 -->
- <el-dropdown-menu slot="dropdown">
- <!-- 下拉选项 -->
- <el-dropdown-item>添加子部门</el-dropdown-item>
- <el-dropdown-item v-if="!isRoot">编辑部门</el-dropdown-item>
- <el-dropdown-item v-if="!isRoot">删除部门</el-dropdown-item>
- </el-dropdown-menu>
- </el-dropdown>
- </el-col>
- </el-row>
- <!-- 右侧内容 -->
- </el-col>
- </el-row>
- </template>
- <script>
- export default {
- // 组件要对开放 属性 外部需要提供一个对象 对象里面需要有name manger
- // props 可以用数组接受数据 也可以用对象来接受
- // props { props属性: { 配置项}}
- props: {
- treeNode: {
- type: Object, // 数据类型
- require: true // 要求对方使用您的组件的时候 必须传入treeNode属性
- },
- isRoot: {
- type: Boolean,
- default: false
- }
- }
- }
- </script>
- <style></style>
2 父组件中通过引用,来实现,把引入的组件通过compones 注册组件 ,把组件引入到需要的地方,父组件用的时候要传入子组件需要用到的参数,就是子组件props里面申明的值
- <template>
- <div class="dashboard-container">
- <div class="app-container">
- <!-- 组织架构内容 头部 -->
- <el-card class="tree-card">
- <Treetocer :tree-node="company" :is-root="true" />
- <!-- 组织架构 放一个el-tree -->
- <el-tree :data="departs" :props="defaultProps" :default-expand-all="true">
- <!-- 传入内容 插槽内容 会循环多次 有多少节点 就循环多少次 -->
- <!-- 作用域插槽 slot-scope="obj" 接收传递给插槽的数据 data 每个节点的数据对象-->
- <Treetocer slot-scope="{ data }" :tree-node="data" />
- </el-tree>
- </el-card>
- </div>
- </div>
- </template>
- <script>
- import Treetocer from '@/views/departments/componente/tree-tools.vue'
- export default {
- components: {
- Treetocer
- },
- data() {
- return {
- company: { name: '三国之协调有限公司', manager: '负责人' },
- departs: [{ name: '总裁办', manager: '曹操', children: [{ name: '董事会', manager: '曹丕' }] },
- { name: '行政部', manager: '刘备' },
- { name: '人事部', manager: '孙权' }],
- defaultProps: {
- label: 'name' // 表示 从这个属性显示内容
- }
- }
- }
- }
- </script>
- <style scoped>
- .tree-card {
- padding: 30px 140px;
- font-size:14px;
- }
- </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。