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

💊 优化采集ID与表单匹配逻辑

快乐的梦鱼 недель назад: 2
Родитель
Сommit
c51ce2f624

+ 0 - 3
src/api/inhert/VillageInfoApi.ts

@@ -219,7 +219,6 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
 
   async getInfo<T extends DataModel>(
     collectModuleId: number|undefined,
-    subType: string,
     subId: number|undefined,
     subKey: string|undefined,
     villageId: number,
@@ -240,7 +239,6 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
   }
   async getList<T extends DataModel = CommonInfoModel>(
     collectModuleId: number|undefined,
-    subType: string,
     subId: number|undefined,
     subKey: string|undefined,
     villageId: number,
@@ -298,7 +296,6 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
   }
   async updateInfo<T extends DataModel>(
     collectModuleId: number|undefined,
-    subType: string,
     subKey: string,
     subId: number,
     villageId: number,

+ 4 - 8
src/pages/dig/admin/preview.vue

@@ -24,7 +24,7 @@
         ]"
       />
       <FlexCol :margin="[20, 0, 0, 0]">
-        <Parse :content="overviewLoader.content.value.overview" />
+        <Parse :content="(overviewLoader.content.value.overview as string)" />
         <Text v-if="!overviewLoader.content.value.overview" fontConfig="subText">暂无采编简内容</Text>
       </FlexCol>
     </FlexCol>
@@ -64,7 +64,6 @@
 import { computed, ref } from 'vue';
 import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
 import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
-import { useCollectStore } from '@/store/collect';
 import FlexCol from '@/components/layout/FlexCol.vue';
 import CollectModuleList from '../components/CollectModuleList.vue';
 import XBarSpace from '@/components/layout/space/XBarSpace.vue';
@@ -75,6 +74,7 @@ import IntroBlock from '@/pages/article/common/IntroBlock.vue';
 import Parse from '@/components/display/parse/Parse.vue';
 import Text from '@/components/basic/Text.vue';
 import ImagesUrls from '@/common/config/ImagesUrls';
