Selaa lähdekoodia

@zengqiao@新增修改删除角色

HexOr 3 vuotta sitten
vanhempi
commit
9f83b99e2e

+ 46 - 0
dmp-edge-ai/src/service/RoleService.js

@ -23,3 +23,49 @@ export function list(data) {
23 23
    params: data
24 24
  })
25 25
}
26
27
/**
28
 * 根据角色Id获取角色详情
29
 * @param roleId
30
 */
31
export function getRoleInfo(roleId) {
32
  return request({
33
    url: `/role/info/${roleId}`,
34
    method: 'get'
35
  })
36
}
37
38
/**
39
 * 新增角色
40
 * @param data
41
 */
42
export function add(data) {
43
  return request({
44
    url: '/role/add',
45
    method: 'post',
46
    data
47
  })
48
}
49
50
/**
51
 * 编辑角色
52
 * @param data
53
 */
54
export function edit(data) {
55
  return request({
56
    url: '/role/edit',
57
    method: 'post',
58
    data
59
  })
60
}
61
62
/**
63
 * 根据角色Id删除角色
64
 * @param roleId
65
 */
66
export function deleteRole(roleId) {
67
  return request({
68
    url: `/role/delete/${roleId}`,
69
    method: 'get'
70
  })
71
}

+ 107 - 0
dmp-edge-ai/src/views/system/role/components/BaseDialog.vue

@ -0,0 +1,107 @@
1
<template>
2
  <el-dialog :title="title" class="common-modal" :visible.sync="dialogVisible" width="550px" @open="initData">
3
    <el-form ref="form" :model="form" :rules="rules" label-width="100px">
4
      <el-form-item label="角色名称" prop="roleName">
5
        <el-input v-model.trim="form.roleName"></el-input>
6
      </el-form-item>
7
      <el-form-item label="角色描述" prop="description">
8
        <el-input v-model.trim="form.description"></el-input>
9
      </el-form-item>
10
    </el-form>
11
    <span slot="footer" class="dialog-footer">
12
      <el-button v-if="!submitLoading" type="primary" @click="submit(modalType)">确认</el-button>
13
      <el-button v-else type="primary" :loading="submitLoading">提交中</el-button>
14
      <el-button @click="dialogVisible = false">关闭并返回</el-button>
15
    </span>
16
  </el-dialog>
17
</template>
18
19
<script>
20
import * as RoleService from '@/service/RoleService'
21
import { ModalType } from '@/utils/constant'
22
export default {
23
  name: 'BaseDialog',
24
  props: {
25
    roleId: {
26
      type: [Number, String]
27
    },
28
    show: {
29
      type: Boolean,
30
      required: true,
31
      default: false
32
    }
33
  },
34
  data() {
35
    return {
36
      form: {
37
        roleName: '',
38
        description: ''
39
      },
40
      rules: {
41
        roleName: [{ required: true, message: '请输入角色名称', trigger: 'blur' }]
42
      },
43
      modalType: ModalType.ADD,
44
      submitLoading: false
45
    }
46
  },
47
  computed: {
48
    dialogVisible: {
49
      set(val) {
50
        this.$emit('update:show', val)
51
      },
52
      get() {
53
        return this.show
54
      }
55
    },
56
    title() {
57
      return this.modalType === ModalType.ADD ? '新增角色' : '编辑角色'
58
    }
59
  },
60
  methods: {
61
    /**
62
     * 初始化模态框
63
     */
64
    initData() {
65
      this.$refs.form && this.$refs.form.resetFields()
66
      this.form = {
67
        roleName: '',
68
        description: ''
69
      }
70
      if (this.roleId) {
71
        // 编辑
72
        this.modalType = ModalType.EDIT
73
        RoleService.getRoleInfo(this.roleId).then((res) => {
74
          this.form = { ...res }
75
        })
76
      } else {
77
        // 新增
78
        this.modalType = ModalType.ADD
79
      }
80
    },
81
    submit(type) {
82
      this.$refs['form'].validate(async (valid) => {
83
        if (!valid) {
84
          return
85
        }
86
        const params = { ...this.form }
87
        this.submitLoading = true
88
        try {
89
          if (type === ModalType.ADD) {
90
            // 新增
91
            await RoleService.add(params)
92
          } else {
93
            // 编辑
94
            await RoleService.edit(params)
95
          }
96
          this.dialogVisible = false
97
          this.$emit('refresh')
98
        } finally {
99
          this.submitLoading = false
100
        }
101
      })
102
    }
103
  }
104
}
105
</script>
106
107
<style scoped lang="scss"></style>

+ 39 - 30
dmp-edge-ai/src/views/system/role/index.vue

@ -10,7 +10,7 @@
10 10
          clearable
11 11
          v-model="searchContent.keywords"
12 12
          style="width: 280px"
13
          placeholder="请输入角色名称/数据范围/角色描述"
13
          placeholder="请输入角色名称"
14 14
        ></el-input>
15 15
        <!--    <el-select v-model="searchContent.type" style="width: 200px" placeholder="角色类型" clearable>
16 16
          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
@ -28,10 +28,11 @@
28 28
      <el-table :data="tableData" border :header-cell-style="headerStyle">
29 29
        <el-table-column label="角色名称" prop="roleName" width="180"></el-table-column>
30 30
        <el-table-column label="角色描述" prop="description" show-overflow-tooltip></el-table-column>
31
        <el-table-column label="操作" width="210">
31
        <el-table-column label="操作" width="250">
32 32
          <template slot-scope="{ row }">
33 33
            <a class="table-option" @click="edit(row)">编辑</a>
34 34
            <a class="table-option" @click="assignMenu(row)">菜单分配</a>
35
            <a class="table-option" @click="assignOrganize(row)">组织权限分配</a>
35 36
            <a class="table-option" @click="deleteItem(row)">删除</a>
36 37
          </template>
37 38
        </el-table-column>
@ -50,6 +51,7 @@
50 51
      >
51 52
      </el-pagination>
52 53
    </div>
54
    <base-dialog :show.sync="baseVisible" :roleId="roleId" @refresh="search"> </base-dialog>
53 55
  </div>
54 56
</template>
55 57
@ -59,7 +61,8 @@ import * as RoleService from '@/service/RoleService'
59 61
export default {
60 62
  name: 'Role',
61 63
  components: {
62
    PageHeader
64
    PageHeader,
65
    BaseDialog: () => import('./components/BaseDialog')
63 66
  },
64 67
  data() {
65 68
    return {
@ -76,46 +79,52 @@ export default {
76 79
      pagination: {
77 80
        pageNumber: 1, // 页码
78 81
        pageSize: 10, // 每页条数
79
        total: 50 // 总数
82
        total: 0 // 总数
80 83
      },
81
      options: [
82
        {
83
          value: '选项1',
84
          label: '黄金糕'
85
        },
86
        {
87
          value: '选项2',
88
          label: '双皮奶'
89
        },
90
        {
91
          value: '选项3',
92
          label: '蚵仔煎'
93
        },
94
        {
95
          value: '选项4',
96
          label: '龙须面'
97
        },
98
        {
99
          value: '选项5',
100
          label: '北京烤鸭'
101
        }
102
      ],
103
      tableData: []
84
      tableData: [],
85
      roleId: '',
86
      baseVisible: false
104 87
    }
105 88
  },
106 89
  methods: {
107 90
    addRole() {
108
      console.log(111)
91
      this.roleId = ''
92
      this.baseVisible = true
109 93
    },
110 94
    edit(row) {
111
      console.log(row)
95
      this.roleId = row.roleId
96
      this.baseVisible = true
112 97
    },
113 98
    assignMenu(row) {
114 99
      console.log(row)
115 100
    },
116
    deleteItem(row) {
101
    assignOrganize(row) {
117 102
      console.log(row)
118 103
    },
104
    deleteItem(row) {
105
      this.$confirm(`您确定删除该角色吗?`, '提示', {
106
        confirmButtonText: '确定',
107
        cancelButtonText: '取消',
108
        type: 'warning',
109
        beforeClose: (action, instance, done) => {
110
          if (action === 'confirm') {
111
            instance.confirmButtonLoading = true
112
            instance.confirmButtonText = '删除中...'
113
            RoleService.deleteRole(row.roleId)
114
              .then(() => {
115
                this.search()
116
                done()
117
              })
118
              .finally(() => {
119
                instance.confirmButtonText = '确定'
120
                instance.confirmButtonLoading = false
121
              })
122
          } else {
123
            done()
124
          }
125
        }
126
      })
127
    },
119 128
    handleSizeChange(val) {
120 129
      console.log(`每页 ${val} 条`)
121 130
      console.log(this.pagination)

+ 0 - 1
dmp-edge-ai/src/views/system/user/index.vue

@ -357,7 +357,6 @@ export default {
357 357
      })
358 358
    },
359 359
    changePassword(row) {
360
      console.log(row)
361 360
      this.changePasswordUserId = row.userId
362 361
      this.changePasswordDialog = true
363 362
    },