前端开发

XYGo Admin 2026-04-22 2 次阅读

扩展前端目录、组件加载、菜单配置

API 接口

web/src/addons/{name}/api/ 下创建 TypeScript 接口文件:

typescript 复制代码
import { adminRequest } from '@/utils/http'

const prefix = '/admin/shop/order'

/** 列表 */
export function fetchShopOrderList(params: any) {
  return adminRequest.get<Record<string, any>>({
    url: `${prefix}/list`,
    params
  })
}

/** 保存 */
export function fetchShopOrderEdit(params: any) {
  return adminRequest.post<any>({
    url: `${prefix}/edit`,
    params
  })
}

/** 删除 */
export function fetchShopOrderDelete(id: number) {
  return adminRequest.post<any>({
    url: `${prefix}/delete`,
    params: { id }
  })
}

页面组件

页面放在 web/src/addons/{name}/views/ 下,使用框架提供的 ArtTableHeader 等公共组件:

vue 复制代码
<!-- web/src/addons/shop/views/order/index.vue -->
<template>
  <div class="shop-order-page art-full-height">
    <ElCard class="art-table-card" shadow="never">
      <ArtTableHeader v-model:columns="columnChecks" :loading="loading" @refresh="refreshData">
        <template #left>
          <ElButton type="primary" @click="openDialog()">新增</ElButton>
        </template>
      </ArtTableHeader>
      <ArtTable :data="tableData" :columns="columns" :loading="loading" />
      <ArtPagination :total="total" v-model:page="page" @change="loadData" />
    </ElCard>
    <OrderDialog ref="dialogRef" @success="loadData" />
  </div>
</template>

组件路径映射

菜单中配置的 component: "@addons/shop/views/order" 会被 ComponentLoader 自动解析为:

复制代码
web/src/addons/shop/views/order/index.vue

支持两种路径格式:

  • @addons/shop/views/orderorder/index.vue
  • @addons/shop/views/order.vueorder.vue(单文件)