<template> 
 | 
  <div shadow="never" class="aui-card--fill" style="padding: 5px"> 
 | 
    <div class="mod-sys__user"> 
 | 
      <el-row :gutter="20"> 
 | 
        <el-col :span="5"> 
 | 
          <zt-dept-tree @on-selected="onDeptSelected"/> 
 | 
        </el-col> 
 | 
        <el-col :span="19"> 
 | 
          <zt-table-wraper ref="tableObj" query-url="/sys/user/page" delete-url="/sys/user" export-url="/sys/user/export" v-slot="{ table }"> 
 | 
            <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()"> 
 | 
              <el-form-item> 
 | 
                <el-input v-model="dataForm.username" :placeholder="$t('user.username')" clearable></el-input> 
 | 
              </el-form-item> 
 | 
              <el-form-item> 
 | 
                <zt-button type="query" @click="table.query()"/> 
 | 
                <zt-button type="add" perm="sys:user" @click="table.editHandle()"/> 
 | 
                <zt-button type="delete" perm="sys:user:delete" @click="table.deleteHandle()"/> 
 | 
              </el-form-item> 
 | 
            </el-form> 
 | 
            <el-table v-loading="table.dataLoading" :data="table.dataList" border 
 | 
                      v-adaptive="{bottomOffset:50}" 
 | 
                      style="margin-top:10px" 
 | 
                      height="650px" 
 | 
                      @selection-change="table.selectionChangeHandle" @sort-change="table.sortChangeHandle"> 
 | 
              <el-table-column type="selection" width="40"/> 
 | 
              <el-table-column prop="username" :label="$t('user.username')" sortable="custom"/> 
 | 
              <el-table-column prop="realName" :label="$t('user.realName')" ></el-table-column> 
 | 
              <el-table-column prop="deptName" :label="$t('user.deptName')"/> 
 | 
              <el-table-column prop="mobile" :label="$t('user.mobile')"/> 
 | 
              <zt-table-column-dict prop="status" :label="$t('user.status')" dict="user_status" width="70"/> 
 | 
              <zt-table-column-handle :table="table" edit-perm="sys:user:update" delete-perm="sys:user:delete" width="160"> 
 | 
                <template v-slot="{ row }"> 
 | 
                  <zt-dropdown> 
 | 
                    <el-dropdown-item @click.native="setRole(row)">{{ $t('user.setRole') }}</el-dropdown-item> 
 | 
                    <el-dropdown-item @click.native="resetPassword(row)">{{ $t('user.resetPassword')}}</el-dropdown-item> 
 | 
                  </zt-dropdown> 
 | 
                </template> 
 | 
              </zt-table-column-handle> 
 | 
            </el-table> 
 | 
            <!-- 弹窗, 新增 / 修改 --> 
 | 
            <add-or-update @refreshDataList="table.query"/> 
 | 
            <user-role ref="userRole"></user-role> 
 | 
          </zt-table-wraper> 
 | 
        </el-col> 
 | 
      </el-row> 
 | 
    </div> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
  import AddOrUpdate from './user-add-or-update' 
 | 
  import UserRole from './user-role' 
 | 
  
 | 
  export default { 
 | 
    data() { 
 | 
      return { 
 | 
        selectDeptFlag: false, 
 | 
        dataForm: { 
 | 
          username: '', 
 | 
          deptId: '', 
 | 
          companyId: '' 
 | 
        } 
 | 
      } 
 | 
    }, 
 | 
    watch: { 
 | 
      filterCompany(val) { 
 | 
        this.$refs.companyTree.filter(val) 
 | 
      } 
 | 
    }, 
 | 
    methods: { 
 | 
      onDeptSelected(data) { 
 | 
        if (!data.company) { 
 | 
          this.dataForm.deptId = data.id 
 | 
          this.dataForm.companyId = data.companyId 
 | 
          this.selectDeptFlag = true 
 | 
        } else { 
 | 
          this.dataForm.deptId = '' 
 | 
          this.dataForm.companyId = data.id 
 | 
          this.selectDeptFlag = false 
 | 
        } 
 | 
        this.$refs.tableObj.query() 
 | 
      }, 
 | 
      // 设置角色 
 | 
      async setRole(user) { 
 | 
        this.$refs['userRole'].$refs['dialog'].init(user.id, user) 
 | 
      }, 
 | 
      // 重置用户密码 
 | 
      async resetPassword(row) { 
 | 
        let res = await this.$tip.confirm('确定要重置用户密码吗?') 
 | 
        if (res) { 
 | 
          let resUrl = await this.$http.get('/sys/user/resetPassword?id=' + row.id) 
 | 
          if (resUrl.success) { 
 | 
            await this.$tip.success() 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    }, 
 | 
    mounted() { 
 | 
    }, 
 | 
    components: { 
 | 
      AddOrUpdate, 
 | 
      UserRole 
 | 
    } 
 | 
  } 
 | 
</script> 
 |