12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <script lang="ts" setup>
- import { h, reactive, ref } from 'vue';
- import { BasicTable, TableAction } from '@/components/Table';
- import { BasicForm, useForm } from '@/components/Form/index';
- import { del, page as getPage } from '@/api/aigc/message';
- import { columns, searchSchemas } from './columns';
- import { DeleteOutlined } from '@vicons/antd';
- import { useDialog, useMessage } from 'naive-ui';
- const message = useMessage();
- const dialog = useDialog();
- const actionRef = ref();
- const actionColumn = reactive({
- width: 100,
- title: '操作',
- key: 'action',
- fixed: 'right',
- align: 'center',
- render(record: any) {
- return h(TableAction as any, {
- style: 'text',
- actions: [
- {
- type: 'error',
- icon: DeleteOutlined,
- onClick: handleDelete.bind(null, record),
- },
- ],
- });
- },
- });
- const [register, { getFieldsValue }] = useForm({
- gridProps: { cols: '1 s:1 m:2 l:3 xl:4 2xl:4' },
- labelWidth: 80,
- schemas: searchSchemas,
- showAdvancedButton: false,
- });
- const loadDataTable = async (res: any) => {
- return await getPage({ ...getFieldsValue(), ...res });
- };
- function reloadTable() {
- actionRef.value.reload();
- }
- function handleDelete(record: Recordable) {
- dialog.info({
- title: '提示',
- content: `您想删除此条记录?`,
- positiveText: '确定',
- negativeText: '取消',
- onPositiveClick: async () => {
- await del(record.id);
- message.success('删除成功');
- reloadTable();
- },
- onNegativeClick: () => {},
- });
- }
- function handleReset(values: Recordable) {
- reloadTable();
- }
- </script>
- <template>
- <div class="h-full">
- <n-card :bordered="false">
- <BasicForm @register="register" @reset="handleReset" @submit="reloadTable" />
- <BasicTable
- ref="actionRef"
- :actionColumn="actionColumn"
- :columns="columns"
- :request="loadDataTable"
- :row-key="(row:any) => row.id"
- :single-line="false"
- :size="'small'"
- />
- </n-card>
- </div>
- </template>
- <style lang="less" scoped></style>
|