123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <template>
- <ContentWrap>
- <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>
- <div style="width: 100%; height: 600px">
- <el-auto-resizer>
- <template #default="{ height, width }">
- <el-table-v2
- :columns="columns"
- :data="tableData"
- :width="width"
- :height="height - 50"
- fixed
- />
- </template>
- </el-auto-resizer>
- </div>
- <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>
- </ContentWrap>
- </template>
- <script setup lang="tsx">
- import dayjs from 'dayjs'
- import { Column, ElPagination, ElTableV2, TableV2FixedDir } from 'element-plus'
- import * as NoticeApi from '@/api/system/notice'
- import { XTextButton } from '@/components/XButton'
- import { DictTag } from '@/components/DictTag'
- const { t } = useI18n() // 国际化
- 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: '公告类型',
- width: 180,
- cellRenderer: ({ cellData: type }) => (
- <DictTag type={DICT_TYPE.SYSTEM_NOTICE_TYPE} value={type}></DictTag>
- )
- },
- {
- key: 'status',
- dataKey: 'status',
- title: t('common.status'),
- width: 180,
- cellRenderer: ({ cellData: status }) => (
- <DictTag type={DICT_TYPE.COMMON_STATUS} value={status}></DictTag>
- )
- },
- {
- 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: '操作', //显示在单元格表头的文本
- width: 160, //当前列的宽度,必须设置
- fixed: TableV2FixedDir.RIGHT, //是否固定列
- align: 'center',
- cellRenderer: ({ cellData: id }) => (
- <>
- <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>
- </>
- )
- }
- ]
- const tableData = ref([])
- const tableTotal = ref(0)
- const queryParms = reactive({
- title: '',
- status: undefined,
- pageNo: 1,
- pageSize: 100
- })
- const getList = async () => {
- const res = await NoticeApi.getNoticePageApi(queryParms)
- tableData.value = res.list
- tableTotal.value = res.total
- }
- const handleUpdate = (id) => {
- console.info(id)
- }
- const handleDelete = (id) => {
- console.info(id)
- }
- getList()
- </script>
|