浏览代码

修改问题

快乐的梦鱼 2 月之前
父节点
当前提交
41fb2b05c5

+ 3 - 2
src/api/inhert/VillageApi.ts

@@ -157,8 +157,9 @@ export class VillageCatalogListItem extends DataModel<VillageCatalogListItem> {
   id !: number;
   name = '';
   title = '';
-  pid = 0;
+  icon = '';
   desc = '';
+  pid = 0;
   collectModuleId = 0;
   collectModuleName = '';
   villageName = '';
@@ -264,7 +265,7 @@ export class VillageApi extends AppServerRequestModule<DataModel> {
   async getCatalogList(villageId?: number, pid?: number) {
     return (this.get('/village/village/getCatalogList', '村落目录列表', {
       village_id: villageId,
-      pid: pid,
+      pid: pid === 0 ? undefined : pid,
     })) 
       .then(res => transformArrayDataModel<VillageCatalogListItem>(VillageCatalogListItem, res.data2, `村落目录列表`, true))
       .catch(e => { throw e });

+ 11 - 14
src/pages/dig/details.vue

@@ -63,6 +63,9 @@ import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
 import { computed } from 'vue';
 import { useAuthStore } from '@/store/auth';
 import { useCollectStore } from '@/store/collect';
+import { TaskRootDef, type TaskRootMenuDefItem } from './forms/tasks';
+import { useTaskEntryForm } from './forms/composeable/TaskEntryForm';
+import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
 import { navTo } from '@/components/utils/PageAction';
 import Icon from '@/components/basic/Icon.vue';
 import Text from '@/components/basic/Text.vue';
@@ -75,9 +78,6 @@ import TaskList from './components/TaskList.vue';
 import XBarSpace from '@/components/layout/space/XBarSpace.vue';
 import Width from '@/components/layout/space/Width.vue';
 import Alert from '@/components/feedback/Alert.vue';
-import { TaskRootDef, type TaskRootMenuDefItem } from './forms/tasks';
-import { useTaskEntryForm } from './forms/composeable/TaskEntryForm';
-import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
 import VillageApi, { VillageCatalogListItem } from '@/api/inhert/VillageApi';
 
 const { querys } = useLoadQuerys({ 
@@ -101,21 +101,18 @@ const taskList = useSimpleDataLoader<(TaskRootMenuDefItem & {
 })[]>(async () => {
   const res = (await VillageApi.getCatalogList(querys.value.villageId))
     .filter(item => item.pid == 0);
-
   if (res.length === 0)
     return TaskRootDef;
-
-  return TaskRootDef
-    .map(item => ({
-      ...item,
-      catalogItem: res.find(t => t.title == item.title)
-    }))
-    .filter(item => item.catalogItem)
+  return res
     .map(item => ({
       ...item,
-      title: item.catalogItem?.title || item.title,
-      desc: item.catalogItem?.desc || item.desc,
-    }));
+      enable: true,
+      catalogItem: item,
+      goForm: { 
+        title: item.title, 
+        name: 'force' 
+      },
+    } as TaskRootMenuDefItem));
 });
 
 function goCollect() {

+ 19 - 1
src/pages/dig/forms/forms.ts

@@ -121,5 +121,23 @@ export function getVillageInfoForm(subType: string, subId: number) {
   const group = villageInfoForm[subType];
   if (!group)
     throw new Error('subType ' + subType + ' not found');
+  if (subId === -1) 
+    return mergeFormItems(group);
   return group[subId];
-}
+}
+
+function mergeFormItems(set: Record<number, SingleForm>) {
+  const keys = Object.keys(set);
+  const result : SingleForm =  [set[keys[0] as any][0], (formRef: Ref<IDynamicFormRef>) => {
+    const options : IDynamicFormOptions = {
+      formItems: [],
+    };
+    for (const key in set) {
+      const op = set[key][1](formRef);
+      options.formItems.push(...op.formItems);
+    }
+    return options;
+  }]
+
+  return result;
+}

+ 7 - 1
src/pages/dig/forms/list.vue

@@ -86,8 +86,14 @@ const listLoader = useSimplePageListLoader<{
   subId: number,
   subKey: string,
 }>(8, async (page, pageSize, params) => {
-  if (!params || !params.subType || !params.villageId || !params.villageVolunteerId)
+  if (!params )
     throw new Error("未传入参数,当前页面需要参数");
+  if (!params.subType)
+    throw new Error("params.subType");
+  if (!params.villageId)
+    throw new Error("params.villageId");
+  if (!params.villageVolunteerId)
+    throw new Error("params.villageId");
   let res = (page == 1 ? await VillageInfoApi.getList(
     collectStore.getCollectModuleId(params.subType),
     params.subType,

+ 16 - 13
src/pages/dig/forms/task.vue

@@ -14,7 +14,7 @@
         :icon="item.icon"
         :title="item.title"
         :desc="item.desc"
-        :enable="!item.enable || canCollect(item.enable)"
+        :enable="typeof item.enable === 'string' ? canCollect(item.enable) : item.enable"
         @click="goForm(...item.goForm)"
       />
     </FlexCol>
@@ -33,7 +33,7 @@ import TaskList from '../components/TaskList.vue';
 import VillageApi from '@/api/inhert/VillageApi';
 
 const { goForm } = useTaskEntryForm();
-const { canCollect } = useCollectStore();
+const { canCollect, getCollectModuleInternalNameById } = useCollectStore();
 
 useLoadQuerys({ 
   villageId: 0,
@@ -45,17 +45,20 @@ useLoadQuerys({
     const res = (await VillageApi.getCatalogList(villageId, taskPid));
     if (res.length === 0)
       return;
-    currentTaskDefItem.value.list = currentTaskDefItem.value.list
-      .map(item => ({
-        ...item,
-        catalogItem: res.find(t => t.name == item.title),
-      }))
-      .filter(item => item.catalogItem)
-      .map(item => ({
-        ...item,
-        title: item.catalogItem?.title || item.title,
-        desc: item.catalogItem?.desc || item.desc,
-      }));
+    currentTaskDefItem.value.list = res
+      .map(item => {
+        const collectModuleInternalName = getCollectModuleInternalNameById(item.collectModuleId);
+        console.log(collectModuleInternalName);
+        
+        return {
+          ...item,
+          enable: true,
+          catalogItem: item,
+          goForm: [ collectModuleInternalName, -1, undefined, 
+            collectModuleInternalName === 'overview' ? 'common' : undefined
+          , item.title ]
+        }
+      });
   }
 });
 const currentTaskDefItem = ref<TaskMenuDefItem|null>(null);

+ 1 - 1
src/pages/dig/forms/tasks.ts

@@ -4,7 +4,7 @@ export type TaskMenuDefItem = {
     title: string;
     desc: string;
     icon: string;
-    enable: string;
+    enable: string|boolean;
     goForm: TaskMenuDefGoForm;
   }[];
 }

+ 7 - 2
src/store/collect.ts

@@ -46,8 +46,13 @@ export const useCollectStore = defineStore('collect', () => {
   }
   function getCollectModuleInternalNameById(id: number) {
     for (const [key, value] of collectableModules.value) {
-      if (value == id)
-        return key;
+      if (value == id) {
+        for (const k2 in CollectableModulesNameMapping) {
+          if (CollectableModulesNameMapping[k2] == key) {
+            return k2;
+          }
+        }
+      }
     }
     return '';
   }