style: 统一代码格式和类型定义,测试eslint --fix, 还是有报错

This commit is contained in:
feige996
2025-06-21 16:56:24 +08:00
parent 9cf0c212bf
commit 227f19a93c
40 changed files with 396 additions and 367 deletions

View File

@@ -1,6 +1,6 @@
import { CustomRequestOptions } from '@/interceptors/request'
import type { CustomRequestOptions } from '@/interceptors/request'
export const http = <T>(options: CustomRequestOptions) => {
export function http<T>(options: CustomRequestOptions) {
// 1. 返回 Promise 对象
return new Promise<IResData<T>>((resolve, reject) => {
uni.request({
@@ -15,18 +15,20 @@ export const http = <T>(options: CustomRequestOptions) => {
if (res.statusCode >= 200 && res.statusCode < 300) {
// 2.1 提取核心数据 res.data
resolve(res.data as IResData<T>)
} else if (res.statusCode === 401) {
}
else if (res.statusCode === 401) {
// 401错误 -> 清理用户信息,跳转到登录页
// userStore.clearUserInfo()
// uni.navigateTo({ url: '/pages/login/login' })
reject(res)
} else {
}
else {
// 其他错误 -> 根据后端错误信息轻提示
!options.hideErrorToast &&
uni.showToast({
icon: 'none',
title: (res.data as IResData<T>).msg || '请求错误',
})
!options.hideErrorToast
&& uni.showToast({
icon: 'none',
title: (res.data as IResData<T>).msg || '请求错误',
})
reject(res)
}
},
@@ -49,12 +51,7 @@ export const http = <T>(options: CustomRequestOptions) => {
* @param header 请求头默认为json格式
* @returns
*/
export const httpGet = <T>(
url: string,
query?: Record<string, any>,
header?: Record<string, any>,
options?: Partial<CustomRequestOptions>,
) => {
export function httpGet<T>(url: string, query?: Record<string, any>, header?: Record<string, any>, options?: Partial<CustomRequestOptions>) {
return http<T>({
url,
query,
@@ -72,13 +69,7 @@ export const httpGet = <T>(
* @param header 请求头默认为json格式
* @returns
*/
export const httpPost = <T>(
url: string,
data?: Record<string, any>,
query?: Record<string, any>,
header?: Record<string, any>,
options?: Partial<CustomRequestOptions>,
) => {
export function httpPost<T>(url: string, data?: Record<string, any>, query?: Record<string, any>, header?: Record<string, any>, options?: Partial<CustomRequestOptions>) {
return http<T>({
url,
query,
@@ -91,13 +82,7 @@ export const httpPost = <T>(
/**
* PUT 请求
*/
export const httpPut = <T>(
url: string,
data?: Record<string, any>,
query?: Record<string, any>,
header?: Record<string, any>,
options?: Partial<CustomRequestOptions>,
) => {
export function httpPut<T>(url: string, data?: Record<string, any>, query?: Record<string, any>, header?: Record<string, any>, options?: Partial<CustomRequestOptions>) {
return http<T>({
url,
data,
@@ -111,12 +96,7 @@ export const httpPut = <T>(
/**
* DELETE 请求(无请求体,仅 query
*/
export const httpDelete = <T>(
url: string,
query?: Record<string, any>,
header?: Record<string, any>,
options?: Partial<CustomRequestOptions>,
) => {
export function httpDelete<T>(url: string, query?: Record<string, any>, header?: Record<string, any>, options?: Partial<CustomRequestOptions>) {
return http<T>({
url,
query,

View File

@@ -1,7 +1,7 @@
import { pages, subPackages } from '@/pages.json'
import { isMpWeixin } from './platform'
export const getLastPage = () => {
export function getLastPage() {
// getCurrentPages() 至少有1个元素所以不再额外判断
// const lastPage = getCurrentPages().at(-1)
// 上面那个在低版本安卓中打包会报错,所以改用下面这个【虽然我加了 src/interceptions/prototype.ts但依然报错】
@@ -14,7 +14,7 @@ export const getLastPage = () => {
* path 如 '/pages/login/index'
* redirectPath 如 '/pages/demo/base/route-interceptor'
*/
export const currRoute = () => {
export function currRoute() {
const lastPage = getLastPage()
const currRoute = (lastPage as any).$page
// console.log('lastPage.$page:', currRoute)
@@ -29,7 +29,7 @@ export const currRoute = () => {
return getUrlObj(fullPath)
}
const ensureDecodeURIComponent = (url: string) => {
function ensureDecodeURIComponent(url: string) {
if (url.startsWith('%')) {
return ensureDecodeURIComponent(decodeURIComponent(url))
}
@@ -40,7 +40,7 @@ const ensureDecodeURIComponent = (url: string) => {
* 比如输入url: /pages/login/index?redirect=%2Fpages%2Fdemo%2Fbase%2Froute-interceptor
* 输出: {path: /pages/login/index, query: {redirect: /pages/demo/base/route-interceptor}}
*/
export const getUrlObj = (url: string) => {
export function getUrlObj(url: string) {
const [path, queryStr] = url.split('?')
// console.log(path, queryStr)
@@ -63,11 +63,11 @@ export const getUrlObj = (url: string) => {
* 这里设计得通用一点,可以传递 key 作为判断依据,默认是 needLogin, 与 route-block 配对使用
* 如果没有传 key则表示所有的 pages如果传递了 key, 则表示通过 key 过滤
*/
export const getAllPages = (key = 'needLogin') => {
export function getAllPages(key = 'needLogin') {
// 这里处理主包
const mainPages = pages
.filter((page) => !key || page[key])
.map((page) => ({
.filter(page => !key || page[key])
.map(page => ({
...page,
path: `/${page.path}`,
}))
@@ -79,7 +79,7 @@ export const getAllPages = (key = 'needLogin') => {
const { root } = subPageObj
subPageObj.pages
.filter((page) => !key || page[key])
.filter(page => !key || page[key])
.forEach((page: { path: string } & Record<string, any>) => {
subPages.push({
...page,
@@ -96,18 +96,18 @@ export const getAllPages = (key = 'needLogin') => {
* 得到所有的需要登录的 pages包括主包和分包的
* 只得到 path 数组
*/
export const getNeedLoginPages = (): string[] => getAllPages('needLogin').map((page) => page.path)
export const getNeedLoginPages = (): string[] => getAllPages('needLogin').map(page => page.path)
/**
* 得到所有的需要登录的 pages包括主包和分包的
* 只得到 path 数组
*/
export const needLoginPages: string[] = getAllPages('needLogin').map((page) => page.path)
export const needLoginPages: string[] = getAllPages('needLogin').map(page => page.path)
/**
* 根据微信小程序当前环境,判断应该获取的 baseUrl
*/
export const getEnvBaseUrl = () => {
export function getEnvBaseUrl() {
// 请求基准地址
let baseUrl = import.meta.env.VITE_SERVER_BASEURL
@@ -136,7 +136,7 @@ export const getEnvBaseUrl = () => {
/**
* 根据微信小程序当前环境,判断应该获取的 UPLOAD_BASEURL
*/
export const getEnvBaseUploadUrl = () => {
export function getEnvBaseUploadUrl() {
// 请求基准地址
let baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL

View File

@@ -1,11 +1,11 @@
import { CustomRequestOptions } from '@/interceptors/request'
import type { CustomRequestOptions } from '@/interceptors/request'
/**
* 请求方法: 主要是对 uni.request 的封装,去适配 openapi-ts-request 的 request 方法
* @param options 请求参数
* @returns 返回 Promise 对象
*/
const http = <T>(options: CustomRequestOptions) => {
function http<T>(options: CustomRequestOptions) {
// 1. 返回 Promise 对象
return new Promise<T>((resolve, reject) => {
uni.request({
@@ -20,18 +20,20 @@ const http = <T>(options: CustomRequestOptions) => {
if (res.statusCode >= 200 && res.statusCode < 300) {
// 2.1 提取核心数据 res.data
resolve(res.data as T)
} else if (res.statusCode === 401) {
}
else if (res.statusCode === 401) {
// 401错误 -> 清理用户信息,跳转到登录页
// userStore.clearUserInfo()
// uni.navigateTo({ url: '/pages/login/login' })
reject(res)
} else {
}
else {
// 其他错误 -> 根据后端错误信息轻提示
!options.hideErrorToast &&
uni.showToast({
icon: 'none',
title: (res.data as T & { msg?: string })?.msg || '请求错误',
})
!options.hideErrorToast
&& uni.showToast({
icon: 'none',
title: (res.data as T & { msg?: string })?.msg || '请求错误',
})
reject(res)
}
},

View File

@@ -21,8 +21,8 @@ export function showToast(options: ToastOptions | string) {
position: 'middle',
message: '',
}
const mergedOptions =
typeof options === 'string'
const mergedOptions
= typeof options === 'string'
? { ...defaultOptions, message: options }
: { ...defaultOptions, ...options }
// 映射position到uniapp支持的格式

View File

@@ -21,7 +21,7 @@ import { toast } from './toast'
*/
export const uploadFileUrl = {
/** 用户头像上传地址 */
USER_AVATAR: import.meta.env.VITE_SERVER_BASEURL + '/user/avatar',
USER_AVATAR: `${import.meta.env.VITE_SERVER_BASEURL}/user/avatar`,
}
/**
@@ -31,12 +31,7 @@ export const uploadFileUrl = {
* @param formData 额外表单数据
* @param options 上传选项
*/
export const useFileUpload = <T = string>(
url: string,
filePath: string,
formData: Record<string, any> = {},
options: Omit<UploadOptions, 'sourceType' | 'sizeType' | 'count'> = {},
) => {
export function useFileUpload<T = string>(url: string, filePath: string, formData: Record<string, any> = {}, options: Omit<UploadOptions, 'sourceType' | 'sizeType' | 'count'> = {}) {
return useUpload<T>(
url,
formData,
@@ -76,13 +71,9 @@ export interface UploadOptions {
* @param options 上传选项
* @returns 上传状态和控制对象
*/
export const useUpload = <T = string>(
url: string,
formData: Record<string, any> = {},
options: UploadOptions = {},
export function useUpload<T = string>(url: string, formData: Record<string, any> = {}, options: UploadOptions = {},
/** 直接传入文件路径,跳过选择器 */
directFilePath?: string,
) => {
directFilePath?: string) {
/** 上传中状态 */
const loading = ref(false)
/** 上传错误状态 */
@@ -161,7 +152,8 @@ export const useUpload = <T = string>(
success: (res) => {
const file = res.tempFiles[0]
// 检查文件大小是否符合限制
if (!checkFileSize(file.size)) return
if (!checkFileSize(file.size))
return
// 开始上传
loading.value = true
@@ -295,7 +287,8 @@ function uploadFile<T>({
// 上传成功
data.value = _data as T
onSuccess?.(_data)
} catch (err) {
}
catch (err) {
// 响应解析错误
console.error('解析上传响应失败:', err)
error.value = true
@@ -320,7 +313,8 @@ function uploadFile<T>({
progress.value = res.progress
onProgress?.(res.progress)
})
} catch (err) {
}
catch (err) {
// 创建上传任务失败
console.error('创建上传任务失败:', err)
error.value = true