一个列表页要接哪些点
本文导航

一个列表页要接哪些点
以订单列表为例,这些名字要是同一个或能包含:
| 位置 | 值 |
|---|---|
| 文件 | src/views/list/index.vue |
defineOptions({ name }) |
OrderList |
| 子系统前缀 | /order,键变成 /order/list/index.vue |
| 后端菜单 Name | OrderList |
| 后端菜单 Path | /order/list/index |
| 新建按钮权限 | order:order:Create,由后端 Name()、ModuleName() 和方法名生成 |
| 列表请求 | http.request("get", "/api/v1/orders", { params }) |
页面骨架:
<script setup lang="ts">
import { hasPerms } from "@bit-labs.cn/owl-ui";
import { getOrders } from "../api/order";
defineOptions({ name: "OrderList" });
const loading = ref(false);
const list = ref<OrderItem[]>([]);
async function load() {
loading.value = true;
try {
const res = await getOrders({ page: 1, pageSize: 10 });
list.value = res.data?.list ?? [];
} finally {
loading.value = false;
}
}
onMounted(load);
</script>
<template>
<el-button
v-if="hasPerms('order:order:Create')"
type="primary"
>
新建
</el-button>
<el-table v-loading="loading" :data="list" />
</template>
权限标识的中间段是 Handler 的 ModuleName() 英文名,不是菜单中文。这里假设模块英文名是 order、子系统名是 order、方法是 Create。和后端对过再写进 hasPerms,不要按路由 path 猜。
列表数据在 data.list。ID 用字符串。分页参数用 page 和 pageSize。
评论
加载评论中…