Pārlūkot izejas kodu

修改和优化

快乐的梦鱼 2 mēneši atpakaļ
vecāks
revīzija
32d9d56d33

+ 0 - 1
src/api/inhert/VillageApi.ts

@@ -100,7 +100,6 @@ export class VolunteerInfo extends DataModel<VolunteerInfo> {
   address = '';
   image = '';
   birthday = new Date();
-  intro = '';
   points = 0;
   level = 0;
   status = '';

+ 31 - 61
src/api/inhert/VillageInfoApi.ts

@@ -29,6 +29,16 @@ export class CommonInfoModel extends DataModel<CommonInfoModel> {
     this._convertTable = {
       id: { clientSide: 'number', serverSide: 'number', clientSideRequired: true },
       keywords: { clientSide: 'splitCommaArray', serverSide: 'commaArrayMerge' },
+      culturalType: { clientSide: 'number', serverSide: 'number' },
+      productType: { clientSide: 'number', serverSide: 'number' },
+      type: { clientSide: 'number', serverSide: 'number' },
+      nature: { clientSide: 'number', serverSide: 'number' },
+      folkCultureType: { clientSide: 'number', serverSide: 'number' },
+      landforms: [
+        { clientSide: 'splitCommaArray', serverSide: 'commaArrayMerge' },
+        { clientSide: 'arrayInt', serverSide: 'original' },
+      ],
+      villageType: { clientSide: 'number', serverSide: 'number' },
     },
     this._blackList.toServer.push(
       'updatedAt', 'createdAt', 'deletedAt',
@@ -47,6 +57,9 @@ export class CommonInfoModel extends DataModel<CommonInfoModel> {
       }
       if (!this.title && this.name)
         this.title = this.name;
+      if (this.longitude && this.latitude) {
+        this.lonlat = [this.longitude as number, this.latitude as number];
+      }
     };
     this._afterSolveClient = (data) => {
       if (this.cityAddress) {
@@ -54,6 +67,10 @@ export class CommonInfoModel extends DataModel<CommonInfoModel> {
         data.city = this.cityAddress[1];
         data.district = this.cityAddress[2];
       }
+      if (this.lonlat) {
+        data.longitude = this.lonlat[0];
+        data.latitude = this.lonlat[1];
+      }
     };
   }
   id !: number;
@@ -78,39 +95,10 @@ export class CommonInfoModel extends DataModel<CommonInfoModel> {
   createdAt = new Date();
   updatedAt = new Date();
   publishAt = new Date();
-}
-
-export class VillageEnvInfo extends DataModel<VillageEnvInfo> {
-  constructor() {
-    super(VillageEnvInfo, "地理信息");
-    this.setNameMapperCase('Camel', 'Snake');
-    this._convertTable = {
-      id: { clientSide: 'number', serverSide: 'number', clientSideRequired: true },
-      landforms: [
-        { clientSide: 'splitCommaArray', serverSide: 'commaArrayMerge' },
-        { clientSide: 'arrayInt', serverSide: 'original' },
-      ],
-      villageType: { clientSide: 'number', serverSide: 'number' },
-    },
-    this._blackList.toServer.push(
-      'updatedAt', 'createdAt', 'deletedAt',
-    );
-    this._afterSolveServer = () => {
-      if (this.longitude && this.latitude) {
-        this.lonlat = [this.longitude as number, this.latitude as number];
-      }
-    };
-    this._afterSolveClient = (data) => {
-      if (this.lonlat) {
-        data.longitude = this.lonlat[0];
-        data.latitude = this.lonlat[1];
-      }
-    };
-  }
-  id !: number;
   lonlat?: number[];
   landforms = [] as string[];
 }
+
 export class VillageListItem extends DataModel<VillageListItem> {
   constructor() {
     super(VillageListItem, "村社信息");
@@ -211,19 +199,10 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
     id?: number, 
     modelClassCreator: (new () => T) = CommonInfoModel as any
   ) {
-    if (subType === 'overview') {
-      return (await this.post(`/village/${subType}/getInfo`, {
-        type: subId,
-        village_id: villageId,
-        village_volunteer_id: villageVolunteerId,
-        id,
-      }, '获取村落概况', undefined, modelClassCreator)).data as T
-    } else {
-      return (await this.post(`/village/collect/info`, {
-        collect_module_id: collectModuleId,
-        id,
-      }, '通用获取信息详情', undefined, modelClassCreator)).data as T
-    }
+    return (await this.post(`/village/collect/info`, {
+      collect_module_id: collectModuleId,
+      id,
+    }, '通用获取信息详情', undefined, modelClassCreator)).data as T
   }
   async getList<T extends DataModel = VillageListItem>(
     collectModuleId: number|undefined,
@@ -273,24 +252,15 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
     villageVolunteerId: number,
     data: T,
   ) {
-    if (subType === 'overview') {
-      return (await this.post(`/village/${subType}/save`, {
-        ...data.toServerSide(),
-        subType,
-        village_id: villageId,
-        village_volunteer_id: villageVolunteerId,
-      }, '更新信息详情'));
-    } else {
-      const res : Record<string, any> = {
-        ...data.toServerSide(),
-        collect_module_id: collectModuleId,
-        village_id: villageId,
-        village_volunteer_id: villageVolunteerId,
-      };
-      if (subKey)
-        res[subKey] = subId;
-      return (await this.post(`/village/collect/save`, res, '通用更新信息详情'));
-    }
+    const res : Record<string, any> = {
+      ...data.toServerSide(),
+      collect_module_id: collectModuleId,
+      village_id: villageId,
+      village_volunteer_id: villageVolunteerId,
+    };
+    if (subKey)
+      res[subKey] = subId;
+    return (await this.post(`/village/collect/save`, res, '通用更新信息详情'));
   }
 }
 

+ 27 - 52
src/pages/dig/forms/common.vue

@@ -92,38 +92,28 @@ const { querys } = useLoadQuerys({
       ...forms(formRef as any)
     };
     if (querys.id >= 0) {
-      if (currentFormInfo?.[2].typeName && querys.subId == -1) {
-        const ids = getVillageInfoFormIds(querys.subType);
-        
-        for (const id of ids) {
-          try {
-            const data = await VillageInfoApi.getInfo(
-              collectStore.getCollectModuleId(querys.subType),
-              querys.subType, 
-              id,
-              querys.subKey,
-              querys.villageId, 
-              querys.villageVolunteerId,
-              querys.id,
-              model,
-            );
-            ObjectUtils.cloneValuesToObject(data, formModel.value);
-          } catch {
-            //ignore
-          }
-        }
-      } else {
-        formData = await VillageInfoApi.getInfo(
-          collectStore.getCollectModuleId(querys.subType),
+      let findId = querys.id;
+      if (querys.subType === 'overview') {
+        const list = await VillageInfoApi.getList(
+          collectStore.getCollectModuleId(querys.subType), 
           querys.subType, 
-          querys.subId,
-          querys.subKey,
+          undefined, 
+          undefined, 
           querys.villageId, 
-          querys.villageVolunteerId,
-          querys.id,
-          model,
+          querys.villageVolunteerId
         );
+        findId = list[0].id;
       }
+      formData = await VillageInfoApi.getInfo(
+        collectStore.getCollectModuleId(querys.subType),
+        querys.subType, 
+        querys.subId,
+        querys.subKey,
+        querys.villageId, 
+        querys.villageVolunteerId,
+        findId,
+        model,
+      );
     }
   } catch (e) {
     console.log(e);
@@ -163,30 +153,15 @@ async function submit() {
   try {
     loading.value = true;
     await waitTimeOut(800);
-    if (currentFormInfo?.[2].typeName && querys.value.subId == -1) {
-      const ids = getVillageInfoFormIds(querys.value.subType);
-      for (const id of ids) {
-        await VillageInfoApi.updateInfo(
-          collectStore.getCollectModuleId(querys.value.subType),
-          querys.value.subType,
-          querys.value.subKey,
-          id,
-          querys.value.villageId,
-          querys.value.villageVolunteerId,
-          formModel.value as CommonInfoModel,
-        );
-      }
-    } else {
-      await VillageInfoApi.updateInfo(
-        collectStore.getCollectModuleId(querys.value.subType),
-        querys.value.subType,
-        querys.value.subKey,
-        querys.value.subId,
-        querys.value.villageId,
-        querys.value.villageVolunteerId,
-        formModel.value as CommonInfoModel,
-      );
-    }
+    await VillageInfoApi.updateInfo(
+      collectStore.getCollectModuleId(querys.value.subType),
+      querys.value.subType,
+      querys.value.subKey,
+      querys.value.subId,
+      querys.value.villageId,
+      querys.value.villageVolunteerId,
+      formModel.value as CommonInfoModel,
+    );
     deleteLocalSave();
     confirm({
       content: '您的提交已成功,感谢您的参与!',

+ 6 - 5
src/pages/dig/forms/data/common.ts

@@ -10,6 +10,7 @@ export function villageCommonContent (ref: Ref<IDynamicFormRef>, options: {
   showTitle?: boolean,
   showContent?: boolean,
   noType?: boolean,
+  noCloseExtra?: boolean,
   contentKey?: string,
 } = {
   title: '文章',
@@ -25,7 +26,7 @@ export function villageCommonContent (ref: Ref<IDynamicFormRef>, options: {
         children: [
           ...(options.showTitle ? [{
             label: `${options.title}标题`,
-            name: 'title',
+            name: 'name',
             type: 'text',
             defaultValue: '',
             additionalProps: {
@@ -130,8 +131,8 @@ export function villageCommonContent (ref: Ref<IDynamicFormRef>, options: {
           showLabel: false,
         },
         additionalProps: {
-          collapsible: true,
-          collapsed: true,
+          collapsible: options.noCloseExtra !== true,
+          collapsed: options.noCloseExtra !== true,
         },
         childrenColProps: { span: 24 },
         children: [
@@ -145,14 +146,14 @@ export function villageCommonContent (ref: Ref<IDynamicFormRef>, options: {
             },
           },
           {
-            label: `${options.title}附件(可选)`,
+            label: `${options.title}数字档案(可选)`,
             name: 'archives',
             type: 'uploader',
             defaultValue: '',
             additionalProps: {
               upload: useAliOssUploadCo('xiangyuan/archives'),
               maxFileSize: 1024 * 1024 * 20,
-              maxUploadCount: 20,
+              single: true,
             } as UploaderFieldProps,
             rules: [],
             formProps: {

+ 13 - 5
src/pages/dig/forms/data/cultural.ts

@@ -96,7 +96,8 @@ export const villageInfoCulture : GroupForm = {
     formItems: [
       ...villageCommonContent(m, {
         title: '口述历史',
-        showTitle: true
+        showTitle: true,
+        noCloseExtra: true,
       }).formItems.slice(0, 1),
       {
         label: '口述人', 
@@ -181,10 +182,17 @@ export const villageInfoCulture : GroupForm = {
         defaultValue: '',
         additionalProps: {
           onRecordDone: (path: string) => {
-            (m.value.getFormItemControlRef<UploaderFieldInstance>('video')?.getUploaderRef() as UploaderInstance).addItemAndUpload({
-              filePath: path,
-              state: 'notstart',
-            });
+            if (m.value.getValueByPath('video')) {
+              (m.value.getFormItemControlRef<UploaderFieldInstance>('annex')?.getUploaderRef() as UploaderInstance).addItemAndUpload({
+                filePath: path,
+                state: 'notstart',
+              });
+            } else {
+              (m.value.getFormItemControlRef<UploaderFieldInstance>('video')?.getUploaderRef() as UploaderInstance).addItemAndUpload({
+                filePath: path,
+                state: 'notstart',
+              });
+            }
           }
         },
       },

+ 1 - 14
src/pages/dig/forms/data/history.ts

@@ -7,7 +7,7 @@ export const villageInfoStoryFormItems: SingleForm = [CommonInfoModel, (r) => ({
   formItems: [
     {
       label: '标题',
-      name: 'title',
+      name: 'name',
       type: 'text',
       defaultValue: '',
       additionalProps: {
@@ -18,19 +18,6 @@ export const villageInfoStoryFormItems: SingleForm = [CommonInfoModel, (r) => ({
         message: '请输入标题',
       }]
     },
-    {
-      label: '简介',
-      name: 'intro',
-      type: 'richtext',
-      defaultValue: '',
-      additionalProps: {
-        placeholder: '请输入内容',
-      },
-      rules: [{
-        required: true,
-        message: '请输入内容',
-      }]
-    },
     ...villageCommonContent(r, {
       title: '掌故轶事',
       showTitle: false,

+ 12 - 18
src/pages/dig/forms/data/overview.ts

@@ -1,4 +1,4 @@
-import VillageInfoApi, { CommonInfoModel, VillageEnvInfo } from "@/api/inhert/VillageInfoApi";
+import VillageInfoApi, { CommonInfoModel } from "@/api/inhert/VillageInfoApi";
 import { useAliOssUploadCo } from "@/common/components/upload/AliOssUploadCo";
 import type { IDynamicFormItem } from "@/components/dynamic";
 import type { CheckBoxListProps } from "@/components/dynamic/wrappers/CheckBoxList.vue";
@@ -47,7 +47,7 @@ export const villageInfoOverviewForm : GroupForm = {
           placeholder: '请点击这里选择地址或右侧者从地图选择',
           onSelectedTownship: (v: string, code: string) => {
             form.value.setValueByPath('township', v);
-            form.value.setValueByPath('code', code);
+            //form.value.setValueByPath('code', code);
           }
         },
       },
@@ -74,7 +74,7 @@ export const villageInfoOverviewForm : GroupForm = {
         } as RadioIdFieldProps,
       },
     ]
-  }), { title: '行政区划', typeName: 'type', order: 1 }],
+  }), { title: '行政区划', typeName: '', order: 1 }],
   [5]: [CommonInfoModel, () => ({
     formItems: [
       {
@@ -126,8 +126,8 @@ export const villageInfoOverviewForm : GroupForm = {
         ]
       },
     ] 
-  }), { title: '综述', typeName: 'type', order: 2 }],
-  [2]: [VillageEnvInfo, () => ({
+  }), { title: '综述', typeName: '', order: 2 }],
+  [2]: [CommonInfoModel, () => ({
     formItems: [
       { 
         label: '经纬度', 
@@ -208,7 +208,7 @@ export const villageInfoOverviewForm : GroupForm = {
         formProps: { showRightArrow: true } as FieldProps,
       },
     ]
-  }), { title: '地理信息', typeName: 'type', order: 3 }],
+  }), { title: '地理信息', typeName: '', order: 3 }],
   [3]: [CommonInfoModel, () => ({
     formItems: [
       { 
@@ -286,7 +286,7 @@ export const villageInfoOverviewForm : GroupForm = {
         rules:  [] 
       }, 
     ]
-  }), { title: '建设与保护', typeName: 'type', order: 4 }],
+  }), { title: '建设与保护', typeName: '', order: 4 }],
   [4]: [CommonInfoModel, () => ({ 
     formItems: [
       {
@@ -344,10 +344,7 @@ export const villageInfoOverviewForm : GroupForm = {
                   labelPosition: 'left',
                   showBottomBorder: false,
                 },
-                rules:  [{
-                  required: true,
-                  message: '请输入',
-                }] 
+                rules:  [] 
               },
               { 
                 label: '', 
@@ -373,10 +370,7 @@ export const villageInfoOverviewForm : GroupForm = {
                   labelPosition: 'left',
                   showBottomBorder: false,
                 },
-                rules:  [{
-                  required: true,
-                  message: '请输入人口',
-                }] 
+                rules:  [] 
               },
             ]
           } as IDynamicFormItem)),
@@ -459,7 +453,7 @@ export const villageInfoOverviewForm : GroupForm = {
               placeholder: '(可选)输入其他服务业',
             },
             rules:  [],
-            show: { callback: (_, m) => m.otherIndustries === 238 }
+            show: { callback: (_, m) => m.service == 237 }
           }, 
           { 
             label: '其他农业', 
@@ -470,10 +464,10 @@ export const villageInfoOverviewForm : GroupForm = {
               placeholder: '(可选)输入其他农业',
             },
             rules:  [] ,
-            show: { callback: (_, m) => m.otherIndustries === 128 }
+            show: { callback: (_, m) => m.agriculture == 193 }
           }, 
         ]
       },
     ] 
-  }), { title: '人口与经济', typeName: 'type', order: 5 }],
+  }), { title: '人口与经济', typeName: '', order: 5 }],
 }

+ 0 - 15
src/pages/dig/forms/data/relic.ts

@@ -107,21 +107,6 @@ export const villageInfoRelicForm : SingleForm = [CommonInfoModel, (r) => ({
       childrenColProps: { span: 24 },
       children: [
         {
-          label: '简介', 
-          name: 'intro', 
-          type: 'richtext', 
-          defaultValue: '',
-          additionalProps: {
-            placeholder: '请输入简介',
-            maxLength: 200,
-            showWordLimit: true, 
-          },
-          rules:  [{
-            required: true,
-            message: '请输入简介',
-          }] 
-        },
-        {
           label: '描述', 
           name: 'description', 
           type: 'richtext', 

+ 2 - 2
src/pages/dig/forms/data/spots.ts

@@ -1,10 +1,10 @@
-import { VillageEnvInfo } from "@/api/inhert/VillageInfoApi";
+import { CommonInfoModel } from "@/api/inhert/VillageInfoApi";
 import { villageCommonContent } from "./common";
 import type { FieldProps } from "@/components/form/Field.vue";
 import type { SingleForm } from "../forms";
 import MapApi from "@/api/map/MapApi";
 
-export const villageInfoSpotsFormItems : SingleForm = [VillageEnvInfo, (form) => ({
+export const villageInfoSpotsFormItems : SingleForm = [CommonInfoModel, (form) => ({
   formItems: [
     ...villageCommonContent(form, {
       title: '风景名胜',

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

@@ -21,6 +21,7 @@ import { villageInfoSpotsFormItems } from "./data/spots";
 export type SingleForm = [NewDataModel, (formRef: Ref<IDynamicFormRef>) => IDynamicFormOptions, {
   title: string,
   typeName: string,
+  mergeSubs?: boolean,
   order?: number,
   id?: number,
 }]
@@ -191,7 +192,7 @@ export function mergeFormItems(group: GroupForm) {
           type: 'flat-group', 
           childrenColProps: { span: 24 },
           children: op.formItems, 
-          show: isOverview ? undefined : { callback: (_, m) => m[info.typeName] === ex.id }
+          show: isOverview ? undefined : { callback: (_, m) => m[info.typeName] == ex.id }
         });
         i++;
       }