// 格式化金额为货币格式
export function formatCurrency(value, currency = '') {
  if (value === undefined || value === null) return currency + '0.00'
  return currency + value.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,')
}
export function numberFormat(value, item) {
  const { valueType = 'text', decimalDigits = 2 } = item
  //   if (!value) return

  let result = String(value ?? '').trim()

  if (valueType === 'integer') {
    // 只保留数字和负号
    result = result.replace(/[^-\d]/g, '')

    // 如果有多个负号或者负号不在开头，则移除多余的负号
    if ((result.match(/-/g) || []).length > 1) {
      result = result.replace(/-/g, '').replace(/^/, '-') // 仅保留一个负号在最前面
    }
  } else if (valueType === 'decimalNumber') {
    // 可以输入正数，负数，小数
    // 1. 只保留数字、小数点和负号
    result = result.replace(/[^-\d.]/g, '')

    // 2. 处理负号：确保最多只有一个负号且必须在开头
    if ((result.match(/-/g) || []).length > 1) {
      result = result.replace(/-/g, '') // 移除所有负号
      if (result.startsWith('-')) {
        result = '-' + result.slice(1) // 确保负号在最前面
      } else {
        result = '-' + result // 如果原本没有负号但需要保留数值，可以省略此步骤
      }
    }

    // 3. 去掉开头的小数点（不允许 ".5" → 改为 "0.5" 更好）
    if (result.startsWith('.')) {
      result = '0' + result
    } else if (result.startsWith('-.')) {
      result = '-0' + result.slice(2)
    }

    // 4. 保证最多一个小数点
    const parts = result.split('.')
    if (parts.length > 2) {
      result = parts[0] + '.' + parts.slice(1).join('')
    }

    // 5. 限制小数位数（但保留结尾的小数点！）
    if (result.includes('.')) {
      const [intPart, decPart] = result.split('.')
      // 如果小数部分超过限制，截断
      if (decPart.length > decimalDigits) {
        result = intPart + '.' + decPart.slice(0, decimalDigits)
      }
      // ✅ 不再删除结尾的 '.'
    }
  } else if (valueType === 'decimal') {

    // 可以输入正整数和小数
    // 1. 只保留数字和小数点
    result = result.replace(/[^\d.]/g, '')

    // 2. 去掉开头的小数点（不允许 ".5" → 改为 "0.5" 更好，但这里先简单处理）
    if (result.startsWith('.')) {
      result = '0.' + result.slice(1)
    }

    // 3. 保证最多一个小数点
    const parts = result.split('.')
    if (parts.length > 2) {
      result = parts[0] + '.' + parts.slice(1).join('')
    }

    // 4. 限制小数位数（但保留结尾的小数点！）
    if (result.includes('.')) {
      const [intPart, decPart] = result.split('.')
      // 如果小数部分超过限制，截断
      if (decPart.length > decimalDigits) {
        result = intPart + '.' + decPart.slice(0, decimalDigits)
      }
    }
  }

  return result
}

export default {
  formatCurrency,
  numberFormat
}