+import { CollectableModulesIdMap } from '../forms/forms.js';
 
 const { querys } = useLoadQuerys({ 
   villageId: 0,  
@@ -82,8 +82,6 @@ const { querys } = useLoadQuerys({
   villageVolunteerId: 0,
 });
 
-const { getCollectModuleId } = useCollectStore();
-
 const center = ref([118.15723, 24.48147]);
 const markers = ref<any>([]);
   
@@ -97,17 +95,15 @@ const imageList = computed(() => {
   return ["https://mn.wenlvti.net/app_static/xiangan/banner_dig_1.jpg" ];
 });
 const overviewLoader = useSimpleDataLoader<CommonInfoModel>(async () => {
-  const subType = 'overview';
-  const collectModuleId = getCollectModuleId('overview');
+  const collectModuleId = CollectableModulesIdMap['overview'];
   const list = await VillageInfoApi.getList(
-    collectModuleId, subType, undefined, undefined,
+    collectModuleId, undefined, undefined,
     querys.value.villageId, querys.value.villageVolunteerId
   );
 
   if (list.length > 0) {
     const info =  (await VillageInfoApi.getInfo(
       collectModuleId,
-      subType,
       undefined,
       undefined,
       querys.value.villageId,

+ 12 - 12
src/pages/dig/components/CollectModuleList.vue

@@ -16,7 +16,7 @@
         :desc="item.desc"
         :extra="item.extra"
         :goButtonText="isView ? '查看' : '去采集'"
-        :enable="typeof item.enable === 'string' ? canCollect(item.enable) : item.enable"
+        :enable="item.enable"
         @click="handleClick(item)"
       />
     </FlexCol>
@@ -29,7 +29,7 @@ import { useCollectStore } from '@/store/collect';
 import { useTaskEntryForm } from '../forms/composeable/TaskEntryForm';
 import { type TaskMenuDefGoForm, type TaskMenuDefItem } from '../forms/tasks';
 import { alert } from '@/components/utils/DialogAction';
-import { getVillageInfoForm } from '../forms/forms';
+import { CollectableModulesIdMap, getVillageInfoForm } from '../forms/forms';
 import { navTo } from '@/components/utils/PageAction';
 import FlexCol from '@/components/layout/FlexCol.vue';
 import Image from '@/components/basic/Image.vue';
@@ -38,9 +38,9 @@ import VillageApi from '@/api/inhert/VillageApi';
 import { useAuthStore } from '@/store/auth';
 import { waitTimeOut } from '@imengyu/imengyu-utils';
 
-const { goForm, goPreviewForm } = useTaskEntryForm();
 const authStore = useAuthStore();
-const { canCollect, canCollectCatalog, getCollectModuleInternalNameById, collectableCatalogs } = useCollectStore();
+const { goForm, goPreviewForm } = useTaskEntryForm();
+const { canCollect, canCollectCatalog } = useCollectStore();
 
 const props = withDefaults(defineProps<{
   villageId: number,
@@ -65,18 +65,18 @@ async function loadList() {
   currentTaskDefItems.value = res
     .map(item => {
       try {
-        const collectModuleInternalName = getCollectModuleInternalNameById(item.collectModuleId);
-        const formDefine = collectModuleInternalName ? getVillageInfoForm(collectModuleInternalName, -1) : undefined;
+        const formDefine = item.collectModuleId ? getVillageInfoForm(item.collectModuleId, -1) : undefined;
         return {
           ...item,
           extra: authStore.isAdmin && item.total >= 0 ? `已采编 ${item.total}` : '',
-          enable: canCollectCatalog(item.id) || collectModuleInternalName,
+          enable: canCollectCatalog(item.id) || item.haschild,
           catalogItem: item,
-          goForm: !item.haschild && collectModuleInternalName ? [ 
-            collectModuleInternalName, 
+          collectModuleId: item.collectModuleId,
+          goForm: !item.haschild ? [ 
+            item.collectModuleId, 
             item.typeId ?? -1, 
             formDefine?.[2].typeName, 
-            collectModuleInternalName === 'overview' ? 'common' : undefined,
+            item.collectModuleId === CollectableModulesIdMap['overview'] ? 'common' : undefined,
             item.title,
             item.id
           ] as TaskMenuDefGoForm : undefined,
@@ -91,7 +91,7 @@ async function loadList() {
             } else {
               alert({
                 title: item.title,
-                content: '您暂无权限采集该板块',
+                content: `未找到表单定义:collectModuleId: ${item.collectModuleId}`,
               })
             }
           }
@@ -109,7 +109,7 @@ async function loadList() {
 watch(() => props.taskPid, loadList);
 onMounted(loadList);
 
-const currentTaskDefItems = ref<TaskMenuDefItem[]>([]);
+const currentTaskDefItems = ref<(TaskMenuDefItem & { collectModuleId: number })[]>([]);
 const currentTaskBanner = ref('');
 const handleClick = (item: TaskMenuDefItem) => {
   

+ 2 - 1
src/pages/dig/details.vue

@@ -70,6 +70,7 @@ import CollectModuleList from './components/CollectModuleList.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 { CollectableModulesIdMap } from './forms/forms';
 
 const { querys } = useLoadQuerys({ 
   name: '',
@@ -92,6 +93,6 @@ function goCollect() {
     });
     return;
   } */
-  goForm('collect', 1, '随手记')
+  goForm(CollectableModulesIdMap['collect'], 1, '随手记')
 }
 </script>

+ 7 - 9
src/pages/dig/forms/common.vue

@@ -31,7 +31,7 @@
 import { nextTick, ref, watch, type Ref } from 'vue';
 import { useCollectStore } from '@/store/collect';
 import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
-import { getVillageInfoForm, getVillageInfoFormIds, type SingleForm } from './forms';
+import { CollectableModulesIdMap, getVillageInfoForm, getVillageInfoFormIds, type SingleForm } from './forms';
 import { showError } from '@/common/composeabe/ErrorDisplay';
 import { backAndCallOnPageBack } from '@/components/utils/PageAction';
 import { toast } from '@/components/utils/DialogAction';
@@ -74,7 +74,7 @@ const { querys } = useLoadQuerys({
   villageId: 0,  
   villageVolunteerId: 0,
   catalogId: 0,
-  subType: '',
+  collectModuleId: 0,
   subId: 0,
   subKey: '',
   subTitle: '',
@@ -93,7 +93,7 @@ const { querys } = useLoadQuerys({
   await waitTimeOut(800);
 
   try {
-    currentFormInfo = getVillageInfoForm(querys.subType, querys.subId);
+    currentFormInfo = getVillageInfoForm(querys.collectModuleId, querys.subId);
     const [model, forms] = currentFormInfo;
     formModel.value = new model() as any;
     formDefine.value = {
@@ -104,7 +104,7 @@ const { querys } = useLoadQuerys({
     };
     let findId = querys.id;
     if (findId <= 0) {
-      if (querys.subType === 'overview') {
+      if (querys.collectModuleId === CollectableModulesIdMap['overview']) {
         const info = await VillageInfoApi.getInfoByVillageId(querys.villageId);
         console.log(info);
         findId = (info.myOverviewId || info.overviewId) as number;
@@ -112,8 +112,7 @@ const { querys } = useLoadQuerys({
     }
     if (findId > 0) {
       formData = await VillageInfoApi.getInfo(
-        collectStore.getCollectModuleId(querys.subType),
-        querys.subType, 
+        querys.collectModuleId,
         querys.subId,
         querys.subKey,
         querys.villageId, 
@@ -181,8 +180,7 @@ async function submit() {
     // 提交表单数据
     await waitTimeOut(800);
     await VillageInfoApi.updateInfo(
-      collectStore.getCollectModuleId(querys.value.subType),
-      querys.value.subType,
+      querys.value.collectModuleId,
       querys.value.subKey,
       querys.value.subId,
       querys.value.villageId,
@@ -240,7 +238,7 @@ const saveLocalSaveDebounce = new Debounce(1000, saveLocalSave);
 let canSaveNow = false;
 
 function getSaveName() {
-  return `FormLocalSave-${querys.value.id}-${querys.value.subType}-${querys.value.subId}-${querys.value.villageId}-${querys.value.villageVolunteerId}`;
+  return `FormLocalSave-${querys.value.id}-${querys.value.collectModuleId}-${querys.value.subId}-${querys.value.villageId}-${querys.value.villageVolunteerId}`;
 }
 async function loadLocalSave(formData: CommonInfoModel|undefined) {
   if (!currentFormInfo)

+ 6 - 6
src/pages/dig/forms/composeable/TaskEntryForm.ts

@@ -7,25 +7,25 @@ export function useTaskEntryForm() {
     villageVolunteerId: 0,
   });
   
-  function goForm(subType: string, subId: number, subKey = 'type', type = 'list', subTitle = '', catalogId : number|undefined = undefined) {
+  function goForm(collectModuleId: number, subId: number, subKey = 'type', type = 'list', subTitle = '', catalogId : number|undefined = undefined) {
     navTo('/pages/dig/forms/' + type, {
       id: type === 'common' ? -1 : undefined,
       villageId: querys.value.villageId,  
       villageVolunteerId: querys.value.villageVolunteerId,  
       catalogId,
-      subType,
+      collectModuleId,
       subId,
       subKey,
       subTitle,
     })
   }
-  function goPreviewForm(subType: string, subId: number, subKey = 'type', type = 'list', subTitle = '', catalogId : number|undefined = undefined) {
+  function goPreviewForm(collectModuleId: number, subId: number, subKey = 'type', type = 'list', subTitle = '', catalogId : number|undefined = undefined) {
     navTo('/pages/dig/forms/' + type, {
       id: type === 'common' ? -1 : undefined,
       villageId: querys.value.villageId,  
       villageVolunteerId: querys.value.villageVolunteerId,  
       catalogId,
-      subType,
+      collectModuleId,
       subId,
       subKey,
       subTitle,
@@ -39,13 +39,13 @@ export function useTaskEntryForm() {
   }
 }
 
-export function goFormStatic(villageId: number, villageVolunteerId: number, subType: string, subId: number, subKey = 'type', type = 'list', subTitle = '', catalogId : number|undefined = undefined) {
+export function goFormStatic(villageId: number, villageVolunteerId: number, collectModuleId: number, subId: number, subKey = 'type', type = 'list', subTitle = '', catalogId : number|undefined = undefined) {
   navTo('/pages/dig/forms/' + type, {
     id: type === 'common' ? -1 : undefined,
     villageId,  
     villageVolunteerId,  
     catalogId,
-    subType,
+    collectModuleId,
     subId,
     subKey,
     subTitle,

+ 7 - 7
src/pages/dig/forms/data/cultural.ts

@@ -1,5 +1,5 @@
 import VillageInfoApi, { CommonInfoModel, VillageBulidingInfo } from "@/api/inhert/VillageInfoApi";
-import type { GroupForm, SingleForm } from "../forms";
+import { CollectableModulesIdMap, type GroupForm, type SingleForm } from "../forms";
 import type { IDynamicFormItemCallback, IDynamicFormItemCallbackAdditionalProps } from "@/components/dynamic";
 import type { PickerIdFieldProps } from "@/components/dynamic/wrappers/PickerIdField";
 import type { FieldProps } from "@/components/form/Field.vue";
@@ -37,8 +37,8 @@ export function villageInfoFolkCultureForm(title: string) : SingleForm {
             callback: (m, r, p, i) => async () => {
               const collectStore = useCollectStore();
               return (await VillageInfoApi.getList(
-                collectStore.getCollectModuleId('ich'),
-                'ich', undefined, undefined,
+                CollectableModulesIdMap['ich'],
+                undefined, undefined,
                 i.formGlobalParams.villageId,
                 i.formGlobalParams.villageVolunteerId
               )).map((p) => ({
@@ -111,8 +111,8 @@ export const villageInfoCulture : GroupForm = {
               callback(_, m, p, i) { 
                 const collectStore = useCollectStore();
                 return async () => (await VillageInfoApi.getList(
-                  collectStore.getCollectModuleId('speaker'),
-                  'speaker', undefined, undefined,
+                  CollectableModulesIdMap['speaker'],
+                  undefined, undefined,
                   i.formGlobalParams.villageId,
                   i.formGlobalParams.villageVolunteerId
                 ))
@@ -139,7 +139,7 @@ export const villageInfoCulture : GroupForm = {
             onClick: { callback(v, m, p, i) {
               return () => {
                 const collectStore = useCollectStore();
-                if (!collectStore.getCollectModuleId('speaker')) {
+                if (!collectStore.canCollect(CollectableModulesIdMap['speaker'])) {
                   uni.showToast({
                     title: '您暂无权限采编口述人,请联系管理员。',
                     icon: 'none',
@@ -150,7 +150,7 @@ export const villageInfoCulture : GroupForm = {
                 goFormStatic(
                   i.formGlobalParams.villageId,
                   i.formGlobalParams.villageVolunteerId,
-                  'speaker',
+                  CollectableModulesIdMap['speaker'],
                   1,
                   undefined,
                   undefined,

+ 79 - 43
src/pages/dig/forms/forms.ts

@@ -25,67 +25,71 @@ export type SingleForm = [NewDataModel, (formRef: Ref<IDynamicFormRef>) => IDyna
   order?: number,
   id?: number,
 }]
-export type GroupForm = Record<number, SingleForm>
+export type GroupForm = Record<number, SingleForm>;
 
-export const CollectableModulesNameMapping : Record<string, string> = {
-  'overview': '村落概况',
-  'distribution': '建筑分布',
-  'building': '传统建筑',
-  'folk_culture': '民俗文化',
-  'food_product': '美食物产',
-  'route': '旅游路线',
-  'travel_guide': '旅游导览',
-  'element': '环境要素',
-  'environment': '环境格局',
-  'relic': '文物古迹',
-  'cultural': '历史文化',
-  'figure': '历史人物',
-  'ich': '非遗',
-  'story': '掌故轶事',
-  'spots': '风景名胜',
-  'speaker': '口述者',
-  'collect': '随手记',
-}
+export const CollectableModulesIdMap : Record<string, number> = {
+  'overview': 11,
+  'cultural': 2,
+  'story': 14,
+  'spots': 13,
+  'speaker': 17,
+  'figure': 7,
+  'element': 5,
+  'environment': 6,
+  'building': 16,
+  'distribution': 4,
+  'relic': 3,
+  'folk_culture': 8,
+  'food_product': 9,
+  'route': 12,
+  'travel_guide': 15,
+  'ich': 10,
+  'collect': 18,
+  'glory': 23,
+};
 
-const villageInfoForm : Record<string, GroupForm> = {
-  'overview': villageInfoOverviewForm,
-  'cultural': villageInfoCulture,
-  'story': {
+/**
+ * 采集模块ID到表单定义的映射
+ */
+const villageInfoForm : Record<number, GroupForm> = {
+  11: villageInfoOverviewForm,//村落概况
+  2: villageInfoCulture,//历史文化
+  14: {//掌故轶事
     [0]: villageInfoStoryFormItems
   },
-  'spots': {
+  13: {//风景名胜
     [0]: villageInfoSpotsFormItems,
   },
-  'speaker': {
+  17: {//口述者
     [1]: villageInfoSpeakerForm,
   },
-  'figure': {
+  7: {//历史人物
     [0]: villageInfoFigureFormItems,
   },
-  'element': {
+  5: {//环境要素
     [0]: vilElementForm,
   },
-  'environment': {
+  6: {//环境格局
     [0]: villageInfoEnvironmentForm
   },
-  'building': {
+  16: {//传统建筑
     [1]: villageInfoBuildingForm('文物建筑'),
     [2]: villageInfoBuildingForm('历史建筑'),
     [3]: villageInfoBuildingForm('重要传统建筑'),
   },
-  'distribution': { [0]: villageInfoDistributionForm },
-  'relic': { [0]: villageInfoRelicForm },
-  'folk_culture': {
+  4: { [0]: villageInfoDistributionForm },//建筑分布
+  3: { [0]: villageInfoRelicForm },//文物古迹
+  8: {//民俗文化
     [1]: villageInfoFolkCultureForm('节庆活动'),
     [2]: villageInfoFolkCultureForm('祭祀崇礼'),
     [3]: villageInfoFolkCultureForm('婚丧嫁娶'),
     [4]: villageInfoFolkCultureForm('地方方言'),
     [5]: villageInfoFolkCultureForm('特色文化'),
   },
-  'ich': { [0]: ichFormItems },
-  'travel_guide': { [0]: villageInfoTravelGuideForm },
-  'route': { [0]: villageInfoRouteForm },
-  'food_product': {
+  10: { [0]: ichFormItems },//非遗
+  15: { [0]: villageInfoTravelGuideForm },//旅游导览
+  12: { [0]: villageInfoRouteForm },//旅游路线
+  9: {//美食物产
     [1]: villageInfoFoodProductsForm('农副产品'),
     [2]: villageInfoFoodProductsForm('食品产品'),
     [3]: villageInfoFoodProductsForm('特色美食'),
@@ -93,7 +97,7 @@ const villageInfoForm : Record<string, GroupForm> = {
     [5]: villageInfoFoodProductsForm('服装服饰'),
     [6]: villageInfoFoodProductsForm('运输工具'),
   },
-  'collect': {
+  18: {//18
     [1]: [CommonInfoModel, (r) => ({
       formItems: [
         {
@@ -128,18 +132,50 @@ const villageInfoForm : Record<string, GroupForm> = {
       ]
     }), { title: '随手记', typeName: '', }]
   },
+  23: {//乡源荣光
+    [1]: [CommonInfoModel, (r) => ({
+      formItems: [
+        {
+          label: '标题',
+          name: 'name',
+          type: 'text',
+          defaultValue: '',
+          additionalProps: {
+            placeholder: '请输入标题',
+          } as FieldProps,
+          rules: [{
+            required: true,
+            message: '请输入标题',
+          }]
+        },
+        {
+          label: '描述',
+          name: 'desc',
+          type: 'textarea',
+          defaultValue: '',
+          additionalProps: {
+            placeholder: '请输入描述',
+          } as FieldProps,
+        },
+        ...villageCommonContent(r, {
+          title: '记录',
+          showTitle: false,
+        }).formItems
+      ]
+    }), { title: '乡源荣光', typeName: '', }]
+  },
 }
 
-export function getVillageInfoForm(subType: string, subId: number) {
-  const group = villageInfoForm[subType];
+export function getVillageInfoForm(collectModuleId: number, subId: number) {
+  const group = villageInfoForm[collectModuleId];
   if (!group)
-    throw new Error('未定义的表单类型: ' + subType);
+    throw new Error('未定义的表单类型: ' + collectModuleId);
   if (subId === -1) 
     return mergeFormItems(group);
   return group[subId];
 }
-export function getVillageInfoFormIds(subType: string) {
-  return Object.keys(villageInfoForm[subType]).map((k) => Number(k));
+export function getVillageInfoFormIds(collectModuleId: number) {
+  return Object.keys(villageInfoForm[collectModuleId]).map((k) => Number(k));
 }
 
 export function mergeFormItems(group: GroupForm) {

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

@@ -88,21 +88,20 @@ const listLoader = useSimplePageListLoader<{
 }, {
   villageId: number,  
   villageVolunteerId: number,
-  subType: string,
+  collectModuleId: number,
   subId: number,
   subKey: string,
 }>(8, async (page, pageSize, params) => {
   if (!params )
     throw new Error("未传入参数,当前页面需要参数");
-  if (!params.subType)
-    throw new Error("params.subType");
+  if (!params.collectModuleId)
+    throw new Error("params.collectModuleId");
   if (!params.villageId)
     throw new Error("params.villageId");
   if (!params.villageVolunteerId)
     throw new Error("params.villageId");
   let res = await VillageInfoApi.getList(
-    collectStore.getCollectModuleId(params.subType),
-    params.subType,
+    params.collectModuleId,
     params.subKey ? params.subId : undefined,
     params.subKey,
     params.villageId,
@@ -139,7 +138,7 @@ function newData() {
     villageId: querys.value.villageId,  
     villageVolunteerId: querys.value.villageVolunteerId,  
     catalogId: querys.value.catalogId,
-    subType: querys.value.subType,  
+    collectModuleId: querys.value.collectModuleId,  
     subId: querys.value.subId,  
   });
 }
@@ -149,7 +148,7 @@ function goDetail(id: number) {
     villageId: querys.value.villageId,
     villageVolunteerId: querys.value.villageVolunteerId,
     catalogId: querys.value.catalogId,
-    subType: querys.value.subType,
+    collectModuleId: querys.value.collectModuleId,
     subKey: querys.value.subKey,
     subId: querys.value.subId,
     subTitle: querys.value.subTitle,
@@ -164,7 +163,7 @@ const { querys } = useLoadQuerys({
   villageId: 0,  
   villageVolunteerId: 0,
   catalogId: 0,
-  subType: '',
+  collectModuleId: 0,
   subKey: '',
   subId: 0,
   subTitle: '',

+ 1 - 4
src/pages/dig/forms/submits.vue

@@ -95,7 +95,6 @@ import { DataDateUtils } from '@imengyu/js-request-transform';
 import { useSimplePageListLoader } from '@/common/composeabe/SimplePageListLoader';
 import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
 import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
-import { useCollectStore } from '@/store/collect';
 import { selectObjectByType } from '@/components/theme/ThemeTools';
 import { navTo } from '@/components/utils/PageAction';
 import SimplePageListLoader from '@/common/components/SimplePageListLoader.vue';
@@ -118,7 +117,6 @@ import VillageApi from '@/api/inhert/VillageApi';
 import { waitTimeOut } from '@imengyu/imengyu-utils';
 
 const searchText = ref('');
-const collectStore = useCollectStore();
 const filterStatus = ref(-100);
 const filterVillage = ref(0);
 
@@ -135,7 +133,6 @@ const listLoader = useSimplePageListLoader<CommonInfoModel>(8, async (page, page
   await waitTimeOut(300);
   let res = await VillageInfoApi.getList(
     undefined,
-    '',
     undefined,
     undefined,
     filterVillage.value,
@@ -158,7 +155,7 @@ function goDetail(item: CommonInfoModel) {
     villageId: querys.value.villageId,
     villageVolunteerId: querys.value.villageVolunteerId,
     catalogId: item.catalogId,
-    subType:  collectStore.getCollectModuleInternalNameById(item.collectModuleId),
+    collectModuleId: item.collectModuleId,
     subKey: '',
     subId: -1,
     subTitle: item.catalogName || item.collectModuleName || '',

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

@@ -2,12 +2,12 @@ export type TaskMenuDefGroup = {
   banner: string;
   list: TaskMenuDefItem[];
 }
-export type TaskMenuDefGoForm = [string, number, string|undefined, string|undefined, string|undefined, number|undefined];
+export type TaskMenuDefGoForm = [number, number, string|undefined, string|undefined, string|undefined, number|undefined];
 export type TaskMenuDefItem = {
   title: string;
   desc: string;
   icon: string;
-  enable: string|boolean;
+  enable: boolean;
   name?: string;
   extra?: string;
   goForm?: {

+ 9 - 35
src/store/collect.ts

@@ -1,22 +1,21 @@
 import { computed, ref } from 'vue'
 import { defineStore } from 'pinia'
 import { useAuthStore } from './auth';
-import { CollectableModulesNameMapping } from '@/pages/dig/forms/forms';
 import VillageApi from '@/api/inhert/VillageApi';
 
 /** 
  * 采集模块状态 
  */
 export const useCollectStore = defineStore('collect', () => {
-  const collectableModules = ref(new Map<string, number>());
-  const collectableAllModules = ref(new Map<string, number>());
+  const collectableModules = ref(new Set<number>());
+  const collectableAllModules = ref(new Map<number, string>());
   const collectableCatalogs = ref<number[]>([]);
   const authStore = useAuthStore();
 
   /**
    * 设置采集模块状态数据
    */
-  function setCollectableModules(modules: Map<string, number>) {
+  function setCollectableModules(modules: Set<number>) {
     collectableModules.value = modules;
   }
   /**
@@ -30,35 +29,12 @@ export const useCollectStore = defineStore('collect', () => {
   /**
    * 判断是否可以采集指定模块
    */
-  function canCollect(module: string) {
+  function canCollect(collectModuleId: number) {
     if (authStore.isAdmin)
       return true;
-    if (collectableModules.value.has(CollectableModulesNameMapping[module]))
+    if (collectableModules.value.has(collectModuleId))
       return true;
-    return collectableModules.value.has(module);
-  }
-  /**
-   * 获取采集模块的内部名称
-   */
-  function getCollectModuleId(module: string) {
-    if (collectableAllModules.value.has(CollectableModulesNameMapping[module]))
-      return collectableAllModules.value.get(CollectableModulesNameMapping[module]);
-    return collectableAllModules.value.get(module);
-  }
-  /**
-   * 从ID获取采集模块的内部名称
-   */
-  function getCollectModuleInternalNameById(id: number) {
-    for (const [key, value] of collectableAllModules.value) {
-      if (value == id) {
-        for (const k2 in CollectableModulesNameMapping) {
-          if (CollectableModulesNameMapping[k2] == key) {
-            return k2;
-          }
-        }
-      }
-    }
-    return '';
+    return collectableModules.value.has(collectModuleId);
   }
 
   async function loadCollectableModules() {
@@ -66,7 +42,7 @@ export const useCollectStore = defineStore('collect', () => {
     const collectableModules = res.collectModule || [];
     const collectableModulesMap = await VillageApi.getCollectModuleMap();
     for (const [k,v] of collectableModulesMap)
-      collectableAllModules.value.set(k, v);
+      collectableAllModules.value.set(v, k);
     const needRemoveKeys = new Set<string>();
     if (!authStore.isAdmin) {
       for (const [key,id] of collectableModulesMap)
@@ -76,8 +52,8 @@ export const useCollectStore = defineStore('collect', () => {
     for (const key of needRemoveKeys)
       collectableModulesMap.delete(key);
     collectableCatalogs.value = res.catalogIds || [];
-    console.log('collectableModulesMap', collectableModules, collectableModulesMap);
-    setCollectableModules(collectableModulesMap);
+    console.log('CollectableModulesMap', collectableModules, collectableModulesMap);
+    setCollectableModules(new Set(collectableModules));
   }
   
   /**
@@ -90,8 +66,6 @@ export const useCollectStore = defineStore('collect', () => {
     collectableModules,
     collectableCatalogs,
     setCollectableModules,
-    getCollectModuleInternalNameById,
-    getCollectModuleId,
     canCollect,
     canCollectCatalog,
     loadCollectableModules,