EditDialog.js 3.71 KB
import FormDialog from '@/components/FormDialog'
import orderApi from '@/api/order'
import TicketsInput from '../../../order/components/TicketsInput'
import store from '@/store'
import GoodsSelect from '@/views/components/GoodsSelect'
import ConsumerSelect from '@/views/components/ConsumerSelect'

const schema = [
  {
    key: 'order_number',
    label: '订单编号',
    disabled: true
  },
  {
    key: 'consumer_name',
    label: '客户名称',
    placeholder: '请选择客户',
    disabled: true,
    component: ConsumerSelect
  },
  {
    key: 'commodity_id',
    label: '商品名称',
    placeholder: '请选择商品',
    component: GoodsSelect
  }
]

let rules = {
  consumer_name: [
    {
      required: true,
      message: '请输入客户名称',
      trigger: 'blur'
    }
  ],
  commodity_id: [
    {
      required: true,
      message: '请选择商品名称',
      trigger: 'change'
    }
  ]
}
export default {
  async show(userType, data, onSubmitted) {
    // 订单状态为已收货时 , 显示合同票号
    schema[2].props = {
      orderId: data.id
    }
    if (data.status === 'CREATE' || data.status === 'CONFIRM') {
      if (userType === 2) {
        schema[1].disabled = false
        schema[2].disabled = false
        rules = {
          consumer_name: [
            {
              required: true,
              message: '请输入客户名称',
              trigger: 'blur'
            }
          ],
          commodity_id: [
            {
              required: true,
              message: '请选择商品名称',
              trigger: 'change'
            }
          ]
        }
      } else {
        schema[1].disabled = true
        schema[2].disabled = true
        rules = {}
      }
    } else {
      schema[1].disabled = true
      schema[2].disabled = true
      rules = {}
    }

    if (schema.length > 4) {
      schema.splice(4, 1)
    }
    if (data.status === 'RECEIVE_GOODS') {
      schema.push({
        key: 'receipt_number',
        label: '合同发票号',
        placeholder: '请输入合同发票号',
        component: TicketsInput
      })
      rules.receipt_number = [
        {
          required: true,
          trigger: 'blur',
          validator: (rule, value, callback) => {
            console.log('test')
            const str = '^[0-9a-zA-Z_]{1,}$'
            const exp = new RegExp(str)
            value.forEach(item => {
              if (item === '') {
                callback(new Error('请输入合同发票号'))
              } else if (!exp.exec(item)) {
                callback(new Error('合同发票号由字母、数字、下划线组成'))
              } else if (item.length > 50) {
                callback(new Error('合同发票号长度不超过50'))
              }
            })
            callback()
          }
        }
      ]
    } else if (data.status === 'BILLING') {
      schema.push({
        key: 'receipt_number',
        label: '合同发票号',
        component: TicketsInput,
        props: {
          disabled: true
        }
      })
    }
    const orderStatusDict = store.getters.orderStatusDict
    FormDialog({
      title: orderStatusDict[data.status]?.dialogTitle || '订单详情',
      schema,
      rules,
      data,
      confirmButtonText: orderStatusDict[data.status]?.confirmButtonText || '保 存',
      submitSuccessMessage: '编辑成功',
      async onSubmit(data) {
        console.log('编辑订单', data)
        try {
          return await orderApi.edit({
            apiUser: localStorage.getItem('apiUser'),
            checkSum: localStorage.getItem('checkSum')
          }, data)
        } catch (error) {
          return error?.response?.data
        } finally {
          onSubmitted()
        }
      }
    })
  }
}