1.4.3 • Published 4 months ago

ipink-util v1.4.3

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

JavaScrip & UniApp 工具类

通用的js工具类, 以及包涵特殊的uniapp环境特有工具方法

涉及主题请参考 ipink-theme | ipink-themejs

  • vue3 可以使用 ipink-theme
// store/theme.ts
import { createThemeStore } from "pink-theme";
// const useThemeStore = createThemeStore(app: Vue, options: ThemeOptions);
// (app?: any, options ?: ThemeOptions)
export const useThemeStore = createThemeStore();
// pages/index.vue
import {useThemeStore} from "@/store/theme";
const useStore = useThemeStore();
const layoutBgColor = computed(() => useStore.theme?.colorBgLayout);
console.log(layoutBgColor)
  • 其他使用 ipink-themejs
	// 自定义颜色值 List<SeedMap>
	import { createThemeList } from "ipink-theme"
    // 默认生成 黑,白 两种
	console.log(createThemeList())
	// createThemeList (options ?: ThemeOptions )
	const themeList: ColorToken[] = createThemeList({
		themeList: [],
		// 是否生成对应的暗黑主题, 
		// false: 则只生成亮色主题
		// true : 每种主题都会生成对应的暗黑主题
		// id生成: blue => blue-light, blue-dark
		useDark: false, 
	})

这里把Config.ts文件Copy到这里,可参考

import {CloseLoadingType, ContentType, InterceptorType, LoadingType, Method, ToastType} from "./typing";
import {IToast} from "./toast";

// 全剧配置文件
export class Config {
	/**
	 * App name
	 */
	static appName = ""
	/**
	 * App id
	 */
	static appId = ""
	/**
	 * 语言
	 */
	static	language = ""
	/**
	 * API 请求前缀
	 */
	static api_prefix = ""
	/**
	 * Url Option
	 */
	static request_url = ""; // HTTP 一般请求url
	static request_method: Method = "POST"; // 默认请求方法
	static socket_url = ""; // socket url
	static origin_url = ""; // 跳转的URL前缀
	static login_url = "";  // 登陆url
	static token_key = "A__APP_TOKEN__Z" // Token 存储key
	static request_timeout = 60000;// 请求超时时间
	/**
	 * Http
	 */
	static axios: any = null;

	/**
	 * 组件内部调用内部的toast方法时, 是否用内部定义的html toast, 否则使用uni.showToast
	 */
	static use_inner_toast: boolean = true;
	/**
	 * toast 持续时间
	 */
	static toast_duration: number = 2400;

	// 设置配置信息
	static setConfig(params: Config) {
		if (params) {
			Object.keys(params).forEach((v: keyof IConfig) => {
				// @ts-ignore
				Config[v] = params[v]
			})
		}
	}
}

export class HttpConfig {
    /**
     * 请求的URL
     */
    static base_url: string = Config.request_url;
    /**
     * 超时时间
     */
    static timeout: number = Config.request_timeout;
	static content_type: string = "application/json";
    /**
     * 默认方法
     */
    static default_method: Method = Config.request_method;
    /**
     * 获取token函数吗未设置则取 Storage.get(AxiosConfig.token_key)
     */
    static getToken: null | (() => string) = null
	static token_type: string = "Bearer"
    /**
     * 获取Token的Key, 默认使用的是  import {Storage} from "ipink-util";Storage.get
     */
    static token_key: string = Config.token_key
    /**
     * 外部传入的axios包, uniapp 环境下使用 request;js环境下使用 http,使用request此项忽略
     */
    static axios: any | null = Config.axios
    /**
     * 请求前缀
     */
    static api_prefix: string = Config.api_prefix;
    /**
     * 上传请求前缀
     */
    static upload_prefix: string = HttpConfig.api_prefix;
	/**
	 * 文件上传成功后用来取值,仅限于 example
	 * 单文件上传 取data, data[0];多文件直接返回data
	 * 如果设置了 upload_receive_key , 则会判定data不存在,会在顶级结构取该属性, 取不到则会取 data[upload_receive_key]
	 * @example `
	 * 	{
	 * 	    data: "https://.../demo.png",
	 * 	    // or
	 * 	    data: ["https://.../demo.png"]
	 * 	}
	 * `
	 */
	static upload_receive_key: string = "";
	/**
	 * 文件上传后后段接收的 key
	 */
	static upload_key?: string = "file"
    /**
     * 错误弹窗体方法
     */
    static toast: null | ((title: string | IToast) => void) = null;
	/**
	 * 报错时是否调用toast
	 */
	static show_toast = false

