1.0.0 • Published 10 months ago

react-client-print v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

react-client-print

NPM version NPM downloads

标签编辑器 - 定制标签打印模板

demos

线上演示

1.预览 预览

2.编辑模板 编辑模板

3.触发打印 触发打印

Usage

yarn add react-client-print

or

npm install react-client-print
import ReactClientPrint from 'react-client-print';

<ReactClientPrint
  ref={storeRef}
  templates={store.templates}
  defaultTemplateName={store.defaultTemplateName}
  dataSource={store.dataSource}
  defaultFields={store.defaultFields}
  onChange={async ({ template, operationType }) => {
    if (operationType === 'create') {
      const resp = await createTemplateSvc(template);
      if (resp.code === 200) {
        message.success('新建模板成功');
      }
    }

    if (operationType === 'update') {
      const resp = await updateTemplateSvc(template);
      if (resp.code === 200) {
        message.success('修改模板成功');
      }
    }

    if (operationType === 'delete') {
      const resp = await deleteTemplateSvc(template);
      if (resp.code === 200) {
        message.success('删除模板成功');
      }
    }

    refresh();
  }}
/>;

API

属性名描述类型默认值
templates打印模板列表TTemplate[]
defaultTemplateName默认模板名称stringundefined
dataSource打印的数据源Record<string, string>[][]
defaultFields模板字段{name: string; fields: sring[]}[][]
onChange新建/编辑/删除模板的回调ReactClientPrintProps['onChange']undefined

方法

名称描述类型
store组件内部状态 PrintStore 的实例PrintStore

types

type TBarcodeFormat = 'CODE39' | 'CODE128' | 'EAN8' | 'EAN13' | 'UPC';

interface TPosition {
  width: number;
  height: number;
  left: number;
  top: number;
  style?: React.CSSProperties;
}

export interface TNode extends TPosition {
  id: string | number;
  placeholder: string;
  type?: 'label' | 'value' | 'qrcode' | 'barcode'; // TODO
  formmat?: TBarcodeFormat; // TODO
}

export interface TTemplate {
  size: {
    type: 'fixed';
    width: number;
    height: number;
  };
  nodes: TNode[];
  name: string;
}

interface ReactClientPrintProps {
  dataSource?: Record<string, string>[];
  templates?: TTemplate[];
  defaultTemplateName?: string;
  defaultFields: {
    name: string;
    fields: string[];
  }[];
  onChange: (payload: {
    template: Partial<TTemplate>;
    operationType: 'update' | 'create' | 'delete';
  }) => void;
}

Development

# install dependencies
$ yarn install

# develop library by docs demo
$ yarn start

Reference

npm login --registry=https://registry.npmjs.org

LICENSE

MIT