Browse Source

查询优化

liujintao 4 months ago
parent
commit
438a46eade

+ 1 - 1
.eslintrc.js

@@ -71,7 +71,7 @@ module.exports = {
 		'vue/no-unused-vars': "off",
 		'no-v-model-argument': 'off',
 		'no-case-declarations': 'off',
-		'no-console': 'error',
+		'no-console': 'off',
 		'no-redeclare': 'off',
 	},
 };

+ 6 - 6
src/views/product-manage/Columns.ts

@@ -194,7 +194,7 @@ export const ProductMonitorColumns = [
 	},
 	{
 		field: 'all_score',
-		title: '亚马逊显示评分',
+		title: '亚马逊评分',
 		minWidth: 190,
 		align: 'center',
 		sortable: true,
@@ -226,7 +226,7 @@ export const ProductMonitorColumns = [
 	},
 	{
 		field: 'all_ratings',
-		title: '亚马逊显示评分人数',
+		title: '亚马逊评分人数',
 		minWidth: 150,
 		align: 'center',
 		sortable: true,
@@ -242,7 +242,7 @@ export const ProductMonitorColumns = [
 	},
 	{
 		field: 'all_reviews',
-		title: '亚马逊显示评论人数',
+		title: '亚马逊评论人数',
 		minWidth: 150,
 		align: 'center',
 		sortable: true,
@@ -349,7 +349,7 @@ export const CompetitorMonitorColumns = [
 	},
 	{
 		field: 'all_score',
-		title: '亚马逊显示评分',
+		title: '亚马逊评分',
 		minWidth: 190,
 		align: 'center',
 		sortable: true,
@@ -381,7 +381,7 @@ export const CompetitorMonitorColumns = [
 	},
 	{
 		field: 'all_ratings',
-		title: '亚马逊显示评分人数',
+		title: '亚马逊评分人数',
 		minWidth: 150,
 		align: 'center',
 		sortable: true,
@@ -397,7 +397,7 @@ export const CompetitorMonitorColumns = [
 	},
 	{
 		field: 'all_reviews',
-		title: '亚马逊显示评论人数',
+		title: '亚马逊评论人数',
 		minWidth: 150,
 		align: 'center',
 		sortable: true,

+ 24 - 6
src/views/product-manage/competitor-monitor/component/DataTable.vue

@@ -123,9 +123,18 @@ async function fetchList(isQuery = false) {
     asin: queryParameter?.asin,
     goods__sku: queryParameter?.sku,
     platform_number: queryParameter?.platformId,
-    goods__all_ratings: queryParameter?.scoreNumber,
-    goods__all_reviews: queryParameter?.commentNumber,
-    goods__all_score: queryParameter?.displayScore,
+
+		minScoreNumber: queryParameter?.minScoreNumber,
+		maxScoreNumber: queryParameter?.maxScoreNumber,
+		minCommentNumber: queryParameter?.minCommentNumber,
+		maxCommentNumber: queryParameter?.maxCommentNumber,
+		minScore: queryParameter?.minScore,
+		maxScore: queryParameter?.maxScore,
+		minAsinScore: queryParameter?.minAsinScore,
+		maxAsinScore: queryParameter?.maxAsinScore,
+		minAsinCommentNumber: queryParameter?.minAsinCommentNumber,
+		maxAsinCommentNumber: queryParameter?.maxAsinCommentNumber,
+
 		ordering: ordering.value,
   };
 
@@ -151,9 +160,18 @@ async function handleDownload() {
 				asin: queryParameter?.asin,
 				goods__sku: queryParameter?.sku,
 				platform_number: queryParameter?.platformId,
-				goods__all_ratings: queryParameter?.scoreNumber,
-				goods__all_reviews: queryParameter?.commentNumber,
-				goods__all_score: queryParameter?.displayScore,
+
+				minScoreNumber: queryParameter?.minScoreNumber,
+				maxScoreNumber: queryParameter?.maxScoreNumber,
+				minCommentNumber: queryParameter?.minCommentNumber,
+				maxCommentNumber: queryParameter?.maxCommentNumber,
+				minScore: queryParameter?.minScore,
+				maxScore: queryParameter?.maxScore,
+				minAsinScore: queryParameter?.minAsinScore,
+				maxAsinScore: queryParameter?.maxAsinScore,
+				minAsinCommentNumber: queryParameter?.minAsinCommentNumber,
+				maxAsinCommentNumber: queryParameter?.maxAsinCommentNumber,
+
 				ordering: ordering.value,
 			},
 			fileName: '竞品监控数据.xlsx',

+ 169 - 37
src/views/product-manage/competitor-monitor/index.vue

@@ -5,7 +5,7 @@
  * @Author: Cheney
  */
 
-import { RefreshLeft, Search } from '@element-plus/icons-vue';
+import { ArrowDown, ArrowUp, RefreshLeft, Search } from '@element-plus/icons-vue';
 import VerticalDivider from '/src/components/VerticalDivider/index.vue';
 import { useResponse } from '/@/utils/useResponse';
 import * as api from './api';
@@ -97,8 +97,14 @@ async function resetParameter() {
       <div ref="queryContainer" class="flex justify-between">
         <div class="flex flex-1">
           <div class="w-full whitespace-nowrap">
-            <el-row :gutter="20" style="margin-bottom: 16px;">
-              <el-col :span="4">
+            <el-row :gutter="20" style="margin-bottom: 12px;">
+							<el-col :span="5" class="flex">
+								<div class="flex items-center">
+									<span class="mr-2">店 铺</span>
+									<el-input v-model="formInline.shop" clearable placeholder="请输入店铺" />
+								</div>
+							</el-col>
+              <el-col :span="5">
                 <div class="flex items-center">
                   <span class="mr-2">国 家</span>
                   <el-select v-model="formInline.country" clearable placeholder="请选择国家">
@@ -132,42 +138,168 @@ async function resetParameter() {
                   </el-select>
                 </div>
               </el-col>
-              <el-col :span="6" class="flex">
-                <div class="flex items-center">
-                  <span class="mr-2">店 铺</span>
-                  <el-input v-model="formInline.shop" clearable placeholder="请输入店铺" />
-                </div>
-              </el-col>
             </el-row>
-            <el-row :gutter="20">
-              <el-col :span="6" class="flex">
-                <div class="flex items-center">
-                  <span class="mr-2">亚马逊显示评分人数</span>
-                  <el-input-number v-model="formInline.scoreNumber" :min="0" placeholder="请输入">
-                  </el-input-number>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="flex items-center">
-                  <span class="mr-2">亚马逊显示评论人数</span>
-                  <el-input-number v-model="formInline.commentNumber" :min="0" placeholder="请输入">
-                  </el-input-number>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="flex items-center">
-                  <span class="mr-2">亚马逊显示评分</span>
-                  <el-input-number v-model="formInline.displayScore" :min="0" placeholder="请输入">
-                  </el-input-number>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="flex items-center">
-                  <span class="mr-2">ASIN</span>
-                  <el-input v-model="formInline.asin" clearable placeholder="请输入ASIN"></el-input>
-                </div>
-              </el-col>
+            <el-row :gutter="20" style="margin-bottom: 12px;">
+							<el-col :span="6">
+								<div class="flex items-center">
+									<span class="mr-2">ASIN</span>
+									<el-input v-model="formInline.asin" clearable placeholder="请输入ASIN"></el-input>
+								</div>
+							</el-col>
+							<el-col :span="6">
+								<div class="flex items-center">
+									<span class="mr-2">亚马逊评分</span>
+									<el-input-number v-model="formInline.minScore" :min="0" :max="5">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxScore" :min="0" :max="5">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
+							<el-col :span="6" class="flex">
+								<div class="flex items-center">
+									<span class="mr-2">亚马逊评分人数</span>
+									<el-input-number v-model="formInline.minScoreNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxScoreNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
+							<el-col :span="6">
+								<div class="flex items-center">
+									<span class="mr-2">亚马逊评论人数</span>
+									<el-input-number v-model="formInline.minCommentNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxCommentNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
+
             </el-row>
+						<el-row :gutter="20">
+							<el-col :span="6" class="flex">
+								<div class="flex items-center">
+									<span class="mr-2">子ASIN评分人数</span>
+									<el-input-number v-model="formInline.minAsinScore" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxAsinScore" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
+							<el-col :span="6">
+								<div class="flex items-center">
+									<span class="mr-2">子ASIN评论人数</span>
+									<el-input-number v-model="formInline.minAsinCommentNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxAsinCommentNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
+						</el-row>
           </div>
         </div>
         <VerticalDivider />

+ 25 - 25
src/views/product-manage/product-list/index.vue

@@ -91,7 +91,19 @@ async function resetParameter() {
         <div class="flex flex-1">
           <div class="w-full whitespace-nowrap">
             <el-row :gutter="20" style="margin-bottom: 16px;">
-              <el-col :span="5">
+							<el-col :span="4" class="flex">
+								<div class="flex items-center">
+									<span class="mr-2">店 铺</span>
+									<el-input v-model="formInline.shop" clearable placeholder="请输入店铺" />
+								</div>
+							</el-col>
+							<el-col :span="4" class="flex">
+								<div class="flex items-center">
+									<span class="mr-2">平台编号</span>
+									<el-input v-model="formInline.platformNumber" clearable placeholder="请输入平台编号" />
+								</div>
+							</el-col>
+              <el-col :span="4">
                 <div class="flex items-center">
                   <span class="mr-2">国 家</span>
                   <el-select v-model="formInline.country" clearable placeholder="请选择国家">
@@ -100,7 +112,7 @@ async function resetParameter() {
                   </el-select>
                 </div>
               </el-col>
-              <el-col :span="5">
+              <el-col :span="4">
                 <div class="flex items-center">
                   <span class="mr-2">品 牌</span>
                   <el-select v-model="formInline.brand" clearable placeholder="请选择品牌">
@@ -108,7 +120,7 @@ async function resetParameter() {
                   </el-select>
                 </div>
               </el-col>
-              <el-col :span="5">
+              <el-col :span="4">
                 <div class="flex items-center">
                   <span class="mr-2">分 组</span>
                   <el-select v-model="formInline.group" clearable placeholder="请选择分组">
@@ -116,7 +128,7 @@ async function resetParameter() {
                   </el-select>
                 </div>
               </el-col>
-              <el-col :span="5">
+              <el-col :span="4">
                 <div class="flex items-center">
                   <span class="mr-2">状 态</span>
                   <el-select v-model="formInline.status" clearable placeholder="请选择状态">
@@ -125,15 +137,6 @@ async function resetParameter() {
                   </el-select>
                 </div>
               </el-col>
-              <el-col :span="4" class="flex">
-                <div class="flex items-center">
-                  <span class="mr-2">竞 品</span>
-                  <el-select v-model="formInline.isCompetitors" clearable placeholder="请选择是否竞品">
-                    <el-option label="是" value="1" />
-                    <el-option label="否" value="0" />
-                  </el-select>
-                </div>
-              </el-col>
             </el-row>
             <el-row :gutter="20">
               <el-col :span="6">
@@ -148,18 +151,15 @@ async function resetParameter() {
                   <el-input v-model="formInline.sku" clearable placeholder="请输入SKU" />
                 </div>
               </el-col>
-              <el-col :span="6" class="flex">
-                <div class="flex items-center">
-                  <span class="mr-2">店 铺</span>
-                  <el-input v-model="formInline.shop" clearable placeholder="请输入店铺" />
-                </div>
-              </el-col>
-              <el-col :span="6" class="flex">
-                <div class="flex items-center">
-                  <span class="mr-2">平台编号</span>
-                  <el-input v-model="formInline.platformNumber" clearable placeholder="请输入平台编号" />
-                </div>
-              </el-col>
+							<el-col :span="4" class="flex">
+								<div class="flex items-center">
+									<span class="mr-2">竞 品</span>
+									<el-select v-model="formInline.isCompetitors" clearable placeholder="请选择是否竞品">
+										<el-option label="是" value="1" />
+										<el-option label="否" value="0" />
+									</el-select>
+								</div>
+							</el-col>
             </el-row>
           </div>
         </div>

+ 24 - 6
src/views/product-manage/product-monitor/component/DataTable.vue

@@ -121,9 +121,18 @@ async function fetchList(isQuery = false) {
 		asin: queryParameter?.asin,
 		sku: queryParameter?.sku,
 		platform_number: queryParameter?.platformId,
-		scoreNumber: queryParameter?.scoreNumber,
-		commentNumber: queryParameter?.commentNumber,
-		displayScore: queryParameter?.displayScore,
+
+		minScoreNumber: queryParameter?.minScoreNumber,
+		maxScoreNumber: queryParameter?.maxScoreNumber,
+		minCommentNumber: queryParameter?.minCommentNumber,
+		maxCommentNumber: queryParameter?.maxCommentNumber,
+		minScore: queryParameter?.minScore,
+		maxScore: queryParameter?.maxScore,
+		minAsinScore: queryParameter?.minAsinScore,
+		maxAsinScore: queryParameter?.maxAsinScore,
+		minAsinCommentNumber: queryParameter?.minAsinCommentNumber,
+		maxAsinCommentNumber: queryParameter?.maxAsinCommentNumber,
+
 		ordering: ordering.value,
 	};
 	await useTableData(api.getTableData, query, gridOptions);
@@ -148,9 +157,18 @@ async function handleDownload() {
 				asin: queryParameter?.asin,
 				sku: queryParameter?.sku,
 				platform_number: queryParameter?.platformId,
-				scoreNumber: queryParameter?.scoreNumber,
-				commentNumber: queryParameter?.commentNumber,
-				displayScore: queryParameter?.displayScore,
+
+				minScoreNumber: queryParameter?.minScoreNumber,
+				maxScoreNumber: queryParameter?.maxScoreNumber,
+				minCommentNumber: queryParameter?.minCommentNumber,
+				maxCommentNumber: queryParameter?.maxCommentNumber,
+				minScore: queryParameter?.minScore,
+				maxScore: queryParameter?.maxScore,
+				minAsinScore: queryParameter?.minAsinScore,
+				maxAsinScore: queryParameter?.maxAsinScore,
+				minAsinCommentNumber: queryParameter?.minAsinCommentNumber,
+				maxAsinCommentNumber: queryParameter?.maxAsinCommentNumber,
+
 				ordering: ordering.value,
 			},
 			fileName: '商品监控数据.xlsx',

+ 178 - 50
src/views/product-manage/product-monitor/index.vue

@@ -5,7 +5,7 @@
  * @Author: Cheney
  */
 
-import { RefreshLeft, Search } from '@element-plus/icons-vue';
+import { ArrowDown, ArrowUp, RefreshLeft, Search } from '@element-plus/icons-vue';
 import VerticalDivider from '/src/components/VerticalDivider/index.vue';
 import { useResponse } from '/@/utils/useResponse';
 import * as api from './api';
@@ -99,8 +99,22 @@ async function resetParameter() {
       <div ref="queryContainer" class="flex justify-between">
         <div class="flex flex-1">
           <div class="w-full whitespace-nowrap">
-            <el-row :gutter="20" style="margin-bottom: 10px;">
-              <el-col :span="6">
+            <el-row :gutter="20" style="margin-bottom: 12px;">
+							<el-col :span="4" class="flex">
+								<div class="flex items-center">
+									<span class="mr-2">店 铺</span>
+									<el-select v-model="formInline.shop" clearable placeholder="请选择店铺">
+										<el-option v-for="item in shopsOptions" :key="item.id" :label="item.name" :value="item.id" />
+									</el-select>
+								</div>
+							</el-col>
+							<el-col :span="4">
+								<div class="flex items-center">
+									<span class="mr-2">平台编号</span>
+									<el-input v-model="formInline.platformId" clearable placeholder="请输入平台编号"></el-input>
+								</div>
+							</el-col>
+              <el-col :span="4">
                 <div class="flex items-center">
                   <span class="mr-2">国 家</span>
                   <el-select v-model="formInline.country" clearable placeholder="请选择国家">
@@ -109,7 +123,7 @@ async function resetParameter() {
                   </el-select>
                 </div>
               </el-col>
-              <el-col :span="6">
+              <el-col :span="4">
                 <div class="flex items-center">
                   <span class="mr-2">品 牌</span>
                   <el-select v-model="formInline.brand" clearable placeholder="请选择品牌">
@@ -117,7 +131,7 @@ async function resetParameter() {
                   </el-select>
                 </div>
               </el-col>
-              <el-col :span="6">
+              <el-col :span="4">
                 <div class="flex items-center">
                   <span class="mr-2">分 组</span>
                   <el-select v-model="formInline.group" clearable placeholder="请选择分组">
@@ -125,25 +139,16 @@ async function resetParameter() {
                   </el-select>
                 </div>
               </el-col>
-              <el-col :span="6">
-                <div class="flex items-center">
-                  <span class="mr-2">状 态</span>
-                  <el-select v-model="formInline.status" clearable placeholder="请选择状态">
-                    <el-option v-for="item in statusOptions" :key="item.value" :label="item.label"
-                               :value="item.value" />
-                  </el-select>
-                </div>
-              </el-col>
+							<el-col :span="4">
+								<div class="flex items-center">
+									<span class="mr-2">状 态</span>
+									<el-select v-model="formInline.status" clearable placeholder="请选择状态">
+										<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" />
+									</el-select>
+								</div>
+							</el-col>
             </el-row>
-            <el-row :gutter="20" style="margin-bottom: 10px;">
-              <el-col :span="6" class="flex">
-                <div class="flex items-center">
-                  <span class="mr-2">店 铺</span>
-                  <el-select v-model="formInline.shop" clearable placeholder="请选择店铺">
-                    <el-option v-for="item in shopsOptions" :key="item.id" :label="item.name" :value="item.id" />
-                  </el-select>
-                </div>
-              </el-col>
+            <el-row :gutter="20" style="margin-bottom: 12px;">
               <el-col :span="6">
                 <div class="flex items-center">
                   <span class="mr-2">ASIN</span>
@@ -156,35 +161,158 @@ async function resetParameter() {
                   <el-input v-model="formInline.sku" clearable placeholder="请输入SKU"></el-input>
                 </div>
               </el-col>
-              <el-col :span="6">
-                <div class="flex items-center">
-                  <span class="mr-2">平台编号</span>
-                  <el-input v-model="formInline.platformId" clearable placeholder="请输入平台编号"></el-input>
-                </div>
-              </el-col>
+							<el-col :span="6">
+								<div class="flex items-center">
+									<span class="mr-2">亚马逊评分</span>
+									<el-input-number v-model="formInline.minScore" :min="0" :max="5">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxScore" :min="0" :max="5">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
+							<el-col :span="6" class="flex">
+								<div class="flex items-center">
+									<span class="mr-2">亚马逊评分人数</span>
+									<el-input-number v-model="formInline.minScoreNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxScoreNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
             </el-row>
             <el-row :gutter="20">
-              <el-col :span="6" class="flex">
-                <div class="flex items-center">
-                  <span class="mr-2">亚马逊显示评分人数</span>
-                  <el-input-number v-model="formInline.scoreNumber" :min="0" placeholder="请输入">
-                  </el-input-number>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="flex items-center">
-                  <span class="mr-2">亚马逊显示评论人数</span>
-                  <el-input-number v-model="formInline.commentNumber" :min="0" placeholder="请输入">
-                  </el-input-number>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="flex items-center">
-                  <span class="mr-2">亚马逊显示评分</span>
-                  <el-input-number v-model="formInline.displayScore" :min="0" placeholder="请输入">
-                  </el-input-number>
-                </div>
-              </el-col>
+							<el-col :span="6">
+								<div class="flex items-center">
+									<span class="mr-2">亚马逊评论人数</span>
+									<el-input-number v-model="formInline.minCommentNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxCommentNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
+							<el-col :span="6">
+								<div class="flex items-center">
+									<span class="mr-2">子ASIN评分人数</span>
+									<el-input-number v-model="formInline.minAsinScore" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxAsinScore" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
+							<el-col :span="6">
+								<div class="flex items-center">
+									<span class="mr-2">子ASIN评论人数</span>
+									<el-input-number v-model="formInline.minAsinCommentNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+									<span class="mx-2">~</span>
+									<el-input-number v-model="formInline.maxAsinCommentNumber" :min="0">
+										<template #decrease-icon>
+											<el-icon>
+												<ArrowDown />
+											</el-icon>
+										</template>
+										<template #increase-icon>
+											<el-icon>
+												<ArrowUp />
+											</el-icon>
+										</template>
+									</el-input-number>
+								</div>
+							</el-col>
             </el-row>
           </div>
         </div>

+ 2 - 2
src/views/score-statistics/components/MonthlyRating.vue

@@ -6,11 +6,11 @@
 				<div style="display: flex; gap: 25px; margin-bottom: 10px">
 					<div>
 						<span style="font-size: 14px; padding-right: 4px; ">ASIN </span>
-						<el-input v-model="searchAsin" clearable style="width: 180px" @change="fetchData"></el-input>
+						<el-input v-model="searchAsin" clearable style="width: 180px" @change="fetchData" placeholder="请输入ASIN"></el-input>
 					</div>
 					<div>
 						<span style="font-size: 14px; padding-right: 4px; ">SKU </span>
-						<el-input v-model="searchSku" clearable style="width: 180px" @change="fetchData"></el-input>
+						<el-input v-model="searchSku" clearable style="width: 180px" @change="fetchData" placeholder="请输入SKU"></el-input>
 					</div>
 					<div>
 						<span class="mr-1" style="font-size: 14px; ">时间选择 </span>

+ 15 - 6
src/views/score-statistics/components/Overview.vue

@@ -3,7 +3,11 @@
 		<div class="header-container">
 			<span style="font-size: 16px; font-weight: 500">统计概览</span>
 			<div>
-				<span style="font-size: 14px; color: #95969a">时间选择:</span>
+				<span style="font-size: 14px; color: #95969a">ASIN </span>
+				<el-input v-model="searchAsin" clearable style="width: 220px" placeholder="请输入ASIN" @change="fetchOverviewData"></el-input>
+			</div>
+			<div>
+				<span style="font-size: 14px; color: #95969a">时间选择 </span>
 				<el-date-picker v-model="dateRange" :clearable="false" type="daterange"></el-date-picker>
 			</div>
 		</div>
@@ -34,10 +38,10 @@
 import { getDownloadData, getOverviewData } from '/src/views/score-statistics/api';
 import dayjs from 'dayjs';
 import { Download } from '@element-plus/icons-vue';
-import { downloadFile } from '/@/utils/service';
 
 
 const loading = ref(false);
+const searchAsin = ref('');
 const dateRange = ref([dayjs().startOf('month').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')]);
 
 const stats = ref([]);
@@ -57,6 +61,7 @@ async function fetchOverviewData() {
 	const query = {
 		query_start_date: dateRange.value[0],
 		query_end_date: dateRange.value[1],
+		asin: searchAsin.value,
 	};
 	try {
 		const { data } = await getOverviewData(query);
@@ -66,7 +71,7 @@ async function fetchOverviewData() {
 		}));
 		loading.value = false;
 	} catch (e) {
-		console.error('获取数据时出错:', error);
+		console.error('获取数据时出错:', e);
 	}
 }
 
@@ -84,6 +89,7 @@ async function handelDownload(label: string) {
 		download_type: downloadType,
 		query_start_date: dateRange.value[0],
 		query_end_date: dateRange.value[1],
+		asin: searchAsin.value,
 	};
 		const fileName = `${dateRange.value[0]}至${dateRange.value[1]}${label}.xlsx`;
 		const resp = await getDownloadData(query);
@@ -106,7 +112,6 @@ watch(dateRange, (newValue, oldValue) => {
 		dateRange.value[1]=dayjs(newValue[1]).format('YYYY-MM-DD');
 		fetchOverviewData();
 	}
-
 });
 
 onMounted(() => {
@@ -118,14 +123,18 @@ onMounted(() => {
 .header-container {
 	display: flex;
 	align-items: center; /* 垂直居中对齐 */
-	justify-content: space-between; /* 水平居中对齐 */
+	justify-content: flex-end; /* 靠右对齐 */
+	gap: 42px; /* 设置间隔为20px */
+}
+.header-container > span {
+	margin-right: auto; /* 让“统计概览”靠左 */
 }
 
 .stat-overview {
 	display: flex;
 	justify-content: space-between;
 	align-items: center;
-	padding: 20px;
+	padding: 25px;
 	flex-wrap: wrap; /* 当屏幕宽度不够时换行 */
 }