| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- let idSeed = 0
- function clampInteger(value, minValue, maxValue, fallback) {
- const numberValue = Number(value)
- if (!Number.isFinite(numberValue)) return fallback
- return Math.min(Math.max(Math.round(numberValue), minValue), maxValue)
- }
- function createId(prefix = 'id') {
- idSeed += 1
- return `${prefix}-${Date.now()}-${idSeed}`
- }
- function delay(ms) {
- return new Promise((resolve) => {
- setTimeout(resolve, ms)
- })
- }
- function getWxApi() {
- return typeof wx === 'undefined' ? {} : wx
- }
- function isCancelError(error) {
- const message = String(error && (error.errMsg || error.message || error) || '')
- return /cancel|取消/i.test(message)
- }
- function toFiniteNumber(value, fallback = 0) {
- if (typeof value === 'string') {
- const text = value.trim()
- const directValue = Number(text)
- if (Number.isFinite(directValue)) return directValue
- const match = text.match(/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i)
- const textValue = match ? Number(match[0]) : NaN
- return Number.isFinite(textValue) ? textValue : fallback
- }
- const numberValue = Number(value)
- return Number.isFinite(numberValue) ? numberValue : fallback
- }
- function formatFixedValue(value, precision = 2) {
- const numberValue = toFiniteNumber(value, NaN)
- if (!Number.isFinite(numberValue)) return '--'
- const text = numberValue.toFixed(precision)
- return Number(text) === 0 ? (0).toFixed(precision) : text
- }
- function parseHexInteger(value, fallback = 0) {
- const text = String(value === undefined || value === null ? '' : value).trim()
- if (!text) return fallback
- const parsed = parseInt(text, 16)
- return Number.isFinite(parsed) ? parsed : fallback
- }
- function normalizeTextValue(value) {
- return String(value === undefined || value === null ? '' : value)
- }
- function pickFields(source, fields = []) {
- return fields.reduce((result, field) => {
- if (source && source[field] !== undefined && source[field] !== null && source[field] !== '') {
- result[field] = source[field]
- }
- return result
- }, {})
- }
- function padHex(value, length = 4) {
- return Number(value || 0).toString(16).toUpperCase().padStart(length, '0')
- }
- module.exports = {
- clampInteger,
- createId,
- delay,
- formatFixedValue,
- getWxApi,
- isCancelError,
- normalizeTextValue,
- padHex,
- pickFields,
- parseHexInteger,
- toFiniteNumber
- }
|