gongtianxiao 1 miesiąc temu
rodzic
commit
2c7869d2bd

+ 1 - 1
src/components/chart/GroupAreaCompareBarChart.vue

@@ -45,7 +45,7 @@ const chartRef = ref(null);
 let chartInstance = null;
 
 const filteredList = computed(() =>
-  enterpriseStore.filteredByGroup(filterStore.selectGroup, filterStore.selectDate)
+  enterpriseStore.filteredByGroup('全部', filterStore.selectDate)
 );
 
 const getUsedAreaSqm = (item) =>

+ 6 - 1
src/components/stats/FullDataList.vue

@@ -54,7 +54,12 @@
           :max-options-height="240"
           @selected="patchFilters({ landUsage: $event })"
         />
-        <BaseButton text="清除筛选" variant="outline" size="sm" @click="$emit('reset')" />
+        <BaseButton
+          class="filter-bar__reset"
+          text="重置"
+          variant="outline"
+          @click="$emit('reset')"
+        />
       </div>
     </template>
 

+ 7 - 0
src/components/stats/TopicFullDataListSection.vue

@@ -154,6 +154,13 @@ defineExpose({
   min-width: 240px;
 }
 
+.topic-full-list .filter-bar__reset {
+  height: 36px;
+  padding: 0 16px;
+  flex-shrink: 0;
+  align-self: center;
+}
+
 .topic-full-list .filter-hint {
   margin: 0;
   font-family: var(--font-regular);

+ 7 - 4
src/pages/Topic1Page.vue

@@ -116,10 +116,10 @@ const USAGE_PIE_CONFIG = [
   { name: '闲置', field: 'c_xzmj', color: 'rgba(255, 232, 119, 1)' },
 ];
 
-const createDefaultFilters = () => ({
+const createDefaultFilters = (group = filterStore.selectGroup) => ({
   keyword: '',
   purpose: '全部',
-  group: filterStore.selectGroup,
+  group,
   age: '全部',
   util: '全部',
   fwUsage: '',
@@ -267,10 +267,13 @@ const applyListFilters = (patch) => {
 };
 
 const resetListFilters = () => {
-  listFilters.value = createDefaultFilters();
+  filterStore.setGroup('全部');
+  listFilters.value = createDefaultFilters('全部');
 };
 
-watch(() => filterStore.selectGroup, resetListFilters);
+watch(() => filterStore.selectGroup, (group) => {
+  listFilters.value = createDefaultFilters(group);
+});
 
 watch(
   () => listFilters.value.group,

+ 19 - 4
src/pages/Topic2Page.vue

@@ -79,7 +79,12 @@
               :options="CERT_UI_OPTIONS"
               @selected="filterCert = $event"
             />
-            <BaseButton text="清除筛选" variant="outline" size="sm" @click="resetLocalFilters" />
+            <BaseButton
+              class="filter-bar__reset"
+              text="重置"
+              variant="outline"
+              @click="resetLocalFilters"
+            />
           </div>
         </template>
       </TopicFullDataListSection>
@@ -141,6 +146,11 @@ const filteredList = computed(() =>
   enterpriseStore.filteredByGroup(filterStore.selectGroup, filterStore.selectDate)
 );
 
+/** 各集团办证率对比:仅受统计周期影响,不受所属集团筛选影响 */
+const periodAllGroupsList = computed(() =>
+  enterpriseStore.filteredByGroup('全部', filterStore.selectDate)
+);
+
 const previousMonth = computed(() => getPreviousMonthPeriod(filterStore.selectDate));
 
 const momSnapshots = computed(() =>
@@ -223,7 +233,7 @@ const ownershipPieData = computed(() => {
 
 const certRateChartData = computed(() =>
   GROUP_ORDER.map((group) => {
-    const items = filteredList.value.filter(
+    const items = periodAllGroupsList.value.filter(
       (item) => normalizeGroupName(item.c_ssqpjt) === group
     );
     const total = items.length;
@@ -320,8 +330,9 @@ const onGroupBarClick = (shortName) => {
 };
 
 const resetLocalFilters = () => {
+  filterStore.setGroup('全部');
   filterKeyword.value = '';
-  filterGroup.value = filterStore.selectGroup;
+  filterGroup.value = '全部';
   filterCert.value = '全部';
 };
 
@@ -350,7 +361,11 @@ const handleExport = () => {
   showSuccess(`已导出 ${result.count} 条记录(${result.filename})`);
 };
 
-watch(() => filterStore.selectGroup, resetLocalFilters);
+watch(() => filterStore.selectGroup, (group) => {
+  filterKeyword.value = '';
+  filterGroup.value = group;
+  filterCert.value = '全部';
+});
 </script>
 
 <style scoped>

+ 27 - 4
src/pages/Topic3Page.vue

@@ -166,7 +166,12 @@
               :options="SCOPE_OPTIONS"
               @selected="filterScope = $event"
             />
-            <BaseButton text="清除筛选" variant="outline" size="sm" @click="resetLocalFilters" />
+            <BaseButton
+              class="filter-bar__reset"
+              text="重置"
+              variant="outline"
+              @click="resetLocalFilters"
+            />
           </div>
         </template>
       </TopicFullDataListSection>
@@ -251,6 +256,15 @@ const filteredList = computed(() =>
   enterpriseStore.filteredByGroup(filterStore.selectGroup, filterStore.selectDate)
 );
 
+/** 闲置面积 TOP5(集团):仅受统计周期影响,不受所属集团筛选影响 */
+const periodAllGroupsList = computed(() =>
+  enterpriseStore.filteredByGroup('全部', filterStore.selectDate)
+);
+
+const periodIdleAssetList = computed(() =>
+  periodAllGroupsList.value.filter((item) => getIdleArea(item) > 0)
+);
+
 const previousMonth = computed(() => getPreviousMonthPeriod(filterStore.selectDate));
 
 const momSnapshots = computed(() =>
@@ -376,7 +390,7 @@ const durationPieData = computed(() =>
 );
 
 const idleTop5GroupChartData = computed(() => {
-  const groupMap = idleAssetList.value.reduce((acc, item) => {
+  const groupMap = periodIdleAssetList.value.reduce((acc, item) => {
     const group = (item.c_ssqpjt ?? '其他').trim() || '其他';
     acc[group] = (acc[group] ?? 0) + getIdleArea(item);
     return acc;
@@ -574,8 +588,9 @@ const onIdleBucketSelect = (value) => {
 };
 
 const resetLocalFilters = () => {
+  filterStore.setGroup('全部');
   filterKeyword.value = '';
-  filterGroup.value = filterStore.selectGroup;
+  filterGroup.value = '全部';
   filterPurpose.value = '全部';
   filterIdleMonths.value = '全部';
   filterIdleBucket.value = '全部';
@@ -608,7 +623,15 @@ const handleExport = () => {
   showSuccess(`已导出 ${result.count} 条记录(${result.filename})`);
 };
 
-watch(() => filterStore.selectGroup, resetLocalFilters);
+watch(() => filterStore.selectGroup, (group) => {
+  filterKeyword.value = '';
+  filterGroup.value = group;
+  filterPurpose.value = '全部';
+  filterIdleMonths.value = '全部';
+  filterIdleBucket.value = '全部';
+  filterScope.value = 'idle';
+  filterEnterprise.value = '';
+});
 </script>
 
 <style scoped>