| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <!-- <template>
- <div>
- <BasicTable @register="registerTable">
- <template #toolbar>
- <a-button type="warning" @click="handleImportTable">导入</a-button>
- <a-button type="success" @click="handleGenTable">生成</a-button>
- <a-button type="danger" @click="handleDelete">删除</a-button>
- </template>
- <template #bodyCell="{ column, record }">
- <template v-if="column.key == 'action'">
- <TableAction
- :actions="[
- {
- tooltip: '预览',
- label: '预览',
- onClick: handlePreview.bind(null, record),
- },
- {
- tooltip: '编辑',
- label: '编辑',
- onClick: handleEditTable.bind(null, record),
- },
- {
- tooltip: '删除',
- label: '删除',
- onClick: handleDelete.bind(null, record),
- },
- {
- tooltip: '同步',
- label: '同步',
- onClick: handleSynchDb.bind(null, record),
- },
- {
- tooltip: '生成代码',
- label: '生成代码',
- onClick: handleGenTable.bind(null, record),
- },
- ]"
- />
- </template>
- </template>
- </BasicTable>
- <PreviewModal @register="registerModal" @success="handleSuccess" />
- <EditModal @register="registerModalEdit" @success="handleSuccess" />
- <TableModal @register="registerModalTable" @success="handleSuccess" />
- </div>
- </template>
- <script lang="ts" setup>
- import { BasicTable, useTable, TableAction } from '/@/components/Table';
- import { columns, searchFormSchema } from './data';
- import { genList, genSynchDb, genRemove, genBatchGenCode } from '/@/api/sys/sysGenApi';
- import { useModal } from '/@/components/Modal';
- import PreviewModal from './PreviewModal.vue';
- import EditModal from './EditModal.vue';
- import TableModal from './TableModal.vue';
- import { downloadByData } from '/@/utils/file/download';
- import { useMessage } from '/@/hooks/web/useMessage';
- const { createMessage } = useMessage();
- const [registerModal, { openModal }] = useModal();
- const [registerModalTable, { openModal: openModalTable }] = useModal();
- const [registerModalEdit, { openModal: openModalEdit }] = useModal();
- const [registerTable, { getSelectRowKeys, getSelectRows, reload }] = useTable({
- title: '代码生成列表',
- api: genList,
- rowKey: 'tableId',
- rowSelection: { type: 'checkbox' },
- clickToRowSelect: false,
- columns,
- formConfig: {
- labelWidth: 120,
- schemas: searchFormSchema,
- autoSubmitOnEnter: true,
- baseColProps: { xs: 24, sm: 12, md: 12, lg: 8 },
- resetButtonOptions: {
- preIcon: 'ant-design:delete-outlined',
- },
- submitButtonOptions: {
- preIcon: 'ant-design:search-outlined',
- },
- },
- showIndexColumn: true,
- indexColumnProps: {
- fixed: 'left',
- },
- useSearchForm: true,
- showTableSetting: true,
- bordered: true,
- actionColumn: {
- width: 300,
- title: '操作',
- dataIndex: 'action',
- },
- });
- // 预览按钮事件
- function handlePreview(record: Recordable) {
- console.log(record);
- openModal(true, {
- record,
- });
- }
- // 编辑按钮事件
- function handleEditTable(record: Recordable) {
- console.log(record);
- openModalEdit(true, {
- record,
- });
- }
- // 删除按钮事件
- async function handleDelete(record: Recordable) {
- const isGen = getSelectRowKeys().length ? true : false;
- if (isGen) {
- await genRemove(getSelectRowKeys());
- } else {
- await genRemove([record.tableId]);
- }
- await reload();
- }
- // 同步按钮事件
- async function handleSynchDb(record: Recordable) {
- console.log(record);
- const res = await genSynchDb({ tableName: record.tableName });
- createMessage.success('同步成功');
- console.log('🚀 ~ file: index.vue ~ line 106 ~ handleSynchDb ~ res', res);
- }
- // 导入
- function handleImportTable(record) {
- openModalTable(true, {
- record,
- });
- }
- // 生成按钮事件
- async function handleGenTable(record: Recordable) {
- const isGen = getSelectRows().length ? true : false;
- console.log(
- '🚀 ~ file: index.vue:123 ~ handleGenTable ~ getSelectRows().length ',
- getSelectRows().length,
- );
- let streamData = '';
- let fileName = '';
- if (isGen) {
- const tables = getSelectRows()
- .map(ele => {
- return ele.tableName;
- })
- .join(',');
- streamData = await genBatchGenCode(tables);
- fileName = tables;
- } else {
- streamData = await genBatchGenCode(record.tableName);
- fileName = record.tableName;
- }
- console.log('🚀 ~ file: index.vue:139 ~ handleGenTable ~ streamData', streamData);
- downloadByData(streamData, `${fileName}.zip`);
- console.log(record);
- // let url = GenBatchGenCode();
- }
- // 详情按钮事件
- async function handleSuccess(record: Recordable) {
- console.log(record);
- await reload();
- }
- </script> -->
- <template>
- <div />
- </template>
- <script setup lang="ts"></script>
- <style scoped></style>
|