Просмотр исходного кода

⚙ 优化志愿者获取列表分页

快乐的梦鱼 1 неделя назад
Родитель
Сommit
cbb645f0dc

+ 16 - 4
src/api/inhert/VillageApi.ts

@@ -301,12 +301,24 @@ export class VillageApi extends AppServerRequestModule<DataModel> {
     }, undefined, VolunteerInfo);
     return res.data as VolunteerInfo;
   }
-  async getVillageVolunteerList(villageId?: number, status?: number) {
-    const res = await this.post('/village/volunteer/getList', '获取志愿者列表', {
+async getVillageVolunteerList(
+    page: number, pageSize: number, 
+    villageId?: number, status?: number,
+    name?: string,
+  ) {
+    const res = (await this.post<{
+      data: KeyValue[],
+      total: number,
+    }>('/village/volunteer/getList', '获取志愿者列表', {
       village_id: villageId,
       status,
-    });
-    return transformArrayDataModel<VolunteerInfo>(VolunteerInfo, res.data || [], ``, true);
+      page,
+      pageSize,
+    })).requireData();
+    return {
+      list: transformArrayDataModel<VolunteerInfo>(VolunteerInfo, res.data || [], ``, true),
+      total: res.total,
+    };
   }
   async reviewVillageVolunteer(villageId: number, volunteerId: number, status: number) {
     return this.post('/village/village/claimReview', '审核志愿者', {

+ 7 - 16
src/pages/dig/admin/index.vue

@@ -113,24 +113,15 @@ const { querys } = useLoadQuerys({
 
 const searchText = ref('');
 const listLoader = useSimplePageListLoader(8, async (page, pageSize, params) => {
-  if (page === 1) {
-    let res = await VillageApi.getVillageVolunteerList(querys.value.id);
-    if (searchText.value)
-      res = res.filter((p) => p.name.includes(searchText.value));
-    return {
-      page,
-      total: res.length,
-      list: res.map((item) => ({
-        ...item,
-        title: `${item.name} ${item.sex === 0 ? '男' : '女'} 手机号:${item.mobile} 地址:${item.address || ''}`,
-        desc: `可采编:${item.collectModuleText || '暂无'}`,
-      })),
-    }
-  }
+  const res = await VillageApi.getVillageVolunteerList(page, pageSize, querys.value.id, undefined, searchText.value);
   return {
     page,
-    total: 0,
-    list: [],
+    total: res.total,
+    list: res.list.map((item) => ({
+      ...item,
+      title: `${item.name} ${item.sex === 0 ? '男' : '女'} 手机号:${item.mobile} 地址:${item.address || ''}`,
+      desc: `可采编:${item.collectModuleText || '暂无'}`,
+    })),
   }
 });
 

+ 7 - 16
src/pages/dig/admin/review.vue

@@ -95,24 +95,15 @@ const { querys } = useLoadQuerys({
 
 const searchText = ref('');
 const listLoader = useSimplePageListLoader(8, async (page, pageSize, params) => {
-  if (page === 1) {
-    let res = await VillageApi.getVillageVolunteerList(querys.value.villageId, VolunteerInfo.STATUS_PENDING);
-    if (searchText.value)
-      res = res.filter((p) => p.name.includes(searchText.value));
-    res.forEach((item) => {
-      item.title = `${item.name} ${item.sex === 0 ? '男' : '女'}`;
-      item.desc = ` 手机号:${item.mobile} 地址:${item.address || ''} 认领说明:${item.claimReason || ''}`;
-    })
-    return {
-      page,
-      total: res.length,
-      list: res,
-    }
-  }
+  const res = await VillageApi.getVillageVolunteerList(page, pageSize, querys.value.villageId, VolunteerInfo.STATUS_PENDING, searchText.value);
   return {
     page,
-    total: 0,
-    list: [],
+    total: res.total,
+    list: res.list.map((item) => {
+      item.title = `${item.name} ${item.sex === 0 ? '男' : '女'}`;
+      item.desc = ` 手机号:${item.mobile} 地址:${item.address || ''} 认领说明:${item.claimReason || ''}`;
+      return item;
+    }),
   }
 });
 

+ 6 - 4
src/pages/dig/index.vue

@@ -1,9 +1,8 @@
 <template>
   <FlexCol>
-    <Image 
-      mode="aspectFill" 
-      src="https://mn.wenlvti.net/app_static/xiangyuan/images/dig/banner_dig_index_new.jpg"
-      width="100%"
+    <ImageSwiper
+      :height="300"
+      :images="appConfiguration?.banners.find(p => p.name === 'dig')?.images || []"
     />
     <FlexCol :padding="30">
       <SubTitle title="我的村社" />
@@ -119,10 +118,13 @@ import Dialog from '@/components/dialog/Dialog.vue';
 import WxButton from '@/components/basic/WxButton.vue';
 import Touchable from '@/components/feedback/Touchable.vue';
 import Icon from '@/components/basic/Icon.vue';
+import ImageSwiper from '@/common/components/parts/ImageSwiper.vue';
+import { injectAppConfiguration } from '@/api/system/useAppConfiguration';
 
 const showOnlinePreviewDialog = ref(false);
 const authStore = useAuthStore();
 const collectStore = useCollectStore();
+const appConfiguration = injectAppConfiguration();
 
 const notVolunteerError = ref(false);
 const villageListLoader = useSimpleDataLoader(async () => await VillageApi.getClaimedVallageList(), true);