XCrud
Basic usage of XCrud.
Note
<template>
<div>
<XCrud :form="form" :option="option" :data="data" @before-open="beforeOpen" />
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import type { TableOption } from 'cjx-low-code'
const option = ref<TableOption>({
column: [
{
label: 'Name',
prop: 'name'
},
{
label: 'Age',
prop: 'age'
},
{
label: 'Address',
prop: 'address'
},
{
label: 'Sex',
prop: 'sex'
}
]
})
const data = [
{
name: 'Zhang San',
age: 18,
address: 'Beijing',
sex: 'boy'
},
{
name: 'Xiao Hong',
age: 20,
address: 'Shanghai',
sex: 'girl'
}
]
const form = ref({})
const beforeOpen: (...args: any[]) => void = (type, row, done) => {
console.log(type, row)
done()
}
</script>
With Search and Action Bars
<template>
<div>
<XCrud
v-model:form="form"
v-model:search="search"
:option="option"
:data="data"
@before-open="beforeOpen"
@row-save="addSave"
@row-update="rowUpdate"
:on-load="onLoad"
/>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import type { TableOption } from 'cjx-low-code'
import { ElMessage } from 'element-plus'
const option = ref<TableOption>({
addBtn: true,
menu: true,
viewBtn: true,
column: [
{
label: 'Name',
prop: 'name'
},
{
label: 'Age',
prop: 'age',
searchType: 'input',
type: 'inputNumber',
inputNumber: {
min: 0
}
},
{
label: 'Address',
prop: 'address'
},
{
label: 'Sex',
prop: 'sex',
search: true,
type: 'select',
dicData: [
{
label: 'boy',
value: '1'
},
{
label: 'girl',
value: '2'
}
]
}
]
})
const data = [
{
name: 'Zhang San',
age: 18,
address: 'Beijing',
sex: '1'
},
{
name: 'Xiao Hong',
age: 20,
address: 'Shanghai',
sex: '2'
}
]
const form = ref({})
const search = ref({})
const beforeOpen: (...args: any[]) => void = (type, row, done) => {
ElMessage.success(type)
done()
}
const onLoad = async () => {
// 模拟异步请求
await new Promise<void>(resolve => {
ElMessage.success(JSON.stringify(search.value))
setTimeout(() => resolve(), 500)
})
}
const addSave = (row: any, done: Function) => {
ElMessage.success(JSON.stringify(row))
done()
}
const rowUpdate = (row: any, done: Function) => {
ElMessage.success(JSON.stringify(row))
done()
}
</script>
With Search, Action Bars and Pagination
共 20 条
- 1
- 2
页
<template>
<div>
<XCrud
v-model:form="form"
v-model:search="search"
:option="option"
:data="data"
:page="page"
@before-open="beforeOpen"
@row-del="rowDel"
@row-save="addSave"
@row-update="rowUpdate"
:on-load="onLoad"
/>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import type { TableOption, CrudPageProps } from 'cjx-low-code'
import { ElMessage } from 'element-plus'
const option = ref<TableOption>({
addBtn: true,
menu: true,
viewBtn: true,
column: [
{
label: 'Name',
prop: 'name',
search: true
},
{
label: 'Age',
prop: 'age',
search: true,
searchType: 'input',
type: 'inputNumber',
inputNumber: {
min: 0
}
},
{
label: 'Address',
prop: 'address'
},
{
label: 'Sex',
prop: 'sex',
search: true,
type: 'select',
dicData: [
{
label: 'boy',
value: '1'
},
{
label: 'girl',
value: '2'
}
]
}
]
})
const data = [
{
name: 'Zhang San',
age: 18,
address: 'Beijing',
sex: '1'
},
{
name: 'Xiao Hong',
age: 20,
address: 'Shanghai',
sex: '2'
}
]
const page = ref<CrudPageProps>({
total: 20,
pageSize: 10,
currentPage: 1
})
const form = ref({})
const search = ref({})
const beforeOpen: (...args: any[]) => void = (type, row, done) => {
ElMessage.success(type)
done()
}
const onLoad = async () => {
// 模拟异步请求
await new Promise<void>(resolve => {
ElMessage.success(JSON.stringify(search.value))
setTimeout(() => resolve(), 500)
})
}
const addSave = (row: any, done: Function) => {
ElMessage.success(JSON.stringify(row))
done()
}
const rowUpdate = (row: any, done: Function) => {
ElMessage.success(JSON.stringify(row))
done()
}
const rowDel = (row: any, index: number) => {
ElMessage.success(JSON.stringify(row))
}
</script>
Crud with editing table forms
<template>
<div>
<XCrud
v-model:form="form"
v-model:search="search"
:option="option"
:data="data"
@before-open="beforeOpen"
@row-save="addSave"
@row-update="rowUpdate"
:on-load="onLoad"
/>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import type { TableOption } from 'cjx-low-code'
import { ElMessage } from 'element-plus'
const option = ref<TableOption>({
addBtn: true,
menu: true,
viewBtn: true,
updateBtn: true,
column: [
{
label: 'Name',
prop: 'name',
search: true
},
{
label: 'Age',
prop: 'age',
search: true,
searchType: 'input',
type: 'inputNumber',
inputNumber: {
min: 0
}
},
{
label: 'Address',
prop: 'address'
},
{
label: 'Sex',
prop: 'sex',
type: 'select',
search: true,
dicData: [
{
label: 'boy',
value: '1'
},
{
label: 'girl',
value: '2'
}
]
},
{
label: '',
prop: 'editTable',
type: 'editTable',
hide: true,
span: 24,
editTable: {
option: {
addBtn: true,
delBtn: true,
copyBtn: true,
sortable: true,
column: [
{
label: 'Name',
prop: 'name',
type: 'input',
rules: [
{ required: true, message: 'Please enter name', trigger: 'blur' }
]
},
{
label: 'Age',
prop: 'age',
type: 'inputNumber',
inputNumber: {
min: 1
},
rules: [
{ required: true, message: 'Please enter age', trigger: 'blur' }
]
}
]
}
}
}
],
})
const data = [
{
name: 'Zhang San',
age: 28,
address: 'Beijing',
sex: '1',
editTable: [
{
name: "Zhang San's son",
age: 6
}
]
},
{
name: 'Xiao Hong',
age: 27,
address: 'Shanghai',
sex: '2',
editTable: [
{
name: "Xiaohong's daughter",
age: 6
},
]
}
]
const form = ref({
})
const search = ref({})
const beforeOpen: (...args: any[]) => void = (type, row, done) => {
ElMessage.success(type)
done()
}
const onLoad = async () => {
// 模拟异步请求
await new Promise<void>(resolve => {
ElMessage.success(JSON.stringify(search.value))
setTimeout(() => resolve(), 500)
})
}
const addSave = (row: any, done: Function) => {
ElMessage.success(JSON.stringify(row))
done()
}
const rowUpdate = (row: any, done: Function) => {
ElMessage.success(JSON.stringify(row))
done()
}
</script>