jinlin
2024-01-31 9025b9cf7ec8610003d445a31d93e35e7bd73c2e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<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>