# yjyl-input-unit 单位转换组件使用说明 功能特性 支持双向数值绑定 内置单位换算逻辑(含温度特殊处理) 支持单位循环切换/弹窗选择两种模式 兼容 Vue2/Vue3 和 UniApp 多平台 支持自定义单位显示 可配置小数位数精度 符合uni-modules标准,直接使用 Props 配置 |属性名 |类型 |必填 |默认值 |说明 | |:-: |:-: |:-: |:-: |:-: | |unitType |String |是 |- |单位类型(例:'length', 'weight', 'temperature') | |unitOrder |Number |否 |0 |当前单位序号(需配合 .sync 修饰符使用) | |value |Number |是 |- |输入数值(使用 v-model 双向绑定) | |showEnglishOnly |Boolean|否 |false |是否只显示英文单位(例:'kg' 代替 ' 千克 (kg)') | |decimalPlaces |Number |否 |5 |小数位数(0 - 10) | |width |Number |否 |180 |组件总宽度(px) | |height |Number |否 |32 |组件高度(px) | |enableConvert |Boolean|否 |true |是否允许单位转换 | |userDefined |Boolean|否 |false |是否使用自定义单位 | |userDefinedunitName|String |否 |'' |自定义单位显示名称(需 userDefined = true 生效) | 事件说明 | 事件名称 | 说明 | 回调参数 | | input | 数值变化时触发 | (newValue: number) | | update:unitOrder | 单位序号变化时触发 | (newOrder: number) | | conversion | 完成单位转换时触发 | { initialValue, newValue, oldUnit, newUnit, oldOrder, newOrder } 的 Object | 使用示例 基本用法 vue 禁用转换模式 事件处理 vue 复制 API 需自己开发,按照下面的数据格式进行组织,参考unitData.js 组件依赖 listSysUnitConvert API 获取单位数据,需实现以下格式的接口: javascript { rows: [ { id: 1, unitType: 'length', unitName: '米(m)', conversionFactor: 1, baseUnit: 'Y', unitOrder: 0 }, // ...其他单位数据 ] } 样式调整 可通过以下 CSS 类名自定义样式: .unit-converter - 组件容器 .input-field - 输入框 .unit-label - 单位标签 .unit-selector - 单位选择器 .unit-option - 单位选项 平台差异 小程序端使用 longpress 事件触发选择器(长按代替双击) H5 端自动适配点击事件 单位转换规则 温度单位需按约定顺序定义: javascript 复制 [ { unitOrder: 0, unitName: '℃' }, // 摄氏度 { unitOrder: 1, unitName: '℉' }, // 华氏度 { unitOrder: 2, unitName: 'K' } // 开尔文 ] 自定义单位时需确保与现有换算逻辑兼容 常见问题 Q1: 单位选择器不显示 检查 enableConvert 是否为 true 确认单位数据加载成功 查看控制台是否有 API 错误 Q2: 数值更新不及时 确保使用 v-model 进行双向绑定 检查小数位数配置是否符合预期 确认没有在父组件中覆盖转换后的值 Q3: 样式显示异常 检查是否父容器有冲突的布局样式 确认单位标签宽度计算正确(通过 updateInputWidth 方法) 在小程序端添加 !important 覆盖默认样式