'项目配置'

This commit is contained in:
2026-08-21 14:21:35 +08:00
parent 76827aedfe
commit 54084b4d07
4 changed files with 222 additions and 69 deletions
+1
View File
@@ -0,0 +1 @@
unpackage/
+79
View File
@@ -0,0 +1,79 @@
/**
* 公共路由接口封装(/public/*
* 注:响应拦截器暂未做业务规范拦截,调用方拿到的是 uni.request 原始 response 结构 { statusCode, data, header ... }
*/
import request from './request.js';
const PREFIX = '/public';
/**
* 获取商品分类树
* @param {Object} [params]
* @param {string|number} [params.countryId] 国家 ID,不传时返回全部国家
*/
export function getCategories(params) {
return request.get(`${PREFIX}/categories`, params);
}
/**
* 获取有商品的国家列表
*/
export function getCountries() {
return request.get(`${PREFIX}/countries`);
}
/**
* 获取有商品的标签列表
*/
export function getTags() {
return request.get(`${PREFIX}/tags`);
}
/**
* 获取标签组及标签筛选项
* @param {Object} [params]
* @param {string|number} [params.countryId] 国家 ID,不传时返回全部国家
*/
export function getTagGroups(params) {
return request.get(`${PREFIX}/tag-groups`, params);
}
/**
* 分页获取商品
* @param {Object} params
* @param {number} [params.page]
* @param {number} [params.pageSize]
* @param {string|number} [params.countryId]
* @param {string|number} [params.categoryId]
* @param {string} [params.keyword]
*/
export function getGoods(params) {
return request.get(`${PREFIX}/goods`, params);
}
/**
* 获取商品完整详情
* @param {string|number} goodId 商品 ID(替换路径变量 {goodId}
*/
export function getGoodsDetail(goodId) {
return request.get(`${PREFIX}/goods/${goodId}`);
}
/**
* 获取首页商品(可按国家返回)
* @param {Object} [params]
* @param {string|number} [params.countryId]
*/
export function getHomeGoods(params) {
return request.get(`${PREFIX}/home-goods`, params);
}
export default {
getCategories,
getCountries,
getTags,
getTagGroups,
getGoods,
getGoodsDetail,
getHomeGoods
};
+67
View File
@@ -0,0 +1,67 @@
/**
* uni-app 简易请求封装
* - 统一拼接 BASE_URL + path
* - 注入 token header
* - Promise 化,提供 get/post/put/delete 快捷方法
*
* 用法:
* import request from '@/api/request.js'
* request.get('/user/info', { id: 1 })
* request.post('/user/login', { username, password })
*/
// 基础路径:修改此处即可切换后端地址
const BASE_URL = 'http://192.168.124.137:3001';
// 默认配置
const TIMEOUT = 30000;
const DEFAULT_HEADER = { 'Content-Type': 'application/json' };
// 统一拼装 URL:完整地址直接返回,否则 BASE_URL + path
function buildUrl(url) {
if (!url) return '';
if (/^https?:\/\//i.test(url)) return url;
const base = BASE_URL.replace(/\/+$/, '');
const path = url.replace(/^\/+/, '');
return path ? `${base}/${path}` : base;
}
// 统一取 header(注入 token
function buildHeader(extraHeader) {
const header = Object.assign({}, DEFAULT_HEADER, extraHeader || {});
const token = uni.getStorageSync('token');
if (token) header['Authorization'] = `Bearer ${token}`;
return header;
}
/**
* 核心请求方法
* @param {Object} options
* @param {string} options.url 相对路径或完整 URL
* @param {string} [options.method='GET']
* @param {Object} [options.data] 请求参数 / body
* @param {Object} [options.header] 额外 header
* @returns {Promise<any>}
*/
function request(options = {}) {
return new Promise((resolve, reject) => {
uni.request({
url: buildUrl(options.url || ''),
method: (options.method || 'GET').toUpperCase(),
data: options.data || {},
header: buildHeader(options.header),
timeout: TIMEOUT,
dataType: 'json',
success: resolve,
fail: reject
});
});
}
// 快捷方法
request.get = (url, data, options) => request({ url, method: 'GET', data, ...options });
request.post = (url, data, options) => request({ url, method: 'POST', data, ...options });
request.put = (url, data, options) => request({ url, method: 'PUT', data, ...options });
request.delete = (url, data, options) => request({ url, method: 'DELETE', data, ...options });
export default request;
+8 -2
View File
@@ -1,6 +1,6 @@
{ {
"name" : "inkreach-miniprogram", "name" : "inkreach-miniprogram",
"appid": "", "appid" : "__UNI__73E5929",
"description" : "", "description" : "",
"versionName" : "1.0.0", "versionName" : "1.0.0",
"versionCode" : "100", "versionCode" : "100",
@@ -66,5 +66,11 @@
"uniStatistics" : { "uniStatistics" : {
"enable" : false "enable" : false
}, },
"vueVersion": "2" "vueVersion" : "2",
"h5" : {
"devServer" : {
"https" : false,
"host" : "192.168.124.19"
}
}
} }