index.vue 3.56 KB
<template>
  <div class="quest-container">
    <!-- 搜索区域 -->
    <!-- <div class="bg-white p-4 mb-4">
      <BasicForm @register="registerForm" />
    </div> -->
    
    <!-- 表格区域 -->
    <div class="bg-white">
      <BasicTable @register="registerTable">
        <template #toolbar>
          <a-button type="primary" @click="handleCreate">
            新建
          </a-button>
        </template>
        
        <template #bodyCell="{ column, record }">
          <template v-if="column.key === 'action'">
            <TableAction
              :actions="[
                {
                  icon: 'ant-design:eye-outlined',
                  tooltip: '查看',
                  onClick: handleView.bind(null, record),
                },
                {
                  icon: 'clarity:note-edit-line',
                  tooltip: '编辑',
                  onClick: handleEdit.bind(null, record),
                },
                {
                  icon: 'ant-design:delete-outlined',
                  color: 'error',
                  tooltip: '删除',
                  popConfirm: {
                    title: '是否确认删除?',
                    confirm: handleDelete.bind(null, record),
                  },
                },
              ]"
            />
          </template>
        </template>
      </BasicTable>
    </div>
    
    <!-- 编辑弹窗 -->
    <QuestDrawer @register="registerDrawer" @success="handleSuccess" />
  </div>
</template>

<script lang="ts" setup name="QuestList">
  import { onMounted, ref } from 'vue';
  import { BasicTable, useTable, TableAction } from '/@/components/Table';
  import { useDrawer } from '/@/components/Drawer';
  import QuestDrawer from './QuestDrawer.vue';
  import { getQuestList, questDelete } from '/@/api/project/quest';
  import { columns, searchFormSchema } from './quest.data';
  
  // 注册表格
  const [registerTable, { reload }] = useTable({
    title: '问题列表',
    api: getQuestList,
    columns,
    formConfig: {
      labelWidth: 120,
      schemas: searchFormSchema,
      autoSubmitOnEnter: true,
    },
    bordered: true,
    showIndexColumn: true,
    useSearchForm: true,//启用表单搜索
  });
  // 注册抽屉
  const [registerDrawer, { openDrawer }] = useDrawer();
  
  // 表单提交
  // async function handleSubmit(values) {
  //   console.log('表单提交', values);
  //   // 假设 contentText 是需要转换为数组的字段
  //   if (typeof values.contentText === 'string') {
  //     values.contentText = values.contentText.split(',').map(item => item.trim());
  //   }
  //   await reload(values);
  //   return Promise.resolve();
  // }
  
  // 新建
  function handleCreate() {
    openDrawer(true, {
      isUpdate: false,
    });
  }
  
  // 查看(只读模式)
  function handleView(record) {
    openDrawer(true, {
      record,
      isUpdate: true,
      isView: true, // 标记为查看模式
    });
  }
  
  // 编辑
  function handleEdit(record) {
    console.log('编辑记录:', record);
    console.log('记录ID:', record.id);
    
    openDrawer(true, {
      record,
      isUpdate: true,
      isView: false, // 显式标记为编辑模式
    });
  }
  
  // 删除
  async function handleDelete(record) {
    await questDelete([record.id]);
    await reload();
  }
  
  // 刷新表格
  function handleSuccess() {
    reload();
  }
  
  // 页面加载完成后请求数据
  onMounted(async () => {
   
  });
</script>

<style lang="less" scoped>
  .quest-container {
    padding: 16px;
    
    :deep(.ant-table-wrapper) {
      padding: 16px;
    }
  }
</style>