Skip to content

编码生成器组件

概述

CodeGenerator 是一个自动编码生成器组件,支持多种编码生成模式,包括日期序列、随机码、自定义模板等,通过后端 API 生成唯一编码。

组件路径web/apps/web-ele/src/components/zq-form/code-generator/

组件名称CodeGenerator

功能特性

  • 多种生成模式(日期序列、随机码、自定义模板)
  • 自定义前缀和分隔符
  • 序列号长度和重置规则配置
  • 挂载时自动生成
  • 编辑模式支持

Props

属性类型默认值说明
modelValuestring-编码值
prefixstring''编码前缀
separatorstring''分隔符
generateModestring'date_seq'生成模式
dateFormatstring'YYYYMMDD'日期格式
seqLengthnumber4序列号长度
seqResetRulestring'daily'序列重置规则
randomLengthnumber6随机码长度
customTemplatestring''自定义模板
businessTypestring'default'业务类型
disabledbooleantrue是否禁用输入
readonlybooleantrue是否只读
placeholderstring'自动生成编码'占位符
generateOnMountbooleantrue挂载时自动生成
isEditbooleanfalse是否编辑模式

生成模式

模式说明示例
date_seq日期 + 序列号ORD20240115-0001
random随机码A3B7C9
seq_only仅序列号0001
custom自定义模板根据模板生成

序列重置规则

规则说明
daily每天重置
monthly每月重置
yearly每年重置
never永不重置

Events

事件参数说明
update:modelValuestring值更新
changestring编码变化

Expose 方法

方法参数说明
generateCode-手动生成编码

使用示例

基本用法

vue
<template>
  <CodeGenerator v-model="orderNo" prefix="ORD" />
</template>

<script setup>
import { ref } from 'vue';

const orderNo = ref('');
</script>

自定义格式

vue
<template>
  <CodeGenerator
    v-model="code"
    prefix="INV"
    separator="-"
    date-format="YYYYMM"
    :seq-length="6"
    seq-reset-rule="monthly"
  />
</template>

随机码模式

vue
<template>
  <CodeGenerator
    v-model="code"
    generate-mode="random"
    :random-length="8"
  />
</template>

编辑模式(不自动生成)

vue
<template>
  <CodeGenerator
    v-model="code"
    :is-edit="true"
    :generate-on-mount="false"
  />
</template>

与表单设计器集成

在表单设计器中,该组件作为 code-generator 类型的表单项使用:

json
{
  "type": "code-generator",
  "field": "order_no",
  "label": "订单编号",
  "props": {
    "prefix": "ORD",
    "separator": "-",
    "generateMode": "date_seq",
    "dateFormat": "YYYYMMDD",
    "seqLength": 4,
    "seqResetRule": "daily",
    "businessType": "order"
  }
}

后端 API

组件调用 /api/core/code-generator/generate 接口生成编码,请求参数:

json
{
  "prefix": "ORD",
  "separator": "-",
  "generate_mode": "date_seq",
  "date_format": "YYYYMMDD",
  "seq_length": 4,
  "seq_reset_rule": "daily",
  "random_length": 6,
  "custom_template": "",
  "business_type": "order"
}

典型应用场景

  • 订单编号:生成唯一订单号
  • 合同编号:生成合同编号
  • 工单编号:生成工单编号
  • 流水号:生成业务流水号

Released under the MIT License.