	/**
	 * 接口请求时是否开启loading, 仅适用与uniapp环境下
	 */
	static show_loading = false
	static loading: null | LoadingType  = null;
	static closeLoading: null | CloseLoadingType = null;
    /**
     * 判断StatusCode == 200的情况下,根据该值判断接口出餐是否逻辑正确, 否则赋值 [ok:false]
     */
    static code_key: string = "code"
    /**
     * 判断StatusCode == 200的情况下,根据该值判断接口出餐是否逻辑正确,依赖为该值 默认为 1
     */
    static code_value: string | number = 1
    /**
     * 默认错误信息
     */
    static default_error_msg: string = "数据响应失败!"

	/**
	 * http 请求拦截器, 在这里可设置自定义操作
	 * @param type 拦截到的类型
	 * @param data 可修改的源数据, return data 即修改完成
	 *
	 * @example `
	 *	HttpConfig.interceptor = (type, data) => {
	 *
	 *	    switch (type) {
	 *	    	// 请求前,对配置和入参做一些处理
	 *	        case "BeforeRequest":
	 *	    	// 执行中, data为RequestTask, 可执行 RequestTask.abort() 终止请求
	 *	        case "ExecRequest":
	 *	        	typeof data = { abort: () => void }
	 *	        	break;
	 *	    	// 请求完成,对出参做一些处理, 例如: 整体出参揭秘等
	 *	        case "AfterRequest":
	 *	        	break;
	 *	    	// upload 方法,选择文件后对选择的文件做一些处理;虽然该函数提供 choosedCallback:() => boolean 入参函数
	 *	        case "ChoosedFile":
	 *	        	break;
	 *	    	// UploadFile | UploadMoreFile 方法,对上传完成后的数据进行一些处理
	 *	        case "UploadFiled":
	 *	        	break;
	 *
	 *
	 *
	 *	    }
	 *	    return data
	 *	}
	 * `
	 */
	static interceptor: null |  InterceptorType = null
    /**
     * 设置默认配置
     * @param params { IHttpConfig }
     */
    static setConfig(params: HttpConfig): void {
        Object.keys(params || {}).forEach((key: string) => {
            // @ts-ignore
            AxiosConfig[key] = params[key]
        })
    }
}

/**
 * 拦截器内部盼盼是否存在,存在即调用调用
 * @param type
 * @param data
 */
export function interceptor(type: string, data: any) {
    if(typeof HttpConfig.interceptor === "function") {
        return HttpConfig.interceptor(type, data);
    }
    return data;
}

export const getSdk = (): Uni => {
    // @ts-ignore
    return "undefined" != typeof uni ? uni : "undefined" != typeof wx ? wx : "undefined" != typeof my ? my : "undefined" != typeof qq ? qq : "undefined" != typeof swan ? swan : null; // uni | wx | qq | my
}
// @ts-ignore
export const win: Window = "undefined" != typeof window ? window : "undefined" != this ? this : "undefined" != self ? self : null; // window | self | this
1.2.0

5 months ago

1.2.8

5 months ago

1.2.6

5 months ago

1.4.3

4 months ago

1.2.5

5 months ago

1.4.2

4 months ago

1.4.1

4 months ago

1.2.3

5 months ago

1.4.0

4 months ago

1.2.2

5 months ago

1.2.1

5 months ago

1.4.0-meta.2

4 months ago

1.4.0-meta.1

4 months ago

1.4.0-meta.3

4 months ago

1.3.9

4 months ago

1.3.8

4 months ago

1.2.10

4 months ago

1.1.1

8 months ago

1.1.0

8 months ago

1.3.7

4 months ago

1.3.6

4 months ago

1.1.8

6 months ago

1.3.5

4 months ago

1.1.7

7 months ago

1.3.4

4 months ago

1.1.6

7 months ago

1.3.3

4 months ago

1.1.5

7 months ago

1.3.2

4 months ago

1.1.4

7 months ago

1.3.1

4 months ago

1.1.3

8 months ago

1.1.2

8 months ago

1.2.9

5 months ago

1.0.37

10 months ago

1.0.36

10 months ago

1.0.35

10 months ago

1.0.22

1 year ago

1.0.21

1 year ago

1.0.20

1 year ago

1.0.24

1 year ago

1.0.23

1 year ago

1.0.33

1 year ago

1.0.32

1 year ago

1.0.34

11 months ago

1.0.19

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.11

1 year ago

1.0.12

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

1.0.5

1 year ago

0.0.4

1 year ago

1.0.3

1 year ago

0.0.1

1 year ago