听你的描述是解决多个接口不放在公共组件里,那只要把接口作为参数传进来就行了呀
封装一个公共组件,设置(例子不完整)
const props = defineProps({
addApi: Function,
updateApi: Function,
dataKey: {
type: String,
default: 'id'
},
beforeSubmit: Function,
afterSubmit: Function,
})
const formData = ref({})
const loading = ref(false)
const isEdit = computed(() => {
return Boolean(formData[props.dataKey])
}) // 通过id判断是否是编辑还是新增
// 在表单提交方法里
async function submit(){
const msg = isEdit.value?'编辑成功':'新增成功'
const api = isEdit.value? props.updateApi : props.addApi
const params = {...formData.value} // 必要时深度克隆
// 如果需要在提交前额外处理
props.beforeSubmit && props.beforeSubmit(params)
loading.value = true
const res = await api(params).finally(()=> loading.value = false)
// 下面自己写了
// ElMessage.success(msg)
// visible.value = false
// emit('success')
// 如果需要在提交后额外处理
props.afterSubmit && props.afterSubmit(params)
}