编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

vue-admin-template添加子部门

wxchong 2024-06-22 20:44:31 开源技术 12 ℃ 0 评论
子部门负责人下拉列表
<el-form-item prop="managerId" label="部门负责人">
<el-select v-model="formData.managerId" placeholder="请选择负责人" style="width: 80%" size="mini">
<!-- 下拉选项 循环 负责人数据 label表示显示的字段 value 存储字段 -->
<el-option v-for="item in managerList" :key="item.id" :label="item.username" :value="item.id" />
</el-select>
</el-form-item>

views/department/index.vue

1.记录部门数据

通过current-node-id这个参数向弹窗传值

<add-dept :current-node-id="currentNodeId" :show-dialog.sync="showDialog" />

方法
operateDept(type,id) {
    if (type == 'add') {
        this.showDialog = true
        console.log(id)
        this.currentNodeId = id
    }
}

2.index.vue页面添加调用operateDept方法

<!-- $event 实参 表示类型 -->
<el-dropdown @command="operateDept($event, data.id)">
<!-- 显示区域内容 -->
<span class="el-dropdown-link">
        操作<i class="el-icon-arrow-down el-icon--right" />
</span>
<!-- 下拉菜单选项 -->
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="add">添加子部门</el-dropdown-item>
<el-dropdown-item command="edit">编辑部门</el-dropdown-item>
<el-dropdown-item command="del">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

3.弹窗声明属性,接收父组件的传值


  props: {
          showDialog: {
              type: Boolean,
               default: false
        },
        currentNodeId: {
            type: Number,
            default: null
        }
        },

4.确认和取消



页面按钮

<el-form-item>
<!-- 按钮 -->
<el-row type="flex" justify="center">
<el-col :span="12">
<el-button size="mini" type="primary" @click="btnOK">确定</el-button>
<el-button size="mini" @click="close">取消</el-button>
</el-col>
</el-row>
</el-form-item>

添加方法

methods: {
        close() {
              // 修改父组件的值 子传父
             this.$refs.addDept.resetFields() // 重置表单
             this.$emit('update:showDialog', false)
            },
           async getManagerList() {
             this.managerList = await getUserList()
             console.log('managerList')
             console.log(this.managerList)
           },
           // 点击确定时调用
          btnOK() {
            this.$refs.addDept.validate(async isOK => {
              if (isOK) {
                 await addDepartment({ ...this.formData, pid: this.currentNodeId })
                 // 通知父组件更新
                this.$emit('updateDepartment')
                 // 提示消息
                 this.$message.success('新增部门成功')
                  this.close()
               }
             })
          }
  
        }

后端添加部门代码

@PostMapping
public Result<String> save(@RequestBody Department department){
    departmentService.save(department);
    return Result.success("新增部门成功");
}

父组件向子组件传递一个方法属性@updateDepartment,可以监听子部门,令子部门可以调用该监听方法,那么父组件就调用了该方法。

@updateDepartment="getDepartment"

<!-- 表示会接受子组件的事件  update:showDialog, 值 => 属性 -->
<add-dept :current-node-id="currentNodeId" :show-dialog.sync="showDialog" @updateDepartment="getDepartment" />

因此下图中才可通知父组件更新

await addDepartment({ ...this.formData, pid: this.currentNodeId })

其中addDepartment中的参数...this.formData,表示拷贝了一份formData的数据当做了参数。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表