Ver código fonte

加入权限控制

jtoms 4 anos atrás
pai
commit
73cd120fc4

+ 3 - 3
src/router/index.js

@@ -42,13 +42,13 @@ export const asyncRoutes = [
       {
         path: 'appkeys',
         name: 'InterfaceAppkeys',
-        component: () => import('@/views/tree/index'),
+        component: () => import('@/views/dashboard/index'),
         meta: { title: 'AppKey管理' }
       },
       {
         path: 'requestLogs',
         name: 'InterfaceRequestLogs',
-        component: () => import('@/views/tree/index'),
+        component: () => import('@/views/dashboard/index'),
         meta: { title: '调用日志' }
       }
     ]
@@ -98,7 +98,7 @@ export const asyncRoutes = [
       {
         path: 'sysconfig',
         name: 'SettingSysconfig',
-        component: () => import('@/views/form/index'),
+        component: () => import('@/views/dashboard/index'),
         meta: { title: '系统设置', authorities: ['system.config.find'] }
       }
     ]

+ 0 - 85
src/views/form/index.vue

@@ -1,85 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form ref="form" :model="form" label-width="120px">
-      <el-form-item label="Activity name">
-        <el-input v-model="form.name" />
-      </el-form-item>
-      <el-form-item label="Activity zone">
-        <el-select v-model="form.region" placeholder="please select your zone">
-          <el-option label="Zone one" value="shanghai" />
-          <el-option label="Zone two" value="beijing" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="Activity time">
-        <el-col :span="11">
-          <el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%;" />
-        </el-col>
-        <el-col :span="2" class="line">-</el-col>
-        <el-col :span="11">
-          <el-time-picker v-model="form.date2" type="fixed-time" placeholder="Pick a time" style="width: 100%;" />
-        </el-col>
-      </el-form-item>
-      <el-form-item label="Instant delivery">
-        <el-switch v-model="form.delivery" />
-      </el-form-item>
-      <el-form-item label="Activity type">
-        <el-checkbox-group v-model="form.type">
-          <el-checkbox label="Online activities" name="type" />
-          <el-checkbox label="Promotion activities" name="type" />
-          <el-checkbox label="Offline activities" name="type" />
-          <el-checkbox label="Simple brand exposure" name="type" />
-        </el-checkbox-group>
-      </el-form-item>
-      <el-form-item label="Resources">
-        <el-radio-group v-model="form.resource">
-          <el-radio label="Sponsor" />
-          <el-radio label="Venue" />
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="Activity form">
-        <el-input v-model="form.desc" type="textarea" />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="onSubmit">Create</el-button>
-        <el-button @click="onCancel">Cancel</el-button>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      form: {
-        name: '',
-        region: '',
-        date1: '',
-        date2: '',
-        delivery: false,
-        type: [],
-        resource: '',
-        desc: ''
-      }
-    }
-  },
-  methods: {
-    onSubmit() {
-      this.$message('submit!')
-    },
-    onCancel() {
-      this.$message({
-        message: 'cancel!',
-        type: 'warning'
-      })
-    }
-  }
-}
-</script>
-
-<style scoped>
-.line{
-  text-align: center;
-}
-</style>
-

+ 0 - 7
src/views/nested/menu1/index.vue

@@ -1,7 +0,0 @@
-<template>
-  <div style="padding:30px;">
-    <el-alert :closable="false" title="menu 1">
-      <router-view />
-    </el-alert>
-  </div>
-</template>

+ 0 - 7
src/views/nested/menu1/menu1-1/index.vue

@@ -1,7 +0,0 @@
-<template>
-  <div style="padding:30px;">
-    <el-alert :closable="false" title="menu 1-1" type="success">
-      <router-view />
-    </el-alert>
-  </div>
-</template>

+ 0 - 7
src/views/nested/menu1/menu1-2/index.vue

@@ -1,7 +0,0 @@
-<template>
-  <div style="padding:30px;">
-    <el-alert :closable="false" title="menu 1-2" type="success">
-      <router-view />
-    </el-alert>
-  </div>
-</template>

+ 0 - 5
src/views/nested/menu1/menu1-2/menu1-2-1/index.vue

@@ -1,5 +0,0 @@
-<template functional>
-  <div style="padding:30px;">
-    <el-alert :closable="false" title="menu 1-2-1" type="warning" />
-  </div>
-</template>

+ 0 - 5
src/views/nested/menu1/menu1-2/menu1-2-2/index.vue

@@ -1,5 +0,0 @@
-<template functional>
-  <div style="padding:30px;">
-    <el-alert :closable="false" title="menu 1-2-2" type="warning" />
-  </div>
-</template>

+ 0 - 5
src/views/nested/menu1/menu1-3/index.vue

@@ -1,5 +0,0 @@
-<template functional>
-  <div style="padding:30px;">
-    <el-alert :closable="false" title="menu 1-3" type="success" />
-  </div>
-</template>

