feat: table 接口 对接

This commit is contained in:
RubyLiu 2023-06-02 15:18:59 +08:00 committed by rubylliu
parent 84a022e862
commit 50fe6619c8
12 changed files with 46 additions and 34 deletions

View File

@ -1 +1,2 @@
VITE_API_BASE_URL= 'http://localhost:8080' VITE_API_BASE_URL= 'http://192.168.200.10:8081'
VUE_APP_Access_Control_Allow_Origin= '*'

View File

@ -11,6 +11,12 @@ export default mergeConfig(
fs: { fs: {
strict: true, strict: true,
}, },
proxy: {
'/api': {
target: 'http://192.168.200.10:8081',
changeOrigin: true,
},
},
}, },
plugins: [ plugins: [
eslint({ eslint({

View File

@ -76,12 +76,12 @@ const transform: AxiosTransform = {
throw new Error(t('api.apiRequestFailed')); throw new Error(t('api.apiRequestFailed'));
} }
// 这里 coderesultmessage为 后台统一的字段 // 这里 coderesultmessage为 后台统一的字段
const { code, result, message } = data; const { code, data: dataResult, message } = data;
// TODO:定义完成功code后需要重写 // TODO:定义完成功code后需要重写
const hasSuccess = data && Reflect.has(data, 'code') && Number(code) === ResultEnum.SUCCESS; const hasSuccess = data && Reflect.has(data, 'code') && Number(code) === ResultEnum.SUCCESS;
if (hasSuccess) { if (hasSuccess) {
return result; return dataResult;
} }
// 在此处根据自己项目的实际情况对不同的code执行不同的操作 // 在此处根据自己项目的实际情况对不同的code执行不同的操作

View File

@ -2,13 +2,15 @@ import MSR from '@/api/http/index';
import { GetApiTestList, GetApiTestListUrl } from '@/api/requrls/api-test'; import { GetApiTestList, GetApiTestListUrl } from '@/api/requrls/api-test';
import { QueryParams } from '@/components/ms-table/useTable'; import { QueryParams } from '@/components/ms-table/useTable';
import { ApiTestListI } from '@/models/api-test'; import { ApiTestListI } from '@/models/api-test';
import CommonReponse from '@/models/common';
export function getTableList(params: QueryParams) { export function getTableList(params: QueryParams) {
const { current, pageSize } = params; const { current, pageSize } = params;
return MSR.get<CommonReponse<ApiTestListI>>({ url: `${GetApiTestList}/${current}/${pageSize}` }); return MSR.post<ApiTestListI>({
url: GetApiTestList,
data: { current, pageSize, projectId: 'test-project-id' },
});
} }
export function getlist() { export function getlist() {
return MSR.get<CommonReponse<ApiTestListI>>({ url: GetApiTestListUrl }); return MSR.get<ApiTestListI>({ url: GetApiTestListUrl });
} }

View File

@ -1,2 +1,2 @@
export const GetApiTestListUrl = '/mock/list/menu'; export const GetApiTestListUrl = '/mock/list/menu';
export const GetApiTestList = '/mock/api-test/define/list/'; export const GetApiTestList = '/api/definition/page';

View File

@ -1,19 +1,21 @@
/** 表格样式 **/ .arco-reset {
.arco-table-cell { /** 表格样式 **/
.circle { .arco-table-cell {
display: inline-block; .circle {
margin-right: 4px; display: inline-block;
width: 6px; margin-right: 4px;
height: 6px; width: 6px;
border-radius: 50%; height: 6px;
background-color: rgb(var(--blue-6)); border-radius: 50%;
&.pass { background-color: rgb(var(--blue-6));
background-color: rgb(var(--green-6)); &.pass {
background-color: rgb(var(--green-6));
}
} }
} }
}
/** Tabs 组件样式 **/ /** Tabs 组件样式 **/
.arco-tabs-nav-add-btn { .arco-tabs-nav-add-btn {
font-size: var(--font-size-base); font-size: var(--font-size-base);
}
} }

View File

@ -13,7 +13,7 @@ export interface MsTabelProps extends MsPaginationI {
// 表格数据 - 详见 TableData https://arco.design/web-vue/components/table-data; // 表格数据 - 详见 TableData https://arco.design/web-vue/components/table-data;
data: TableData[]; data: TableData[];
// 表格尺寸 // 表格尺寸
size?: 'small' | 'default' | 'large'; size?: 'mini' | 'small' | 'default' | 'large';
// 表格是否可滚动 // 表格是否可滚动
scroll?: { scroll?: {
x?: number | string; x?: number | string;

View File

@ -3,7 +3,6 @@
import { ref } from 'vue'; import { ref } from 'vue';
import { MsTabelProps, MsTableData, MsTableColumn } from './type'; import { MsTabelProps, MsTableData, MsTableColumn } from './type';
import CommonReponse from '@/models/common';
import { ApiTestListI } from '@/models/api-test'; import { ApiTestListI } from '@/models/api-test';
export interface Pagination { export interface Pagination {
@ -19,11 +18,11 @@ export interface QueryParams {
[key: string]: any; [key: string]: any;
} }
type GetListFunc = (v: QueryParams) => Promise<CommonReponse<ApiTestListI>>; type GetListFunc = (v: QueryParams) => Promise<ApiTestListI>;
export default function useTbleProps(loadListFunc: GetListFunc, props?: Partial<MsTabelProps>) { export default function useTbleProps(loadListFunc: GetListFunc, props?: Partial<MsTabelProps>) {
const defaultProps: MsTabelProps = { const defaultProps: MsTabelProps = {
'bordered': true, 'bordered': true,
'size': 'small', 'size': 'mini',
'scroll': { y: 550, x: '1400px' }, 'scroll': { y: 550, x: '1400px' },
'expandable': false, 'expandable': false,
'loading': true, 'loading': true,
@ -85,7 +84,7 @@ export default function useTbleProps(loadListFunc: GetListFunc, props?: Partial<
const loadList = async () => { const loadList = async () => {
const { current, pageSize } = propsRes.value.pagination as Pagination; const { current, pageSize } = propsRes.value.pagination as Pagination;
setLoading(true); setLoading(true);
const { data } = await loadListFunc({ const data = await loadListFunc({
current, current,
pageSize, pageSize,
...loadListParams.value, ...loadListParams.value,

View File

@ -1,5 +1,5 @@
<template> <template>
<a-layout class="layout" :class="{ mobile: appStore.hideMenu }"> <a-layout class="layout arco-reset" :class="{ mobile: appStore.hideMenu }">
<div v-if="navbar" class="layout-navbar"> <div v-if="navbar" class="layout-navbar">
<NavBar /> <NavBar />
</div> </div>

View File

@ -1,5 +1,6 @@
export default interface CommonReponse<T> { export default interface CommonReponse<T> {
code: number; code: number;
message: string; message: string;
messageDetail: string;
data: T; data: T;
} }

View File

@ -4,18 +4,18 @@ export default ({ mock, setup }: { mock?: boolean; setup: () => void }) => {
if (mock !== false && debug) setup(); if (mock !== false && debug) setup();
}; };
export const successResponseWrap = (result: unknown) => { export const successResponseWrap = (data: unknown) => {
return { return {
result, data,
status: 'ok', status: 'ok',
message: '请求成功', message: '请求成功',
code: 0, code: 0,
}; };
}; };
export const failResponseWrap = (result: unknown, message: string, code = 50000) => { export const failResponseWrap = (data: unknown, message: string, code = 50000) => {
return { return {
result, data,
status: 'fail', status: 'fail',
message, message,
code, code,

View File

@ -18,10 +18,11 @@ export interface RequestOptions {
} }
export interface Result<T = any> { export interface Result<T = any> {
code: string; code: number;
type: 'success' | 'error' | 'warning'; type: 'success' | 'error' | 'warning';
message: string; message: string;
result: T; messageDetail?: string;
data: T;
} }
// multipart/form-data: upload file // multipart/form-data: upload file