Эх сурвалжийг харах

Merge branch 'wang' into test

WanGxC 7 сар өмнө
parent
commit
9debb9264e

+ 1 - 0
src/auto-imports.d.ts

@@ -6,6 +6,7 @@
 export {}
 declare global {
   const EffectScope: typeof import('vue')['EffectScope']
+  const ElMessage: typeof import('element-plus/es')['ElMessage']
   const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
   const computed: typeof import('vue')['computed']
   const createApp: typeof import('vue')['createApp']

+ 19 - 17
src/views/searchTerm/importPage/index.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" setup>
 /**
  * @Name: index.vue
  * @Description: 导入页
@@ -11,6 +11,7 @@ import { SUCCESS_CODE, WARNING_CODE } from '/@/utils/requestCode';
 import * as api from './api';
 import { VxeGridProps } from 'vxe-table';
 
+
 const upload = ref<UploadInstance>();
 const upBtnLoading = ref(false);
 const defaultLabel = ref('ASIN');
@@ -18,7 +19,7 @@ const filter = reactive({
   reportFilter: '',
   reportDateFilter: '',
   typeFilter: '',
-  variableFilter: '',
+  variableFilter: ''
 });
 
 const gridOptions = reactive<VxeGridProps>({
@@ -29,13 +30,13 @@ const gridOptions = reactive<VxeGridProps>({
   resizable: true,
   height: 900,
   toolbarConfig: {
-    custom: true,
+    custom: true
   },
   columns: [
     // { type: 'seq', width: 70 },
     // { field: 'name', title: 'Name' },
   ],
-  data: [],
+  data: []
 });
 
 /**
@@ -113,7 +114,7 @@ function processResponseData(data: any) {
     return {
       field: key,
       title,
-      minWidth,
+      minWidth
     };
   });
 
@@ -173,28 +174,29 @@ async function confirmUpload() {
         <!-- 想要不页面不跳动可以加72的高度 -->
         <div>
           <el-upload
-            ref="upload"
-            action="#"
-            :limit="1"
-            :show-file-list="false"
-            :auto-upload="true"
-            :on-exceed="handleExceed"
-            :http-request="handleCustomUpload">
+              ref="upload"
+              :auto-upload="true"
+              :http-request="handleCustomUpload"
+              :limit="1"
+              :on-exceed="handleExceed"
+              :show-file-list="false"
+              action="#">
             <template #trigger>
-              <el-button :loading="upBtnLoading" plain color="#6366f1" :icon="View">导入预览</el-button>
+              <el-button :icon="View" :loading="upBtnLoading" color="#6366f1" plain>导入预览</el-button>
             </template>
           </el-upload>
         </div>
-        <el-button plain round type="warning" :icon="Upload" @click="confirmUpload"> 确认导入 </el-button>
+        <el-button :icon="Upload" plain round type="warning" @click="confirmUpload"> 确认导入</el-button>
       </div>
     </el-card>
     <el-card shadow="hover" style="border: none">
       <div class="text-xl font-bold text-center font-sans subpixel-antialiased">导入预览</div>
       <vxe-grid v-bind="gridOptions">
         <template #empty>
-        <span class="text-2xl" style="color: red;">
-          该页面用来导入从后台下载的Asin view或Brand view数据, 导入格式为csv格式!
-        </span>
+          <p class="text-3xl w-full" style="color: red;">
+            该页面用来导入从后台下载的 Asin view 或 Brand view 数据
+          </p>
+          <p class="text-3xl w-full" style="color: red;">导入格式为csv格式!</p>
         </template>
       </vxe-grid>
     </el-card>

+ 91 - 90
src/views/searchTerm/topSearchTermTable/index.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" setup>
 /**
  * @Name: index.vue
  * @Description: 搜索词-TopSearchTerm Table
@@ -15,6 +15,7 @@ import { ElMessage } from 'element-plus';
 import dayjs from 'dayjs';
 import enLocale from 'element-plus/es/locale/lang/en';
 
+
 const router = useRouter();
 const { tableData, total, currentPage, pageSize, handlePageChange } = usePagination(fetchTableData);
 const marketplaceSelect = ref(marketplaceIdEnum[0].value); // 当前只有美国区 默认第一个为美国
@@ -59,7 +60,7 @@ function calculateLastWeek() {
   const today = dayjs();
   const lastSaturday = today.subtract(today.day() + 1, 'day'); // 上周六
   const lastSunday = lastSaturday.subtract(6, 'day'); // 上周日
-  return [lastSunday.format('YYYY-MM-DD'), lastSaturday.format('YYYY-MM-DD')];
+  return [ lastSunday.format('YYYY-MM-DD'), lastSaturday.format('YYYY-MM-DD') ];
 }
 
 /**
@@ -90,7 +91,7 @@ async function fetchTableData() {
     report_type: reportTypeSelect.value,
     marketplace_Ids: marketplaceSelect.value,
     date_start: date.value[0],
-    date_end: date.value[1],
+    date_end: date.value[1]
   };
   try {
     const response = await getTopSearchTermTable(query);
@@ -165,12 +166,12 @@ async function handleDownload() {
       date_end: date.value[1],
       search_term: searchTermInp.value,
       marketplace_Ids: marketplaceSelect.value,
-      report_type: reportTypeSelect.value,
+      report_type: reportTypeSelect.value
     };
 
     const response = await postDownload(body);
 
-    const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
+    const blob = new Blob([ response.data ], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
 
     // 创建一个临时 URL
     const url = window.URL.createObjectURL(blob);
@@ -181,7 +182,7 @@ async function handleDownload() {
 
     // 设置文件名
     const currentTime = dayjs().format('YYYY-MM-DD_HH_mm_ss');
-    const filename = `TopSearchTerm_${currentTime}.xlsx`;
+    const filename = `TopSearchTerm_${ currentTime }.xlsx`;
 
     link.setAttribute('download', filename);
 
@@ -219,12 +220,12 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
   // 每三个合并为一个单元格
   if (columnIndex >= 0 && columnIndex <= 4) {
     if (rowIndex % 3 === 0) {
-      return [3, 1]; // 跨越三行
+      return [ 3, 1 ]; // 跨越三行
     } else {
-      return [0, 0]; // 被合并的单元格
+      return [ 0, 0 ]; // 被合并的单元格
     }
   }
-  return [1, 1];
+  return [ 1, 1 ];
 }
 </script>
 
@@ -233,120 +234,119 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
     <el-divider>
       <div class="font-bold text-xl">
         <el-icon style="top: 3px">
-          <DataAnalysis />
+          <DataAnalysis/>
         </el-icon>
         Top Search Term - Table
       </div>
     </el-divider>
   </div>
-  <el-card class="mx-3 mb-2.5" v-loading="tableLoading" style="border: none;">
+  <el-card v-loading="tableLoading" class="mx-3 mb-2.5" style="border: none;">
     <!-- table筛选栏 -->
     <div class="flex justify-between">
       <div class="flex gap-5 flex-wrap">
         <div>
           <span class="font-medium mr-0.5">市场 </span>
-          <el-select v-model="marketplaceSelect" @change="handleSelectChange" style="width: 90px">
+          <el-select v-model="marketplaceSelect" style="width: 90px" @change="handleSelectChange">
             <el-option
-              v-for="item in marketplaceOptions"
-              :disabled="item.disabled"
-              :key="item.value"
-              :value="item.value"
-              :label="item.label" />
+                v-for="item in marketplaceOptions"
+                :key="item.value"
+                :disabled="item.disabled"
+                :label="item.label"
+                :value="item.value"/>
           </el-select>
         </div>
         <div>
           <span class="font-medium mr-0.5">报告类型 </span>
-          <el-select v-model="reportTypeSelect" @change="handleSelectChange" style="width: 90px">
-            <el-option label="周度" value="weekly" />
-            <el-option label="月度" value="monthly" />
+          <el-select v-model="reportTypeSelect" style="width: 90px" @change="handleSelectChange">
+            <el-option label="周度" value="weekly"/>
+            <el-option label="月度" value="monthly"/>
           </el-select>
         </div>
         <div>
           <span class="font-medium mr-0.5">搜索词 </span>
           <el-input
-            v-model="searchTermInp"
-            @keyup.enter="handleQueryChange"
-            :prefix-icon="Search"
-            placeholder="输入后回车查询"
-            clearable
-            @clear="handleSelectChange"
-            style="width: 240px" />
+              v-model="searchTermInp"
+              :prefix-icon="Search"
+              clearable
+              placeholder="输入后回车查询"
+              style="width: 240px"
+              @clear="handleSelectChange"
+              @keyup.enter="handleQueryChange"/>
         </div>
         <div>
           <span class="font-medium mr-0.5">ASIN </span>
           <el-input
-            v-model="asinInp"
-            @keyup.enter="handleQueryChange"
-            :prefix-icon="Search"
-            placeholder="输入后回车查询"
-            clearable
-            @clear="handleSelectChange"
-            style="width: 180px" />
+              v-model="asinInp"
+              :prefix-icon="Search"
+              clearable
+              placeholder="输入后回车查询"
+              style="width: 180px"
+              @clear="handleSelectChange"
+              @keyup.enter="handleQueryChange"/>
         </div>
         <div>
           <span class="font-medium mr-0.5">报告日期 </span>
-          <el-config-provider :locale="enLocale">
-            <el-date-picker
-              v-if="reportTypeSelect === 'weekly'"
-              v-model="dateDimension"
-              type="week"
-              value-format="YYYY-MM-DD"
-              :format="`${date[0]} To ${date[1]}`"
-              :popper-options="{ placement: 'bottom-end' }"
-              :disabled-date="(time: Date) => time > new Date()"
-              :clearable="false" />
+          <el-config-provider v-if="reportTypeSelect === 'weekly'" :locale="enLocale">
             <el-date-picker
+                v-model="dateDimension"
+                :clearable="false"
+                :disabled-date="(time: Date) => time > new Date()"
+                :format="`${date[0]} To ${date[1]}`"
+                :popper-options="{ placement: 'bottom-end' }"
+                type="week"
+                value-format="YYYY-MM-DD"/>
+          </el-config-provider>
+          <el-date-picker
               v-else
               v-model="dateDimension"
-              type="month"
-              value-format="YYYY-MM"
+              :clearable="false"
+              :disabled-date="(time: Date) => time > new Date()"
               :format="`${date[0]} To ${date[1]}`"
               :popper-options="{ placement: 'bottom-end' }"
-              :disabled-date="(time: Date) => time > new Date()"
-              :clearable="false">
-              <template #default> 123</template>
-            </el-date-picker>
-          </el-config-provider>
+              type="month"
+              value-format="YYYY-MM">
+            <!--<template #default> 123</template>-->
+          </el-date-picker>
         </div>
       </div>
       <div class="flex">
-        <el-button type="primary" plain @click="handleJump" :icon="TopRight">搜索词管理</el-button>
+        <el-button :icon="TopRight" plain type="primary" @click="handleJump">搜索词管理</el-button>
         <el-button
-          type="success"
-          plain
-          @click="handleDownload"
-          :icon="Download"
-          round
-          :loading="downloadLoading"
-          :disabled="!tableData.length"
-          >下载表格
+            :disabled="!tableData.length"
+            :icon="Download"
+            :loading="downloadLoading"
+            plain
+            round
+            type="success"
+            @click="handleDownload"
+        >下载表格
         </el-button>
-        <el-button @click="refreshTable" :icon="Refresh" circle></el-button>
+        <el-button :icon="Refresh" circle @click="refreshTable"></el-button>
       </div>
     </div>
     <!-- table -->
-    <el-card shadow="never" class="mt-5">
+    <el-card class="mt-5" shadow="never">
       <div style="height: 100%; overflow: auto">
         <el-table :data="tableData" :span-method="arraySpanMethod" height="920" stripe style="width: 100%">
           <!-- 保持索引是1, 2, 3的顺序 不会收到合并单元格的影响 -->
-          <el-table-column fixed type="index" width="50" :index="(index) => Math.floor(index / 3) + 1" />
-          <el-table-column prop="searchTerm" label="搜索词" width="260">
+          <el-table-column :index="(index) => Math.floor(index / 3) + 1" fixed type="index" width="50"/>
+          <el-table-column label="搜索词" prop="searchTerm" width="260">
             <template #header>
               <el-icon style="top: 2px; margin-right: 3px">
-                <Key />
+                <Key/>
               </el-icon>
               <span>搜索词</span>
             </template>
             <template #default="{ row }">
-              <el-link :underline="false" target="_blank" style="color: #5a6fc0"
-                >{{ row.searchTerm }}
+              <el-link :underline="false" style="color: #5a6fc0" target="_blank"
+              >{{ row.searchTerm }}
               </el-link>
             </template>
           </el-table-column>
-          <el-table-column prop="searchFrequencyRank" label="搜索词搜索排名" align="center" width="150">
+          <el-table-column align="center" label="搜索词搜索排名" prop="searchFrequencyRank" width="150">
             <template #header>
               <el-icon style="top: 2px; margin-right: 4px">
-                <Rank />
+                <Rank/>
               </el-icon>
               <span>搜索词搜索排名</span>
             </template>
@@ -354,10 +354,10 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
               <span class="font-medium">{{ row.searchFrequencyRank }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="clickShareSummary" label="点击分享率(SUM)" align="center" width="150">
+          <el-table-column align="center" label="点击分享率(SUM)" prop="clickShareSummary" width="150">
             <template #header>
               <el-icon style="top: 2px; margin-right: 4px">
-                <Star />
+                <Star/>
               </el-icon>
               <span>点击分享率汇总</span>
             </template>
@@ -365,10 +365,10 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
               <span class="font-medium">{{ row.clickShareSummary }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="conversionShareSummary" label="转化分享率(SUM)" align="center" width="150">
+          <el-table-column align="center" label="转化分享率(SUM)" prop="conversionShareSummary" width="150">
             <template #header>
               <el-icon style="top: 2px; margin-right: 4px">
-                <Star />
+                <Star/>
               </el-icon>
               <span>转化分享率汇总</span>
             </template>
@@ -376,10 +376,10 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
               <span class="font-medium">{{ row.conversionShareSummary }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="clickedAsin" label="Asin" align="center">
+          <el-table-column align="center" label="Asin" prop="clickedAsin">
             <template #header>
               <el-icon style="top: 2px; margin-right: 5px">
-                <Goods />
+                <Goods/>
               </el-icon>
               <span>Asin</span>
             </template>
@@ -395,16 +395,17 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
               <!--</div>-->
             </template>
           </el-table-column>
-          <el-table-column prop="clickedItemName" label="标题">
+          <el-table-column label="标题" prop="clickedItemName">
             <template #header>
               <el-icon style="top: 2px; margin-right: 5px">
-                <Reading />
+                <Reading/>
               </el-icon>
               <span>标题</span>
             </template>
             <template #default="{ row }">
               <div class="text-sm text-left">
-                <el-tooltip class="box-item" effect="dark" :content="row.clickedItemName" placement="top" :show-after="500">
+                <el-tooltip :content="row.clickedItemName" :show-after="500" class="box-item" effect="dark"
+                            placement="top">
                   <div class="tooltip-text">
                     {{ row.clickedItemName }}
                   </div>
@@ -412,10 +413,10 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
               </div>
             </template>
           </el-table-column>
-          <el-table-column prop="clickShareRank" label="点击分享率排名" align="center" width="150">
+          <el-table-column align="center" label="点击分享率排名" prop="clickShareRank" width="150">
             <template #header>
               <el-icon style="top: 2px; margin-right: 4px">
-                <Medal />
+                <Medal/>
               </el-icon>
               <span>点击分享率排名</span>
             </template>
@@ -425,10 +426,10 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
               </el-tag>
             </template>
           </el-table-column>
-          <el-table-column prop="clickShare" align="center" label="点击分享率">
+          <el-table-column align="center" label="点击分享率" prop="clickShare">
             <template #header>
               <el-icon style="top: 2px; margin-right: 4px">
-                <Pointer />
+                <Pointer/>
               </el-icon>
               <span>点击分享率</span>
             </template>
@@ -436,10 +437,10 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
               <span class="font-semibold">{{ row.clickShare }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="conversionShare" align="center" label="转化分享率">
+          <el-table-column align="center" label="转化分享率" prop="conversionShare">
             <template #header>
               <el-icon style="top: 2px; margin-right: 5px">
-                <Switch />
+                <Switch/>
               </el-icon>
               <span>转化分享率</span>
             </template>
@@ -451,12 +452,12 @@ function arraySpanMethod({ row, column, rowIndex, columnIndex }) {
       </div>
       <div class="mt-3.5 flex justify-end">
         <el-pagination
-          v-model:current-page="currentPage"
-          v-model:page-size="pageSize"
-          :page-sizes="[21, 42, 72, 102, 132, 162]"
-          layout="sizes, prev, pager, next, total"
-          :total="total"
-          @change="handlePageChange" />
+            v-model:current-page="currentPage"
+            v-model:page-size="pageSize"
+            :page-sizes="[21, 42, 72, 102, 132, 162]"
+            :total="total"
+            layout="sizes, prev, pager, next, total"
+            @change="handlePageChange"/>
       </div>
     </el-card>
   </el-card>