Преглед изворни кода

feat(product-manage):商品列表、商品监控、竞品监控添加导入模版接口

xinyan пре 6 месеци
родитељ
комит
6fdb8de1de

+ 1 - 1
src/utils/service.ts

@@ -213,7 +213,7 @@ export const downloadFile = function ({ url, params, method, filename = '文件
 		// headers: {Accept: 'application/vnd.openxmlformats-officedocument'}
 	}).then((res: any) => {
 		const xlsxName = window.decodeURI(res.headers['content-disposition'].split('=')[1])
-		const fileName = xlsxName || `${filename}.xlsx`
+		const fileName =  `${filename}.xlsx`||xlsxName
 		if (res) {
 			const blob = new Blob([res.data], { type: 'charset=utf-8' })
 			const elink = document.createElement('a')

+ 15 - 5
src/views/product-manage/competitor-monitor/component/DataTable.vue

@@ -18,6 +18,7 @@ import VerticalDivider from '/src/components/VerticalDivider/index.vue';
 import EditDrawer from './EditDrawer.vue';
 import CreateDialog from '/@/views/product-manage/competitor-monitor/component/createDialog.vue';
 import * as api from '../api';
+import { downloadFile } from '/@/utils/service';
 
 
 interface Parameter {
@@ -82,7 +83,7 @@ const rowData = ref({});
 
 const dialogVisible = ref(false);
 
-const templateType = ref();
+const templateType = ref('monitor');
 
 onMounted(() => {
   fetchList();
@@ -199,7 +200,18 @@ function handleCreate() {
 }
 
 function downloadTemplate() {
-  // console.log('111=> ');
+	const url = '/api/choice/competitor_monitor/import_data/';
+	const fileName = '竞品监控模板.xlsx';
+
+	if (url) {
+		downloadFile({
+			url,
+			method: 'GET',
+			filename: fileName,
+		});
+	} else {
+		console.error('未知的模板类型:', templateType.value);
+	}
 }
 
 defineExpose({ fetchList });
@@ -249,9 +261,7 @@ defineExpose({ fetchList });
                 <VerticalDivider style="margin-left: 7px" />
               </div>
             </template>
-            <el-option label="商品通知模板" value="item1" />
-            <el-option label="商品模板" value="item2" />
-            <el-option label="指导价格模板" value="item3" />
+            <el-option label="竞品监控模板" value="monitor" />
           </el-select>
         </div>
         <VerticalDivider class="px-1" style="margin-left: 7px;" />

+ 10 - 1
src/views/product-manage/product-list/component/DataTable.vue

@@ -193,11 +193,20 @@ function downloadTemplate() {
     price: '/api/choice/goods/GuidancePrice/import_data/'
   };
 
+	const fileNameMap: { [key: string]: string } = {
+		notice: '商品通知模板.xlsx',
+		product: '商品模板.xlsx',
+		price: '指导价格模板.xlsx'
+	};
+
   const url = urlMap[templateType.value];
+	const fileName = fileNameMap[templateType.value];
+
   if (url) {
     downloadFile({
       url,
-      method: 'GET'
+      method: 'GET',
+      filename: fileName,
     });
   } else {
     console.error('未知的模板类型:', templateType.value);

+ 15 - 5
src/views/product-manage/product-monitor/component/DataTable.vue

@@ -18,6 +18,7 @@ import ImportButton from '/src/components/ImportButton/index.vue';
 import EditDrawer from './EditDrawer.vue';
 import CreateDialog from '/@/views/product-manage/product-monitor/component/createDialog.vue';
 import * as api from '../api';
+import { downloadFile } from '/@/utils/service';
 
 
 interface Parameter {
@@ -80,7 +81,7 @@ const editOpen = ref(false);
 const createOpen = ref(false);
 const rowData = ref({});
 
-const templateType = ref('item1');
+const templateType = ref('monitor');
 
 onMounted(() => {
   fetchList();
@@ -200,7 +201,18 @@ function handleCreate() {
 }
 
 function downloadTemplate() {
-  // console.log('111=> ');
+	const url = '/api/choice/reviews_monitor/import_data/';
+	const fileName = '商品监控模板.xlsx';
+
+	if (url) {
+		downloadFile({
+			url,
+			method: 'GET',
+			filename: fileName,
+		});
+	} else {
+		console.error('未知的模板类型:', templateType.value);
+	}
 }
 
 defineExpose({ fetchList });
@@ -245,9 +257,7 @@ defineExpose({ fetchList });
                 <VerticalDivider style="margin-left: 7px" />
               </div>
             </template>
-            <el-option label="商品通知模板" value="item1" />
-            <el-option label="商品模板" value="item2" />
-            <el-option label="指导价格模板" value="item3" />
+            <el-option label="商品监控模板" value="monitor" />
           </el-select>
         </div>
         <VerticalDivider class="px-1" style="margin-left: 7px;" />