export default {
  bind(el) {
    const handler = function (e) {
      let val = e.target.value;

      // 只允许输入数字和一个小数点
      val = val
        .replace(/[^\d.]/g, '')          // 移除非数字和点
        .replace(/^\./g, '')             // 不能以点开头
        .replace(/\.{2,}/g, '.')         // 多个点只留一个
        .replace('.', '#')              // 临时标记第一个点
        .replace(/\./g, '')             // 移除其他点
        .replace('#', '.')              // 还原第一个点
        .replace(/^0+(\d)/, '$1')       // 去掉前导 0
        .replace(/^(\d+\.\d{0,2}).*/, '$1') // 最多两位小数

      e.target.value = val
      el.dispatchEvent(new Event('input')) // 手动触发 v-model 更新
    }

    el.__moneyInputHandler__ = handler
    el.addEventListener('input', handler)
  },
  unbind(el) {
    el.removeEventListener('input', el.__moneyInputHandler__)
    delete el.__moneyInputHandler__
  }
}
