|
@@ -20,6 +20,7 @@
|
|
|
|
|
|
<view class="d-flex flex-col p-2">
|
|
|
<uni-search-bar
|
|
|
+ v-model="searchValue"
|
|
|
radius="100"
|
|
|
bgColor="#fff"
|
|
|
placeholder="搜索文物"
|
|
@@ -29,9 +30,9 @@
|
|
|
/>
|
|
|
</view>
|
|
|
<view class="d-flex flex-row justify-around p-2 pt-0">
|
|
|
- <SimpleDropDownPicker class="width-1-4" :columns="categoryData" />
|
|
|
- <SimpleDropDownPicker class="width-1-4" :columns="categoryData" />
|
|
|
- <SimpleDropDownPicker class="width-1-4" :columns="categoryData" />
|
|
|
+ <SimpleDropDownPicker v-model="selectedTag" :columns="categoryData.content.value" />
|
|
|
+ <SimpleDropDownPicker v-model="selectedLevel" :columns="levelData.content.value" />
|
|
|
+ <SimpleDropDownPicker v-model="selectedRegion" :columns="regionData.content.value" />
|
|
|
</view>
|
|
|
<view class="d-flex flex-row flex-wrap justify-between p-2">
|
|
|
<view
|
|
@@ -54,7 +55,7 @@
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { ref, watch } from 'vue';
|
|
|
-import { GetContentListParams } from '@/api/CommonContent';
|
|
|
+import CommonContent, { GetContentListParams } from '@/api/CommonContent';
|
|
|
import { useSimplePageListLoader } from '@/common/composeabe/SimplePageListLoader';
|
|
|
import { navTo } from '@/common/utils/PageAction';
|
|
|
import MoveableContent from '@/api/inheritor/MoveableContent';
|
|
@@ -62,14 +63,38 @@ import UnmoveableContent from '@/api/inheritor/UnmoveableContent';
|
|
|
import SimplePageListLoader from '@/common/components/SimplePageListLoader.vue';
|
|
|
import Box2LineLargeImageUserShadow from '@/pages/parts/Box2LineLargeImageUserShadow.vue';
|
|
|
import SimpleDropDownPicker from '@/common/components/SimpleDropDownPicker.vue';
|
|
|
+import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
|
|
|
|
|
|
-const categoryData = [
|
|
|
- { id: 290, name: '全部' },
|
|
|
- { id: 291, name: '闽南音乐' },
|
|
|
- { id: 187, name: '讲古' },
|
|
|
- { id: 292, name: '方言' },
|
|
|
- { id: 293, name: '民俗习俗' },
|
|
|
- ]
|
|
|
+const categoryData = useSimpleDataLoader(async () =>
|
|
|
+ [{
|
|
|
+ id: 0,
|
|
|
+ name: '全部分类'
|
|
|
+ }].concat((await CommonContent.getCategoryList(3)).map((item) => ({
|
|
|
+ id: item.id,
|
|
|
+ name: item.title,
|
|
|
+ })))
|
|
|
+, true);
|
|
|
+const levelData = useSimpleDataLoader(async () =>
|
|
|
+ [{
|
|
|
+ id: 0,
|
|
|
+ name: '全部级别'
|
|
|
+ }].concat((await CommonContent.getCategoryList(2)).map((item) => ({
|
|
|
+ id: item.id,
|
|
|
+ name: item.title,
|
|
|
+ })))
|
|
|
+, true);
|
|
|
+const regionData = useSimpleDataLoader(async () =>
|
|
|
+ [{
|
|
|
+ id: 0,
|
|
|
+ name: '全部区域'
|
|
|
+ }].concat((await CommonContent.getCategoryList(1)).map((item) => ({
|
|
|
+ id: item.id,
|
|
|
+ name: item.title,
|
|
|
+ })))
|
|
|
+, true);
|
|
|
+const selectedTag = ref(0);
|
|
|
+const selectedLevel = ref(0);
|
|
|
+const selectedRegion = ref(0);
|
|
|
const searchValue = ref('');
|
|
|
const tab = ref(0)
|
|
|
const tabs = [
|
|
@@ -92,7 +117,10 @@ const listLoader = useSimplePageListLoader<{
|
|
|
case 1: api = MoveableContent; break;
|
|
|
}
|
|
|
const res = await api.getContentList(new GetContentListParams().setSelfValues({
|
|
|
- //keywords: searchValue.value,
|
|
|
+ crType: selectedTag.value == 0 ? undefined: selectedTag.value,
|
|
|
+ level: selectedLevel.value == 0 ? undefined: selectedLevel.value,
|
|
|
+ region: selectedRegion.value == 0 ? undefined: selectedRegion.value,
|
|
|
+ keywords: searchValue.value,
|
|
|
}), page, pageSize);
|
|
|
return res.list.map((item) => {
|
|
|
return {
|
|
@@ -103,12 +131,21 @@ const listLoader = useSimplePageListLoader<{
|
|
|
})
|
|
|
});
|
|
|
|
|
|
+watch(selectedLevel, () => {
|
|
|
+ listLoader.loadData(undefined, true);
|
|
|
+});
|
|
|
+watch(selectedRegion, () => {
|
|
|
+ listLoader.loadData(undefined, true);
|
|
|
+});
|
|
|
+watch(selectedTag, () => {
|
|
|
+ listLoader.loadData(undefined, true);
|
|
|
+});
|
|
|
watch(tab, () => {
|
|
|
listLoader.loadData(undefined, true);
|
|
|
}, { immediate: true });
|
|
|
|
|
|
function doSearch() {
|
|
|
-
|
|
|
+ listLoader.loadData(undefined, true);
|
|
|
}
|
|
|
function goDetails(id: number) {
|
|
|
navTo('details', { id })
|