瀏覽代碼

Merge branch 'wang' into test

WanGxC 9 月之前
父節點
當前提交
0020b71f51

+ 2 - 166
package-lock.json

@@ -73,7 +73,6 @@
 				"unplugin-auto-import": "^0.16.7",
 				"unplugin-vue-components": "^0.25.2",
 				"vite": "^4.0.0",
-				"vite-plugin-cdn-import": "^1.0.1",
 				"vite-plugin-compression": "^0.5.1",
 				"vite-plugin-vue-setup-extend": "^0.4.0",
 				"vue-eslint-parser": "^9.1.0"
@@ -6234,12 +6233,6 @@
 				"node": ">=0.12"
 			}
 		},
-		"node_modules/es-module-lexer": {
-			"version": "0.4.1",
-			"resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz",
-			"integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==",
-			"dev": true
-		},
 		"node_modules/es6-iterator": {
 			"version": "2.0.3",
 			"resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz",
@@ -7309,15 +7302,6 @@
 				"node": ">=0.10.0"
 			}
 		},
-		"node_modules/is-reference": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmmirror.com/is-reference/-/is-reference-3.0.2.tgz",
-			"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
-			"dev": true,
-			"dependencies": {
-				"@types/estree": "*"
-			}
-		},
 		"node_modules/is-regex": {
 			"version": "1.1.4",
 			"resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz",
@@ -8723,6 +8707,7 @@
 			"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.21.2.tgz",
 			"integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==",
 			"dev": true,
+			"optional": true,
 			"peer": true,
 			"dependencies": {
 				"@types/estree": "1.0.5"
@@ -8754,39 +8739,6 @@
 				"fsevents": "~2.3.2"
 			}
 		},
-		"node_modules/rollup-plugin-external-globals": {
-			"version": "0.10.0",
-			"resolved": "https://registry.npmmirror.com/rollup-plugin-external-globals/-/rollup-plugin-external-globals-0.10.0.tgz",
-			"integrity": "sha512-RXlupZrmn97AaaS5dWnktkjM+Iy+od0E+8L0mUkMIs3iuoUXNJebueQocQKV7Ircd54fSGGmkBaXwNzY05J1yQ==",
-			"dev": true,
-			"dependencies": {
-				"@rollup/pluginutils": "^5.1.0",
-				"estree-walker": "^3.0.3",
-				"is-reference": "^3.0.2",
-				"magic-string": "^0.30.5"
-			},
-			"peerDependencies": {
-				"rollup": "^2.25.0 || ^3.3.0 || ^4.1.4"
-			}
-		},
-		"node_modules/rollup-plugin-external-globals/node_modules/estree-walker": {
-			"version": "3.0.3",
-			"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
-			"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
-			"dev": true,
-			"dependencies": {
-				"@types/estree": "^1.0.0"
-			}
-		},
-		"node_modules/rollup-plugin-external-globals/node_modules/magic-string": {
-			"version": "0.30.11",
-			"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz",
-			"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
-			"dev": true,
-			"dependencies": {
-				"@jridgewell/sourcemap-codec": "^1.5.0"
-			}
-		},
 		"node_modules/run-parallel": {
 			"version": "1.2.0",
 			"resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -9877,16 +9829,6 @@
 				}
 			}
 		},
-		"node_modules/vite-plugin-cdn-import": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmmirror.com/vite-plugin-cdn-import/-/vite-plugin-cdn-import-1.0.1.tgz",
-			"integrity": "sha512-lgjLxgwFSKvJLbqjVBirUZ0rQo00GpUGJzRpgQu8RyBw9LA7jaqG6fUMQzBC9qWmTGabPC3iOzwCcoi7PseRAQ==",
-			"dev": true,
-			"dependencies": {
-				"rollup-plugin-external-globals": "^0.10.0",
-				"vite-plugin-externals": "^0.6.2"
-			}
-		},
 		"node_modules/vite-plugin-compression": {
 			"version": "0.5.1",
 			"resolved": "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz",
@@ -9971,33 +9913,6 @@
 				"node": ">=8"
 			}
 		},
