vue中,机构树改成懒加载之后,无法清空机构树数据,每次打开还都是上次选择的数据

每次点新增,打开,都是上次的数据

<template>
  <div>
    <!-- 面包屑导航 -->
    <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>系统管理</el-breadcrumb-item>
      <el-breadcrumb-item>用户管理</el-breadcrumb-item>
    </el-breadcrumb>

    <!-- 卡片视图 -->
    <el-card>
      <el-form :model="queryInfo" label-width="80px">
        <el-row :gutter="20">
          <el-col :span="6">
            <el-form-item label="用户名">
              <el-input v-model="queryInfo.userId"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="用户姓名">
              <el-input v-model="queryInfo.userName"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="身份证号">
              <el-input v-model="queryInfo.paperNo"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="手机号码">
              <el-input v-model="queryInfo.mobileTel"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="6">
            <!-- 筛选条件机构树 -->
            <el-form-item label="所属机构">
              <!-- <el-input style="width:280px" v-model="queryInfo.deptId" placeholder="维护机构"></el-input> -->
              <el-popover v-model="treeShow" trigger="click" placement="bottom-start">
                <div class="org-tree">
                  <div class="scroll-style">
                    <!-- <el-tree ref="orgTree" :data="orgTree" show-checkbox  :filter-node-method="filterOrgNode" node-key="deptCode" :props="orgTreeProps" > </el-tree> -->
                    <el-tree ref="orgTree"  show-checkbox   node-key="deptCode" :props="props" :load="loadNode" lazy> </el-tree>
                  </div>
                  <div class="org-tree-button">
                    <el-button size="small" type="primary" @click="treeOk">确认</el-button>
                    <el-button size="small" @click="treeCancel">取消</el-button>
                  </div>
                </div>
                <el-input slot="reference" style="width: 100%" readonly @click="treeClick" v-model="queryInfo.deptName" placeholder="请选择机构" />
              </el-popover>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="系统角色">
              <el-select style="width: 100%" v-model="queryInfo.roleId" placeholder="请选择">
                <el-option v-for="item in rolesList" :key="item.roleId" :label="item.roleName" :value="item.roleId"> </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="用户状态">
              <el-select style="width: 100%" v-model="queryInfo.userState" placeholder="请选择用户状态">
                <el-option label="激活" value="0"></el-option>
                <el-option label="锁定" value="1"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="启用状态">
              <el-select style="width: 100%" v-model="queryInfo.userAble" placeholder="请选择用户状态">
                <el-option label="启用" value="0"></el-option>
                <el-option label="停用" value="1"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <!-- 添加按钮 -->
      <el-row >
        <el-col :span="10"> 
          <el-button type="primary" @click="addMethod">新增</el-button>
          <el-button type="primary" @click="getUserList1">查询</el-button>
          <el-button @click="resetForm('ruleForm')">重置</el-button>
        </el-col>
      </el-row>

      <!-- 用户列表 -->
      <el-table :data="userList" border stripe :header-cell-style="{ background: '#98DBFF', color: 'black' }">
        <el-table-column label="用户名" prop="userId"></el-table-column>
        <el-table-column label="姓名" prop="userName"></el-table-column>
        <el-table-column label="身份证号" prop="paperNo"></el-table-column>
        <el-table-column label="所属机构" prop="deptName"></el-table-column>
        <!-- <el-table-column label="系统角色" prop="roleName"></el-table-column> -->
        <el-table-column label="手机号码" prop="mobileTel"></el-table-column>
        <el-table-column label="用户状态" width="150px">
          <!-- 自定义列模板,使用作用域插槽,通过scope.row获取当前行的数据修2 -->
          <template slot-scope="scope">
            <el-switch active-value="0" inactive-value="1" v-model="scope.row.userState" @change="userStateChange(scope.row)"></el-switch>
          </template>
        </el-table-column>
        <el-table-column label="启用状态" width="150px">
          <template slot-scope="scope">
            <el-switch active-value="0" inactive-value="1"  v-model="scope.row.userAble" @change="userAbleChange(scope.row)"></el-switch>
          </template>
        </el-table-column>
        <el-table-column label="操作" width="250px">
          <template slot-scope="scope">
            <el-button type="primary" icon="el-icon-edit" size="mini" @click="showEditDialog(scope.row.id)"></el-button>
            <!-- <el-button type="danger" icon="el-icon-delete" size="mini" @click="removeUserById(scope.row.id)"></el-button> -->
            <el-tooltip effect="dark" content="查看用户角色" placement="top" :enterable="false">
              <el-button type="warning" icon="el-icon-setting" size="mini" @click="showRoleDialog(scope.row.id)"></el-button>
            </el-tooltip>
            <el-tooltip effect="dark" content="重置用户密码" placement="top" :enterable="false">
              <el-button type="warning" icon="el-icon-refresh" size="mini" @click="showResetDialog(scope.row.id)"></el-button>
            </el-tooltip>
          </template>
        </el-table-column>
      </el-table>

      <!-- 分页 -->
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="queryInfo.pagenum"
        :page-sizes="[10, 30, 50, 100]"
        :page-size="queryInfo.pagesize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total"
      >
      </el-pagination>
    </el-card>

    <!-- 添加用户的对话框 -->
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" title="添加用户" :visible.sync="addDialogVisible" width="30%" @close="addDialogClosed">
      <el-form :model="addForm" :rules="addFormRules" ref="addFormRef" label-width="80px" class="demo-ruleForm">
        <el-form-item label="用户名" prop="userId" class="demo-form-inline">
          <el-input v-model="addForm.userId" placeholder="请输入用户名"></el-input>
        </el-form-item>
        <el-form-item label="姓名" prop="userName" class="demo-form-inline">
          <el-input v-model="addForm.userName" placeholder="请输入姓名"></el-input>
        </el-form-item>
        <el-form-item label="身份证号" prop="paperNo" class="demo-form-inline">
          <el-input v-model="addForm.paperNo" placeholder="请输入身份证号"></el-input>
        </el-form-item>
        <!-- 新增用户的所属机构 -->
        <el-form-item label="所属机构" class="demo-form-inline">
          <!-- <el-input style="width:280px" v-model="queryInfo.deptId" placeholder="维护机构"></el-input> -->
          <el-popover v-model="treeShow1" trigger="click" placement="bottom-start">
            <div class="org-tree">
              <div class="scroll-style">
                <!-- <el-tree ref="orgTree1" :data="orgTree1" show-checkbox check-strictly :filter-node-method="filterOrgNode1" node-key="deptCode" :props="orgTreeProps1" @check="checkOrgTree1"> </el-tree> -->
                <el-tree ref="orgTree1"  show-checkbox   node-key="deptCode" :props="props" :load="loadNode" lazy  @check="checkOrgTree1"> </el-tree>
              </div>
              <div class="org-tree-button">
                <el-button size="small" type="primary" @click="treeOk1">确认</el-button>
                <el-button size="small" @click="treeCancel1">取消</el-button>
              </div>
            </div>
            <el-input slot="reference" style="width: 100%" readonly @click="treeClick1" v-model="addForm.deptName" placeholder="请选择机构" />
          </el-popover>
        </el-form-item>
        <el-form-item label="系统角色" prop="roleId">
          <el-select style="width: 100%" v-model="addForm.roleId" placeholder="请选择系统角色" clearable multiple>
            <el-option v-for="item in rolesList" :key="item.roleId" :label="item.roleName" :value="item.roleId"> </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="手机号码" prop="mobileTel" class="demo-form-inline">
          <el-input v-model="addForm.mobileTel"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer" style="display: flex; justify-content: center">
        <el-button type="primary" @click="addUser">确 定</el-button>
        <el-button @click="addDialogVisible = false">取 消</el-button>
      </span>
    </el-dialog>

    <!-- 修改用户的对话框 -->
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" title="修改用户" :visible.sync="editDialogVisible" width="30%" @close="editDialogClosed">
      <el-form :model="editForm" ref="editFormRef" :rules="addFormRules" label-width="80px" class="demo-ruleForm">
        <el-form-item label="用户名" prop="userId" class="demo-form-inline">
          <el-input v-model="editForm.userId" disabled></el-input>
        </el-form-item>
        <el-form-item label="姓名" prop="userName" class="demo-form-inline">
          <el-input v-model="editForm.userName"></el-input>
        </el-form-item>
        <el-form-item label="身份证号" prop="paperNo" class="demo-form-inline">
          <el-input v-model="editForm.paperNo" disabled></el-input>
        </el-form-item>
        <el-form-item label="所属机构" prop="deptCode" class="demo-form-inline">
          <!-- <el-input v-model="editForm.deptCode"></el-input> -->
          <el-popover v-model="treeShow2" trigger="click" placement="bottom-start">
            <div class="org-tree">
              <div class="scroll-style">
                <el-tree ref="orgTree2" :data="orgTree2" show-checkbox check-strictly :filter-node-method="filterOrgNode2" node-key="deptCode" :props="orgTreeProps2" @check="checkOrgTree2"> </el-tree>
              </div>
              <div class="org-tree-button">
                <el-button size="small" type="primary" @click="treeOk2">确认</el-button>
                <el-button size="small" @click="treeCancel2">取消</el-button>
              </div>
            </div>
            <el-input slot="reference" style="width: 100%" readonly @click="treeClick1" v-model="editForm.deptName" placeholder="请选择机构" />
          </el-popover>
        </el-form-item>
        <el-form-item label="系统角色" prop="roleId">
          <el-select style="width: 100%" v-model="editForm.roleId" placeholder="请选择" @change="$forceUpdate()" clearable multiple>
            <el-option v-for="item in rolesList" :key="item.roleId" :label="item.roleName" :value="item.roleId"> </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="手机号码" prop="mobileTel" class="demo-form-inline">
          <el-input v-model="editForm.mobileTel"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer" style="display: flex; justify-content: center">
        <el-button type="primary" @click="editUser">确 定</el-button>
        <el-button @click="editDialogVisible = false">取 消</el-button>
      </span>
    </el-dialog>
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" title="用户角色列表" :visible.sync="roleDialogVisible" width="30%" append-to-body>
      <el-table :data="showRole" border style="width: 100%">
        <el-table-column header-align="center" align="center" prop="roleName" label="角色名称"> </el-table-column>
      </el-table>
      <span slot="footer">
        <el-button @click="roleDialogVisible = false">取 消</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // form: {
      //   userId:"",
      //   userName:"",
      //   paperNo:"",
      //   mobileTel:"",
      //   deptId:"",
      //   roleId:"",
      //   userState:"",
      // },
      // 查询用户列表的参数对象
      queryInfo: {
        // userId:this.form.userId,
        // userName:this.form.userName,
        // paperNo:this.form.paperNo,
        // mobileTel:this.form.mobileTel,
        // deptId:this.form.deptId,
        // roleId:this.form.roleId,
        // userState:this.form.userState,
        userId: '',
        userName: '',
        paperNo: '',
        mobileTel: '',
        deptId: '',
        roleId: '',
        userState: '',
        userAble: '',
        pagenum: 1, // 页码
        pagesize: 10, // 页大小
        deptName: '',
        deptCode: '',
      },
      // 用户列表数据
      userList: [],
      // 总记录数
      total: 0,
      // 添加对话框的显示或隐藏
      addDialogVisible: false,
      // 添加用户的表单数据对象
      addForm: {
        userId: '',
        userName: '',
        paperNo: '',
        mobileTel: '',
        deptCode: '',
        roleId: '',
        deptName: '',
        rolesId: '',
      },
      // 添加用户的校验规则
      addFormRules: {
        userId: [
          { required: true, message: '请输入用户名', trigger: 'blur' },
          { max: 20, message: '长度最多20个字符', required: true, trigger: 'change' },
        ],
        userName: [
          { required: true, message: '请输入姓名', trigger: 'blur' },
          { max: 10, message: '长度最多10个字符', required: true, trigger: 'change' },
        ],
          roleId: [
          { required: true, message: '请输入系统角色', trigger: 'blur' },
        ],
        paperNo: [
          { required: true, message: '请输入身份证号', trigger: 'blur' },
          {
            pattern: /^(([1-9][0-9]{5}(19|20)[0-9]{2}((0[1-9])|(1[0-2]))([0-2][1-9]|10|20|30|31)[0-9]{3}([0-9]|X|x))|([1-9][0-9]{5}[0-9]{2}((0[1-9])|(1[0-2]))([0-2][1-9]|10|20|30|31)[0-9]{3}))$/,
            required: true,
            message: '请输入正确身份证号',
            trigger: 'change',
          },
        ],
        mobileTel: [
          { required: true, message: '请输入手机号', trigger: 'blur' },
          { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, required: true, message: '请输入正确的手机号码', trigger: 'change' },
        ],
      },
      // 修改对话框的显示或隐藏
      editDialogVisible: false,
      editForm: {},

      roleDialogVisible: false,
      userInfo: {
        userId: '',
        // userName:'',
        // roleName:'',
      },
      rolesList: [],
      selectedRoleId: null,
      treeShow: false, // 机构数展开与隐藏
      orgTree: [], // 机构列表
      props: {
          label: 'deptName',
        },
      orgList: [],

      treeShow1: false, // 机构数展开与隐藏
      orgTree1: [], // 机构列表
      orgTreeProps1: {
        children: 'childList',
        label: 'deptName',
      },
      orgList1: [],

      treeShow2: false, // 机构数展开与隐藏
      orgTree2: [], // 机构列表
      orgTreeProps2: {
        children: 'childList',
        label: 'deptName',
      },
      orgList2: [],
      showRole: {},
    }
  },
  created() {
    this.getUserList()
    //this.getOrgTree()
  },
  methods: {
    // 获取顶级
    async getFirstOrg(resolve) {
      const { data: res } = await this.$http.post('dept/getFirstOrg', {
        firstOrgType:"admin"
      })
      if (res.code !== '1') {
        return this.$message.error(res.msg)
      }
      //判断请求回来数据是不是空的
      if(res.obj.deptInfo.length > 0){
          let orgList = res.obj.deptInfo;
          //将处理好的数据扔给resolve函数,数据就会自动渲染到树形上
          return resolve(orgList);
      }else{
          //如果数据是空的  直接扔空数组给resolve
          return resolve([])
      }
      
    },
        //获取下一级
    async getNewOrgLazy(resolve,id) {
      const { data: res } = await this.$http.post('dept/getNewOrgLazy', {
        deptCode:id
      })
      //判断请求回来数据是不是空的
      if(res.obj.deptInfo.length > 0){
          let orgList = res.obj.deptInfo;
          //将处理好的数据给resolve函数,数据就会自动渲染到树形上
          return resolve(orgList);
      }else{
          //如果数据是空的  直接扔空数组给resolve
          return resolve([])
      }
      
    },
    loadNode(node, resolve) {
    //node.level判断当前是不是第一级
    if (node.level === 0) {
        //当前为第一级
        this.getFirstOrg(resolve)
    }else{
         //查询下级
         this.getNewOrgLazy(resolve,node.data.deptCode)

    }
},

    resetForm() {
      this.queryInfo = {
        userId: '',
        userName: '',
        paperNo: '',
        mobileTel: '',
        deptId: '',
        roleId: '',
        userState: '',
        userAble: '',
        pagenum: 1, // 页码
        pagesize: 10, // 页大小
        deptName: '',
        deptCode: '',
      }
      // this.getUserList()
    },
    // 数据重组
    resetOrgList(list) {
      console.log('list', list, list.length)
      const that = this
      for (let i = 0; i < list.length; i++) {
        let obj = list[i]

        // delete obj.childList
        this.orgList.push(obj)
        if (list[i].childList) {
          that.resetOrgList(list[i].childList)
        }
      }
    },
    resetOrgList1(list) {
      console.log('list', list, list.length)
      const that = this
      for (let i = 0; i < list.length; i++) {
        let obj = list[i]

        // delete obj.childList
        this.orgList1.push(obj)
        if (list[i].childList) {
          that.resetOrgList1(list[i].childList)
        }
      }
    },
    resetOrgList2(list) {
      console.log('list', list, list.length)
      const that = this
      for (let i = 0; i < list.length; i++) {
        let obj = list[i]

        // delete obj.childList
        this.orgList2.push(obj)
        if (list[i].childList) {
          that.resetOrgList2(list[i].childList)
        }
      }
    },
    // 获取机构列表
    async getOrgTree() {
      const { data: res } = await this.$http.get('dept/getDeptAdmin', {
        params: { keyWord: '' },
      })
      if (res.code !== '1') {
        return this.$message.error(res.msg)
      }
      this.orgTree = res.obj.deptInfo
      // 重组上级机构数据为列表,用于下拉框
      this.orgList = []
      this.resetOrgList(this.orgTree)
    },

    async getOrgTree1() {
      const { data: res } = await this.$http.get('dept/getDeptAdmin', {
        params: { keyWord: '' },
      })
      if (res.code !== '1') {
        return this.$message.error(res.msg)
      }
      this.orgTree1 = res.obj.deptInfo
      // 重组上级机构数据为列表,用于下拉框
      this.orgList1 = []
      this.resetOrgList1(this.orgTree1)
    },
    async getOrgTree2() {
      const { data: res } = await this.$http.get('dept/getDeptAdmin', {
        params: { keyWord: '' },
      })
      if (res.code !== '1') {
        return this.$message.error(res.msg)
      }
      this.orgTree2 = res.obj.deptInfo
      // 重组上级机构数据为列表,用于下拉框
      this.orgList2 = []
      this.resetOrgList2(this.orgTree2)
    },
    // 点击机构选择确定按钮
    treeOk() {
      const checkNodes = this.$refs.orgTree.getCheckedNodes()
      this.queryInfo.deptName = ''
      this.queryInfo.deptCode = ''
      if (checkNodes.length < 1) {
        this.$message.warning('请选择机构!')
      } else if (checkNodes.length >= 1) {
        for (let index = 0; index < checkNodes.length; index++) {
          this.queryInfo.deptName += checkNodes[index].deptName + ','
          this.queryInfo.deptCode += checkNodes[index].deptCode + ','
        }
        this.queryInfo.deptName = this.queryInfo.deptName.substring(0,this.queryInfo.deptName.lastIndexOf(','));
        this.queryInfo.deptCode = this.queryInfo.deptCode.substring(0,this.queryInfo.deptCode.lastIndexOf(','));
        this.treeShow = false
      }
    },
    treeOk1() {
      const checkNodes1 = this.$refs.orgTree1.getCheckedNodes()

      if (checkNodes1.length < 1) {
        this.$message.warning('请选择机构!')
      } else if (checkNodes1.length >= 1) {
        this.addForm.deptName = checkNodes1[0].deptName
        this.addForm.deptCode = checkNodes1[0].deptCode
        this.treeShow1 = false
      }
    },
    treeOk2() {
      const checkNodes2 = this.$refs.orgTree2.getCheckedNodes()

      if (checkNodes2.length < 1) {
        this.$message.warning('请选择机构!')
      } else if (checkNodes2.length >= 1) {
        this.editForm.deptName = checkNodes2[0].deptName
        this.editForm.deptCode = checkNodes2[0].deptCode
        this.treeShow2 = false
      }
    },
    // 点击机构数取消按钮
    treeCancel() {
      this.treeShow = false
    },
    treeCancel1() {
      this.treeShow1 = false
    },
    treeCancel2() {
      this.treeShow2 = false
    },
    // 点击机构数确认按钮
    checkOrgTree(a, b) {
      if (b.checkedKeys.length > 0) {
        this.$refs.orgTree.setCheckedKeys([a.deptCode])
      }
    },
    checkOrgTree1(a, b) {
      if (b.checkedKeys.length > 0) {
        this.$refs.orgTree1.setCheckedKeys([a.deptCode])
      }
    },
    checkOrgTree2(a, b) {
      if (b.checkedKeys.length > 0) {
        this.$refs.orgTree2.setCheckedKeys([a.deptCode])
      }
    },
    // 点击机构数输入框
    treeClick() {
      this.treeShow = !this.treeShow
    },
    treeClick1() {
      this.treeShow1 = !this.treeShow1
    },
    treeClick2() {
      this.treeShow2 = !this.treeShow2
    },
    // 过滤
    filterOrgNode(value, data) {
      if (!value) return true
      return data.deptName.indexOf(value) !== -1
    },
    filterOrgNode1(value, data) {
      if (!value) return true
      return data.deptName.indexOf(value) !== -1
    },
    filterOrgNode2(value, data) {
      if (!value) return true
      return data.deptName.indexOf(value) !== -1
    },
    //查询
    getUserList1(){
        this.queryInfo.pagenum =1
        this.queryInfo.pagesize = 10
        this.getUserList()
    },
    // 获取用户列表数据
    async getUserList() {
      const { data: res } = await this.$http.post('user/getUsersPage', this.queryInfo)

      if (res.code !== '1') {
        return this.$message.error(res.msg)
      }
      this.userList = res.obj.userList
      this.total = res.obj.count
      this.updateMethod()
    },
    // 监听pagesize改变的事件
    handleSizeChange(pagesize) {
      this.queryInfo.pagesize = pagesize
      this.getUserList()
    },
    // 监听pagenum的事件
    handleCurrentChange(pagenum) {
      this.queryInfo.pagenum = pagenum
      this.getUserList()
    },
    // 监听 switch 开关状态的改变
    async userStateChange(userinfo) {
      const { data: res } = await this.$http.get('user/enableOrDisableUser', {
        params: {
          userId: userinfo.userId,
          userStatus: userinfo.userState,
        },
      })
      if (res.code !== '1') {
        userinfo.userStatus = userinfo.userStatus == 1 ? '0' : '1'
        return this.$message.error(res.msg)
      }
      if(userinfo.userState=='0'){
        this.$message.success('用户已激活!')
      }else{
        this.$message.success('用户已锁定!')
      }

    },
    // 监听 是否停用的 switch 开关状态的改变
    async userAbleChange(userinfo) {
      const { data: res } = await this.$http.get('user/enableOrUserAble', {
        params: {
          userId: userinfo.userId,
          userAble: userinfo.userAble,
        },
      })
      if (res.code !== '1') {
        userinfo.userAble = userinfo.userAble == 1 ? '0' : '1'
        return this.$message.error(res.msg)
      }
      this.$message.success('更新用户停用状态成功!')
    },
    // 监听添加用户对话框的关闭事件
    addDialogClosed() {
      this.$refs.addFormRef.resetFields()
    },
    async addMethod() {
      this.addForm.deptName = ''
      this.addDialogVisible = true
      //this.getOrgTree1()
    },

    // 添加用户
    addUser() {
      this.$refs.addFormRef.validate(async (valid) => {
        if (!valid) {
          return
        }
         if(this.addForm.deptName ==''||this.addForm.deptName==undefined||this.addForm.deptName==null){
          return this.$message.warning("请选择所属机构")
        }
        let ids = this.addForm.roleId
        this.addForm.rolesId = ids.toString()
         const { data: res } = await this.$http.post('user/createUsers', this.addForm)
          if (res.code !== '1') {
            return this.$message.error(res.msg)
          }
            // 关闭对话框
          this.addDialogVisible = false
          // 刷新用户列表
          this.getUserList()
          // 提示添加成功
          this.$message.success(res.msg)
           this.addForm.roleId = ''
      })
    },
    // 获取用户信息角色列表
    async showRoleDialog(id) {
      const { data: res } = await this.$http.get('user/getRoleById', {
        params: {
          id: id,
        },
      })
      if (res.code !== '1') {
        return this.$message.error(res.msg)
      }
      this.showRole = res.obj.userInfo
      this.roleDialogVisible = true
    },
    // 显示编辑用户对话框
    async showEditDialog(id) {
      const { data: res } = await this.$http.get('user/getUserInfoById', {
        params: {
          id: id,
        },
      })
      if (res.code !== '1') {
        return this.$message.error(res.msg)
      }
      this.editForm = res.obj.userInfo
      let roleId = res.obj.userInfo.roleList.toString()
      let ids = roleId.split(',')
      for (var i = 0; i < ids.length; i++) {
        ids[i] = parseInt(ids[i])
      }
      this.editForm.roleId = ids
      this.editDialogVisible = true
      this.updateMethod()
      this.getOrgTree2()
    },
    async updateMethod() {
      const { data: res } = await this.$http.get('/role/getRolesByAdmin')
      if (res.code !== '1') {
        return this.$message.error('获取角色列表失败')
      }

      this.rolesList = res.obj.rolesList
    },
    // 修改用户
    editUser() {
      this.$refs.editFormRef.validate(async (valid) => {
        if (!valid) {
          return
        }
        if(this.editForm.deptName ==''||this.editForm.deptName==undefined||this.editForm.deptName==null){
          return this.$message.warning("请选择所属机构")
        }
        let ids = this.editForm.roleId
        this.editForm.rolesId = ids.toString()
        this.editForm.roleId = ''
        const { data: res } = await this.$http.post('user/updateUser', this.editForm)

        if (res.code !== '1') {
          return this.$message.error(res.msg)
        }
        this.editDialogVisible = false
        this.getUserList()
        this.$message.success('修改用户成功!')
      })
    },
    // 监听修改用户对话框的关闭事件
    editDialogClosed() {
      this.$refs.editFormRef.resetFields()
    },
    // 根据ID删除用户
    removeUserById(id) {
      this.$confirm('确定要删除该用户吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      })
        .then(async () => {
          const { data: res } = await this.$http.get('user/delUserInfoById', {
            params: {
              id: id,
            },
          })
          if (res.code !== '1') {
            return this.$message.error(res.msg)
          }
          this.getUserList()
          this.$message.success('删除用户成功!')
        })
        .catch(() => {
          this.$message.info('已取消删除')
        })
    },
    // 根据ID重置用户密码
    showResetDialog(id) {
      this.$confirm('确定要重置该用户吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      })
        .then(async () => {
          const { data: res } = await this.$http.get('user/resetUserInfoById', {
            params: {
              id: id,
            },
          })
          if (res.code !== '1') {
            return this.$message.error(res.msg)
          }
          this.getUserList()
          this.$message.success('重置成功,用户初始密码为Ab111111')
        })
        .catch(() => {
          this.$message.info('已取消用户密码重置')
        })
    },
  },
}
</script>

<style lang="less" scoped>
.demo-form-inline /deep/.el-input__inner {
  text-align: center;
}
.scroll-style {
  max-height: 200px;
  overflow: auto;
  border-radius: 5px;
}
</style>
阅读 1.6k
1 个回答

vue 是数据驱动,所以你只需要给数据的值清空即可。

如果是组件内部维护状态,那么一般来说是让组件重新渲染,你加一个 v-if="addDialogVisible" 即可

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题