排名
1
文章
860
粉丝
112
评论
163
.net core自定义项目模板,创建自己的模板项目,使用命令行创建模板项目
尘叶心繁 : 可以可以讲真的我都想弄个模板
net core webapi post传递参数
庸人 :
确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 : 已精
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 :
疯狂反射
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术
原
vue3 Element Plus 表格使用, vue-admin-beautiful表格使用。Element UI Plus弹窗更新,el-pagination分页,表格上面按钮搜索框,搜索框放在一行加入选择框等。Vue模板

最最简单的表格
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" />
</el-table>
</template>
<script lang="ts" setup>
const tableData = [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
</script>
带一点js的
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column label="Date" prop="date" width="180" />
<el-table-column label="Name" prop="name" width="180" />
<el-table-column label="Address" prop="address" />
</el-table>
</template>
<script>
export default defineComponent({
name: 'dynamicTable',
setup() {
const state = reactive({
tableData: [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
})
onMounted(() => {
})
return {
...toRefs(state)
}
},
})
</script>
从后台读取的
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column label="Id" prop="id" width="180" />
<el-table-column label="宗地位置" prop="landName" width="180" />
<el-table-column label="地块位置" prop="areaposition" />
</el-table>
</template>
<script>
import { getList } from '@/api/landInfo'
export default defineComponent({
name: 'dynamicTable',
setup() {
const state = reactive({
tableData: []
})
const fetchData = async () => {
const result = await getList()
state.tableData = result.data
}
const queryData = () => {
fetchData()
}
onMounted(() => {
fetchData()
})
return {
...toRefs(state),
queryData,
}
},
})
</script>
表格增加一个固定的编辑列,与弹窗的方式编辑
增加一个编辑组件,这里只贴了4个输入框,要多少个自己加就行了。
<template>
<el-dialog
v-model="dialogFormVisible"
:title="title"
width="700px"
@close="close"
>
<el-form
ref="formRef"
:inline="true"
label-width="80px"
:model="form"
:rules="rules"
class="demo-form-inline"
>
<el-form-item label="宗地位置" prop="landName">
<el-input v-model.trim="form.landName" />
</el-form-item>
<el-form-item label="地块位置" prop="areaposition">
<el-input v-model.trim="form.areaposition" />
</el-form-item>
<el-form-item label="控规编号" prop="kgnumber">
<el-input v-model.trim="form.kgnumber" />
</el-form-item>
<el-form-item label="土地面积" prop="landarea">
<el-input v-model.trim="form.landarea" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="close">取 消</el-button>
<el-button type="primary" @click="save">确 定</el-button>
</template>
</el-dialog>
</template>
<script>
import { doEdit } from '@/api/table'
export default defineComponent({
name: 'TableEdit',
emits: ['fetch-data'],
setup(props, { emit }) {
const $baseMessage = inject('$baseMessage')
const state = reactive({
formRef: null,
form: {
title: '',
author: '',
},
rules: {
title: [{ required: true, trigger: 'blur', message: '请输入宗地位置' }],
author: [
{ required: true, trigger: 'blur', message: '请输入地块位置' },
],
},
title: '',
dialogFormVisible: false,
})
const showEdit = (row) => {
if (!row) {
state.title = '添加'
} else {
state.title = '编辑'
state.form = JSON.parse(JSON.stringify(row))
}
state.dialogFormVisible = true
}
const close = () => {
state['formRef'].resetFields()
state.form = {
title: '',
author: '',
}
state.dialogFormVisible = false
}
const save = () => {
state['formRef'].validate(async (valid) => {
if (valid) {
const { msg } = await doEdit(state.form)
$baseMessage(msg, 'success', 'vab-hey-message-success')
emit('fetch-data')
close()
}
})
}
return {
...toRefs(state),
showEdit,
close,
save,
}
},
})
</script>
表格页面:
<template>
<el-table :data="tableData">
<el-table-column label="Id" prop="id" width="60" />
<el-table-column label="宗地位置" prop="landName" />
<el-table-column label="地块位置" prop="areaposition" />
<el-table-column label="控规编号" prop="kgnumber" />
<el-table-column label="供应方式" prop="provideType" />
<el-table-column label="土地面积" prop="landarea" />
<el-table-column
align="center"
fixed="right"
label="操作"
show-overflow-tooltip
width="200"
>
<template #default="{ row }">
<el-button text type="primary" @click="handleDetail(row)">
详情
</el-button>
<el-button text type="primary" @click="handleEdit(row)">编辑</el-button>
<el-button text type="primary" @click="handleDelete(row)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<LandInfoEdit ref="editRef" @fetch-data="fetchData" />
</template>
<script>
import { getList } from '@/api/landInfo'
export default defineComponent({
name: 'dynamicTable',
components: {
LandInfoEdit: defineAsyncComponent(() =>
import('./components/LandInfoEdit')
),
},
setup() {
const state = reactive({
editRef: null,
tableData: [],
})
const fetchData = async () => {
const result = await getList()
state.tableData = result.data
}
const queryData = () => {
fetchData()
}
const handleEdit = (row) => {
state['editRef'].showEdit(row)
}
onMounted(() => {
fetchData()
})
return {
...toRefs(state),
queryData,
handleEdit,
}
},
})
</script>
增加分页
其实就是el-pagination控件的使用而已
<template>
<div>
<el-table :data="tableData" stripe="true" size="small" border="true">
<el-table-column label="Id" prop="id" width="60" />
<el-table-column label="宗地位置" prop="landName" />
<el-table-column label="地块位置" prop="areaposition" />
<el-table-column label="控规编号" prop="kgnumber" />
<el-table-column label="供应方式" prop="provideType" />
<el-table-column label="土地面积" prop="landarea" />
<el-table-column label="平均容积率'" prop="floorarearatio" />
<el-table-column
align="center"
fixed="right"
label="操作"
show-overflow-tooltip
width="200"
>
<template #default="{ row }">
<el-button text type="primary" @click="handleDetail(row)">
详情
</el-button>
<el-button text type="primary" @click="handleEdit(row)">
编辑
</el-button>
<el-button text type="primary" @click="handleDelete(row)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<LandInfoEdit ref="editRef" @fetch-data="fetchData" />
<el-pagination
background
:current-page="queryForm.pageNo"
:layout="layout"
:page-size="queryForm.pageSize"
:total="total"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
/>
</div>
</template>
<script>
import { getList } from '@/api/landInfo'
export default defineComponent({
name: 'dynamicTable',
components: {
LandInfoEdit: defineAsyncComponent(() =>
import('./components/LandInfoEdit')
),
},
setup() {
const state = reactive({
editRef: null,
tableData: [],
layout: 'total, sizes, prev, pager, next, jumper',
total: 0,
queryForm: {
pageNo: 1,
pageSize: 3,
title: '',
},
})
const fetchData = async () => {
// const result = await getList()
// state.tableData = result.data
const {
data: { list, total },
} = await getList(state.queryForm)
state.tableData = list
state.total = total
}
const handleSizeChange = (val) => {
state.queryForm.pageSize = val
fetchData()
}
const handleCurrentChange = (val) => {
state.queryForm.pageNo = val
fetchData()
}
const queryData = () => {
fetchData()
}
const handleEdit = (row) => {
state['editRef'].showEdit(row)
}
onMounted(() => {
fetchData()
})
return {
...toRefs(state),
queryData,
handleEdit,
fetchData,
handleSizeChange,
handleCurrentChange,
}
},
})
</script>
接口返回数据的格式如下:
{
"code": 200, //成功的状态码
"msg": "success", //提示信息
"data": { //返回数据
"list": [{},{},{}], //返回数组
"total": 238, //总条数(表格中用到,其它接口可以不返回)
}
}
表格上面按钮搜索框等
也很简单代码如下:
<vab-query-form>
<vab-query-form-left-panel>
<el-form inline label-width="0" :model="queryForm" @submit.prevent>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="文件名称" />
</el-form-item>
<el-form-item>
<el-button
:icon="Search"
native-type="submit"
type="primary"
@click="queryData"
>
查询
</el-button>
<el-button :icon="Plus" type="success" @click="handleAdd">
上传
</el-button>
<el-button
:icon="Delete"
type="danger"
@click="handleDelete($event)"
>
删除
</el-button>
</el-form-item>
</el-form>
</vab-query-form-left-panel>
<vab-query-form-right-panel>
<el-button
style="margin: 0 10px 10px 0 !important"
text
type="primary"
@click="clickFullScreen"
>
<vab-icon
:icon="isFullscreen ? 'fullscreen-exit-fill' : 'fullscreen-fill'"
/>
</el-button>
<el-popover popper-class="custom-table-checkbox" trigger="hover">
<template #reference>
<el-button
style="margin: 0 0 10px 0 !important"
text
type="primary"
>
<vab-icon icon="settings-line" />
</el-button>
</template>
<el-checkbox-group v-model="checkList">
<vab-draggable
v-bind="dragOptions"
item-key="{ element }"
:list="columns"
>
<template #item="{ element }">
<div>
<vab-icon icon="drag-drop-line" />
<el-checkbox
:disabled="element.disableCheck === true"
:label="element.label"
>
{{ element.label }}
</el-checkbox>
</div>
</template>
</vab-draggable>
</el-checkbox-group>
</el-popover>
</vab-query-form-right-panel>
</vab-query-form>
注意按钮的图标需要引入一下
import { Delete, Plus, Search, Setting } from '@element-plus/icons-vue'
图标需要暴露出去
return {
...toRefs(state),
queryData,
handleEdit,
fetchData,
handleSizeChange,
handleCurrentChange,
//暴露图标
Plus,
Delete,
Search,
Setting,
}
搜索框放在一行,加入选择框
<template>
<div ref="containerRef" class="custom-table-container">
<vab-upload ref="vabUploadRef" :limit="50" name="file" :size="2" :url="uploadUrl" @fetch-data="fetchData" />
<vab-query-form>
<vab-query-form-panel>
<el-form inline label-width="0" :model="queryForm" @submit.prevent>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="文件名称" />
</el-form-item>
<el-form-item>
<el-select v-model="value" style="margin-left:6px" placeholder="所属部门">
<el-option v-for="item in departments" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-select v-model="value" style="margin-left:6px" placeholder="文件类型">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button :icon="Search" native-type="submit" type="primary" @click="queryData">
查询
</el-button>
<el-button :icon="Plus" type="success" @click="handleShow()">
上传
</el-button>
<el-button type="danger" @click="downloadFile()">
<vab-icon icon="download-cloud-line" />
下载
</el-button>
</el-form-item>
</el-form>
</vab-query-form-panel>
</vab-query-form>
<el-table :data="tableData" ref="multipleTableRef" @current-change="handleTableCurrentChange" highlight-current-row
v-loading="listLoading" stripe="true" size="small" border="true">
.....
</el-table>
<LandInfoEdit ref="editRef" @fetch-data="fetchData" />
<el-pagination background :current-page="queryForm.pageNo" :layout="layout" :page-size="queryForm.pageSize"
:total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</template>
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价