文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Vue3 开发拒绝 CV, 快使用 CRUD

2024-12-01 15:35

关注

开发管理后台基本是企业的日常需求, 基本每个前台项目都必有一个后台项目跟着, 虽然是必需品, 但是大家好像有不是那么在意他, 毕竟只有管理员用。

crud-vue通过简单的JSON配置即可实现完整的"增删改查".

注意: crud-vue是基于ant-design-vue的, 所以更进一步的开发中,可直接使用ant的组件

安装

yarn add crud-vue
复制代码

使用

下面是一个简单的表格, 只需要配置columns和done字段.

columns就是"ant"组件库中 table 组件的配置, 用来配置列.

done是"crud-vue"定义的字段, 值是个函数, 用来格式化接口返回数据, 函数返回{total:10,list:[{xx:1}]}这样的数据表格就会显示:

<script setup lang="ts">
import crud,{defineR} from 'crud-vue';
const primaryKey = 'id';
const r = defineR({
columns: [
{
title: 'name',
dataIndex: 'name',
},
{
title: '操作',
key: 'operation',
width: 250,
},
],
async done() {
const { data } = await http('/role');
return { list: data.list, total: data.total };
},
});
</script>
<template>
<crud :primaryKey="primaryKey" :r="r"></crud>
</template>
复制代码

API

通过配置"crud-vue"组件的"c/u/r/d"4 个字段实现"增删改查".

primaryKey(主键)

必填项, ant 中的a-table需要, 选用数据中的能"表示唯一的id"字段即可.

image

r(读取)

必填项, 主要配置"表格"和"数据", 这里的表格实际就是🐜ant的table组件, 使用defineR函数定义.

const r = defineR({
// 列配置
columns: [{ title: 'name', dataIndex: 'name' }],
// 筛选条件配置
conditionItems: [{ name: 'name', is: 'a-input' }],
// 列表接口数据处理
async done() {
const { data } = await http('/user');
return { list: data.xxList, total: data.xxTotal };
},
});
复制代码

查看"r"的完整文档[1]

c(新增)

非必填, 用来构造"新建"表单,用defineC函数来定义.

const c = defineC({
async before() {
await Promise.all([getRoleOptions(), getDepartmentOptions(), getPositionOptions()]);
},
async done(formData) {
const { status, data } = await http.post('/user', formData);
return [200 === status, data.msg];
},
formProps: { labelCol: { span: 2 } },
items: () => [
{ is: 'a-input', name: 'userName', label: '账号', rules: [{ required: true, message: '必填项' }] },
{ is: 'a-input', name: 'realName', label: '姓名' },
复制代码

查看"c"的完整文档[2]

u(编辑)

非必填, 用来构造"编辑"表单,用defineU函数来定义.基本和"c"的配置一样.

查看"u"完整的文档[3]

d(删除)

非必填, 用来配置"删除操作",用defineD函数来定义. d暂只有一个属性done:

done

必填项, done是个函数, 点击"删除"按钮后触发, 函数内需要写请求删除接口的逻辑.

const d = defineD({
async done(idList) {
// 判断idList长度区分是否批量删除
// 批量删除
if (1 < idList.length) {
const { data, status } = await http.delete('/user/' + idList.join(','));
return [200 === status, data.msg];
} else {
// 删除一条
const { data, status } = await http.delete('/user/' + idList[0]);
return [200 === status, data.msg];
}
},
});
复制代码

可以通过done的参数来判断是批量删除还是单行删除.

特别注意

  1.  done必须是一个返回"promise"的函数, 也可以用"async", 其返回值也是"promise".
  2.  done函数的返回值必须是[boolean,string?]格式, "boolean"用来表示是否操作成功, "string"是选填,是成功/失败后消息框显示的文字, 如果不填, 不进行消息显示.
来源:高级前端进阶内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