2023-02-11 00:44:00 +08:00
|
|
|
|
<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>
|
2023-02-11 00:44:00 +08:00
|
|
|
|
</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'
|
2023-02-11 00:44:00 +08:00
|
|
|
|
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'
|
2023-02-11 00:44:00 +08:00
|
|
|
|
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-11 00:44:00 +08:00
|
|
|
|
|
2023-02-14 15:48:23 +08:00
|
|
|
|
const tableData = ref([])
|
2023-02-11 00:44:00 +08:00
|
|
|
|
|
2023-02-14 15:48:23 +08:00
|
|
|
|
const tableTotal = ref(0)
|
2023-02-11 00:44:00 +08:00
|
|
|
|
|
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-11 00:44:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
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-11 00:44:00 +08:00
|
|
|
|
}
|
2023-02-14 15:48:23 +08:00
|
|
|
|
|
|
|
|
|
getList()
|
2023-02-11 00:44:00 +08:00
|
|
|
|
</script>
|