FlowBL/src/views/system/notice/index.vue

144 lines
3.8 KiB
Vue
Raw Normal View History

<template>
<ContentWrap>
2023-02-14 15:48:23 +08:00
<el-form ref="searchForm" :model="queryParms" :inline="true">
<el-form-item label="公告标题">
<el-input v-model="queryParms.title" />
</el-form-item>
<el-form-item label="状态">
<el-select v-model="queryParms.status">
<el-option label="全部" value="" />
<el-option label="开启" :value="1" />
<el-option label="关闭" :value="0" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getList">Query</el-button>
</el-form-item>
</el-form>
2023-02-14 16:02:01 +08:00
<div style="width: 100%; height: 600px">
2023-02-14 15:48:23 +08:00
<el-auto-resizer>
<template #default="{ height, width }">
<el-table-v2 :columns="columns" :data="tableData" :width="width" :height="height" fixed />
</template>
</el-auto-resizer>
2023-02-14 16:02:01 +08:00
<div class="mt-2">
<el-pagination
:current-page="queryParms.pageNo"
:page-size="queryParms.pageSize"
layout="total, prev, pager, next"
:total="tableTotal"
@size-change="getList"
@current-change="getList"
/>
</div>
2023-02-14 15:48:23 +08:00
</div>
</ContentWrap>
</template>
2023-02-14 15:48:23 +08:00
<script setup lang="tsx">
import dayjs from 'dayjs'
import { Column, ElPagination, ElTableV2, TableV2FixedDir } from 'element-plus'
import * as NoticeApi from '@/api/system/notice'
2023-02-14 15:48:23 +08:00
import { XTextButton } from '@/components/XButton'
2023-02-14 16:02:01 +08:00
import { DictTag } from '@/components/DictTag'
const { t } = useI18n() // 国际化
2023-02-14 15:48:23 +08:00
const columns: Column<any>[] = [
{
key: 'id',
dataKey: 'id', //需要渲染当前列的数据字段,如{id:9527,name:'Mike'}则填id
title: 'id', //显示在单元格表头的文本
width: 80, //当前列的宽度,必须设置
fixed: true //是否固定列
},
{
key: 'title',
dataKey: 'title',
title: '公告标题',
width: 180
},
{
key: 'type',
dataKey: 'type',
title: '公告类型',
2023-02-14 16:02:01 +08:00
width: 180,
cellRenderer: ({ cellData: type }) => (
<DictTag type={DICT_TYPE.SYSTEM_NOTICE_TYPE} value={type}></DictTag>
)
2023-02-14 15:48:23 +08:00
},
{
key: 'status',
dataKey: 'status',
title: t('common.status'),
2023-02-14 16:02:01 +08:00
width: 180,
cellRenderer: ({ cellData: status }) => (
<DictTag type={DICT_TYPE.COMMON_STATUS} value={status}></DictTag>
)
2023-02-14 15:48:23 +08:00
},
{
key: 'content',
dataKey: 'content',
title: '公告内容',
width: 400,
cellRenderer: ({ cellData: content }) => <span v-html={content}></span>
},
{
key: 'createTime',
dataKey: 'createTime',
title: t('common.createTime'),
width: 180,
cellRenderer: ({ cellData: createTime }) => (
<>{dayjs(createTime).format('YYYY-MM-DD HH:mm:ss')}</>
)
},
{
key: 'actionbtns',
dataKey: 'actionbtns', //需要渲染当前列的数据字段,如{id:9527,name:'Mike'}则填id
title: '操作', //显示在单元格表头的文本
2023-02-14 16:02:01 +08:00
width: 160, //当前列的宽度,必须设置
2023-02-14 15:48:23 +08:00
fixed: TableV2FixedDir.RIGHT, //是否固定列
align: 'center',
cellRenderer: ({ cellData: id }) => (
2023-02-14 16:02:01 +08:00
<>
<XTextButton
preIcon="ep:delete"
title={t('action.edit')}
onClick={handleUpdate.bind(this, id)}
></XTextButton>
<XTextButton
preIcon="ep:delete"
title={t('action.del')}
onClick={handleDelete.bind(this, id)}
></XTextButton>
</>
2023-02-14 15:48:23 +08:00
)
}
]
2023-02-14 15:48:23 +08:00
const tableData = ref([])
2023-02-14 15:48:23 +08:00
const tableTotal = ref(0)
2023-02-14 15:48:23 +08:00
const queryParms = reactive({
title: '',
status: undefined,
pageNo: 1,
pageSize: 10
})
const getList = async () => {
const res = await NoticeApi.getNoticePageApi(queryParms)
tableData.value = res.list
tableTotal.value = res.total
}
2023-02-14 16:02:01 +08:00
const handleUpdate = (id) => {
console.info(id)
}
2023-02-14 15:48:23 +08:00
const handleDelete = (id) => {
console.info(id)
}
2023-02-14 15:48:23 +08:00
getList()
</script>