Просмотр исходного кода

fix(高投诉图书): 修复投诉原因选项和导入模板错误

- 使用字典数据动态生成投诉原因选项,避免硬编码
- 修正导入模板名称和下载链接
- 修复编辑表单数据加载时机问题
- 调整导入接口成功状态码判断
ylong 1 месяц назад
Родитель
Сommit
5fd5a04608

+ 21 - 19
src/views/goods/highComplaintBooks/components/add-dialog.vue

@@ -8,15 +8,17 @@
 </template>
 
 <script setup>
-import { ref, computed } from 'vue';
+import { ref, computed, nextTick } from 'vue';
 import { ElMessage } from 'element-plus';
 import SimpleFormModal from '@/components/CommonPage/SimpleFormModal.vue';
 import request from '@/utils/request';
+import { useDictData } from '@/utils/use-dict-data';
 
 const emit = defineEmits(['success']);
 const editRef = ref(null);
 const title = ref('添加图书');
 const currentId = ref(null);
+const [complaint_reason] = useDictData(['complaint_reason']);
 
 const formItems = computed(() => [
     {
@@ -42,11 +44,10 @@ const formItems = computed(() => [
         label: '易投诉原因:',
         prop: 'reasonList',
         required: true,
-        options: [
-            { label: '出版社投诉', value: '出版社投诉' },
-            { label: '价格投诉', value: '价格投诉' },
-            { label: '质量投诉', value: '质量投诉' }
-        ]
+        options: complaint_reason.value.map(item => ({
+            label: item.dictLabel,
+            value: item.dictValue
+        }))
     }
 ]);
 
@@ -58,25 +59,26 @@ const handleOpen = (row) => {
     if (row) {
         title.value = '编辑图书';
         currentId.value = row.id;
-        // Fetch details if needed or use row data
-        // API doc says /shop/complaintBook/getInfo/{id} for details, but row might have enough info.
-        // Let's implement getInfo as per requirement.
         request.get(`/shop/complaintBook/getInfo/${row.id}`).then(res => {
-            const data = res.data;
-            editRef.value?.handleOpen({
-                id: data.id,
-                isbn: data.isbn,
-                platformList: data.platformList || [],
-                reasonList: data.reasonList || []
+            const data = res.data.data || res.data;
+            nextTick(() => {
+                editRef.value?.handleOpen({
+                    id: data.id,
+                    isbn: data.isbn,
+                    platformList: data.platformList || [],
+                    reasonList: data.reasonList || []
+                });
             });
         });
     } else {
         title.value = '添加图书';
         currentId.value = null;
-        editRef.value?.handleOpen({
-            isbn: '',
-            platformList: [],
-            reasonList: []
+        nextTick(() => {
+            editRef.value?.handleOpen({
+                isbn: '',
+                platformList: [],
+                reasonList: []
+            });
         });
     }
 };

+ 5 - 5
src/views/goods/highComplaintBooks/components/import-dialog.vue

@@ -1,13 +1,13 @@
 <template>
     <ele-modal :width="460" title="导入易投诉图书" :body-style="{ paddingTop: '8px' }" v-model="visible" position="center">
         <div class="flex mb-2">
-            <div class="text-sm">请先下载'图书基础数据导出模板':</div>
+            <div class="text-sm">请先下载'易投诉图书导入模板':</div>
             <el-button @click="
                 downloadOssLink(
-                    'https://shuhi.oss-cn-qingdao.aliyuncs.com/default/search_template.xlsx',
-                    '图书基础数据导出模板'
+                    'https://shuhi.oss-cn-qingdao.aliyuncs.com/default/complaint_book_template.xlsx',
+                    '易投诉图书导入模板'
                 )
-                " link type="primary">下载图书基础数据导出模板</el-button>
+                " link type="primary">下载易投诉图书导入模板</el-button>
         </div>
 
         <div class="flex flex-col mb-2">
@@ -62,7 +62,7 @@ async function importBooks(file) {
     const formData = new FormData();
     formData.append('file', file);
     const res = await request.post('/shop/complaintBook/importData', formData);
-    if (res.data.code === 0) { // Assuming code 0 is success based on previous responses, or adjust if 200
+    if (res.data.code === 200) {
         return res.data;
     }
     return Promise.reject(new Error(res.data.msg));

+ 9 - 7
src/views/goods/highComplaintBooks/components/page-search.vue

@@ -5,12 +5,15 @@
 </template>
 
 <script setup>
-import { reactive } from 'vue';
+import { computed } from 'vue';
 import ProSearch from '@/components/CommonPage/ProSearch2.vue';
+import { useDictData } from '@/utils/use-dict-data';
 
 const emit = defineEmits(['search']);
 
-const formItems = reactive([
+const [complaint_reason] = useDictData(['complaint_reason']);
+
+const formItems = computed(() => [
     { type: 'input', label: 'ISBN', prop: 'isbn' },
     { type: 'input', label: '图书名称', prop: 'bookName' },
     { 
@@ -28,11 +31,10 @@ const formItems = reactive([
         type: 'select', 
         label: '投诉原因', 
         prop: 'reasonList',
-        options: [
-            { label: '出版社投诉', value: '出版社投诉' },
-            { label: '价格投诉', value: '价格投诉' },
-            { label: '质量投诉', value: '质量投诉' }
-        ]
+        options: complaint_reason.value.map(item => ({
+            label: item.dictLabel,
+            value: item.dictValue
+        }))
     }
 ]);