index.vue 2.18 KB
<script setup lang="ts">
import { reactive, ref, onMounted } from "vue";
import { permissionList } from "@/api/user/permission";
interface Data {
  loading: boolean;
  list: any[] | null;
}
let data: Data = reactive({
  list: [],
  loading: false,
});
/**
 * 列表
 */
const getList = async () => {
  data.loading = true;
  try {
    const res = await permissionList();
    data.list = res?.data?.data;
  } catch (e) {
    console.log(e);
  } finally {
    data.loading = false;
  }
};
/**
 * 权限枚举值
 */
enum typeEnum {
  '一级菜单' = 1,
  '二级菜单',
  '三级菜单',
  '按钮',
  '默认权限'
}
onMounted(() => {
  getList();
});
</script>

<template>
  <div class="page-container">
    <h1>权限列表</h1>
    <el-table
      :data="data.list"
      style="width: 100%"
      border fit
      row-key="id"
      :indent="30"
      :tree-props="{ children: 'menuList' }"
      v-loading="data.loading"
      align="center"
      element-loading-text="拼命加载中"
    >
      <el-table-column prop="id" label="ID" align="center"></el-table-column>
      <el-table-column prop="name" label="权限名称" align="center"></el-table-column>
      <el-table-column prop="priority" label="优先级" align="center"></el-table-column>
      <el-table-column prop="url" label="路径" align="center"></el-table-column>
      <el-table-column prop="type" label="类型" align="center">
        <template #default="scope">
          {{ typeEnum[scope.row.type] }}
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center">
        <template #default="scope">
          <el-button type="text"
            ><router-link :to="{ path: '/permission/edit', query: {...scope.row, ...{dataType: 'edit'}} }"
              >编辑</router-link
            ></el-button
          >
          <!-- type值为4,是按钮,按钮不可以再加按钮 -->
          <el-button type="text" v-show="~~scope.row.type < 4"
            ><router-link :to="{ path: '/permission/edit', query: {...scope.row, ...{dataType: 'add'}} }"
              >添加</router-link
            ></el-button
          >
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>