Commit b402d278 authored by shilei's avatar shilei

feat: 开发区、产业园添加筛选

parent 8a5237c3
...@@ -7,39 +7,41 @@ export {} ...@@ -7,39 +7,41 @@ export {}
declare module 'vue' { declare module 'vue' {
export interface GlobalComponents { export interface GlobalComponents {
CommonHeader: (typeof import('./src/components/common/CommonHeader.vue'))['default']; CommonHeader: typeof import('./src/components/common/CommonHeader.vue')['default']
DetailInfoCell: (typeof import('./src/components/detail/DetailInfoCell.vue'))['default']; DetailInfo: typeof import('./src/components/detail/DetailInfo.vue')['default']
DetailMain: (typeof import('./src/components/detail/DetailMain.vue'))['default']; DetailInfoCell: typeof import('./src/components/detail/DetailInfoCell.vue')['default']
ElButton: (typeof import('element-plus/es'))['ElButton']; DetailInfoTab: typeof import('./src/components/detail/DetailInfoTab.vue')['default']
ElCheckbox: (typeof import('element-plus/es'))['ElCheckbox']; DetailMain: typeof import('./src/components/detail/DetailMain.vue')['default']
ElCheckboxGroup: (typeof import('element-plus/es'))['ElCheckboxGroup']; ElButton: (typeof import('element-plus/es'))['ElButton']
ElCol: (typeof import('element-plus/es'))['ElCol']; ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElContainer: (typeof import('element-plus/es'))['ElContainer']; ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElDatePicker: (typeof import('element-plus/es'))['ElDatePicker']; ElCol: (typeof import('element-plus/es'))['ElCol']
ElFooter: (typeof import('element-plus/es'))['ElFooter']; ElContainer: typeof import('element-plus/es')['ElContainer']
ElForm: (typeof import('element-plus/es'))['ElForm']; ElDatePicker: (typeof import('element-plus/es'))['ElDatePicker']
ElFormItem: (typeof import('element-plus/es'))['ElFormItem']; ElFooter: typeof import('element-plus/es')['ElFooter']
ElHeader: (typeof import('element-plus/es'))['ElHeader']; ElForm: (typeof import('element-plus/es'))['ElForm']
ElInput: (typeof import('element-plus/es'))['ElInput']; ElFormItem: (typeof import('element-plus/es'))['ElFormItem']
ElMain: (typeof import('element-plus/es'))['ElMain']; ElHeader: typeof import('element-plus/es')['ElHeader']
ElMenu: (typeof import('element-plus/es'))['ElMenu']; ElInput: typeof import('element-plus/es')['ElInput']
ElMenuItem: (typeof import('element-plus/es'))['ElMenuItem']; ElMain: typeof import('element-plus/es')['ElMain']
ElOption: (typeof import('element-plus/es'))['ElOption']; ElMenu: typeof import('element-plus/es')['ElMenu']
ElPagination: (typeof import('element-plus/es'))['ElPagination']; ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElRadio: (typeof import('element-plus/es'))['ElRadio']; ElOption: (typeof import('element-plus/es'))['ElOption']
ElRadioGroup: (typeof import('element-plus/es'))['ElRadioGroup']; ElPagination: typeof import('element-plus/es')['ElPagination']
ElSelect: (typeof import('element-plus/es'))['ElSelect']; ElRadio: (typeof import('element-plus/es'))['ElRadio']
ElSubMenu: (typeof import('element-plus/es'))['ElSubMenu']; ElRadioGroup: (typeof import('element-plus/es'))['ElRadioGroup']
ImageList: (typeof import('./src/components/common/ImageList.vue'))['default']; ElSelect: (typeof import('element-plus/es'))['ElSelect']
ListInfo: (typeof import('./src/components/list/ListInfo.vue'))['default']; ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
Filter: (typeof import('./src/components/filter/filter.vue'))['default']; Filter: (typeof import('./src/components/filter/filter.vue'))['default']
FilterView: (typeof import('./src/components/filter/filter-view.vue'))['default']; FilterView: typeof import('./src/components/filter/filter-view.vue')['default']
ListCarrierItem: (typeof import('./src/components/list/list-carrier-item.vue'))['default']; ImageList: typeof import('./src/components/common/ImageList.vue')['default']
ListPagination: (typeof import('./src/components/list/ListPagination.vue'))['default']; ListCarrierItem: typeof import('./src/components/list/list-carrier-item.vue')['default']
MiniListItem: (typeof import('./src/components/detail/MiniListItem.vue'))['default']; ListInfo: typeof import('./src/components/list/ListInfo.vue')['default']
ListLandItem: (typeof import('./src/components/list/list-land-item.vue'))['default']; ListLandItem: typeof import('./src/components/list/list-land-item.vue')['default']
ParkItem: (typeof import('./src/components/list/ParkItem.vue'))['default']; ListPagination: typeof import('./src/components/list/ListPagination.vue')['default']
RouterLink: (typeof import('vue-router'))['RouterLink']; MiniListItem: typeof import('./src/components/detail/MiniListItem.vue')['default']
RouterView: (typeof import('vue-router'))['RouterView']; ParkItem: typeof import('./src/components/list/ParkItem.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
} }
} }
...@@ -13573,9 +13573,9 @@ ...@@ -13573,9 +13573,9 @@
"integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==" "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA=="
}, },
"@element-plus/icons-vue": { "@element-plus/icons-vue": {
"version": "2.1.0", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz", "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
"integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==", "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
"requires": {} "requires": {}
}, },
"@esbuild/android-arm": { "@esbuild/android-arm": {
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
<div class="w-[100px] shrink-0 text-xs leading-9 text-black/[.65]"> <div class="w-[100px] shrink-0 text-xs leading-9 text-black/[.65]">
<span>{{ filter.label }}</span> <span>{{ filter.label }}</span>
</div> </div>
<div> <div class="flex-1">
<div v-if="!filter.multiple" class="flex pt-1.5 text-xs"> <div v-if="!filter.multiple" class="flex pt-1.5 text-xs">
<div <div
class="shrink-0" class="shrink-0"
...@@ -47,10 +47,10 @@ ...@@ -47,10 +47,10 @@
全部 全部
</span> </span>
</div> </div>
<div class="flex"> <div class="flex flex-wrap">
<div v-for="(item, idx) in filter.list" :key="idx" class="Filter--keysWrap"> <div v-for="(item, idx) in filter.list" :key="idx">
<div <div
class="Filter-ListWrap cursor-pointer px-2 py-1 text-black/[.45]" class="cursor-pointer px-2 py-1 text-black/[.45]"
:class="{ selected: filter.value === item.dictValue }" :class="{ selected: filter.value === item.dictValue }"
@click="handleFilterClick(item, filter)" @click="handleFilterClick(item, filter)"
> >
...@@ -88,7 +88,6 @@ ...@@ -88,7 +88,6 @@
</ElCheckboxGroup> </ElCheckboxGroup>
</div> </div>
</div> </div>
<div class="Filter--operateWrap" style="width: 100px"></div>
</div> </div>
</div> </div>
</template> </template>
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
import { useListView } from '@/composable/useListView.ts'; import { useListView } from '@/composable/useListView.ts';
import { RouteName } from '@/router/router.ts'; import { RouteName } from '@/router/router.ts';
import { RequestUrl } from '@/types/api.ts'; import { RequestUrl } from '@/types/api.ts';
import ListPagination from '@/components/list/list-pagination.vue'; import ListPagination from '@/components/list/ListPagination.vue';
import CarrierListItemView from '@/components/list/list-carrier-item.vue'; import CarrierListItemView from '@/components/list/list-carrier-item.vue';
import FilterView from '@/components/filter/filter-view.vue'; import FilterView from '@/components/filter/filter-view.vue';
import type { CarrierListCondition, CarrierListItem } from '@/types/api/carrierList'; import type { CarrierListCondition, CarrierListItem } from '@/types/api/carrierList';
......
<!-- 开发区列表 --> <!-- 开发区列表 -->
<template> <template>
<div class="main-width mx-auto"> <div class="main-width mx-auto">
<FilterView
:filter-key-list="filterKeyList"
class="mb-6"
@change="handleFilterChange"
></FilterView>
<div class="space-y-5"> <div class="space-y-5">
<ParkItem <ParkItem
v-for="item in datas" v-for="item in datas"
...@@ -27,9 +32,30 @@ import ListPagination from '@/components/list/ListPagination.vue'; ...@@ -27,9 +32,30 @@ import ListPagination from '@/components/list/ListPagination.vue';
import { RequestUrl } from '@/types/api.ts'; import { RequestUrl } from '@/types/api.ts';
import type { DevelopZoneItem, DevelopZoneListCondition } from '@/types/api/developZoneList'; import type { DevelopZoneItem, DevelopZoneListCondition } from '@/types/api/developZoneList';
import { ParkItemType } from '@/types/enum.ts'; import { ParkItemType } from '@/types/enum.ts';
import FilterView from '@/components/filter/filter-view.vue';
const { pageNum, pageSize, totalCount, datas, handleDetail } = useListView< // 筛选项列表
const filterKeyList = [
'development_level',
'development_type',
'development_direction',
'development_area',
'industry_policy',
];
const { pageNum, pageSize, totalCount, datas, handleDetail, queryList } = useListView<
DevelopZoneItem, DevelopZoneItem,
DevelopZoneListCondition DevelopZoneListCondition
>(RequestUrl.developZoneList); >(RequestUrl.developZoneList);
// 处理筛选条件
const handleFilterChange = async function (selectList) {
const temp: any = {};
for (const item of selectList.value) {
temp[item.key] = item.value;
}
pageNum.value = 1;
const { data } = await queryList(temp);
datas.value = data.records;
};
</script> </script>
<!-- 产业园列表 --> <!-- 产业园列表 -->
<template> <template>
<div class="main-width mx-auto"> <div class="main-width mx-auto">
<FilterView
class="mb-6"
:filter-key-list="filterKeyList"
@change="handleFilterChange"
></FilterView>
<div> <div>
<div class="space-y-5"> <div class="space-y-5">
<ParkItem <ParkItem
...@@ -27,6 +32,7 @@ import { useListView } from '@/composable/useListView.ts'; ...@@ -27,6 +32,7 @@ import { useListView } from '@/composable/useListView.ts';
import { RouteName } from '@/router/router.ts'; import { RouteName } from '@/router/router.ts';
import { RequestUrl } from '@/types/api.ts'; import { RequestUrl } from '@/types/api.ts';
import ListPagination from '@/components/list/ListPagination.vue'; import ListPagination from '@/components/list/ListPagination.vue';
import FilterView from '@/components/filter/filter-view.vue';
import ParkItem from '@/components/list/ParkItem.vue'; import ParkItem from '@/components/list/ParkItem.vue';
import type { import type {
IndustrialParkItem, IndustrialParkItem,
...@@ -34,8 +40,26 @@ import type { ...@@ -34,8 +40,26 @@ import type {
} from '@/types/api/industrialParkList.ts'; } from '@/types/api/industrialParkList.ts';
import { ParkItemType } from '@/types/enum.ts'; import { ParkItemType } from '@/types/enum.ts';
const { pageNum, pageSize, totalCount, datas, handleDetail } = useListView< const { pageNum, pageSize, totalCount, datas, handleDetail, queryList } = useListView<
IndustrialParkItem, IndustrialParkItem,
IndustrialParkListCondition IndustrialParkListCondition
>(RequestUrl.industrialParkList); >(RequestUrl.industrialParkList);
// 筛选项
const filterKeyList = [
'park_level',
'park_direction',
'park_area',
'park_resources',
'industry_policy',
];
// 处理筛选条件
const handleFilterChange = async function (selectList) {
const temp: any = {};
for (const item of selectList.value) {
temp[item.key] = item.value;
}
pageNum.value = 1;
const { data } = await queryList(temp);
datas.value = data.records;
};
</script> </script>
...@@ -29,17 +29,16 @@ ...@@ -29,17 +29,16 @@
import { useListView } from '@/composable/useListView.ts'; import { useListView } from '@/composable/useListView.ts';
import { RouteName } from '@/router/router.ts'; import { RouteName } from '@/router/router.ts';
import { RequestUrl } from '@/types/api.ts'; import { RequestUrl } from '@/types/api.ts';
import ListPagination from '@/components/list/list-pagination.vue'; import ListPagination from '@/components/list/ListPagination.vue';
import LandListItemView from '@/components/list/list-land-item.vue'; import LandListItemView from '@/components/list/list-land-item.vue';
import FilterView from '@/components/filter/filter-view.vue'; import FilterView from '@/components/filter/filter-view.vue';
import type { LandListCondition, LandListItem } from '@/types/api/landList'; import type { LandListCondition, LandListItem } from '@/types/api/landList';
import { onMounted, ref } from 'vue'; import { ref } from 'vue';
const Response = useListView<LandListItem, LandListCondition>(RequestUrl.landList); const Response = useListView<LandListItem, LandListCondition>(RequestUrl.landList);
const { datas, pageNum, totalCount, pageSize, handleDetail, queryList } = Response; const { datas, pageNum, totalCount, pageSize, handleDetail, queryList } = Response;
const filterKeyList = ref(['land_price', 'land_type', 'land_area']); const filterKeyList = ref(['land_price', 'land_type', 'land_area']);
onMounted(() => {});
// 处理筛选条件 // 处理筛选条件
const handleFilterChange = async function (selectList) { const handleFilterChange = async function (selectList) {
const temp: any = {}; const temp: any = {};
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment