chao 3 éve
szülő
commit
db94f0ff06

+ 2 - 2
src/router/modules/sys.js

@@ -57,14 +57,14 @@ const sysRouter = {
         {
           path: 'edit',
           hidden: true,
-          component: () => import('@/views/sys/roles/update.vue'),
+          component: () => import('@/views/sys/roles/form.vue'),
           name: 'SysRoleEdit',
           meta: { title: '编辑角色' }
         },
         {
           path: 'add',
           hidden: true,
-          component: () => import('@/views/sys/roles/add.vue'),
+          component: () => import('@/views/sys/roles/form.vue'),
           name: 'SysRoleEdit',
           meta: { title: '添加角色' }
         }

+ 0 - 13
src/views/sys/roles/add.vue

@@ -1,13 +0,0 @@
-<template>
-  <roles-detail :is-edit="false" />
-</template>
-<script>
-import RolesDetail from './components/rolesDetail'
-export default {
-  name: 'AddRoles',
-  components: { RolesDetail }
-}
-</script>
-<style>
-</style>
-

+ 0 - 181
src/views/sys/roles/components/rolesDetail.vue

@@ -1,181 +0,0 @@
-<template>
-  <el-card class="form-container" shadow="never">
-    <el-form ref="rolesFrom" :model="rolesForm" :rules="rules" label-width="150px">
-      <el-form-item label="角色名称:" prop="roleName">
-        <el-input v-model="rolesForm.roleName" maxlength="20" />
-      </el-form-item>
-      <el-form-item label="角色描述:" prop="roleDesc">
-        <el-input v-model="rolesForm.roleDesc" maxlength="20" />
-      </el-form-item>
-      <el-form-item label="角色授权:">
-        <el-tree ref="tree" :data="treeData" show-checkbox node-key="id" :props="defaultProps" @node-click="handleNodeClick" />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="onSubmit('rolesFrom')">提交</el-button>
-        <el-button v-if="!isEdit" @click="resetForm('rolesFrom')">重置</el-button>
-      </el-form-item>
-    </el-form>
-  </el-card>
-</template>
-
-<script>
-import { updateRole, createRole } from '@/api/role'
-import { sysMenuTree } from '@/api/menu'
-import { validAlphabets } from '@/utils/validate'
-
-const defaultRole = {
-  roleDesc: '',
-  roleName: '',
-  menuIds: '',
-  id: 0
-}
-export default {
-  name: 'RolesFormDetail',
-  // components: { SingleUpload },
-  filters: {},
-  props: {
-    isEdit: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    const validateRoleName = (rule, value, callback) => {
-      if (!validAlphabets(value)) {
-        callback(new Error('请输入英文角色名称'))
-      } else {
-        callback()
-      }
-    }
-    return {
-      rolesForm: Object.assign({}, defaultRole),
-      selectProductCateList: [],
-      rules: {
-        roleName: [
-          { required: true, message: '请输入英文角色名称', trigger: 'blur', validator: validateRoleName },
-          { min: 2, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
-        ],
-        roleDesc: [
-          { required: true, message: '请输入角色描述', trigger: 'blur' },
-          { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
-        ]
-      },
-      treeData: [],
-      defaultProps: {
-        children: 'subMenus',
-        label: 'title'
-      },
-      filterProductAttrList: [
-        {
-          value: []
-        }
-      ],
-      changOptionName: ''
-    }
-  },
-  created() {
-    // eslint-disable-next-line no-empty
-    if (this.isEdit) {
-
-    } else {
-      this.rolesForm = Object.assign({}, defaultRole)
-    }
-    this.getSysMenuTree()
-  },
-  methods: {
-    handleNodeClick(data, node) {
-      console.log(node)
-    },
-    getSysMenuTree() {
-      // 属性菜单
-      sysMenuTree().then(response => {
-        this.treeData = response.data
-      })
-    },
-    onSubmit(formName) {
-      this.$refs[formName].validate(valid => {
-        if (valid) {
-          this.$confirm('是否提交数据', '提示', {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
-            type: 'warning'
-          }).then(() => {
-            if (this.isEdit) {
-              this.rolesForm.menuIds = this.getCheckedNodes()
-              updateRole(this.$route.query.id, this.rolesForm).then(response => {
-                this.$message({
-                  message: '修改成功',
-                  type: 'success',
-                  duration: 1000
-                })
-                this.$router.back()
-              })
-            } else {
-              this.rolesForm.menuIds = this.getCheckedNodes()
-              createRole(this.rolesForm).then(response => {
-                this.$refs[formName].resetFields()
-                this.resetForm(formName)
-                this.$message({
-                  message: '提交成功',
-                  type: 'success',
-                  duration: 1000
-                })
-              })
-            }
-          })
-        } else {
-          this.$message({
-            message: '验证失败',
-            type: 'error',
-            duration: 1000
-          })
-          return false
-        }
-      })
-    },
-    getCheckedNodes() {
-      // 获取选中系统菜单Id
-      console.log(this.$refs.tree.getCheckedNodes())
-      const res = this.$refs.tree.getCheckedNodes()
-      const menuIds = res[0].id
-      console.log('menuIds', menuIds)
-      return menuIds
-    },
-    resetForm(formName) {
-      this.$refs[formName].resetFields()
-      this.rolesForm = Object.assign({}, defaultRole)
-    },
-    removeFilterAttr(productAttributeId) {
-      if (this.filterProductAttrList.length === 1) {
-        this.$message({
-          message: '至少要留一个',
-          type: 'warning',
-          duration: 1000
-        })
-        return
-      }
-      var index = this.filterProductAttrList.indexOf(productAttributeId)
-      if (index !== -1) {
-        this.filterProductAttrList.splice(index, 1)
-      }
-    },
-    handleAddFilterAttr() {
-      if (this.filterProductAttrList.length === 3) {
-        this.$message({
-          message: '最多添加三个',
-          type: 'warning',
-          duration: 1000
-        })
-        return
-      }
-      this.filterProductAttrList.push({
-        value: null,
-        key: Date.now()
-      })
-    }
-  }
-}
-</script>
-
-<style scoped>
-</style>

+ 153 - 0
src/views/sys/roles/form.vue

@@ -0,0 +1,153 @@
+<template>
+  <div class="app-container">
+    <el-page-header @back="goBack" :content="isEdit?'编辑角色':'添加角色'" />
+    <el-card class="form-container" shadow="never">
+      <el-form ref="roleFrom" :model="role" :rules="rules" label-width="150px">
+        <el-form-item label="角色名称:" prop="roleName">
+          <el-input v-model="role.roleName" maxlength="20" />
+        </el-form-item>
+        <el-form-item label="角色描述:" prop="roleDesc">
+          <el-input v-model="role.roleDesc" maxlength="20" />
+        </el-form-item>
+        <el-form-item label="角色授权:">
+          <el-tree ref="tree" :data="menuTree" node-key="id" :props="menuProps" @check-change="handleTreeChange" show-checkbox default-expand-all check-strictly="true" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="onSubmit('roleFrom')">提交</el-button>
+          <el-button v-if="!isEdit" @click="resetForm('roleFrom')">重置</el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import { getRole, updateRole, createRole } from '@/api/role'
+import { sysMenuTree } from '@/api/menu'
+
+const defaultRole = {
+  id: '',
+  roleName: '',
+  roleDesc: '',
+  menuIds: ''
+}
+export default {
+  name: 'RolesForm',
+  data() {
+    return {
+      role: Object.assign({}, defaultRole),
+      isEdit: false,
+      menuTree: [],
+      menuProps: {
+        children: 'subMenus',
+        label: 'title'
+      },
+      rules: {
+        roleName: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }]
+      }
+    }
+  },
+  watch: {
+    $route(route) {
+      this.getFormData()
+      this.getMenuTree()
+    }
+  },
+  created() {
+    this.getFormData()
+    this.getMenuTree()
+  },
+  methods: {
+    goBack() {
+      window.history.go(-1)
+    },
+    getFormData() {
+      if (this.$route.query.id) {
+        this.role.id = this.$route.query.id
+        this.isEdit = true
+        getRole(this.role.id).then(response => {
+          this.role.roleName = response.data.roleName
+          this.role.roleDesc = response.data.roleDesc
+          this.role.menuIds = response.data.menuIds
+          if (response.data.menuIds) {
+            const keys = []
+            response.data.menuIds.split(',').forEach(element => {
+              keys.push(element * 1)
+            })
+            console.log(keys)
+            this.$refs.tree.setCheckedKeys(keys)
+          }
+        })
+      } else {
+        this.role.id = ''
+        this.isEdit = false
+        this.role = Object.assign({}, defaultRole)
+      }
+    },
+    getMenuTree() {
+      // 属性菜单
+      sysMenuTree().then(response => {
+        this.menuTree = response.data
+      })
+    },
+    getCheckedNodes() {
+      const menuIdArr = []
+      const checkedNodes = this.$refs.tree.getCheckedNodes()
+      for (let i = 0; i < checkedNodes.length; i++) {
+        console.log(checkedNodes[i].id)
+        menuIdArr.push(checkedNodes[i].id)
+      }
+      this.role.menuIds = menuIdArr.join(',')
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields()
+      this.role = Object.assign({}, defaultRole)
+      this.getFormData()
+    },
+    onSubmit(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          this.$confirm('是否提交数据', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+            this.getCheckedNodes()
+            if (this.isEdit) {
+              updateRole(this.$route.query.id, this.role).then(response => {
+                this.$message({
+                  message: '修改成功',
+                  type: 'success',
+                  duration: 1000
+                })
+                this.$router.back()
+              })
+            } else {
+              createRole(this.role).then(response => {
+                this.$refs[formName].resetFields()
+                this.resetForm(formName)
+                this.$message({
+                  message: '提交成功',
+                  type: 'success',
+                  duration: 1000
+                })
+                this.$router.back()
+              })
+            }
+          })
+        } else {
+          this.$message({
+            message: '验证失败',
+            type: 'error',
+            duration: 1000
+          })
+          return false
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+</style>

+ 2 - 2
src/views/sys/roles/list.vue

@@ -81,10 +81,10 @@ export default {
       this.$router.push({ path: '/sys/roles/add' })
     },
     handleUpdate(row) {
-      this.$router.push({ path: '/sys/roles/update', query: { id: row.id } })
+      this.$router.push({ path: '/sys/roles/edit', query: { id: row.id } })
     },
     handleDelete(row) {
-      this.$confirm('是否要删除该菜单', '提示', {
+      this.$confirm('是否要删除该角色', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 0 - 13
src/views/sys/roles/update.vue

@@ -1,13 +0,0 @@
-<template>
-  <roles-detail :is-edit="true" />
-</template>
-<script>
-import RolesDetail from './components/rolesDetail'
-export default {
-  name: 'UpdateRoles',
-  components: { RolesDetail }
-}
-</script>
-<style>
-</style>
-