自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Vue3 開(kāi)發(fā)拒絕 CV, 快使用 CRUD

開(kāi)發(fā) 前端
今天我們來(lái)講一下"增刪改查"組件:crud-vue.一起來(lái)看看吧。

開(kāi)發(fā)管理后臺(tái)基本是企業(yè)的日常需求, 基本每個(gè)前臺(tái)項(xiàng)目都必有一個(gè)后臺(tái)項(xiàng)目跟著, 雖然是必需品, 但是大家好像有不是那么在意他, 畢竟只有管理員用。

crud-vue通過(guò)簡(jiǎn)單的JSON配置即可實(shí)現(xiàn)完整的"增刪改查".

注意: crud-vue是基于ant-design-vue的, 所以更進(jìn)一步的開(kāi)發(fā)中,可直接使用ant的組件

安裝

yarn add crud-vue
復(fù)制代碼

使用

下面是一個(gè)簡(jiǎn)單的表格, 只需要配置columns和done字段.

columns就是"ant"組件庫(kù)中 table 組件的配置, 用來(lái)配置列.

done是"crud-vue"定義的字段, 值是個(gè)函數(shù), 用來(lái)格式化接口返回?cái)?shù)據(jù), 函數(shù)返回{total:10,list:[{xx:1}]}這樣的數(shù)據(jù)表格就會(huì)顯示:

<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>
復(fù)制代碼

API

通過(guò)配置"crud-vue"組件的"c/u/r/d"4 個(gè)字段實(shí)現(xiàn)"增刪改查".

primaryKey(主鍵)

必填項(xiàng), ant 中的a-table需要, 選用數(shù)據(jù)中的能"表示唯一的id"字段即可.

image

r(讀取)

必填項(xiàng), 主要配置"表格"和"數(shù)據(jù)", 這里的表格實(shí)際就是??ant的table組件, 使用defineR函數(shù)定義.

const r = defineR({
// 列配置
columns: [{ title: 'name', dataIndex: 'name' }],
// 篩選條件配置
conditionItems: [{ name: 'name', is: 'a-input' }],
// 列表接口數(shù)據(jù)處理
async done() {
const { data } = await http('/user');
return { list: data.xxList, total: data.xxTotal };
},
});
復(fù)制代碼

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

c(新增)

非必填, 用來(lái)構(gòu)造"新建"表單,用defineC函數(shù)來(lái)定義.

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: '賬號(hào)', rules: [{ required: true, message: '必填項(xiàng)' }] },
{ is: 'a-input', name: 'realName', label: '姓名' },
復(fù)制代碼

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

u(編輯)

非必填, 用來(lái)構(gòu)造"編輯"表單,用defineU函數(shù)來(lái)定義.基本和"c"的配置一樣.

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

d(刪除)

非必填, 用來(lái)配置"刪除操作",用defineD函數(shù)來(lái)定義. d暫只有一個(gè)屬性done:

done

必填項(xiàng), done是個(gè)函數(shù), 點(diǎn)擊"刪除"按鈕后觸發(fā), 函數(shù)內(nèi)需要寫(xiě)請(qǐng)求刪除接口的邏輯.

const d = defineD({
async done(idList) {
// 判斷idList長(zhǎng)度區(qū)分是否批量刪除
// 批量刪除
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];
}
},
});
復(fù)制代碼

可以通過(guò)done的參數(shù)來(lái)判斷是批量刪除還是單行刪除.

特別注意

  1.  done必須是一個(gè)返回"promise"的函數(shù), 也可以用"async", 其返回值也是"promise".
  2.  done函數(shù)的返回值必須是[boolean,string?]格式, "boolean"用來(lái)表示是否操作成功, "string"是選填,是成功/失敗后消息框顯示的文字, 如果不填, 不進(jìn)行消息顯示.
責(zé)任編輯:龐桂玉 來(lái)源: 高級(jí)前端進(jìn)階
相關(guān)推薦

2024-11-06 10:16:22

2021-12-01 08:11:44

Vue3 插件Vue應(yīng)用

2021-12-29 07:51:21

Vue3 插件Vue應(yīng)用

2021-11-30 08:19:43

Vue3 插件Vue應(yīng)用

2023-11-28 09:03:59

Vue.jsJavaScript

2020-09-19 21:15:26

Composition

2022-07-15 08:45:07

slotVue3

2021-04-26 18:27:39

Vue3開(kāi)發(fā)運(yùn)行

2024-12-30 14:40:20

2024-10-18 10:49:03

Actions異步函數(shù)

2021-12-02 05:50:35

Vue3 插件Vue應(yīng)用

2023-04-27 11:07:24

Setup語(yǔ)法糖Vue3

2021-01-15 05:16:37

Vue3開(kāi)源代碼量

2024-03-01 11:32:22

Vue3APIVue.js

2022-11-01 11:55:27

ReactVue3

2022-02-18 09:39:51

Vue3.0Vue2.0Script Set

2024-10-14 09:34:39

vue3通信emit

2021-11-17 08:24:47

Vue3 插件Vue應(yīng)用

2023-12-14 08:25:14

WatchVue.js監(jiān)聽(tīng)數(shù)據(jù)

2021-05-20 07:26:21

工具Vuex Vue.js
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)