AddDialog.js 1.83 KB
import FormDialog from '@/components/FormDialog'
import goodsApi from '@/api/goods'

const schema = [
  {
    key: 'name',
    label: '合同名称',
    placeholder: '请输入合同名称'
  },
  {
    key: 'info',
    label: '规格型号',
    placeholder: '请输入规格型号'
  },
  {
    key: 'price',
    label: '产品单价(元)',
    placeholder: '请输入产品单价(元)'
  }
]

const rules = {
  name: [
    {
      required: true,
      message: '请输入合同名称',
      trigger: 'blur'
    }
  ],
  price: [
    {
      required: true,
      message: '请输入产品单价(元)',
      trigger: 'blur'
    },
    {
      pattern: /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/,
      message: '请输入合法的金额数字,最多两位小数',
      trigger: 'blur'
    },
    {
      validator: (rule, value, callback) => {
        const price = value ? Number(value).toFixed(2) : 0.00
        console.log('price', price)
        if (price === 0.00 || price === '0.00') {
          callback(new Error('产品单价不能为0'))
        } else {
          callback()
        }
      },
      trigger: 'blur'
    }
  ],
  info: [
    {
      min: 0,
      max: 256,
      trigger: 'blur',
      message: '长度不超过256个字符'
    }
  ]
}

export default {
  async show(onSubmitted) {
    FormDialog({
      title: '新增商品',
      schema,
      rules,
      submitSuccessMessage: '添加成功',
      async onSubmit(data) {
        console.log('新增商品', data)
        const formData = {
          ...data,
          price: Number(data.price).toFixed(2)
        }
        let response = null
        try {
          response = await goodsApi.add(formData)
          return response
        } catch (error) {
          return error?.response?.data
        } finally {
          onSubmitted(response?.data)
        }
      }
    })
  }
}