1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { toast } from "@whale.io/mini/es/utils/fn";
- export * from "@whale.io/common/es/utils/fn";
- let systemInfo;
- /**
- * 转换rpx为px.
- *
- * @param rpx responsive pixel.
- * @returns pixel unit.
- * @see https://opendocs.alipay.com/mini/framework/acss#rpx
- */
- function rpxToPx(rpx) {
- if (!systemInfo) {
- systemInfo = my.getSystemInfoSync();
- }
- return rpx * (systemInfo.windowWidth / 750);
- }
- /**
- * 解析小程序之间相互跳转scheme.
- *
- * @param scheme Schema需符合`alipays://platformapi/startapp?appId=&page=`形式,page中如果还有其它url参数需encode.
- * @returns
- */
- function parseMiniScheme(scheme) {
- let miniParams = {};
- scheme = scheme || "";
- if (scheme.indexOf("alipays://platformapi/startapp") >= 0) {
- const schemaSegments = scheme.split("?");
- const pathParams = schemaSegments[1];
- const values = pathParams.split("&");
- values.forEach((item) => {
- miniParams = miniParams || {};
- const [key, val] = item.split("=");
- miniParams[key] = val;
- });
- }
- return miniParams;
- }
- function convertMiniScheme(params) {
- const { appId, path, query, extraData } = params;
- let scheme = `alipays://platformapi/startapp?appId=${appId}`;
- if (path) {
- scheme += `&page=${encodeURIComponent(path)}`;
- }
- if (query) {
- const newQuery = Object.keys(query)
- .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(query[k])}`)
- .join("&");
- scheme += `&query=${encodeURIComponent(newQuery)}`;
- }
- if (extraData && Object.keys(extraData).length) {
- console.log("! extraData 不支持在 scheme 中使用", params);
- }
- return scheme;
- }
- const params = {
- appId: "2022061812345678",
- path: "/pages/index/index",
- query: { foo: "bar" },
- };
- export { rpxToPx, toast, parseMiniScheme, convertMiniScheme };
|