-		"node_modules/vite-plugin-externals": {
-			"version": "0.6.2",
-			"resolved": "https://registry.npmmirror.com/vite-plugin-externals/-/vite-plugin-externals-0.6.2.tgz",
-			"integrity": "sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==",
-			"dev": true,
-			"dependencies": {
-				"acorn": "^8.4.0",
-				"es-module-lexer": "^0.4.1",
-				"fs-extra": "^10.0.0",
-				"magic-string": "^0.25.7"
-			},
-			"engines": {
-				"node": "^14.18.0 || >=16.0.0"
-			},
-			"peerDependencies": {
-				"vite": ">=2.0.0"
-			}
-		},
-		"node_modules/vite-plugin-externals/node_modules/magic-string": {
-			"version": "0.25.9",
-			"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
-			"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
-			"dev": true,
-			"dependencies": {
-				"sourcemap-codec": "^1.4.8"
-			}
-		},
 		"node_modules/vite-plugin-vue-setup-extend": {
 			"version": "0.4.0",
 			"resolved": "https://registry.npmmirror.com/vite-plugin-vue-setup-extend/-/vite-plugin-vue-setup-extend-0.4.0.tgz",
@@ -15612,12 +15527,6 @@
 			"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
 			"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
 		},
-		"es-module-lexer": {
-			"version": "0.4.1",
-			"resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz",
-			"integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==",
-			"dev": true
-		},
 		"es6-iterator": {
 			"version": "2.0.3",
 			"resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz",
@@ -16481,15 +16390,6 @@
 			"resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz",
 			"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
 		},
-		"is-reference": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmmirror.com/is-reference/-/is-reference-3.0.2.tgz",
-			"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
-			"dev": true,
-			"requires": {
-				"@types/estree": "*"
-			}
-		},
 		"is-regex": {
 			"version": "1.1.4",
 			"resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz",
@@ -17583,6 +17483,7 @@
 			"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.21.2.tgz",
 			"integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==",
 			"dev": true,
+			"optional": true,
 			"peer": true,
 			"requires": {
 				"@rollup/rollup-android-arm-eabi": "4.21.2",
@@ -17605,38 +17506,6 @@
 				"fsevents": "~2.3.2"
 			}
 		},
-		"rollup-plugin-external-globals": {
-			"version": "0.10.0",
-			"resolved": "https://registry.npmmirror.com/rollup-plugin-external-globals/-/rollup-plugin-external-globals-0.10.0.tgz",
-			"integrity": "sha512-RXlupZrmn97AaaS5dWnktkjM+Iy+od0E+8L0mUkMIs3iuoUXNJebueQocQKV7Ircd54fSGGmkBaXwNzY05J1yQ==",
-			"dev": true,
-			"requires": {
-				"@rollup/pluginutils": "^5.1.0",
-				"estree-walker": "^3.0.3",
-				"is-reference": "^3.0.2",
-				"magic-string": "^0.30.5"
-			},
-			"dependencies": {
-				"estree-walker": {
-					"version": "3.0.3",
-					"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
-					"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
-					"dev": true,
-					"requires": {
-						"@types/estree": "^1.0.0"
-					}
-				},
-				"magic-string": {
-					"version": "0.30.11",
-					"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz",
-					"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
-					"dev": true,
-					"requires": {
-						"@jridgewell/sourcemap-codec": "^1.5.0"
-					}
-				}
-			}
-		},
 		"run-parallel": {
 			"version": "1.2.0",
 			"resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -18529,16 +18398,6 @@
 				}
 			}
 		},
-		"vite-plugin-cdn-import": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmmirror.com/vite-plugin-cdn-import/-/vite-plugin-cdn-import-1.0.1.tgz",
-			"integrity": "sha512-lgjLxgwFSKvJLbqjVBirUZ0rQo00GpUGJzRpgQu8RyBw9LA7jaqG6fUMQzBC9qWmTGabPC3iOzwCcoi7PseRAQ==",
-			"dev": true,
-			"requires": {
-				"rollup-plugin-external-globals": "^0.10.0",
-				"vite-plugin-externals": "^0.6.2"
-			}
-		},
 		"vite-plugin-compression": {
 			"version": "0.5.1",
 			"resolved": "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz",
@@ -18601,29 +18460,6 @@
 				}
 			}
 		},
