[English](./README.md) | 简体中文

# @ray-js/ty-outdoor-utils

[![latest](https://img.shields.io/npm/v/@ray-js/ty-outdoor-utils/latest.svg)](https://www.npmjs.com/package/@ray-js/ty-outdoor-utils) [![download](https://img.shields.io/npm/dt/@ray-js/ty-outdoor-utils.svg)](https://www.npmjs.com/package/@ray-js/ty-outdoor-utils)

> 出行工具库

## 安装

```sh
$ npm install @ray-js/ty-outdoor-utils
// 或者
$ yarn add @ray-js/ty-outdoor-utils
```

## 开发

```sh
# 实时编译组件代码
yarn watch
# 实时编译Demo代码
yarn start:tuya
```

## 使用

注意：使用出行二级页跳转时需引入 DeviceKit，且在>=1.2.6 版本

```tsx
import OutdoorUtils from '@ray-js/ty-outdoor-utils';

const { hooks } = OutdoorUtils;
const { usePayUrls } = hooks;

export default function Home() {
  const [qrcode, setQrcode] = useState('');
  const { returnUrl } = usePayUrls();
  const makeQrcode = () => {
    const img = OutdoorUtils.QRcode.make('hello world!');
    setQrcode(img);
  };

  const openSubPage = () => {
    OutdoorUtils.jumpSubPage.toCyclingRecord({
      deviceId: 'devId',
      fail: e => console.log('err', e),
    });
  };
  return (
    <View className={styles.view}>
      <Button onClick={makeQrcode}>生成二维码</Button>
      <Button onClick={openSubPage}>跳转出行二级页</Button>
      {qrcode && (
        <View className={styles.center}>
          <Image src={qrcode} />
        </View>
      )}

      <Button onClick={() => console.log('returnUrl', returnUrl)}>获取收银台地址</Button>
      <Button
        onClick={() =>
          console.log(
            OutdoorUtils.pageParameters.setQuery({
              query: { name: '小钻风', age: 20, isBoy: true },
              chineseKey: ['name'],
            })
          )
        }
      >
        参数编码
      </Button>
      <Button
        onClick={() =>
          console.log(
            OutdoorUtils.pageParameters.getQuery({
              query: { name: '小钻风', age: '20', isBoy: 'true' },
              chineseKey: ['name'],
              numberKeys: ['age'],
              booleanKeys: ['isBoy'],
            })
          )
        }
      >
        参数解码
      </Button>
    </View>
  );
}
```