ソースを参照

修复书籍的 bug

ylong 7 ヶ月 前
コミット
225c5e2554

+ 4 - 0
src/components/CommonPage/SimpleForm.vue

@@ -52,6 +52,10 @@ const submitForm = (model) => {
 
 /** 重置表单 */
 const resetForm = () => {
+    // Complete reset - reinitialize the form data object to clear all fields
+    Object.keys(form).forEach(key => {
+        form[key] = undefined;
+    });
     resetFields();
     nextTick(() => {
         proFormRef.value?.clearValidate?.();

+ 24 - 9
src/components/CommonPage/SimpleFormModal.vue

@@ -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;

+ 7 - 1
src/views/data/books/components/books-edit.vue

@@ -156,6 +156,7 @@
     } else {
       formData.value = Object.assign({}, { perCheck: '1', suit: '0', bookTag: '1' }, data);
     }
+    console.log(formData.value, 'formData.value');
     editRef.value?.handleOpen(formData.value);
   }
 
@@ -163,7 +164,6 @@
   function formatData(data) {
     let values = JSON.parse(JSON.stringify(data));
     let bookBlurb = {
-      bookId: data.id,
       isbn: data.isbn,
       shuhiRecommend: data.shuhiRecommend,
       shuhiBlurb: data.shuhiBlurb,
@@ -171,6 +171,12 @@
       anthorBlurb: data.anthorBlurb,
       catalog: data.catalog
     };
+    
+    // Only include bookId if it exists (editing mode)
+    if (data.id) {
+      bookBlurb.bookId = data.id;
+    }
+    
     values.bookBlurb = bookBlurb;
     values.cover = formData.value.cover;
     return values;