+ 0 - 5
src/views/nested/menu2/index.vue

@@ -1,5 +0,0 @@
-<template>
-  <div style="padding:30px;">
-    <el-alert :closable="false" title="menu 2" />
-  </div>
-</template>

+ 0 - 79
src/views/table/index.vue

@@ -1,79 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-table
-      v-loading="listLoading"
-      :data="list"
-      element-loading-text="Loading"
-      border
-      fit
-      highlight-current-row
-    >
-      <el-table-column align="center" label="ID" width="95">
-        <template slot-scope="scope">
-          {{ scope.$index }}
-        </template>
-      </el-table-column>
-      <el-table-column label="Title">
-        <template slot-scope="scope">
-          {{ scope.row.title }}
-        </template>
-      </el-table-column>
-      <el-table-column label="Author" width="110" align="center">
-        <template slot-scope="scope">
-          <span>{{ scope.row.author }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="Pageviews" width="110" align="center">
-        <template slot-scope="scope">
-          {{ scope.row.pageviews }}
-        </template>
-      </el-table-column>
-      <el-table-column class-name="status-col" label="Status" width="110" align="center">
-        <template slot-scope="scope">
-          <el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag>
-        </template>
-      </el-table-column>
-      <el-table-column align="center" prop="created_at" label="Display_time" width="200">
-        <template slot-scope="scope">
-          <i class="el-icon-time" />
-          <span>{{ scope.row.display_time }}</span>
-        </template>
-      </el-table-column>
-    </el-table>
-  </div>
-</template>
-
-<script>
-import { getList } from '@/api/table'
-
-export default {
-  filters: {
-    statusFilter(status) {
-      const statusMap = {
-        published: 'success',
-        draft: 'gray',
-        deleted: 'danger'
-      }
-      return statusMap[status]
-    }
-  },
-  data() {
-    return {
-      list: null,
-      listLoading: true
-    }
-  },
-  created() {
-    this.fetchData()
-  },
-  methods: {
-    fetchData() {
-      this.listLoading = true
-      getList().then(response => {
-        this.list = response.data.items
-        this.listLoading = false
-      })
-    }
-  }
-}
-</script>

+ 0 - 78
src/views/tree/index.vue

@@ -1,78 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-input v-model="filterText" placeholder="Filter keyword" style="margin-bottom:30px;" />
-
-    <el-tree
-      ref="tree2"
-      :data="data2"
-      :props="defaultProps"
-      :filter-node-method="filterNode"
-      class="filter-tree"
-      default-expand-all
-    />
-
-  </div>
-</template>
-
-<script>
-export default {
-
-  data() {
-    return {
-      filterText: '',
-      data2: [{
-        id: 1,
-        label: 'Level one 1',
-        children: [{
-          id: 4,
-          label: 'Level two 1-1',
-          children: [{
-            id: 9,
-            label: 'Level three 1-1-1'
-          }, {
-            id: 10,
-            label: 'Level three 1-1-2'
-          }]
-        }]
-      }, {
-        id: 2,
-        label: 'Level one 2',
-        children: [{
-          id: 5,
-          label: 'Level two 2-1'
-        }, {
-          id: 6,
-          label: 'Level two 2-2'
-        }]
-      }, {
-        id: 3,
-        label: 'Level one 3',
-        children: [{
-          id: 7,
-          label: 'Level two 3-1'
-        }, {
-          id: 8,
-          label: 'Level two 3-2'
-        }]
-      }],
-      defaultProps: {
-        children: 'children',
-        label: 'label'
-      }
-    }
-  },
-  watch: {
-    filterText(val) {
-      this.$refs.tree2.filter(val)
-    }
-  },
-
-  methods: {
-    filterNode(value, data) {
-      if (!value) return true
-      return data.label.indexOf(value) !== -1
-    }
-  }
-}
-</script>
-

+ 5 - 5
src/views/user/info/DialogForm.vue

@@ -1,15 +1,15 @@
 <template>
   <el-dialog
-    width="900px"
     v-if="visible"
+    width="900px"
     title="收货地址"
     :visible.sync="visible"
   >
-    <el-form :model="form" label-width="80px" v-loading="isLoading">
+    <el-form v-loading="isLoading" :model="form" label-width="80px">
       <el-row>
         <el-col :span="12">
           <el-form-item label="用户昵称">
-            <el-input v-model="form.nickName" autocomplete="off"></el-input>
+            <el-input v-model="form.nickName" autocomplete="off" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -25,12 +25,12 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="手机号">
-            <el-input v-model="form.mp" autocomplete="off"></el-input>
+            <el-input v-model="form.mp" autocomplete="off" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="邮箱">
-            <el-input v-model="form.email" autocomplete="off"></el-input>
+            <el-input v-model="form.email" autocomplete="off" />
           </el-form-item>
         </el-col>
       </el-row>

+ 7 - 7
src/views/user/info/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <el-row class="action-bar-container" type="flex" justify="end">
-      <el-button v-permission="['oauth.user.find']" type="primary" size="small" @click.native="$refs.dialogForm.open({})">新建</el-button>
+      <el-button v-permission="['oauth.user.add']" type="primary" size="small" @click.native="$refs.dialogForm.open({})">新建</el-button>
     </el-row>
     <el-table
       v-loading="isLoading"
@@ -59,13 +59,13 @@
         <template slot-scope="scope">
           <el-dropdown>
             <el-button type="text">
-              操作<i class="el-icon-arrow-down el-icon--right"></i>
+              操作<i class="el-icon-arrow-down el-icon--right" />
             </el-button>
             <el-dropdown-menu slot="dropdown">
-              <el-dropdown-item @click.native="$refs.dialogForm.open(scope.row)">编辑</el-dropdown-item>
-              <el-dropdown-item @click.native="enabledByIds([scope.row.id])">启用</el-dropdown-item>
-              <el-dropdown-item @click.native="disableByIds([scope.row.id])">禁用</el-dropdown-item>
-              <el-dropdown-item @click.native="resetLoginPasswordByIds([scope.row.id])">重置登录密码</el-dropdown-item>
+              <el-dropdown-item v-permission="['oauth.user.edit']" @click.native="$refs.dialogForm.open(scope.row)">编辑</el-dropdown-item>
+              <el-dropdown-item v-permission="['oauth.user.enable']" @click.native="enabledByIds([scope.row.id])">启用</el-dropdown-item>
+              <el-dropdown-item v-permission="['oauth.user.disable']" @click.native="disableByIds([scope.row.id])">禁用</el-dropdown-item>
+              <el-dropdown-item v-permission="['oauth.user.reset.login.password']" @click.native="resetLoginPasswordByIds([scope.row.id])">重置登录密码</el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
         </template>
@@ -79,7 +79,7 @@
       :page-size="pageData.pageSize"
       @current-change="handleCurrentChange"
     />
-    <dialog-form ref="dialogForm" @ok="fetchData"/>
+    <dialog-form ref="dialogForm" @ok="fetchData" />
   </div>
 </template>
 

+ 3 - 3
src/views/user/role/DialogForm.vue

@@ -4,16 +4,16 @@
     title="收货地址"
     :visible.sync="visible"
   >
-    <el-form :model="form" label-width="150px" v-loading="isLoading">
+    <el-form v-loading="isLoading" :model="form" label-width="150px">
       <el-row>
         <el-col :span="12">
           <el-form-item label="角色名称">
-            <el-input v-model="form.name" autocomplete="off"></el-input>
+            <el-input v-model="form.name" autocomplete="off" />
           </el-form-item>
         </el-col>
       </el-row>
       <el-form-item label="备注说明">
-        <el-input type="textarea" v-model="form.remark" autocomplete="off"></el-input>
+        <el-input v-model="form.remark" type="textarea" autocomplete="off" />
       </el-form-item>
       <el-form-item v-for="authority in listAllAuthorities" :key="authority.id" :label="authority.remark">
         <el-checkbox-group v-model="form.listAuthorities">

+ 13 - 7
src/views/user/role/index.vue

@@ -1,7 +1,14 @@
 <template>
   <div class="app-container">
     <el-row class="action-bar-container" type="flex" justify="end">
-      <el-button type="primary" size="small" @click.native="$refs.dialogForm.open({})">新建</el-button>
+      <el-button
+        v-permission="['oauth.role.add']"
+        type="primary"
+        size="small"
+        @click.native="$refs.dialogForm.open({})"
+      >
+        新建
+      </el-button>
     </el-row>
     <el-table
       v-loading="isLoading"
@@ -38,11 +45,11 @@
         <template slot-scope="scope">
           <el-dropdown>
             <el-button type="text">
-              操作<i class="el-icon-arrow-down el-icon--right"></i>
+              操作<i class="el-icon-arrow-down el-icon--right" />
             </el-button>
             <el-dropdown-menu slot="dropdown">
-              <el-dropdown-item @click.native="$refs.dialogForm.open(scope.row)">编辑</el-dropdown-item>
-              <el-dropdown-item @click.native="deleteByIds([scope.row.id])">删除</el-dropdown-item>
+              <el-dropdown-item v-permission="['oauth.role.edit']" @click.native="$refs.dialogForm.open(scope.row)">编辑</el-dropdown-item>
+              <el-dropdown-item v-permission="['oauth.role.delete']" @click.native="deleteByIds([scope.row.id])">删除</el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
         </template>
@@ -56,9 +63,8 @@
       :total="pageData.total"
       :page-size="pageData.pageSize"
       @current-change="handleCurrentChange"
-    >
-    </el-pagination>
-    <dialog-form ref="dialogForm" @ok="fetchData"/>
+    />
+    <dialog-form ref="dialogForm" @ok="fetchData" />
   </div>
 </template>