-		"vite-plugin-externals": {
-			"version": "0.6.2",
-			"resolved": "https://registry.npmmirror.com/vite-plugin-externals/-/vite-plugin-externals-0.6.2.tgz",
-			"integrity": "sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==",
-			"dev": true,
-			"requires": {
-				"acorn": "^8.4.0",
-				"es-module-lexer": "^0.4.1",
-				"fs-extra": "^10.0.0",
-				"magic-string": "^0.25.7"
-			},
-			"dependencies": {
-				"magic-string": {
-					"version": "0.25.9",
-					"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
-					"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
-					"dev": true,
-					"requires": {
-						"sourcemap-codec": "^1.4.8"
-					}
-				}
-			}
-		},
 		"vite-plugin-vue-setup-extend": {
 			"version": "0.4.0",
 			"resolved": "https://registry.npmmirror.com/vite-plugin-vue-setup-extend/-/vite-plugin-vue-setup-extend-0.4.0.tgz",

+ 0 - 1
package.json

@@ -73,7 +73,6 @@
 		"unplugin-auto-import": "^0.16.7",
 		"unplugin-vue-components": "^0.25.2",
 		"vite": "^4.0.0",
-		"vite-plugin-cdn-import": "^1.0.1",
 		"vite-plugin-compression": "^0.5.1",
 		"vite-plugin-vue-setup-extend": "^0.4.0",
 		"vue-eslint-parser": "^9.1.0"

+ 2 - 2
src/views/searchTerm/analysisPage/IndicatorOverview.vue

@@ -92,8 +92,8 @@ watch(responseData, (newData) => {
 async function fetchIndicatorData() {
   metricLoading.value = true;
   const query = {
-    date_start: filter.value.reportDate[0],
-    date_end: filter.value.reportDate[1],
+    date_start: filter.value.reportDate.value[0],
+    date_end: filter.value.reportDate.value[1],
     layer_type: filter.value.layerType,
     search_term: filter.value.searchTerm,
     report_range: filter.value.reportType,

+ 32 - 11
src/views/searchTerm/analysisPage/QueryCondition.vue

@@ -5,16 +5,34 @@
  * @Author: Cheney
  */
 import { RefreshLeft, Search } from '@element-plus/icons-vue';
-import { onMounted, ref, watch, inject, Ref } from 'vue';
+import { onBeforeMount, onMounted, ref, watch, inject, Ref } from 'vue';
 import emitter from '/@/utils/emitter';
+import WeekRangePicker from '/@/components/WeekRangePicker/index.vue';
+import MonthRangePicker from '/@/components/MonthRangePicker/index.vue';
+import dayjs from 'dayjs'
 
+const weekDate = ref([
+  dayjs().subtract(2, 'week').day(0).format('YYYY-MM-DD'),
+  dayjs().subtract(1, 'week').day(6).format('YYYY-MM-DD'),
+]);
+const monthDate = ref([
+  dayjs().subtract(2, 'month').startOf('month').format('YYYY-MM-DD'),
+  dayjs().subtract(0, 'month').startOf('month').format('YYYY-MM-DD'),
+]);
 const defaultLabel = ref('ASIN');
 const filter = inject<Ref>('filter');
 
+onBeforeMount(() => {
+  handleDateChange();
+})
 onMounted(() => {
   handleQuery();
 });
 
+watch([weekDate, monthDate], () => {
+  handleDateChange();
+})
+
 watch(
   () => filter.value.layerType,
   (newValue) => {
@@ -40,6 +58,16 @@ function resetCondition() {
   filter.value.reportDate = '';
   filter.value.variable = '';
 }
+
+function handleDateChange() {
+  let date = [];
+  if (filter.value.reportType === 'MONTHLY') {
+    date = monthDate.value;
+  } else {
+    date = weekDate.value;
+  }
+  emitter.emit('QueryCondition-dateChange', date);
+}
 </script>
 
 <template>
@@ -54,7 +82,7 @@ function resetCondition() {
       </div>
       <div>
         <span class="font-bold mr-2" style="color: #303133">报告类型:</span>
-        <el-select v-model="filter.reportType" style="width: 100px">
+        <el-select v-model="filter.reportType" @change="handleDateChange" style="width: 100px">
           <el-option label="月度" value="MONTHLY"></el-option>
           <el-option label="周度" value="WEEKLY"></el-option>
         </el-select>
@@ -69,15 +97,8 @@ function resetCondition() {
       </div>
       <div>
         <span class="font-bold mr-2" style="color: #303133">报告日期:</span>
-        <el-date-picker
-            style="width: 280px;"
-          v-model="filter.reportDate"
-          type="daterange"
-          range-separator="To"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          value-format="YYYY-MM-DD"
-          :disabled-date="(time: Date) => time > new Date()" />
+        <MonthRangePicker v-model="monthDate" v-if="filter.reportType === 'MONTHLY'" />
+        <WeekRangePicker v-model="weekDate" v-else />
       </div>
     </div>
     <div class="flex gap-3.5">

+ 12 - 8
src/views/searchTerm/analysisPage/index.vue

@@ -4,27 +4,32 @@
  * @Description: 分析页
  * @Author: Cheney
  */
-import { provide, ref } from 'vue';
+import { onBeforeUnmount, provide, ref } from 'vue';
 import QueryCondition from './QueryCondition.vue';
 import IndicatorOverview from './IndicatorOverview.vue';
 import IndicatorChart from './IndicatorChart.vue';
 import QuerySummary from './QuerySummary.vue';
-import dayjs from 'dayjs'
-import { usePublicData } from '/@/stores/publicData'
-import { storeToRefs } from 'pinia'
+import emitter from '/@/utils/emitter';
 
-const publicData = usePublicData();
-const { dateRange } = storeToRefs(publicData);
 const filter = ref({
   // 初始化 QueryCondition组件的filter
   layerType: 'asin_view',
   searchTerm: '',
   reportType: 'MONTHLY',
-  reportDate: [dateRange.value[0], dateRange.value[1]],
+  reportDate: '',
   variable: 'B00TEST0001',
   metric: 'Search_Query_Score',
 });
+
 provide('filter', filter);
+
+emitter.on('QueryCondition-dateChange', (data: any) => {
+  filter.value.reportDate = data;
+});
+
+onBeforeUnmount(() => {
+  emitter.all.clear();
+});
 </script>
 
 <template>
@@ -33,7 +38,6 @@ provide('filter', filter);
     <IndicatorOverview />
     <IndicatorChart />
     <QuerySummary />
-
   </div>
 </template>
 

+ 0 - 2
src/views/searchTerm/asinView/index.vue

@@ -11,7 +11,6 @@ import dayjs from 'dayjs';
 import { getTableData } from './api';
 import { ElMessage } from 'element-plus';
 import { asinColumns } from './useColumns';
-
 import WeekRangePicker from '/@/components/WeekRangePicker/index.vue';
 import MonthRangePicker from '/@/components/MonthRangePicker/index.vue';
 
@@ -92,7 +91,6 @@ async function fetchTableData() {
     asin: asinInp.value,
     search_term: searchTermInp.value,
     report_type: reportTypeSelect.value,
-    // marketplace_Ids: marketplaceSelect.value,
     date_start: reportTypeSelect.value == 'weekly' ? weekDate.value[0] : monthDate.value[0],
     date_end: reportTypeSelect.value == 'weekly' ? weekDate.value[1] : monthDate.value[1],
   };

+ 16 - 44
src/views/searchTerm/brandView/index.vue

@@ -11,17 +11,20 @@ import dayjs from 'dayjs';
 import { getTableData } from './api';
 import { ElMessage } from 'element-plus';
 import { brandColumns } from './useColumns';
-import { usePublicData } from '/@/stores/publicData';
-import { storeToRefs } from 'pinia';
-
-const publicData = usePublicData();
-const { dateRange } = storeToRefs(publicData);
+import WeekRangePicker from '/@/components/WeekRangePicker/index.vue';
+import MonthRangePicker from '/@/components/MonthRangePicker/index.vue';
+
+const weekDate = ref([
+  dayjs().subtract(2, 'week').day(0).format('YYYY-MM-DD'),
+  dayjs().subtract(1, 'week').day(6).format('YYYY-MM-DD'),
+]);
+const monthDate = ref([
+  dayjs().subtract(2, 'month').startOf('month').format('YYYY-MM-DD'),
+  dayjs().subtract(0, 'month').startOf('month').format('YYYY-MM-DD'),
+]);
 const reportTypeSelect = ref('weekly');
 const searchTermInp = ref('zosi');
-// const asinInp = ref('B0');
 const tableLoading = ref(false);
-const downloadLoading = ref(false);
-const date = ref([dateRange.value[0], dateRange.value[1]]);
 
 const gridOptions: any = reactive({
   height: 'auto',
@@ -50,7 +53,7 @@ onBeforeMount(() => {
   fetchTableData();
 });
 
-watch(date, () => {
+watch([weekDate, monthDate], () => {
   fetchTableData();
 });
 
@@ -67,10 +70,8 @@ async function handleSelectChange() {
 async function refreshTable() {
   tablePage.currentPage = 1;
   tablePage.pageSize = 20;
-  // asinInp.value = '';
   searchTermInp.value = '';
   reportTypeSelect.value = 'weekly';
-  // marketplaceSelect.value = marketplaceIdEnum[0].value;
   await fetchTableData();
 }
 
@@ -79,12 +80,10 @@ async function fetchTableData() {
   const query = {
     page: tablePage.currentPage,
     limit: tablePage.pageSize,
-    // asin: asinInp.value,
     search_term: searchTermInp.value,
     report_type: reportTypeSelect.value,
-    // marketplace_Ids: marketplaceSelect.value,
-    date_start: date.value[0],
-    date_end: date.value[1],
+    date_start: reportTypeSelect.value == 'weekly' ? weekDate.value[0] : monthDate.value[0],
+    date_end: reportTypeSelect.value == 'weekly' ? weekDate.value[1] : monthDate.value[1],
   };
   try {
     const response = await getTableData(query);
@@ -168,40 +167,13 @@ function calculateLastWeek() {
               @clear="handleSelectChange"
               style="width: 240px" />
           </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" />-->
-          <!--</div>-->
           <div>
             <span class="font-medium mr-0.5">报告日期 </span>
-            <el-date-picker
-              v-model="date"
-              type="daterange"
-              value-format="YYYY-MM-DD"
-              range-separator="To"
-              :disabled-date="(time: Date) => time > new Date()"
-              :popper-options="{ placement: 'bottom-end' }"
-              :clearable="false" />
+            <MonthRangePicker v-model="monthDate" v-if="reportTypeSelect === 'monthly'" />
+            <WeekRangePicker v-model="weekDate" v-else />
           </div>
         </div>
         <div class="flex">
-          <!--<el-button-->
-          <!--  type="success"-->
-          <!--  plain-->
-          <!--  @click="handleDownload"-->
-          <!--  :icon="Download"-->
-          <!--  round-->
-          <!--  :loading="downloadLoading"-->
-          <!--  :disabled="!tableData.length"-->
-          <!--  >下载表格-->
-          <!--</el-button>-->
           <el-button @click="refreshTable" :icon="Refresh" circle></el-button>
         </div>
       </div>

+ 19 - 20
src/views/searchTerm/topSearchTermRank/index.vue

@@ -1,26 +1,31 @@
 <script setup lang="ts">
 /**
  * @Name: index.vue
- * @Description:
+ * @Description: 搜索词-TopSearchTerm Rank
  * @Author: Cheney
  */
 
 import { Key, PictureRounded, Refresh, Search, TopRight } from '@element-plus/icons-vue';
-import { nextTick, onMounted, ref, watch } from 'vue';
+import { nextTick, onBeforeMount, ref, watch } from 'vue';
 import { useRouter } from 'vue-router';
 import { marketplaceIdEnum } from '/@/utils/marketplaceIdEnum';
 import { usePagination } from '/@/utils/usePagination';
 import { getTopSearchTermTable } from './api';
 import { ElMessage } from 'element-plus';
 import ColumnChart from '/src/views/searchTerm/topSearchTermRank/column-chart.vue';
-import { usePublicData } from '/@/stores/publicData';
-import { storeToRefs } from 'pinia';
+import dayjs from 'dayjs';
+import WeekRangePicker from '/@/components/WeekRangePicker/index.vue';
+import MonthRangePicker from '/@/components/MonthRangePicker/index.vue';
 
-const publicData = usePublicData();
-const { dateRange } = storeToRefs(publicData);
+const weekDate = ref([
+  dayjs().subtract(2, 'week').day(0).format('YYYY-MM-DD'),
+  dayjs().subtract(1, 'week').day(6).format('YYYY-MM-DD'),
+]);
+const monthDate = ref([
+  dayjs().subtract(2, 'month').startOf('month').format('YYYY-MM-DD'),
+  dayjs().subtract(0, 'month').startOf('month').format('YYYY-MM-DD'),
+]);
 const router = useRouter();
-
-const date = ref([dateRange.value[0], dateRange.value[1]]);
 const { tableData, total, currentPage, pageSize, handlePageChange } = usePagination(fetchTableData);
 const marketplaceSelect = ref(marketplaceIdEnum[0].value); // 当前只有美国区 默认第一个为美国
 const marketplaceOptions = marketplaceIdEnum;
@@ -29,11 +34,11 @@ const searchTermInp = ref('');
 const asinInp = ref('');
 const tableLoading = ref(false);
 
-onMounted(() => {
+onBeforeMount(() => {
   fetchTableData();
 });
 
-watch(date, () => {
+watch([weekDate, monthDate], () => {
   fetchTableData();
 });
 
@@ -56,8 +61,8 @@ async function fetchTableData() {
     search_term: searchTermInp.value,
     report_type: reportTypeSelect.value,
     marketplace_Ids: marketplaceSelect.value,
-    date_start: date.value[0],
-    date_end: date.value[1],
+    date_start: reportTypeSelect.value == 'weekly' ? weekDate.value[0] : monthDate.value[0],
+    date_end: reportTypeSelect.value == 'weekly' ? weekDate.value[1] : monthDate.value[1],
   };
   try {
     const response = await getTopSearchTermTable(query);
@@ -173,14 +178,8 @@ function handleJump() {
         </div>
         <div>
           <span class="font-medium mr-0.5">报告日期 </span>
-          <el-date-picker
-            v-model="date"
-            type="daterange"
-            value-format="YYYY-MM-DD"
-            :popper-options="{ placement: 'bottom-end' }"
-            :clearable="false"
-            :disabled-date="(time: Date) => time > new Date()"
-            range-separator="至" />
+          <MonthRangePicker v-model="monthDate" v-if="reportTypeSelect === 'monthly'" />
+          <WeekRangePicker v-model="weekDate" v-else />
         </div>
       </div>
       <div class="flex">

+ 0 - 15
vite.config.ts

@@ -7,7 +7,6 @@ import AutoImport from 'unplugin-auto-import/vite'
 import compression from 'vite-plugin-compression'
 import Components from 'unplugin-vue-components/vite'
 import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
-import { Plugin as importToCDN } from "vite-plugin-cdn-import";
 
 const pathResolve = (dir: string) => {
   return resolve(__dirname, '.', dir)
@@ -39,20 +38,6 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
       // Components({
       //   resolvers: [ElementPlusResolver()],
       // }),
-      importToCDN({
-            modules: [
-              // {
-              //   name: "vue",
-              //   var: "Vue",
-              //   path: "https://cdn.jsdelivr.net/npm/vue@3.2.45/dist/vue.global.js"
-              // },
-              {
-                name: "ant-design-vue",
-                var: "Antd",
-                path: "https://cdnjs.cloudflare.com/ajax/libs/ant-design-vue/4.2.1/antd.js"
-              }]
-          }
-      )
     ],
     root: process.cwd(),
     resolve: { alias },