|
|
@@ -84,17 +84,27 @@
|
|
|
const handleOpen = async (data) => {
|
|
|
visible.value = true;
|
|
|
nextTick(() => {
|
|
|
+ // Reset form data completely
|
|
|
+ form.value = {};
|
|
|
formRef.value?.resetForm();
|
|
|
- mergeData.value = data;
|
|
|
- if (!props.baseUrl.detail) {
|
|
|
- form.value = data;
|
|
|
- formRef.value?.setData(data);
|
|
|
+
|
|
|
+ // For new items (no ID), initialize with empty data
|
|
|
+ if (!data || !data[props.idKey]) {
|
|
|
+ mergeData.value = {};
|
|
|
+ formRef.value?.setData(data || {});
|
|
|
} else {
|
|
|
- getDetail(data.id).then((res) => {
|
|
|
- form.value = res.data;
|
|
|
- let data = props.fallbackData(res.data);
|
|
|
+ // For edit mode
|
|
|
+ mergeData.value = data;
|
|
|
+ if (!props.baseUrl.detail) {
|
|
|
+ form.value = data;
|
|
|
formRef.value?.setData(data);
|
|
|
- });
|
|
|
+ } else {
|
|
|
+ getDetail(data.id).then((res) => {
|
|
|
+ form.value = res.data;
|
|
|
+ let data = props.fallbackData(res.data);
|
|
|
+ formRef.value?.setData(data);
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 重置滚动条位置
|
|
|
@@ -131,10 +141,15 @@
|
|
|
formRef.value?.submitForm().then((data) => {
|
|
|
console.log(data, '格式化数据data');
|
|
|
|
|
|
- data[props.idKey] = form.value[props.idKey];
|
|
|
+ // Only set ID if we're in edit mode (form.value has ID)
|
|
|
+ if (form.value && form.value[props.idKey]) {
|
|
|
+ data[props.idKey] = form.value[props.idKey];
|
|
|
+ }
|
|
|
+
|
|
|
let url = data[props.idKey] ? props.baseUrl.update : props.baseUrl.add;
|
|
|
data = props.isMerge ? { ...mergeData.value, ...data } : data;
|
|
|
let format = props.formatData(data);
|
|
|
+
|
|
|
proxy.$http.post(url, format).then((res) => {
|
|
|
if (res.data.code !== 200) return EleMessage.error(res.data.msg);
|
|
|
visible.value = false;
|