|
@@ -2,27 +2,25 @@
|
|
|
<view class="facility">
|
|
<view class="facility">
|
|
|
<wd-sticky :z-index="10">
|
|
<wd-sticky :z-index="10">
|
|
|
<view class="facility-top">
|
|
<view class="facility-top">
|
|
|
- <wd-search :placeholder-left="true" placeholder="三亚太保养老族库">
|
|
|
|
|
|
|
+ <wd-search :placeholder-left="true" placeholder="请输入内容" v-model="state.text">
|
|
|
<template #suffix>
|
|
<template #suffix>
|
|
|
<view style="display: flex;align-items: center;margin: 0 20rpx;">
|
|
<view style="display: flex;align-items: center;margin: 0 20rpx;">
|
|
|
- <wd-button size="small">
|
|
|
|
|
- 搜索
|
|
|
|
|
- </wd-button>
|
|
|
|
|
|
|
+ <view style="margin-right: 20rpx;">
|
|
|
|
|
+ <wd-button size="small" @click="onClickSearch">
|
|
|
|
|
+ 搜索
|
|
|
|
|
+ </wd-button>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view>
|
|
|
|
|
+ <wd-button type="info" size="small" @click="onClickReset">
|
|
|
|
|
+ 重置
|
|
|
|
|
+ </wd-button>
|
|
|
|
|
+ </view>
|
|
|
</view>
|
|
</view>
|
|
|
</template>
|
|
</template>
|
|
|
</wd-search>
|
|
</wd-search>
|
|
|
- <wd-tabs slidable="always" v-model="state.tab" @click="onclickFacilityList()">
|
|
|
|
|
- <wd-tab v-for="(item, index) in state.tabList" :key="index" :title="item.name" />
|
|
|
|
|
|
|
+ <wd-tabs slidable="always" v-model="state.tabValue">
|
|
|
|
|
+ <wd-tab v-for="(item, index) in state.tabList" :title="item.label" :key="index" />
|
|
|
</wd-tabs>
|
|
</wd-tabs>
|
|
|
- <wd-drop-menu>
|
|
|
|
|
- <wd-drop-menu-item v-model="state.dropMenu" :options="state.dropMenuList" />
|
|
|
|
|
- <wd-drop-menu-item title="更多筛选">
|
|
|
|
|
- <view>
|
|
|
|
|
- <wd-cell title="标题" value="筛选内容1" />
|
|
|
|
|
- <wd-cell title="标题" value="筛选内容2" />
|
|
|
|
|
- </view>
|
|
|
|
|
- </wd-drop-menu-item>
|
|
|
|
|
- </wd-drop-menu>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
</wd-sticky>
|
|
</wd-sticky>
|
|
|
<view class="facility-list">
|
|
<view class="facility-list">
|
|
@@ -37,7 +35,7 @@
|
|
|
{{ item.title }}
|
|
{{ item.title }}
|
|
|
</view>
|
|
</view>
|
|
|
<view class="facility-list-item-text">
|
|
<view class="facility-list-item-text">
|
|
|
- {{ item.content }}
|
|
|
|
|
|
|
+ {{ item.description }}
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -47,14 +45,13 @@
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
import { reactive } from 'vue';
|
|
import { reactive } from 'vue';
|
|
|
-import { onShow, onReachBottom, onLoad } from '@dcloudio/uni-app';
|
|
|
|
|
|
|
+import { onShow, onReachBottom } from '@dcloudio/uni-app';
|
|
|
import { apis } from '@/apis';
|
|
import { apis } from '@/apis';
|
|
|
-import { s } from 'vite/dist/node/types.d-aGj9QkWt';
|
|
|
|
|
|
|
|
|
|
interface State {
|
|
interface State {
|
|
|
- tab: string,
|
|
|
|
|
- dropMenu: string,
|
|
|
|
|
- dropMenuList: {
|
|
|
|
|
|
|
+ text?: string,
|
|
|
|
|
+ tabValue?: string,
|
|
|
|
|
+ tabList: {
|
|
|
label: string,
|
|
label: string,
|
|
|
value: string,
|
|
value: string,
|
|
|
}[],
|
|
}[],
|
|
@@ -63,71 +60,70 @@ interface State {
|
|
|
url: string,
|
|
url: string,
|
|
|
sign: string,
|
|
sign: string,
|
|
|
title: string,
|
|
title: string,
|
|
|
- content: string,
|
|
|
|
|
- date: string,
|
|
|
|
|
|
|
+ description: string,
|
|
|
}[],
|
|
}[],
|
|
|
page: {
|
|
page: {
|
|
|
- pageNumber: number,
|
|
|
|
|
|
|
+ pageNum: number,
|
|
|
pageSize: number,
|
|
pageSize: number,
|
|
|
total: number,
|
|
total: number,
|
|
|
},
|
|
},
|
|
|
- tabList: [
|
|
|
|
|
- {
|
|
|
|
|
- name: '',
|
|
|
|
|
- id: '',
|
|
|
|
|
- }
|
|
|
|
|
- ]
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-const state: State = reactive({
|
|
|
|
|
- tab: '0',
|
|
|
|
|
- dropMenu: '1',
|
|
|
|
|
- dropMenuList: [
|
|
|
|
|
- {
|
|
|
|
|
- label: '效果图',
|
|
|
|
|
- value: '1',
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- label: '物料实物',
|
|
|
|
|
- value: '2',
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
|
|
+const state = reactive<State>({
|
|
|
|
|
+ text: undefined,
|
|
|
|
|
+ tabValue: undefined,
|
|
|
|
|
+ tabList: [],
|
|
|
list: [],
|
|
list: [],
|
|
|
page: {
|
|
page: {
|
|
|
- pageNumber: 1,
|
|
|
|
|
|
|
+ pageNum: 1,
|
|
|
pageSize: 20,
|
|
pageSize: 20,
|
|
|
total: 0,
|
|
total: 0,
|
|
|
},
|
|
},
|
|
|
- tabList: [{
|
|
|
|
|
- name: '',
|
|
|
|
|
- id: '',
|
|
|
|
|
- }],
|
|
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
const api = {
|
|
const api = {
|
|
|
|
|
+ // 获取区域列表
|
|
|
|
|
+ fetchRegionList: async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const data = {
|
|
|
|
|
+ dictType: 'region_type',
|
|
|
|
|
+ };
|
|
|
|
|
+ const res = await apis.fetchRegionList(data);
|
|
|
|
|
+ const list = res.rows.map((item: any) => {
|
|
|
|
|
+ return {
|
|
|
|
|
+ label: item.dictLabel,
|
|
|
|
|
+ value: item.dictValue,
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ state.tabValue = list.length ? list[0].value : undefined;
|
|
|
|
|
+ state.tabList = list;
|
|
|
|
|
+ } catch (error: any) {
|
|
|
|
|
+ console.error(error);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
// 获取设施列表
|
|
// 获取设施列表
|
|
|
- fetchList: async (concat?: boolean) => {
|
|
|
|
|
|
|
+ fetchFacilityList: async (concat?: boolean) => {
|
|
|
uni.showLoading({
|
|
uni.showLoading({
|
|
|
title: '加载中',
|
|
title: '加载中',
|
|
|
});
|
|
});
|
|
|
try {
|
|
try {
|
|
|
const data = {
|
|
const data = {
|
|
|
- pageNum: state.page.pageNumber,
|
|
|
|
|
|
|
+ facilitiesTitle: state.text,
|
|
|
|
|
+ dictType: state.tabValue,
|
|
|
|
|
+ pageNum: state.page.pageNum,
|
|
|
pageSize: state.page.pageSize,
|
|
pageSize: state.page.pageSize,
|
|
|
- dictType: state.tab,
|
|
|
|
|
};
|
|
};
|
|
|
- const res = await apis.facilitiesList(data);
|
|
|
|
|
|
|
+ const res = await apis.fetchFacilityList(data);
|
|
|
const list = res.rows.map((item: any) => {
|
|
const list = res.rows.map((item: any) => {
|
|
|
return {
|
|
return {
|
|
|
id: item.facilitiesId,
|
|
id: item.facilitiesId,
|
|
|
url: item.sysimg[0].url,
|
|
url: item.sysimg[0].url,
|
|
|
- sign: '',
|
|
|
|
|
|
|
+ sign: item.facilitiesName,
|
|
|
title: item.facilitiesTitle,
|
|
title: item.facilitiesTitle,
|
|
|
- content: item.facilitiesDesc,
|
|
|
|
|
- date: item.createTime,
|
|
|
|
|
|
|
+ description: item.facilitiesDesc,
|
|
|
};
|
|
};
|
|
|
});
|
|
});
|
|
|
- state.list= concat ? state.list.concat(list) : list;
|
|
|
|
|
|
|
+ state.list = concat ? state.list.concat(list) : list;
|
|
|
state.page = {
|
|
state.page = {
|
|
|
...state.page,
|
|
...state.page,
|
|
|
total: res.total,
|
|
total: res.total,
|
|
@@ -138,77 +134,71 @@ const api = {
|
|
|
uni.hideLoading();
|
|
uni.hideLoading();
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
- //获取区域列表
|
|
|
|
|
- fetchRegionList: async () => {
|
|
|
|
|
- try {
|
|
|
|
|
- const data = {
|
|
|
|
|
- pageNum: state.page.pageNumber,
|
|
|
|
|
- pageSize: state.page.pageSize,
|
|
|
|
|
- dictType: 'region_type',
|
|
|
|
|
- };
|
|
|
|
|
- const res = await apis.regionList(data);
|
|
|
|
|
- if (res.code === 200) {
|
|
|
|
|
- res.rows.forEach((item: any) => {
|
|
|
|
|
- state.tabList.push({
|
|
|
|
|
- name: item.dictLabel,
|
|
|
|
|
- id: item.dictValue,
|
|
|
|
|
- });
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- } catch (error: any) {
|
|
|
|
|
- console.error(error);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const init = async () => {
|
|
const init = async () => {
|
|
|
uni.showLoading({
|
|
uni.showLoading({
|
|
|
title: '加载中',
|
|
title: '加载中',
|
|
|
});
|
|
});
|
|
|
- // 获取列表
|
|
|
|
|
- await api.fetchList();
|
|
|
|
|
- await api.fetchRegionList();
|
|
|
|
|
|
|
+ // 获取区域列表
|
|
|
|
|
+ api.fetchRegionList();
|
|
|
|
|
+ // 获取设施列表
|
|
|
|
|
+ api.fetchFacilityList();
|
|
|
uni.hideLoading();
|
|
uni.hideLoading();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+onShow(() => {
|
|
|
|
|
+ state.page = {
|
|
|
|
|
+ ...state.page,
|
|
|
|
|
+ pageNum: 1,
|
|
|
|
|
+ };
|
|
|
|
|
+ init();
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
const onChangePagination = async () => {
|
|
const onChangePagination = async () => {
|
|
|
- const { pageNumber, pageSize, total } = state.page;
|
|
|
|
|
- if (total > pageNumber * pageSize) {
|
|
|
|
|
|
|
+ const { pageNum, pageSize, total } = state.page;
|
|
|
|
|
+ if (total > pageNum * pageSize) {
|
|
|
state.page = {
|
|
state.page = {
|
|
|
...state.page,
|
|
...state.page,
|
|
|
- pageNumber: pageNumber + 1,
|
|
|
|
|
|
|
+ pageNum: pageNum + 1,
|
|
|
}
|
|
}
|
|
|
- // 获取列表
|
|
|
|
|
- await api.fetchList(true);
|
|
|
|
|
|
|
+ // 获取设施列表
|
|
|
|
|
+ await api.fetchFacilityList(true);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-onShow(() => {
|
|
|
|
|
|
|
+onReachBottom(() => {
|
|
|
|
|
+ onChangePagination();
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+// 点击搜索
|
|
|
|
|
+const onClickSearch = async () => {
|
|
|
state.page = {
|
|
state.page = {
|
|
|
...state.page,
|
|
...state.page,
|
|
|
- pageNumber: 1,
|
|
|
|
|
|
|
+ pageNum: 1,
|
|
|
};
|
|
};
|
|
|
- init();
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-onReachBottom(() => {
|
|
|
|
|
- console.log('触发分页');
|
|
|
|
|
|
|
+ // 获取设施列表
|
|
|
|
|
+ await api.fetchFacilityList();
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
- onChangePagination();
|
|
|
|
|
-});
|
|
|
|
|
|
|
+// 点击重置
|
|
|
|
|
+const onClickReset = async () => {
|
|
|
|
|
+ state.text = undefined;
|
|
|
|
|
+ state.tabValue = undefined
|
|
|
|
|
+ state.page = {
|
|
|
|
|
+ ...state.page,
|
|
|
|
|
+ pageNum: 1,
|
|
|
|
|
+ };
|
|
|
|
|
+ // 获取设施列表
|
|
|
|
|
+ await api.fetchFacilityList();
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
// 点击跳转
|
|
// 点击跳转
|
|
|
const onClickNavigate = (id: string) => {
|
|
const onClickNavigate = (id: string) => {
|
|
|
uni.navigateTo({
|
|
uni.navigateTo({
|
|
|
- url: `/pages/facility/houseDetail/index?id=${id}&type=${state.tab}`,
|
|
|
|
|
|
|
+ url: `/pages/facility/facilityDetail/index?id=${id}`,
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-const onclickFacilityList = async () => {
|
|
|
|
|
- state.list = [];
|
|
|
|
|
- api.fetchList();
|
|
|
|
|
-}
|
|
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
@@ -238,6 +228,9 @@ const onclickFacilityList = async () => {
|
|
|
padding: 0 10rpx;
|
|
padding: 0 10rpx;
|
|
|
background: rgba(0, 0, 0, 0.4);
|
|
background: rgba(0, 0, 0, 0.4);
|
|
|
border-top-right-radius: $border-radius-base;
|
|
border-top-right-radius: $border-radius-base;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ font-size: $font-size-mini;
|
|
|
color: #FFFFFF;
|
|
color: #FFFFFF;
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
white-space: nowrap;
|
|
white-space: nowrap;
|